--- builds_bin/update_repos 2007/11/05 03:01:24 1.21 +++ builds_bin/update_repos 2007/11/07 21:14:58 1.25 @@ -128,15 +128,22 @@ foreach my $smever ( sort { $a <=> $b } $archs = (); foreach my $pkg ( @pkgs ) { - next if $pkg->{done} || $pkg->{obsolete} || $pkg->{rpm}->is_source_package || ! $repos->{$pkg->{repo}} || rprop($pkg, 'stage'); + next if $pkg->{done} || $pkg->{obsolete} || $pkg->{rpm}->is_source_package || ! $repos->{$pkg->{repo}}; printline('bold black', 1, ' - ', $pkg->{rpm}->filename) if $opts{d}; my $orig = 0; # Find names of packages in same or higher repos my %names = names($pkg, @pkgs); + # Stage packages should never be most current + if ( rprop($pkg, 'stage') ) { + printline('dark blue', 1, ' - checking stage') if $opts{d}; + tagpkg($pkg, 'obsolete'); + next; + } + # Move packages from base/builds to correct area - if ( rprop($pkg, 'base') || rprop($pkg, 'builds') ) { + elsif ( rprop($pkg, 'base') || rprop($pkg, 'builds') ) { printline('dark blue', 1, ' - checking base/builds') if $opts{d}; my $repo = $names{$pkg->{name}} && $names{$pkg->{name}} > 1 ? $devel2 : $devel1; if ( $pkg->{nonbase} ) { @@ -248,12 +255,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}} ) { @@ -267,6 +268,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"); @@ -293,7 +300,7 @@ foreach my $smever ( sort { $a <=> $b } printline('white', 0, "Finished copying/moving.\n"); foreach my $repo ( sort keys %repochg ) { - next if ! $repos->{$repo} || $repos->{$repo}->{base} || $repos->{$repo}->{builds}; + next if ! $repos->{$repo} || $repos->{$repo}->{base} || $repos->{$repo}->{builds} || $repos->{$repo}->{stage}; foreach my $arch ( @archs ) { my $dir = $distrepo->{$rel}->{repo} . "$repo/$arch"; $dir = qx(readlink -f $dir); @@ -336,25 +343,25 @@ sub dest { my ($pkg, @repos) = @_; my @d = (); foreach my $repo ( @repos ) { - my $base = $distrepo->{$rel}->{repo}; + my $base = $distrepo->{$rel}->{repo} . $repo; $base = $distrepo->{$rel}->{stage} if $repos->{$repo}->{stage}; if ( $pkg->{arch} eq 'noarch' ) { - push @d, "$base$repo/i386/" . + push @d, "$base/i386/" . ( $repos->{$repo}->{os} ? $distrepo->{$rel}->{os} : 'RPMS/' ) . basename $pkg->{rpm}->filename; - push @d, "$base$repo/x86_64/" . + push @d, "$base/x86_64/" . ( $repos->{$repo}->{os} ? $distrepo->{$rel}->{os} : 'RPMS/' ) . basename $pkg->{rpm}->filename; } elsif ( $pkg->{arch} =~ m{^(i[356]86)$} ) { - push @d, "$base$repo/i386/" . + push @d, "$base/i386/" . ( $repos->{$repo}->{os} ? $distrepo->{$rel}->{os} : 'RPMS/' ) . basename $pkg->{rpm}->filename; } elsif ( $pkg->{arch} eq 'x86_64' ) { - push @d, "$base$repo/x86_64/" . + push @d, "$base/x86_64/" . ( $repos->{$repo}->{os} ? $distrepo->{$rel}->{os} : 'RPMS/' ) . basename $pkg->{rpm}->filename; } elsif ( $pkg->{arch} eq 'zsrc' ) { - push @d, "$base$repo/SRPMS/" . + push @d, "$base/SRPMS/" . basename $pkg->{rpm}->filename; } else { printline('bold yellow on_red', 1, ' - ', $pkg->{rpm}->filename, ' (bad arch: ', $pkg->{arch}, ')'); @@ -483,7 +490,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 { @@ -504,7 +513,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; } }