--- builds_bin/update_repos 2007/11/05 14:51:28 1.23 +++ builds_bin/update_repos 2007/11/08 17:12:31 1.26 @@ -137,6 +137,7 @@ foreach my $smever ( sort { $a <=> $b } # Stage packages should never be most current if ( rprop($pkg, 'stage') ) { + printline('dark blue', 1, ' - checking stage') if $opts{d}; tagpkg($pkg, 'obsolete'); next; } @@ -188,7 +189,9 @@ foreach my $smever ( sort { $a <=> $b } tagpkg($cmp, 'inuse'); $pkg->{srpm}->{latest}++; } - tagpkg($cmp, 'inuse') if $pkg->{repo} eq $cmp->{repo} || rprop($cmp, 'base') || rprop($cmp, 'builds'); + if ( $pkg->{repo} eq $cmp->{repo} || rprop($cmp, 'base') || rprop($cmp, 'builds') || ( $cmp->{oldrepo} && $pkg->{repo} eq $cmp->{oldrepo} ) ) { + tagpkg($cmp, 'inuse') + } } next if $pkg->{srpm} && $pkg->{srpm}->{rpm} eq $pkg->{rpm}; @@ -245,7 +248,7 @@ foreach my $smever ( sort { $a <=> $b } printline('dark blue', 1, ' - checking source packages') if $opts{d}; if ( ! $pkg->{srpm} ) { printline('bold yellow on_red', 1, ' - ', $pkg->{rpm}->filename, ' (missing source ', $pkg->{rpm}->sourcerpm, ')'); - } elsif ( $pkg->{srpm}->{repo} ne $pkg->{repo} ) { + } elsif ( $pkg->{srpm}->{repo} ne $pkg->{repo} && ( ! $pkg->{srpm}->{oldrepo} || $pkg->{srpm}->{oldrepo} ne $pkg->{repo} ) ) { movepkg($pkg->{srpm}, $pkg->{repo}, 0); } unless ( $orig ) { @@ -254,12 +257,6 @@ foreach my $smever ( sort { $a <=> $b } } } } - printline('bold black', 1, ' - missing stage packages') if $opts{d}; - movepkg($_, $stage, 0) foreach grep { $_->{latest} && $_->{latest} == 1 } @pkgs; - - printline('bold black', 1, ' - obsolete packages') if $opts{d}; - movepkg($_, 'delete') foreach grep { ! rprop($_, 'base') && ! $_->{done} && ( $_->{obsolete} || ( $_->{rpm}->is_source_package && ! $_->{inuse} ) ) } @pkgs; - printline('bold black', 1, ' - arch count check') if $opts{d}; foreach my $r ( keys %$archs ) { foreach my $p ( keys %{$archs->{$r}} ) { @@ -273,6 +270,12 @@ foreach my $smever ( sort { $a <=> $b } } } } + + printline('bold black', 1, ' - missing stage packages') if $opts{d}; + movepkg($_, $stage, 0) foreach grep { $_->{latest} && $_->{latest} == 1 } @pkgs; + + printline('bold black', 1, ' - obsolete packages') if $opts{d}; + movepkg($_, 'delete') foreach grep { ! rprop($_, 'base') && ! $_->{done} && ( $_->{obsolete} || ( $_->{rpm}->is_source_package && ! $_->{inuse} ) ) } @pkgs; } printline('white', 0, "Finished processing.\n"); @@ -462,10 +465,6 @@ sub loadpkg { if ($@) { printline('bold yellow on_red', 1, "Corrupt package $_"); return; } eval { my $sig = $pkg->siggpg }; my $nosig = ! $@; - if ( $nosig && ! -f "$HOME/.rpmpass" ) { - printline('bold yellow on_red', 1, ' - ', $pkg->filename, ' (missing signature)'); - return; - } my ($srcname, $version, $release) = ($pkg->is_source_package ? basename $pkg->filename : $pkg->sourcerpm) =~ m{^([^/]*)-([^-]+)-([^-]+)\.\w+.rpm}; foreach my $repo ( keys %{$skippkg->{$rel}} ) { return if (dirname $pkg->filename) =~ m{/$repo/} && grep { $_ eq $srcname } @{$skippkg->{$rel}->{$repo}}; } @@ -477,7 +476,10 @@ sub loadpkg { } elsif ( (dirname $pkg->filename) =~ m{\d/(sme[^/]+)/} ) { $reponame = $1; } - + if ( $nosig && ( ! -f "$HOME/.rpmpass" || $reponame eq 'builds' ) ) { + printline('bold yellow on_red', 1, ' - ', $pkg->filename, ' (missing signature)'); + return; + } push @rpms, { base => $srcname, name => $pkg->name, repo => $reponame, @@ -489,7 +491,9 @@ sub loadpkg { nosig => $nosig, }; $sources{$srcname}++; - $latest{$pkg->name} = $rpms[$#rpms] if ! $pkg->is_source_package && ( ! $latest{$pkg->name} || $pkg gt $latest{$pkg->name}->{rpm} ); + if ( ! $pkg->is_source_package && ! $repos->{$reponame}->{stage} ) { + $latest{$pkg->name} = $rpms[$#rpms] if ! $latest{$pkg->name} || $pkg gt $latest{$pkg->name}->{rpm}; + } } sub loadbase { @@ -510,7 +514,7 @@ sub loadbase { return if grep { $_ eq $srcname } @{$skippkg->{$rel}->{$repo}}; $pkgrepo = $repo; return unless $pkg->is_source_package || $cmp; - return if ! $pkg->is_source_package && $pkg gt $cmp->{rpm} && rprop($cmp, 'base') && rprop($cmp, 'prio') > $repos->{$pkgrepo}->{prio}; + return if ! $pkg->is_source_package && $pkg ge $cmp->{rpm} && rprop($cmp, 'base') && rprop($cmp, 'prio') > $repos->{$pkgrepo}->{prio}; last; } }