-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;
- }
-
- if ($pkg->{'state'} eq "Uploaded" &&
- pkg_version_eq($pkg,$version)) {
- print "$name: already uploaded\n";
- return;
- }
- if (!isin( $pkg->{'state'}, qw(Building Built 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;
- }
- # strip epoch -- buildd-uploader used to go based on the filename.
- # (to remove at some point)
- my $pkgver;
- ($pkgver = $pkg->{'version'}) =~ s/^\d+://;
- $version =~ s/^\d+://; # for command line use
- if ($pkg->{'binary_nmu_version'} ) {
- my $nmuver = binNMU_version($pkgver, $pkg->{'binary_nmu_version'});
- if (!version_eq( $nmuver, $version )) {
- print "$name: version mismatch ($nmuver registered). ",
- "Skipping.\n";
- return;
- }
- } elsif (!version_eq($pkgver, $version)) {
- print "$name: version mismatch ($pkg->{'version'} registered). ",
- "Skipping.\n";
- return;
- }
-
- change_state( \$pkg, 'Uploaded' );
- log_ta( $pkg, "--uploaded" );
- update_source_info($pkg);
- print "$name: registered as uploaded\n" if $verbose;
-}
-
-sub add_one_failed {
- my $name = shift;
- my $version = shift;
- my ($state, $cat);
- my $pkg = get_source_info($name);
-
- if (!defined($pkg)) {
- print "$name: not registered yet.\n";
- return;
- }
- $state = $pkg->{'state'};
-
- if ($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 ($pkg->{'builder'} &&
- (($user ne $pkg->{'builder'}) &&
- !($pkg->{'builder'} =~ /^(\w+)-\w+/ && $1 eq $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;
- }
-
- $cat = $category;
- if (!$cat && $fail_reason =~ /^\[([^\]]+)\]/) {
- $cat = $1;
- $cat = $short_category{$cat} if exists $short_category{$cat};
- if (!isin( $cat, values %short_category )) {
- print "$name: Warning: unknown category $cat; discarded\n";
- $cat = "";
- }
- $fail_reason =~ s/^\[[^\]]+\][ \t]*\n*//;
- }
-
- 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";
- }
- elsif ($state eq "Failed") {
- print "$name: already registered as failed; will append new message\n"
- if $fail_reason;
- print "$name: already registered as failed; changing category\n"
- if $cat;
- }
-
- if (($cat eq "reminder-sent" || $cat eq "nmu-offered") &&
- defined $pkg->{'failed_category'} &&
- $pkg->{'failed_category'} ne $cat) {
- (my $action = $cat) =~ s/-/ /;
- $fail_reason .= "\n$short_date: $action";
- }
-
- change_state( \$pkg, 'Failed' );
- $pkg->{'builder'} = $user;
- $pkg->{'failed'} .= "\n" if $pkg->{'failed'};
- $pkg->{'failed'} .= $fail_reason;
- $pkg->{'failed_category'} = $cat if $cat;
- 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;
-}