diff options
-rwxr-xr-x | iurt2 | 31 |
1 files changed, 18 insertions, 13 deletions
@@ -513,6 +513,13 @@ retry: hash => "create_$srpm") or next; print {$run{LOG}} "iurt: installing build dependencies of $srpm...\n" if $run{verbose}; + my $wait_urpmi = sub { + print {$run{LOG}} "WARNING iurt: urpmi database locked, waiting...\n" if $run{debug}; + sleep 30; + $wait_limit++; + if ($wait_limit > 8) { + $wait_limit = 0; system(qq{sudo pkill -9 urpmi &>/dev/null}) + } }; if (!perform_command("sudo urpmi $urpmi_options --root $chroot_tmp $chroot_tmp/home/$luser/rpm/SRPMS/$srpm", \%run, $config, mail => $config->{admin}, @@ -526,13 +533,7 @@ retry: debug_mail => $run{debug}, error_regexp => 'cannot be installed', wait_regexp => 'database locked', - wait_callback => sub { - print {$run{LOG}} "WARNING iurt: urpmi database locked, waiting...\n" if $run{debug}; - sleep 30; - $wait_limit++; - if ($wait_limit > 8) { - $wait_limit = 0; system(qq{sudo pkill -9 urpmi &>/dev/null}) - } }, + wait_callback => $wait_urpmi, log => "$local_spool/log/$srpm/", callback => sub { my ($opt, $output) = @_; @@ -641,10 +642,12 @@ retry: error => "[REBUILD] binaries packages generated from $srpm do not install correctly", hash => "binary_test_$srpm", srpm => $srpm, - timeout => 300, + timeout => 600, debug_mail => $run{debug}, freq => 1, - error_regexp => 'unable to access', + wait_regexp => 'database locked', + wait_callback => $wait_urpmi, +error_regexp => 'unable to access', log => "$local_spool/log/$srpm/")) { $cache->{failure}{$srpm} = 1; $run{status}{$srpm} = 'binary_test_failure'; @@ -1088,7 +1091,8 @@ sub perform_command { } if (ref $opt{callback}) { $call_ret = $opt{callback}(\%opt, $output); - $call_ret == -1 and return 1 + $call_ret == -1 and return 1; + $call_ret == -2 and return 0 } if ($kill) { $comment = "Command has been killed after $opt{timeout} seconds: $command\n"; @@ -1119,12 +1123,13 @@ sub perform_command { if ($opt{log} && $config->{log_url}) { $comment = qq|See $config->{log_url}/$run{distro_tag}/$run{my_arch}/log/$opt{srpm}/\n\n$comment| } + my $out = $output if length $output < 10000; if ($opt{mail} && $config->{sendmail} && !$config->{no_mail}{$opt{mail}}) { if (! ($cache->{warning}{$opt{hash}}{$opt{mail}} % $opt{freq})) { my $cc = join ',', grep { !$config->{no_mail}{$_} } split ',', $opt{cc}; - sendmail($opt{mail}, $cc, $opt{error} , "$comment\n$output", 0, 0, $opt{debug_mail}); + sendmail($opt{mail}, $cc, $opt{error} , "$comment\n$out", 0, 0, $opt{debug_mail}); } elsif ($config->{admin}) { - sendmail($config->{admin}, '' , $opt{error}, "$comment\n$output", 0, 0, $opt{debug_mail}); + sendmail($config->{admin}, '' , $opt{error}, "$comment\n$out", 0, 0, $opt{debug_mail}); } } $cache->{warning}{$opt{hash}}{$opt{mail}}++; @@ -1466,7 +1471,7 @@ sub add_sudo { print {$run->{LOG}} "ERROR iurt: could not open $file ($!)\n"; return 0 } - print $f qq{Cmnd_Alias RPM=/bin/rpm,/usr/sbin/urpmi,/usr/sbin/urpme,/usr/sbin/urpmi.addmedia + print $f qq{Cmnd_Alias RPM=/bin/rpm,/usr/sbin/urpmi,/usr/sbin/urpme,/usr/sbin/urpmi.addmedia,/usr/sbin/urpmi.update,/usr/sbin/urpmi.removemedia root ALL=(ALL) ALL $user ALL=(ALL) NOPASSWD:RPM }; |