X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fwanna-build;h=a6975dd871223ee6d39c5ac7dd2a5848e405dff0;hb=b0d2541fcb7e8d11dd9d79a882f715d5c212164d;hp=7993d6bd04ed592878975b4cce63102db12b3abf;hpb=2864a2509a9a0f102182ffb3d5295f7563611fa0;p=wannabuild.git diff --git a/bin/wanna-build b/bin/wanna-build index 7993d6b..a6975dd 100755 --- a/bin/wanna-build +++ b/bin/wanna-build @@ -70,7 +70,7 @@ our ($verbose, $mail_logs, $list_order, $list_state, $short_date, $list_min_age, $list_max_age, $dbbase, @curr_time, $build_priority, %new_vers, $binNMUver, %merge_srcvers, %merge_binsrc, $printformat, $ownprintformat, $privmode, $extra_depends, $extra_conflicts, - %distributions, %distribution_aliases + %distributions, %distribution_aliases, $actions ); our $Pas = '/org/buildd.debian.org/etc/packages-arch-specific/Packages-arch-specific'; our $simulate = 0; @@ -449,60 +449,105 @@ sub process { } } -sub add_packages { - my $newstate = shift; - my( $package, $name, $version, $ok, $reason ); - - foreach $package (@_) { - $package =~ s,^.*/,,; # strip path - $package =~ s/\.(dsc|diff\.gz|tar\.gz|deb)$//; # strip extension - $package =~ s/_[a-zA-Z\d-]+\.changes$//; # strip extension - if ($package =~ /^([\w\d.+-]+)_([\w\d:.+~-]+)/) { - ($name,$version) = ($1,$2); - } - else { - warn "$package: can't extract package name and version ". - "(bad format)\n"; - next; - } - if ($op_mode eq "set-building") { - add_one_building( $name, $version ); - } - elsif ($op_mode eq "set-built") { - add_one_built( $name, $version ); - } - elsif ($op_mode eq "set-attempted") { - add_one_attempted( $name, $version ); - } - elsif ($op_mode eq "set-uploaded") { - add_one_uploaded( $name, $version ); - } - elsif ($op_mode eq "set-failed") { - add_one_failed( $name, $version ); - } - elsif ($op_mode eq "set-not-for-us") { - add_one_notforus( $name, $version ); - } - elsif ($op_mode eq "set-needs-build") { - add_one_needsbuild( $name, $version ); - } - elsif ($op_mode eq "set-dep-wait") { - add_one_depwait( $name, $version ); - } - elsif ($op_mode eq "set-build-priority") { - set_one_buildpri( $name, $version, 'buildpri' ); - } - elsif ($op_mode eq "set-permanent-build-priority") { - set_one_buildpri( $name, $version, 'permbuildpri' ); - } - elsif ($op_mode eq "set-binary-nmu") { - set_one_binnmu( $name, $version ); - } - elsif ($op_mode eq "set-update") { - set_one_update( $name, $version ); - } +BEGIN { + $actions = { + 'set-building' => { 'noversion' => 1, 'nopkgdef' => 1, }, + 'set-built' => { 'builder' => 1, to => 'Built', action => 'built', 'from' => [qw]}, + 'set-attempted' => { 'builder' => 1, to => 'Build-Attempted', action => 'attempted', 'from' => [qw]}, + 'set-uploaded' => { 'builder' => 1, 'noversion' => 1 }, + 'set-dep-wait' => { 'builder' => 1, }, + 'set-update' => { 'noversion' => 1, } + + }; +} + +sub add_packages { + my $newstate = shift; + my( $package, $name, $version, $ok, $reason ); + + foreach $package (@_) { + $package =~ s,^.*/,,; # strip path + $package =~ s/\.(dsc|diff\.gz|tar\.gz|deb)$//; # strip extension + $package =~ s/_[a-zA-Z\d-]+\.changes$//; # strip extension + if ($package =~ /^([\w\d.+-]+)_([\w\d:.+~-]+)/) { + ($name,$version) = ($1,$2); + } else { + warn "$package: can't extract package name and version (bad format)\n"; + next; } + + my $pkg = get_source_info($name); + if (!($actions->{$op_mode}) || !($actions->{$op_mode}->{'nopkgdef'})) { + if (!defined($pkg)) { + print "$name: not registered yet.\n"; + next; + } + } + if ($actions->{$op_mode} && $actions->{$op_mode}->{'builder'}) { + if ($pkg->{'builder'} && $user ne $pkg->{'builder'}) { + print "$pkg->{'package'}: not taken by you, but by $pkg->{'builder'}. Skipping.\n"; + next; + } + } + if (!($actions->{$op_mode}) || !($actions->{$op_mode}->{'noversion'})) { + if ( !pkg_version_eq($pkg,$version)) { + print "$pkg->{package}: version mismatch ($pkg->{'version'} by $pkg->{'builder'})\n"; + next; + } + } + + if ($actions->{$op_mode} && $actions->{$op_mode}->{'from'}) { + if (!isin($pkg->{'state'}, @{$actions->{$op_mode}->{'from'}})) { + print "$name: skiping: state is $pkg->{'state'}, not in ".join(", ",@{$actions->{$op_mode}->{'from'}})."\n"; + next; + } + } + + if ($op_mode eq "set-building") { + add_one_building( $name, $version, $pkg ); + } + elsif ($op_mode eq "set-built") { + 1; + } + elsif ($op_mode eq "set-attempted") { + 1; + } + elsif ($op_mode eq "set-uploaded") { + add_one_uploaded( $name, $version, $pkg ); + } + elsif ($op_mode eq "set-failed") { + add_one_failed( $pkg ); + } + elsif ($op_mode eq "set-not-for-us") { + add_one_notforus( $pkg ); + } + elsif ($op_mode eq "set-needs-build") { + add_one_needsbuild( $pkg ); + } + elsif ($op_mode eq "set-dep-wait") { + add_one_depwait( $pkg ); + } + elsif ($op_mode eq "set-build-priority") { + set_one_buildpri( 'buildpri', $pkg ); + } + elsif ($op_mode eq "set-permanent-build-priority") { + set_one_buildpri( 'permbuildpri', $pkg ); + } + elsif ($op_mode eq "set-binary-nmu") { + set_one_binnmu( $name, $version, $pkg ); + } + elsif ($op_mode eq "set-update") { + set_one_update( $pkg ); + } + + if ($actions->{$op_mode} && $actions->{$op_mode}->{'action'} && $actions->{$op_mode}->{'to'}) { + change_state( \$pkg, $actions->{$op_mode}->{'to'} ); + log_ta( $pkg, "--".$actions->{$op_mode}->{'action'} ); + update_source_info($pkg); + print "$name: registered as ".$actions->{$op_mode}->{'action'}."\n" if $verbose; + } + } } sub add_one_building { @@ -511,7 +556,7 @@ sub add_one_building { my( $ok, $reason ); $ok = 1; - my $pkg = get_source_info($name); + my $pkg = shift; if (defined($pkg)) { if ($pkg->{'state'} eq "Not-For-Us") { $ok = 0; @@ -665,78 +710,11 @@ sub add_one_building { } } -sub add_one_attempted { - my $name = shift; - my $version = shift; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } - - if (($pkg->{'state'} ne "Building") && ($pkg->{'state'} ne "Build-Attempted")) { - print "$name: not taken for building (state is $pkg->{'state'}). ", - "Skipping.\n"; - return; - } - if ($pkg->{'builder'} ne $user) { - print "$name: not taken by you, but by $pkg->{'builder'}. Skipping.\n"; - return; - } - elsif ( !pkg_version_eq($pkg, $version) ) { - print "$name: version mismatch ". - "$(pkg->{'version'} ". - "by $pkg->{'builder'})\n"; - return; - } - - change_state( \$pkg, 'Build-Attempted' ); - log_ta( $pkg, "--attempted" ); - update_source_info($pkg); - print "$name: registered as uploaded\n" if $verbose; -} - -sub add_one_built { - my $name = shift; - my $version = shift; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } - - if (($pkg->{'state'} ne "Building") && ($pkg->{'state'} ne "Build-Attempted")) { - print "$name: not taken for building (state is $pkg->{'state'}). ", - "Skipping.\n"; - return; - } - if ($pkg->{'builder'} ne $user) { - print "$name: not taken by you, but by $pkg->{'builder'}. Skipping.\n"; - return; - } - elsif ( !pkg_version_eq($pkg, $version) ) { - print "$name: version mismatch ". - "$(pkg->{'version'} ". - "by $pkg->{'builder'})\n"; - return; - } - change_state( \$pkg, 'Built' ); - log_ta( $pkg, "--built" ); - update_source_info($pkg); - print "$name: registered as built\n" if $verbose; -} sub add_one_uploaded { my $name = shift; my $version = shift; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } + my $pkg = shift; if ($pkg->{'state'} eq "Uploaded" && pkg_version_eq($pkg,$version)) { @@ -748,10 +726,6 @@ sub add_one_uploaded { "Skipping.\n"; return; } - if ($pkg->{'builder'} ne $user) { - print "$name: not taken by you, but by $pkg->{'builder'}. Skipping.\n"; - return; - } # strip epoch -- buildd-uploader used to go based on the filename. # (to remove at some point) my $pkgver; @@ -777,16 +751,9 @@ sub add_one_uploaded { } sub add_one_failed { - my $name = shift; - my $version = shift; - my $state; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } - $state = $pkg->{'state'}; + my $pkg = shift; + my $state = $pkg->{'state'}; + my $name = $pkg->{'package'}; if ($state eq "Not-For-Us") { print "$name: not suitable for this architecture anyway. Skipping.\n"; @@ -807,28 +774,9 @@ sub add_one_failed { "$pkg->{'builder'}. Skipping.\n"; return; } - elsif ( !pkg_version_eq($pkg, $version) ) { - print "$name: version mismatch ". - "$(pkg->{'version'} ". - "by $pkg->{'builder'})\n"; - return; - } - if ($state eq "Needs-Build") { - print "$name: Warning: not registered for building previously, ". - "but processing anyway.\n"; - } - elsif ($state eq "Uploaded") { - print "$name: Warning: marked as uploaded previously, ". - "but processing anyway.\n"; - } - elsif ($state eq "Dep-Wait") { - print "$name: Warning: marked as waiting for dependencies, ". - "but processing anyway.\n"; - } - elsif ($state eq "BD-Uninstallable") { - print "$name: Warning: marked as having uninstallable build-dependencies, ". - "but processing anyway.\n"; + if (isin($state, qw)) { + print "add_one_failed: $name: Warning: not registered for building previously (but $state), processing anyway.\n"; } elsif ($state eq "Failed") { print "$name: already registered as failed; will append new message\n" @@ -839,20 +787,15 @@ 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; } sub add_one_notforus { - my $name = shift; - my $version = shift; - my $pkg = get_source_info($name); + my $pkg = shift; + my $state = $pkg->{'state'}; + my $name = $pkg->{'package'}; if ($pkg->{'state'} eq 'Not-For-Us') { # reset Not-For-Us state in case it's called twice; this is @@ -881,7 +824,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" ); @@ -900,16 +842,9 @@ sub add_one_notforus { } sub add_one_needsbuild { - my $name = shift; - my $version = shift; - my $state; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered; can't give back.\n"; - return; - } - $state = $pkg->{'state'}; + my $pkg = shift; + my $state = $pkg->{'state'}; + my $name = $pkg->{'package'}; if ($state eq "BD-Uninstallable") { if ($opt_override) { @@ -958,11 +893,6 @@ sub add_one_needsbuild { "$pkg->{'builder'}. Skipping.\n"; return; } - if (!pkg_version_eq($pkg, $version)) { - print "$name: version mismatch ($pkg->{'version'} registered). ", - "Skipping.\n"; - return; - } if (!defined $distributions{$distribution}{noadw}) { change_state( \$pkg, 'BD-Uninstallable' ); $pkg->{'bd_problem'} = "Installability of build dependencies not tested yet"; @@ -979,21 +909,8 @@ sub add_one_needsbuild { sub set_one_binnmu { my $name = shift; my $version = shift; - my $pkg = get_source_info($name); - my $state; - - if (!defined($pkg)) { - print "$name: not registered; can't register for binNMU.\n"; - return; - } - my $db_ver = $pkg->{'version'}; - - if (!version_eq($db_ver, $version)) { - print "$name: version mismatch ($db_ver registered). ", - "Skipping.\n"; - return; - } - $state = $pkg->{'state'}; + my $pkg = shift; + my $state = $pkg->{'state'}; if (defined $pkg->{'binary_nmu_version'}) { if ($binNMUver == 0) { @@ -1002,6 +919,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 +927,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,23 +967,17 @@ 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; } sub set_one_buildpri { - my $name = shift; - my $version = shift; my $key = shift; - my $pkg = get_source_info($name); - my $state; - - if (!defined($pkg)) { - print "$name: not registered; can't set priority.\n"; - return; - } - $state = $pkg->{'state'}; + my $pkg = shift; + my $state = $pkg->{'state'}; + my $name = $pkg->{'package'}; if ($state eq "Not-For-Us") { print "$name: not suitable for this architecture. Skipping.\n"; @@ -1075,36 +986,19 @@ sub set_one_buildpri { print "$name: failed previously and doesn't need building. Skipping.\n"; return; } - if (!pkg_version_eq($pkg, $version)) { - print "$name: version mismatch ($pkg->{'version'} registered). ", - "Skipping.\n"; - 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'; + if ( $build_priority ) { $pkg->{$key} = $build_priority; + } else { + delete $pkg->{$key}; } update_source_info($pkg); print "$name: set to build priority $build_priority\n" if $verbose; } sub add_one_depwait { - my $name = shift; - my $version = shift; - my $state; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } - $state = $pkg->{'state'}; + my $pkg = shift; + my $state = $pkg->{'state'}; + my $name = $pkg->{'package'}; if ($state eq "Dep-Wait") { print "$name: merging with previously registered dependencies\n"; @@ -1114,46 +1008,19 @@ sub add_one_depwait { print "$name: Warning: not registered for building previously, ". "but processing anyway.\n"; } - elsif ($state eq "Not-For-Us") { - print "$name: not suitable for this architecture anyway. Skipping.\n"; - return; - } - elsif ($state eq "Failed-Removed") { - print "$name: failed previously and doesn't need building. Skipping.\n"; - return; - } - elsif ($state eq "Installed") { - print "$name: Is already installed in archive. Skipping.\n"; - return; - } - elsif ($state eq "Uploaded") { - print "$name: Is already uploaded. Skipping.\n"; - return; - } - elsif ($pkg->{'builder'} && - $user ne $pkg->{'builder'}) { - print "$name: not taken by you, but by ". - "$pkg->{'builder'}. Skipping.\n"; - return; - } - elsif ( !pkg_version_eq($pkg,$version)) { - print "$name: version mismatch ". - "($pkg->{'version'} ". - "by $pkg->{'builder'})\n"; - return; - } - elsif ($fail_reason =~ /^\s*$/ || + + if (isin( $state, qw)) { + print "add_one_depwait: $name: skiping in state $state\n"; + return; + } + + if ($fail_reason =~ /^\s*$/ || !parse_deplist( $fail_reason, 1 )) { print "$name: Bad dependency list\n"; return; } 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 @@ -1161,27 +1028,19 @@ sub add_one_depwait { $deplist->{$_} = $new_deplist->{$_}; } $pkg->{'depends'} = build_deplist($deplist); - log_ta( $pkg, "--dep-wait" ); - update_source_info($pkg); - print "$name: registered as waiting for dependencies\n" if $verbose; + log_ta( $pkg, "--dep-wait" ) unless $simulate; + update_source_info($pkg) unless $simulate; + print "$name: registered as waiting for dependencies\n" if $verbose || $simulate; } sub set_one_update { - my $name = shift; - my $version = shift; - my $pkg = get_source_info($name); - - if (!defined($pkg)) { - print "$name: not registered yet.\n"; - return; - } + my $pkg = shift; $pkg->{'version'} =~ s/\+b[0-9]+$//; log_ta( $pkg, "--update" ); update_source_info($pkg); } - # for sorting priorities and sections BEGIN { %prioval = ( required => -5, @@ -1257,7 +1116,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'}; }], @@ -1402,7 +1261,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'}."}"; @@ -1436,15 +1295,15 @@ Text could contain further %. To start with !, use %! sub list_packages { my $state = shift; - my( $name, $pkg, @list ); + my @list; my $cnt = 0; my %scnt; my $ctime = time; - my $db = get_all_source_info(state => $state, user => $user, list_min_age => $list_min_age); - foreach $name (keys %$db) { - next if $name =~ /^_/; - push @list, calculate_prio($db->{$name}); + my $db = get_all_source_info(state => $state, user => $user, list_min_age => $list_min_age, multisuite => 1); + foreach my $key (keys %$db) { + next if $key =~ /^_/; + push @list, calculate_prio($db->{$key}); } # filter components @@ -1458,7 +1317,7 @@ sub list_packages { $printformat ||= $yamlmap->{"format"}{"default"}{"default"}; undef $printformat if ($ownprintformat && $ownprintformat eq 'none'); - foreach $pkg (sort sort_list_func @list) { + foreach my $pkg (sort sort_list_func @list) { no warnings; if ($printformat) { print print_format($printformat, $pkg, {'cnt' => $cnt, 'scnt' => \%scnt})."\n"; @@ -1785,6 +1644,7 @@ sub parse_deplist { my $verify = shift; my %result; + return $verify ? 0 : \%result unless $deps; foreach (split( /\s*,\s*/, $deps )) { if ($verify) { # verification requires > starting prompts, no | crap @@ -2206,7 +2066,20 @@ sub get_all_source_info { push @args, -$options{list_min_age} . " days"; } - my $db = $dbh->selectall_hashref($q, 'package', undef, @args); + my $db; + if (($options{multisuite}) && (!$distribution || $distribution =~ / /)) { + # return packages in multiple suites - only for those functions marked as clean for that api change + $db = $dbh->selectall_hashref($q, [qw], undef, @args); + my $dbk = {}; + foreach my $p ( keys %$db ) { + foreach my $d (keys %{$db->{$p}}) { + $dbk->{"$p/$d"} = $db->{$p}->{$d}; + } + } + $db = $dbk; + } else { + $db = $dbh->selectall_hashref($q, [qw], undef, @args); + } return $db; } @@ -2360,12 +2233,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 ); 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 @@ -2383,14 +2257,16 @@ sub parse_all_v3 { ($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 )) { + if (isin($pkgs->{'status'}, qw )) { my $change = 0; - my $tstate = {'installed' => 'Installed', 'related' => 'Installed', 'auto-not-for-us' => 'Auto-Not-For-Us', '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) && isin( $tstate, qw); # if the package is currently current, the status is Installed, not not-for-us if ($pkg->{'state'} ne $tstate) { @@ -2410,17 +2286,13 @@ sub parse_all_v3 { $change++; } } - if (isin($pkgs->{'status'}, qw )) { - my $tnotes = {'related' => 'related', 'not-for-us' => 'Packages-arch-specific'}->{$pkgs->{'status'}}; - if ($pkg->{'notes'} && $pkg->{'notes'} ne $tnotes) { + if (isin($pkgs->{'status'}, qw )) { + my $tnotes = $pkgs->{'status'}; + if (($pkg->{'notes'}//"") ne $tnotes) { $pkg->{'notes'} = $tnotes; $change++; } } - if ($pkgs->{'notes'} && ($pkg->{'notes'}//"" ne $pkgs->{'notes'})) { - $pkg->{'notes'} = $pkgs->{'notes'}; - $change++; - } if ($change) { print "$logstr set to $tstate/".($pkg->{'notes'}//"")."\n" if $verbose || $simulate; log_ta( $pkg, "--merge-v3: $tstate" ) unless $simulate; @@ -2429,21 +2301,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"; @@ -2475,6 +2332,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;