--- builds_bin/update_repos 2010/11/30 23:55:48 1.65 +++ builds_bin/update_repos 2012/07/27 18:07:11 1.70 @@ -28,30 +28,34 @@ my @archs = ( 'i386', 'x86_64' ); my $distrepo = { '7' => { active => 1, centos => 4, - repo => '/releases/7/', + repo => '/build/smeserver/repo/7/', os => 'RPMS/', - builds => '/builds/smeserver-7-core/', - community => '/builds/smeserver-7-contribs/', - stage => '/stage/7/', + builds => '/build/builds/smeserver-7-core/', + community => '/build/builds/smeserver-7-contribs/', + stage => '/build/smeserver/stage/7/', + sign => 1, + checksum => 'sha', }, '8' => { active => 1, centos => 5, - repo => '/releases/testing/8/', + repo => '/build/smeserver/repo/8/', os => '', - builds => '/builds/smeserver-8-core/', - community => '/builds/smeserver-8-contribs/', - stage => '/stage/8/', + builds => '/build/builds/smeserver-8-core/', + community => '/build/builds/smeserver-8-contribs/', + stage => '/build/smeserver/stage/8/', + sign => 1, + checksum => 'sha', }, }; -my $repos = { "${repotag}os" => { prio => 18, inc => 1, ver => 1, rel => 1, os => 1 }, - "${repotag}updates" => { prio => 17, inc => 1, ver => 1, rel => 1 }, - "${repotag}updates-testing" => { prio => 16, inc => 1, ver => 1, rel => 3 }, - "${repotag}extras" => { prio => 15, inc => 0, ver => 1, rel => 1 }, - "${repotag}addons" => { prio => 14, inc => 0, ver => 1, rel => 1 }, - "${repotag}contribs" => { prio => 13, inc => 0, ver => 1, rel => 1 }, - "${repotag}test" => { prio => 12, inc => 0, ver => 2, rel => 3, devel => 2 }, - "${repotag}dev" => { prio => 11, inc => 0, ver => 1, rel => 1, devel => 1 }, +my $repos = { "${repotag}os" => { prio => 19, inc => 1, ver => 1, rel => 1, os => 1 }, + "${repotag}updates" => { prio => 18, inc => 1, ver => 1, rel => 1 }, + "${repotag}updates-testing" => { prio => 17, inc => 1, ver => 1, rel => 3 }, + "${repotag}extras" => { prio => 16, inc => 0, ver => 1, rel => 1 }, + "${repotag}addons" => { prio => 15, inc => 0, ver => 1, rel => 1 }, + "${repotag}contribs" => { prio => 14, inc => 0, ver => 1, rel => 1 }, + "${repotag}test" => { prio => 13, inc => 0, ver => 2, rel => 3, devel => 2 }, + "${repotag}dev" => { prio => 12, inc => 0, ver => 1, rel => 1, devel => 1 }, 'centos' => { prio => 10, inc => 0, ver => 0, rel => 0, orig => 1, base => 1 }, 'epel' => { prio => 9, inc => 0, ver => 0, rel => 0, orig => 1, base => 1 }, 'rpmforge' => { prio => 7, inc => 0, ver => 0, rel => 0, orig => 1, base => 1 }, @@ -69,11 +73,15 @@ my $baserepo = { "~S${repotag}os/~A/$osd "~S${repotag}contribs/~A/RPMS/" => "${repotag}contribs", "~S${repotag}test/~A/RPMS/" => "${repotag}test", "~S${repotag}dev/~A/RPMS/" => "${repotag}dev", - "/stage/~s/~A/$osdir/~O" => 'stage', + "/build/smeserver/stage/~s/~A/$osdir/~O" => 'stage', '/mirrors/centos/~C/fasttrack/~A/RPMS/' => 'centos', '/mirrors/centos/~C/updates/~A/RPMS/' => 'centos', '/mirrors/centos/~C/os/~A/CentOS/~O' => 'centos', '/mirrors/centos/~C/extras/~A/RPMS/' => 'centos', + '/mirrors/centos-vault/~C/fasttrack/~A/RPMS/' => 'centos', + '/mirrors/centos-vault/~C/updates/~A/RPMS/' => 'centos', + '/mirrors/centos-vault/~C/os/~A/CentOS/~O' => 'centos', + '/mirrors/centos-vault/~C/extras/~A/RPMS/' => 'centos', '/mirrors/fedora/epel/~C/~A/' => 'epel', '/mirrors/fedora/epel/testing/~C/~A/' => 'epel', '/mirrors/rpmforge/redhat/el~C/en/~A/dag/RPMS/' => 'rpmforge', @@ -94,13 +102,13 @@ if ( $opts{q} ) { my $skippkg = { '7' => { 'centos' => { map { $_ => 1 } ( 'horde', 'imp-h3', 'ingo-h3', 'turba-h3' ) }, 'epel' => { map { $_ => 1 } ( 'clamav', 'fping', 'ocsinventory', 'perl-Compress-Bzip2', 'perl-Compress-Raw-Zlib', 'perl-Compress-Raw-Bzip2', 'perl-Crypt-OpenSSL-Bignum', 'perl-Crypt-OpenSSL-Random', 'perl-Crypt-OpenSSL-RSA', 'perl-DateTime', 'perl-Razor-Agent', 'perl-Text-Iconv' ) }, - 'rpmforge' => { map { $_ => 1 } ( 'mod_auth_tkt', 'perl-Test-Inline', 'spamassassin' ) }, + 'rpmforge' => { map { $_ => 1 } ( 'dovecot', 'mod_auth_tkt', 'perl-Test-Inline', 'perl-libwww-perl', 'spamassassin' ) }, 'atrpms' => { map { $_ => 1 } ( 'check4updates', 'dovecot', 'trac', 'yum' ) }, }, '8' => { 'atrpms' => { map { $_ => 1 } ( 'gnupg' ) }, 'centos' => { map { $_ => 1 } ( 'horde', 'imp-h3', 'ingo-h3', 'turba-h3' ) }, - 'epel' => { map { $_ => 1 } ( 'clamav', 'horde', 'libtalloc', 'libtdb', 'perl-Compress-Bzip2', 'perl-Compress-Raw-Zlib', 'perl-Compress-Raw-Bzip2', 'perl-Crypt-OpenSSL-Bignum', 'perl-Crypt-OpenSSL-Random', 'perl-Crypt-OpenSSL-RSA', 'perl-Razor-Agent', 'smolt' ) }, - 'rpmforge' => { map { $_ => 1 } ( 'libtalloc', 'mod_auth_tkt', 'perl-Test-Inline', 'spamassassin' ) }, + 'epel' => { map { $_ => 1 } ( 'clamav', 'fping', 'html2ps', 'horde', 'libtalloc', 'libtdb', 'oidentd', 'perl-Compress-Bzip2', 'perl-Compress-Raw-Zlib', 'perl-Compress-Raw-Bzip2', 'perl-Crypt-OpenSSL-Bignum', 'perl-Crypt-OpenSSL-Random', 'perl-Crypt-OpenSSL-RSA', 'perl-Razor-Agent', 'smolt' ) }, + 'rpmforge' => { map { $_ => 1 } ( 'dovecot', 'libtalloc', 'mod_auth_tkt', 'perl-Test-Inline', 'spamassassin' ) }, }, }; @@ -160,13 +168,17 @@ foreach my $ver ( sort { $a <=> $b } key # rpmforge (.el4.rf to .rf, with rf,rfb,rft,rfx endings) ($tmp = $pkg->{svr}) =~ s{\.el\d(\.rf[btx]?)$}{$1} && $rpms->{$base}->{vers}->{$tmp} && last SRC; - # rpmforge (.el4.rfx to .rf, with rfb,rft,rfx switched to rf) + # rpmforge (.el4.rfx to .rf, rfb,rft,rfx switched to rf) ($tmp = $pkg->{svr}) =~ s{\.el\d(\.rf)[btx]$}{$1} && $rpms->{$base}->{vers}->{$tmp} && last SRC; + # rpmforge (.el4.rf to .rfx, rf,rfb,rft,rfx switched to rfx) + ($tmp = $pkg->{svr}) =~ s{\.el\d(\.rf)[btx]?$}{$1x} && $rpms->{$base}->{vers}->{$tmp} && last SRC; # rpmforge (.el4.rf to .el5) TODO: remove when no longer needed ($tmp = $pkg->{svr}) =~ s{\.el\d\.rf$}{.el5} && $rpms->{$base}->{vers}->{$tmp} && last SRC; # rpmforge (.2.el4.rf to .rf, minor modification not pushed to source?) TODO: remove when no longer needed ($tmp = $pkg->{svr}) =~ s{\.2\.el\d(\.rf)$}{$1} && $rpms->{$base}->{vers}->{$tmp} && last SRC; + # atrpms (remove .at) + ($tmp = $pkg->{svr}) =~ s{\.at$}{} && $rpms->{$base}->{vers}->{$tmp} && last SRC; # atrpms (remove .el4.at) ($tmp = $pkg->{svr}) =~ s{\.el\d\.at$}{} && $rpms->{$base}->{vers}->{$tmp} && last SRC; # atrpms (remove .el4) @@ -264,7 +276,7 @@ foreach my $ver ( sort { $a <=> $b } key $srpm = $cmp if ! $srpm && $cmp->{src}; $reposrc{$cmp->{repo}}->{srpm} = $cmp if $reposrc{$cmp->{repo}}; } - } elsif ($repos->{$cmp->{repo}}->{stage} ) { + } elsif ( $repos->{$cmp->{repo}}->{stage} ) { $cmp->{delete}++; } else { $srpm = $cmp if ! $srpm && $cmp->{src}; @@ -379,13 +391,13 @@ foreach my $ver ( sort { $a <=> $b } key push @{$pkg->{repos}}, $stage; } } - if ( ! $print && ($pkg->{delete} || $pkg->{repos} || $pkg->{nosig} ) ) { + if ( ! $print && ($pkg->{delete} || $pkg->{repos} || ( $pkg->{nosig} && $distrepo->{$ver}->{sign} ) ) ) { print "\n$base ($disttag$ver)\n", "=" x length("$base ($disttag$ver)"), "\n"; $print++; } my $src = $pkg->{rpm}->filename; - if ( $pkg->{nosig} ) { + if ( $pkg->{nosig} && $distrepo->{$ver}->{sign} ) { print "sign package (", basename($pkg->{rpm}->filename), ")\n"; unless ( $opts{t} ) { qx(cat $HOME/.rpmpass | setsid rpm --addsign $src >& /dev/null); @@ -445,7 +457,7 @@ foreach my $ver ( sort { $a <=> $b } key next if $pkg->{done} || $repos->{$pkg->{repo}}->{orig} || $repos->{$pkg->{repo}}->{base}; $pkg->{delete}++; my $src = $pkg->{rpm}->filename; - if ( ! $print && ($pkg->{delete} || $pkg->{repos} || $pkg->{nosig} ) ) { + if ( ! $print && ($pkg->{delete} || $pkg->{repos} || ( $pkg->{nosig} && $distrepo->{$ver}->{sign} ) ) ) { print "\n$base ($disttag$ver)\n", "=" x length("$base ($disttag$ver)"), "\n"; $print++; } @@ -467,20 +479,17 @@ foreach my $ver ( sort { $a <=> $b } key chomp $dir; print "rebuild $repo/$arch\n"; unless ( $opts{t} ) { - if ( $dir =~ m{test/|-testing/} ) { - if ( -f "$dir/repodata/comps.xml" ) { - qx(createrepo --update --database --exclude *smeserver-release*.rpm --exclude *.src.rpm --exclude *-debuginfo-*.rpm --groupfile repodata/comps.xml $dir); - } else { - qx(createrepo --update --database --exclude *smeserver-release*.rpm --exclude *.src.rpm --exclude *-debuginfo-*.rpm $dir); - } - } else { - if ( -f "$dir/repodata/comps.xml" ) { - qx(createrepo --update --database --exclude *.src.rpm --exclude *-debuginfo-*.rpm --groupfile repodata/comps.xml $dir); - } else { - qx(createrepo --update --database --exclude *.src.rpm --exclude *-debuginfo-*.rpm $dir); - } - } + my $checksum = "--checksum $distrepo->{$ver}->{checksum}"; + + my $exclude = ""; + $exclude = "--exclude *smeserver-release*.rpm" if $dir =~ m{test/|-testing/}; + + my $groupfile = ""; + $groupfile = "--groupfile repodata/comps.xml" if -f "$dir/repodata/comps.xml"; + + qx(createrepo --update --database --exclude *.src.rpm --exclude *-debuginfo-*.rpm $checksum $exclude $groupfile $dir); qx(repoview $dir); + qx(rm -rf $dir/.olddata) if -d "$dir/.olddata"; qx(rm -rf $dir/.repodata) if -d "$dir/.repodata"; qx(rm -rf $dir/repodata/index.html) if -f "$dir/repodata/index.html"; @@ -548,7 +557,7 @@ sub process_rpm { } my ($src, $version, $release) = ($pkg->is_source_package ? $pkg->filename : $pkg->sourcerpm) =~ m{(?:^|/)([^/]*)-([^-]+)-([^-]+)\.\w+\.rpm$}; return if $skippkg->{$ver}->{$repo} && ( $skippkg->{$ver}->{$repo}->{$src} || $skippkg->{$ver}->{$repo}->{$pkg->name} ); - return if $repos->{$repo}->{base} && $nosig; + return if $repos->{$repo}->{base} && $nosig && $baserepo->{$ver}->{sign}; if ( $nosig && ! -f "$HOME/.rpmpass" ) { print " * missing signature (" .$pkg->filename . ")\n"; return; } my $arch = 'unknown'; $arch = 'SRPMS' if $pkg->filename =~ m{[/-](SRPMS?|src|source)/};