diff options
author | Antoine Ginies <aginies@mandriva.com> | 2010-10-06 07:58:18 +0000 |
---|---|---|
committer | Antoine Ginies <aginies@mandriva.com> | 2010-10-06 07:58:18 +0000 |
commit | b364785ea90e60806aaaec56d15bcc70a74daf6d (patch) | |
tree | da257e1277bd0218929f12fde2e318657067eb16 /BCD/Resign.pm | |
parent | 46324a3fd9b86040b16dc3070b3a22438f7a616d (diff) | |
download | bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.gz bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.bz2 bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.tar.xz bcd-b364785ea90e60806aaaec56d15bcc70a74daf6d.zip |
end of the move
Diffstat (limited to 'BCD/Resign.pm')
-rw-r--r-- | BCD/Resign.pm | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/BCD/Resign.pm b/BCD/Resign.pm new file mode 100644 index 0000000..b6cc001 --- /dev/null +++ b/BCD/Resign.pm @@ -0,0 +1,63 @@ +package BCD::Resign; + +use strict; +use Parallel::ForkManager; +use File::Glob ':glob'; +use File::Basename; +use Expect; + +use BCD::Common qw(:DEFAULT $isoconf $NB_FORK $rpmrc $pwd_file $builddir); + +our @ISA = qw(Exporter); +our @EXPORT = qw(resign_media); + +my $verbose; +my $LOG="MEDIA -"; +my $color = "yellow"; + +my $password; +if (defined $pwd_file) { + -f $pwd_file and $password = `cat $pwd_file`; +} + +sub print_info { + map { if (!-f $pwd_file) { print_color("$LOG I cant find $_ file, i cant sign packages...", $color); } } $rpmrc, $pwd_file; + print_color("$LOG i will resign using info in those files: $rpmrc $pwd_file", $color); +} + +sub resign_media { + print_info(); + my $pm = new Parallel::ForkManager($NB_FORK); + my @list_path; my @checked; my $already_done; + foreach my $media (@{$isoconf->{media}{list}}) { + foreach (@checked) { $_ or next ; $media->{destmedia} =~ /^$_$/ and $already_done = 1; }; + $already_done and next; + push @checked, $media->{destmedia}; + push @list_path, $media->{destmedia}; + print_color("$LOG resigning packages from $media->{destmedia} media", $color); + } + foreach (@list_path) { + my @list_pkg = glob("$builddir/media/$_/*.rpm"); + my $count = @list_pkg; + print_color("$count transactions to do ... be patient !!!!", $color); + my $status = "0"; + foreach my $pkg (@list_pkg) { + $pkg or next; + my $basename_pkg = basename($pkg); + $status++; + my $pid = $pm->start and next; + print("$basename_pkg ($status/$count)\n"); + my $command = Expect->spawn("LC_ALL=C rpm --rcfile=$rpmrc --resign $pkg") or die "Couldn't start rpm: $!\n"; + $command->log_stdout($verbose); + $command->expect(20, -re, 'Enter pass phrase:' => sub { print $command $password; }); + $command->expect(undef); + $command->soft_close(); + $pm->finish; + } + print_color("Waiting for the end of some signature...", $color); + $pm->wait_all_children; + print_color("all signature are done...", $color); + } +} + +1; |