--- builds_bin/update_repos 2007/07/05 14:17:56 1.17 +++ builds_bin/update_repos 2007/07/19 19:59:15 1.18 @@ -19,10 +19,9 @@ my $arch = `uname -i`; chomp $arch; my @repos = ( - "$releasedir/$smerel/smeos/$arch/CentOS/RPMS", - "$releasedir/$smerel/smeos/$arch/SME/RPMS", - "$releasedir/$smerel/smeos/$arch/RPMS", "$releasedir/$smerel/smeos/$arch/SME", + "$releasedir/$smerel/smeos/$arch/SME/RPMS", + "$releasedir/$smerel/smeos/$arch/CentOS/RPMS", "$releasedir/$smerel/smeupdates/$arch/RPMS", "$releasedir/$smerel/smeupdates-testing/$arch/RPMS", "$releasedir/$smerel/smeextras/$arch/RPMS", @@ -34,7 +33,7 @@ my @repos = ( "$builds/RPMS/i586", "$builds/RPMS/i686", "$builds/RPMS/noarch", - "$stagedir/RPMS", + "$stagedir/RPMS-$arch", ); my @srcrepos = ( @@ -60,6 +59,7 @@ my %sources; my %changed; my %copy; +print "\nReading repos...\n"; foreach my $repo ( @repos ) { my $r = $repo; if ( $repo =~ m{$stagedir/RPMS} ) { @@ -70,7 +70,14 @@ foreach my $repo ( @repos ) { $r = $1; } - if ( $r ne 'builds' ) { + if ( $r eq $stagedir ) { + opendir SRPMS, "$r/SRPMS-$arch" or next; + foreach my $srpm ( grep { /\.rpm$/ } readdir SRPMS ) { + $srpms{$r}{$srpm} = 0; + $sources{$srpm} = "$r/SRPMS-$arch"; + } + closedir SRPMS; + } elsif ( $r ne 'builds' ) { opendir SRPMS, "$r/SRPMS" or next; foreach my $srpm ( grep { /\.rpm$/ } readdir SRPMS ) { $srpms{$r}{$srpm} = 0; @@ -80,6 +87,7 @@ foreach my $repo ( @repos ) { } opendir RPMS, $repo or next; + print " - $repo\n"; foreach my $pkg ( reverse sort map { RPM2->open_package("$repo/$_", $rpm_flags); } grep { /\.rpm$/ } readdir RPMS ) { my $rpm = { name => $pkg->tag("NAME"), filename => join("-", map { $pkg->tag($_) } qw/name version release/) . "." . $pkg->tag("ARCH"), @@ -103,6 +111,7 @@ foreach my $repo ( @repos ) { closedir RPMS; } +print "\nReading source repos...\n"; foreach my $repo ( reverse @srcrepos ) { my %temp_repo = map { $_ => $repo } grep { /\.rpm$/ } readdir SRPMS if ( opendir SRPMS, $repo ); closedir SRPMS; @@ -110,12 +119,13 @@ foreach my $repo ( reverse @srcrepos ) { %sources = (%sources, %temp_repo); } +print "\nFinding latest packages...\n"; my @latest; foreach my $rpm ( reverse grep { $_->{repo} =~ m{^$releasedir/$smerel/} && $_->{repo} !~ m{/sme(addons|contribs|dev|extras)$} } @rpms ) { unless ( grep { $_->{name} eq $rpm->{name} && $_->{rpm} gt $rpm->{rpm} } @latest ) { push @latest, $rpm; unless ( grep { $_->{repo} eq $stagedir && $_->{filename} eq $rpm->{filename} } @rpms ) { - push @{$copy{"$stagedir/RPMS"}}, $rpm->{rpm}->filename; + push @{$copy{"$stagedir/RPMS-$arch"}}, $rpm->{rpm}->filename; push @rpms, { name => $rpm->{name}, filename => $rpm->{filename}, version => $rpm->{version}, @@ -138,6 +148,7 @@ foreach my $rpm ( reverse grep { $_->{re } } +print "\nFinding development packages...\n"; my @devel; my %versions; foreach my $rpm ( grep { $_->{repo} eq 'builds' } @rpms ) { @@ -166,7 +177,7 @@ foreach my $rpm ( grep { $_->{repo} =~ m $rpm->{repo} = 'deleted' unless grep { $_->{filename} eq $rpm->{filename} } @devel; } -print "\n"; +print "\nFinding source packages...\n"; foreach my $rpm ( grep { $_->{repo} !~ m{^(builds|deleted)$} } @rpms ) { my $src; my $srpm = $rpm->{rpm}->tag("SOURCERPM"); @@ -184,9 +195,13 @@ foreach my $rpm ( grep { $_->{repo} !~ m my $repo = $rpm->{repo}; foreach my $source ( @sources ) { if ( $sources{$source} ) { - unless ( -f "$repo/SRPMS/$source" ) { - push @{$copy{"$repo/SRPMS"}}, "$sources{$source}/$source"; - $changed{$repo}++ unless $repo eq $stagedir; + if ($repo eq $stagedir) { + push @{$copy{"$repo/SRPMS-$arch"}}, "$sources{$source}/$source" unless -f "$repo/SRPMS-$arch/$source"; + } else { + unless ( -f "$repo/SRPMS/$source" ) { + push @{$copy{"$repo/SRPMS"}}, "$sources{$source}/$source"; + $changed{$repo}++; + } } $srpms{$repo}{$source}++; $found++; @@ -200,8 +215,12 @@ my @remove; foreach my $repo ( keys %srpms ) { foreach my $rpm ( keys %{$srpms{$repo}} ) { unless ( $srpms{$repo}{$rpm} ) { - push @remove, "$repo/SRPMS/$rpm"; - $changed{$repo}++ unless $repo eq $stagedir; + if ($repo eq $stagedir) { + push @remove, "$repo/SRPMS-$arch/$rpm"; + } else { + push @remove, "$repo/SRPMS/$rpm"; + $changed{$repo}++; + } } } }