]> git.donarmstrong.com Git - wannabuild.git/blobdiff - bin/wanna-build
adjust handling of buildpri:
[wannabuild.git] / bin / wanna-build
index 1f1006d33decbbdcb3f95fd94f01b5fbb63e9e8f..5003b661eefc6dbb164c8c9abdf92d7cfaa7388c 100755 (executable)
@@ -183,8 +183,8 @@ GetOptions(
     'extra-conflicts=s' => \$extra_conflicts,
 
     # special actions
-    'export' => sub { _set_mode(@_); $export_to   = $_[1]; },
-    'import' => sub { _set_mode(@_); $import_from = $_[1]; },
+    'export=s' => sub { _set_mode(@_); $export_to   = $_[1]; },
+    'import=s' => sub { _set_mode(@_); $import_from = $_[1]; },
     'manual-edit'                => \&_set_mode,
     'distribution-architectures' => \&_set_mode,
     'distribution-aliases'       => \&_set_mode,
@@ -839,11 +839,6 @@ sub add_one_failed {
        $pkg->{'builder'} = $user;
        $pkg->{'failed'} .= "\n" if $pkg->{'failed'};
        $pkg->{'failed'} .= $fail_reason;
-       if (defined $pkg->{'permbuildpri'}) {
-               $pkg->{'buildpri'} = $pkg->{'permbuildpri'};
-       } else {
-               delete $pkg->{'buildpri'};
-       }
        log_ta( $pkg, "--failed" );
        update_source_info($pkg);
        print "$name: registered as failed\n" if $verbose;
@@ -881,7 +876,6 @@ sub add_one_notforus {
                $pkg->{'package'} = $name;
                delete $pkg->{'builder'};
                delete $pkg->{'depends'};
-               delete $pkg->{'buildpri'};
                delete $pkg->{'binary_nmu_version'};
                delete $pkg->{'binary_nmu_changelog'};
                log_ta( $pkg, "--no-build" );
@@ -1002,6 +996,7 @@ sub set_one_binnmu {
                        delete $pkg->{'depends'};
                        delete $pkg->{'binary_nmu_version'};
                        delete $pkg->{'binary_nmu_changelog'};
+                        delete $pkg->{'buildpri'};
                } elsif ($binNMUver <= $pkg->{'binary_nmu_version'}) {
                        print "$name: already building binNMU $pkg->{'binary_nmu_version'}\n";
                        return;
@@ -1009,8 +1004,7 @@ sub set_one_binnmu {
                        $pkg->{'binary_nmu_version'} = $binNMUver;
                        $pkg->{'binary_nmu_changelog'} = $fail_reason;
                        $pkg->{'notes'} = 'out-of-date';
-                       $pkg->{'buildpri'} = $pkg->{'permbuildpri'}
-                               if (defined $pkg->{'permbuildpri'});
+                        delete $pkg->{'buildpri'};
                        if (defined $distributions{$distribution}{noadw}) {
                                change_state( \$pkg, 'Installed' );
                        } else {
@@ -1050,6 +1044,7 @@ sub set_one_binnmu {
        $pkg->{'binary_nmu_version'} = $binNMUver;
        $pkg->{'binary_nmu_changelog'} = $fail_reason;
        $pkg->{'notes'} = 'out-of-date';
+        delete $pkg->{'buildpri'};
        log_ta( $pkg, "--binNMU" );
        update_source_info($pkg);
        print "${name}: registered for binNMU $fullver\n" if $verbose;
@@ -1081,13 +1076,8 @@ sub set_one_buildpri {
                return;
        }
        if ( $build_priority == 0 ) {
-               delete $pkg->{'buildpri'}
-                       if $key eq 'permbuildpri' and defined $pkg->{'buildpri'}
-                       and $pkg->{'buildpri'} == $pkg->{$key};
                delete $pkg->{$key};
        } else {
-               $pkg->{'buildpri'} = $build_priority
-                       if $key eq 'permbuildpri';
                $pkg->{$key} = $build_priority;
        }
        update_source_info($pkg);
@@ -1149,11 +1139,6 @@ sub add_one_depwait {
        }
        change_state( \$pkg, 'Dep-Wait' );
        $pkg->{'builder'} = $user;
-       if (defined $pkg->{'permbuildpri'}) {
-               $pkg->{'buildpri'} = $pkg->{'permbuildpri'};
-       } else {
-               delete $pkg->{'buildpri'};
-       }
        my $deplist = parse_deplist( $pkg->{'depends'} );
        my $new_deplist = parse_deplist( $fail_reason );
        # add new dependencies, maybe overwriting old entries
@@ -1257,7 +1242,7 @@ sub sort_list_func {
     my $map_funcs = {
         'C' => ['<->', sub { return $_[0]->{'calprio'}; }],
         'W' => ['<->', sub { return $_[0]->{'state_days'}; }],
-        'P' => ['<->', sub { return $_[0]->{'buildpri'}; }],
+        'P' => ['<->', sub { return ($_[0]->{'buildpri'}//0) + ($_[0]->{'permbuildpri'}//0); }],
         'p' => ['<=>', sub { return $prioval{$_[0]->{'priority'}//""}//0; }],
         's' => ['<=>', sub { return $sectval{$_[0]->{'section'}//""}//0; }],
         'n' => ['cmp', sub { return $_[0]->{'package'}; }],
@@ -1280,7 +1265,7 @@ sub sort_list_func {
 sub calculate_prio {
        my $priomap = $yamlmap->{priority};
        my $pkg = shift;
-        my @s=split("/", $pkg->{'section'});
+        my @s=split("/", $pkg->{'section'}//"");
         $pkg->{'component'} = $s[0] if $s[1];
         $pkg->{'component'} ||= 'main';
        $pkg->{'calprio'} = 0;
@@ -1402,7 +1387,7 @@ Text could contain further %. To start with !, use %!
             no warnings;
             my $c = "$pkg->{'priority'}:$pkg->{'notes'}";
             $c .= ":PREV-FAILED" if $pkg->{'previous_state'} && $pkg->{'previous_state'} =~ /^Failed/;
-            $c .= ":bp{" . $pkg->{'buildpri'} . "}" if defined $pkg->{'buildpri'};
+            $c .= ":bp{" . (($pkg->{'buildpri'}//0)+($pkg->{'permbuildpri'}//0)) . "}" if (($pkg->{'buildpri'}//0)+($pkg->{'permbuildpri'}//0));
             $c .= ":binNMU{" . $pkg->{'binary_nmu_version'} . "}" if defined $pkg->{'binary_nmu_version'};
             $c .= ":calprio{". $pkg->{'calprio'}."}";
             $c .= ":days{". $pkg->{'state_days'}."}";
@@ -1459,6 +1444,7 @@ sub list_packages {
         undef $printformat if ($ownprintformat && $ownprintformat eq 'none');
 
        foreach $pkg (sort sort_list_func @list) {
+                no warnings;
                 if ($printformat) {
                     print print_format($printformat, $pkg, {'cnt' => $cnt, 'scnt' => \%scnt})."\n";
                    ++$cnt;
@@ -1564,6 +1550,7 @@ sub info_packages {
 }
 
 sub forget_packages {
+        no warnings;
        my( $name, $pkg, $key, $data );
        
        foreach $name (@_) {
@@ -2358,12 +2345,13 @@ sub parse_all_v3 {
     foreach my $name (keys %$srcs) {
         next if $name eq '_binary';
 
-        # state = installed, out-of-date, uncompiled, not-for-us, auto-not-for-us
+        # state = installed, out-of-date, uncompiled, packages-arch-specific, overwritten-by-arch-all, arch-not-in-arch-list, arch-all-only
         my $pkgs = $srcs->{$name};
+        next if isin($pkgs->{'status'}, qw <arch-all-only>);
         my $pkg = $db->{$name};
 
         unless ($pkg) {
-            next SRCS if $pkgs->{'status'} eq 'not-for-us';
+            next SRCS if $pkgs->{'status'} eq 'packages-arch-specific';
             my $logstr = sprintf("merge-v3 %s %s_%s (%s, %s):", $vars->{'time'}, $name, $pkgs->{'version'}, $vars->{'arch'}, $vars->{'suite'});
 
             # does at least one binary exist in the database and is more recent - if so, we're probably just outdated, ignore the source package
@@ -2375,18 +2363,22 @@ sub parse_all_v3 {
             }
             $pkg->{'package'}  = $name;
         }
+        $pkg->{'version'} ||= "";
+        $pkg->{'state'} ||= "";
         my $logstr = sprintf("merge-v3 %s %s_%s", $vars->{'time'}, $name, $pkgs->{'version'}).
             ($pkgs->{'binnmu'} ? ";b".$pkgs->{'binnmu'} : "").
             sprintf(" (%s, %s, previous: %s", $vars->{'arch'}, $vars->{'suite'}, $pkg->{'version'}//"").
             ($pkg->{'binary_nmu_version'} ? ";b".$pkg->{'binary_nmu_version'} : "").
-            ", $pkg->{'state'}):";
+            ", $pkg->{'state'}".($pkg->{'notes'} ? "/".$pkg->{'notes'} : "")."):";
 
         if (isin($pkgs->{'status'}, qw (installed related)) && $pkgs->{'version'} eq $pkg->{'version'} && ($pkgs->{'binnmu'}//0) < int($pkg->{'binary_nmu_version'}//0)) {
                 $pkgs->{'status'} = 'out-of-date';
         }
-        if (isin($pkgs->{'status'}, qw (installed related auto-not-for-us))) {
+        if (isin($pkgs->{'status'}, qw <installed related arch-not-in-arch-list packages-arch-specific overwritten-by-arch-all arch-all-only>)) {
             my $change = 0;
-            my $tstate = {'installed' => 'Installed', 'related' => 'Installed', 'auto-not-for-us' => 'Auto-Not-For-Us'}->{$pkgs->{'status'}};
+            my $tstate = {'installed' => 'Installed', 'related' => 'Installed', 
+                'arch-not-in-arch-list' => 'Auto-Not-For-Us', 'packages-arch-specific' => 'Auto-Not-For-Us', 'overwritten-by-arch-all' => 'Auto-Not-For-Us', 'arch-all-only' => 'Auto-Not-For-Us',
+                }->{$pkgs->{'status'}};
             next if isin( $pkg->{'state'}, qw<Not-For-Us Failed Failed-Removed Dep-Wait Dep-Wait-Removed>) && isin( $tstate, qw<Auto-Not-For-Us>);
             # if the package is currently current, the status is Installed, not not-for-us
             if ($pkg->{'state'} ne $tstate) {
@@ -2406,9 +2398,12 @@ sub parse_all_v3 {
                     $change++;
                 }
             }
-            if (isin($pkgs->{'status'}, qw (related)) and $pkg->{'notes'} ne "related") {
-                $pkg->{'notes'} = "related";
-                $change++;
+            if (isin($pkgs->{'status'}, qw <related packages-arch-specific overwritten-by-arch-all arch-not-in-arch-list arch-all-only>)) {
+                my $tnotes = $pkgs->{'status'};
+                if (($pkg->{'notes'}//"") ne $tnotes) {
+                    $pkg->{'notes'} = $tnotes;
+                    $change++;
+                }
             }
             if ($change) {
                 print "$logstr set to $tstate/".($pkg->{'notes'}//"")."\n" if $verbose || $simulate;
@@ -2418,21 +2413,6 @@ sub parse_all_v3 {
             next;
         }
 
-        if ($pkgs->{'status'} eq 'not-for-us') {
-            next if isin( $pkg->{'state'}, qw(Not-For-Us Installed Failed-Removed));
-
-            if (isin( $pkg->{'state'}, qw(Failed Build-Attempted Built))) {
-                change_state( \$pkg, "Failed-Removed" );
-               log_ta( $pkg, "--merge-v3: Failed-Removed" ) unless $simulate;
-               update_source_info($pkg) unless $simulate;
-                print "$logstr (virtually) deleted from database\n" if $verbose || $simulate;
-                next;
-            }
-
-            print "$logstr should delete (not-for-us according to P-a-s)\n" if $verbose || $simulate || 1; # not implemented yet on purpose
-            next;
-        }
-
         # only uncompiled / out-of-date are left, so check if anything new
         if (!(isin($pkgs->{'status'}, qw (uncompiled out-of-date)))) {
             print "$logstr package in unknown state: $pkgs->{'status'}\n";
@@ -2464,6 +2444,7 @@ sub parse_all_v3 {
         delete $pkg->{'builder'};
         delete $pkg->{'binary_nmu_version'} unless $pkgs->{'binnmu'};
         delete $pkg->{'binary_nmu_changelog'} unless $pkgs->{'binnmu'};
+        delete $pkg->{'buildpri'};
         log_ta( $pkg, "--merge-v3: needs-build" ) unless $simulate;
         update_source_info($pkg) unless $simulate;
         print "$logstr set to needs-builds\n" if $simulate || $verbose;