--- builds_bin/update_repos 2013/03/16 14:19:11 1.72 +++ builds_bin/update_repos 2013/09/10 02:26:09 1.73 @@ -14,7 +14,7 @@ umask 002; $| = 1; my %opts; -getopts( 'osqtr:', \%opts ); +getopts( 'ostr:', \%opts ); $opts{r} ||= ''; my $rpm_flags = RPM2->vsf_nodsaheader | RPM2->vsf_norsaheader | RPM2->vsf_nodsa | RPM2->vsf_norsa; @@ -25,22 +25,14 @@ my $repotag = 'sme'; my @archs = ( 'i386', 'x86_64' ); -my $distrepo = { '7' => { active => 0, - centos => 4, - repo => '/build/smeserver/repo/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, +my $distrepo = { '8' => { active => 1, centos => 5, repo => '/build/smeserver/repo/8/', builds => ['/build/builds/smeserver-8-core/'], community => '/build/builds/smeserver-8-contribs/', stage => '/build/smeserver/stage/8/', sign => 1, + keyname => 'SME Server 7 signing key ', checksum => 'sha', }, '9' => { active => 1, @@ -50,6 +42,7 @@ my $distrepo = { '7' => { active => 0 community => '/build/builds/smeserver-9-contribs/', stage => '/build/smeserver/stage/9/', sign => 1, + keyname => 'SME Server 7 signing key ', checksum => 'sha256', }, }; @@ -99,24 +92,12 @@ my $baserepo = { "~S${repotag}os/~A/" => '/mirrors/atrpms/src/el~C-~A/atrpms/testing/' => 'atrpms', }; -if ( $opts{q} ) { - $baserepo->{'/mirrors/centos-qa/CentOS/~C/fasttrack/~A/'} = 'centos'; - $baserepo->{'/mirrors/centos-qa/CentOS/~C/updates/~A/'} = 'centos'; - $baserepo->{'/mirrors/centos-qa/CentOS/~C/os/~A/'} = 'centos'; - $baserepo->{'/mirrors/centos-qa/CentOS/~C/extras/~A/'} = 'centos'; -} - -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 } ( 'dovecot', 'mod_auth_tkt', 'perl-Test-Inline', 'perl-libwww-perl', 'spamassassin' ) }, - 'atrpms' => { map { $_ => 1 } ( 'check4updates', 'dovecot', 'trac', 'yum' ) }, - }, - '8' => { 'atrpms' => { map { $_ => 1 } ( 'gnupg' ) }, +my $skippkg = { '8' => { 'atrpms' => { map { $_ => 1 } ( 'clamav', 'gnupg' ) }, 'centos' => { map { $_ => 1 } ( 'horde', 'imp-h3', 'ingo-h3', 'turba-h3' ) }, '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' ) }, }, - '9' => { 'atrpms' => { map { $_ => 1 } ( 'perl-Pod-Escapes', 'perl-Pod-Simple' ) }, + '9' => { 'atrpms' => { map { $_ => 1 } ( 'clamav', 'perl-Pod-Escapes', 'perl-Pod-Simple' ) }, 'epel' => { map { $_ => 1 } ( 'oidentd', 'perl-Razor-Agent' ) }, 'rpmforge' => { map { $_ => 1 } ( 'perl-CGI', 'perl-Compress-Raw-Zlib', 'perl-ExtUtils-ParseXS', 'perl-Pod-Escapes', 'perl-Pod-Simple', 'perl-Time-HiRes', 'perl-version', 'spamassassin' ) }, }, @@ -151,11 +132,7 @@ foreach my $ver ( sort { $a <=> $b } key } } else { $adir =~ s/~A/$arch/; - if ( -d "${adir}CentOS/RPMS" ) { - $adir .= "CentOS/RPMS/"; - } elsif ( -d "${adir}$osdir/RPMS" ) { - $adir .= "$osdir/RPMS/"; - } elsif ( -d "${adir}RPMS" ) { + if ( -d "${adir}RPMS" ) { $adir .= "RPMS/"; } elsif ( -d "${adir}Packages" ) { $adir .= "Packages/"; @@ -264,7 +241,7 @@ foreach my $ver ( sort { $a <=> $b } key } elsif ( $repos->{$cmp->{repo}}->{orig} ) { $orig{$cmp->{nvra}}++; unless ( $repos->{$cmp->{repo}}->{base} ) { - my $tag = sprintf '%s%s/%s-%s', $distrepo->{$ver}->{$cmp->{repo}}, $cmp->{name}, $cmp->{ver}, $cmp->{rel}; + my $tag = dirname(dirname($cmp->{rpm}->{filename})); qx(touch $tag/PUSHED) if ! $opts{t} && -d $tag && ! -f "$tag/PUSHED"; } } elsif ( $cmp->{src} ) { @@ -315,7 +292,7 @@ foreach my $ver ( sort { $a <=> $b } key if ( $repos->{$cmp->{repo}}->{orig} ) { $orig{$cmp->{nvra}}++; unless ( $repos->{$cmp->{repo}}->{base} ) { - my $tag = sprintf '%s%s/%s-%s', $distrepo->{$ver}->{$cmp->{repo}}, $cmp->{name}, $cmp->{ver}, $cmp->{rel}; + my $tag = dirname(dirname($cmp->{rpm}->{filename})); qx(touch $tag/PUSHED) if ! $opts{t} && -d $tag && ! -f "$tag/PUSHED"; } } elsif ( $cmp->{src} && $reposrc{$cmp->{repo}} ) { @@ -352,7 +329,7 @@ foreach my $ver ( sort { $a <=> $b } key unless ( $cmp->{src} && ! $reposrc{$dest} ) { if ( $repos->{$dest}->{prio} >= $repos->{$track{repo}}->{prio} && ! verrel($cmp, $dest, \%counts) ) { unless ( $repos->{$cmp->{repo}}->{base} ) { - my $tag = sprintf '%s%s/%s-%s', $distrepo->{$ver}->{$cmp->{repo}}, $cmp->{name}, $cmp->{ver}, $cmp->{rel}; + my $tag = dirname(dirname($cmp->{rpm}->{filename})); qx(touch $tag/PUSHED) if ! $opts{t} && -d $tag && ! -f "$tag/PUSHED"; } push @{$cmp->{repos}}, $dest; @@ -418,22 +395,23 @@ foreach my $ver ( sort { $a <=> $b } key push @{$pkg->{repos}}, $stage; } } - 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} && $distrepo->{$ver}->{sign} ) { - print "sign package (", basename($pkg->{rpm}->filename), ")\n"; - unless ( $opts{t} ) { - qx(cat $HOME/.rpmpass | setsid rpm --addsign $src >& /dev/null); - if ($?) { - print " * failed to sign package\n"; - next; - } - } - } + if ( ! $print && ($pkg->{delete} || $pkg->{repos} || ( ! $repos->{$pkg->{repo}}->{base} && $pkg->{nosig} && $distrepo->{$ver}->{sign} ) ) ) { + print "\n$base ($disttag$ver)\n", "=" x length("$base ($disttag$ver)"), "\n"; + $print++; + } + + my $src = $pkg->{rpm}->filename; + if ( ! $repos->{$pkg->{repo}}->{base} && $pkg->{nosig} && $distrepo->{$ver}->{sign} ) { + print "sign package (", basename($pkg->{rpm}->filename), ")\n"; + unless ( $opts{t} ) { + qx(cat $HOME/.rpmpass | setsid rpm -D '_gpg_name $distrepo->{$ver}->{keyname}' --addsign $src >& /dev/null); + if ($?) { + print " * failed to sign package\n"; + next; + } + } + } if ( $pkg->{repos} ) { foreach my $repo ( @{$pkg->{repos}} ) { @@ -473,7 +451,7 @@ foreach my $ver ( sort { $a <=> $b } key qx(rm -f $src) unless $opts{t}; $repochg{$pkg->{repo}}++ unless $repos->{$pkg->{repo}}->{base} || $repos->{$pkg->{repo}}->{stage}; if ( $repos->{$pkg->{repo}}->{orig} && ! $repos->{$pkg->{repo}}->{base} ) { - my $tag = sprintf '%s%s/%s-%s', $distrepo->{$ver}->{$pkg->{repo}}, $pkg->{name}, $pkg->{ver}, $pkg->{rel}; + my $tag = dirname(dirname($pkg->{rpm}->{filename})); qx(rm -f $tag/PUSHED) if ! $opts{t} && -d $tag && -f "$tag/PUSHED"; } }