aboutsummaryrefslogtreecommitdiffstats
path: root/resign_rpm_by_path.pl
blob: 3807a3e41b2bfbabc72ef9409653720b6c8f59c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl -w

use strict;
use Parallel::ForkManager;
use File::Glob ':glob';
use File::Basename;
use Expect;


my $NB_FORK=15;
# password file
my $pwd_file = "/home/plop/.signature.gpg";
my $rpmrc = "/home/plop/.rpmrc";
my $path = $ARGV[0];

$ARGV[0] or die "First arg must be a path to rpm\n";

my $password = `cat $pwd_file`;
my $verbose = "0" ;

my $pm = new Parallel::ForkManager($NB_FORK);
my @list_pkg = glob("$path/*.rpm");
my $count = @list_pkg;
print "$count transactions to do ... be patient !!!!";
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 "Waiting for the end of some signature...\n";
$pm->wait_all_children;
print "all signature are done...\n";