]> git.donarmstrong.com Git - wannabuild.git/blobdiff - bin/wanna-build
Make list use state field in the sql select.
[wannabuild.git] / bin / wanna-build
index 4ba644ebbdb4149adb1e30f1c8a496a79d389ab5..a079c295da46adf4df777a8c46d63a88382c101d 100755 (executable)
@@ -1759,12 +1759,16 @@ sub list_packages {
        my $cnt = 0;
        my %scnt;
        my $ctime = time;
+       my $db;
 
-       my $db = get_all_source_info();
+       if ($state ne "all") {
+               $db = get_all_source_info_state($state);
+       } else {
+               $db = get_all_source_info();
+       }
        foreach $name (keys %$db) {
                next if $name =~ /^_/;
                $pkg = $db->{$name};
-               next if $state ne "all" && $pkg->{'state'} !~ /^\Q$state\E$/i;
                next if $user && (lc($state) ne 'needs-build' and $pkg->{'builder'} ne $user);
                next if $category && $pkg->{'state'} eq "Failed" &&
                                $pkg->{'failed_category'} ne $category;
@@ -1831,7 +1835,7 @@ sub info_packages {
                foreach $dist (@dists) {
                        my $pname = "$name" . ($info_all_dists ? "($dist)" : "");
                        
-                       $pkg = get_source_info($name);
+                       $pkg = get_readonly_source_info($name);
                        if (!defined( $pkg )) {
                                print "$pname: not registered\n";
                                next;
@@ -2417,6 +2421,14 @@ sub user_table_name {
        return '"' . $arch . $schema_suffix . '".users';
 }
 
+sub get_readonly_source_info {
+       my $name = shift;
+       my $pkg = $dbh->selectrow_hashref('SELECT * FROM ' . 
+               table_name() . ' WHERE package = ? AND distribution = ?',
+               undef, $name, $distribution);
+       return $pkg;
+}
+
 sub get_source_info {
        my $name = shift;
        my $pkg = $dbh->selectrow_hashref('SELECT * FROM ' . 
@@ -2433,6 +2445,14 @@ sub get_all_source_info {
        return $db;
 }
 
+sub get_all_source_info_state {
+       my $state = shift;
+       my $db = $dbh->selectall_hashref('SELECT * FROM ' . table_name() .
+               ' WHERE distribution = ? and state = ?',
+               'package', undef, $distribution, $state);
+       return $db;
+}
+
 sub update_source_info {
        my $pkg = shift;