diff --git a/packager/0install/parallel.xml b/packager/0install/parallel.xml index 3ae3d108..fa7075cd 100644 --- a/packager/0install/parallel.xml +++ b/packager/0install/parallel.xml @@ -159,11 +159,15 @@ xargs or cat | sh. + + + + diff --git a/packager/0install/update b/packager/0install/update index 5cfc1031..a44cdbfc 100755 --- a/packager/0install/update +++ b/packager/0install/update @@ -16,7 +16,7 @@ wget "$url.sig" -O "${file}.sig" gpg -n --verify "${file}.sig" "${file}" 2>&1 | tee "${file}.gpglog" set +x KEYID="$(grep '^Primary key fingerprint:' "${file}.gpglog" | tr -d ' ' | cut -f 2 -d : )" -fingerprint="BE9CB49381DE3166A3BC66C12C6229E2FFFFFFF1" +fingerprint="CDA01A4208C4F74506107E7BD1AB451688888888" if [ "$KEYID" != "$fingerprint" ]; then echo "Signature verification FAILED:" cat "${file}.gpglog" diff --git a/src/niceload b/src/niceload index 234dc56a..77d9aa35 100755 --- a/src/niceload +++ b/src/niceload @@ -367,6 +367,7 @@ sub start { } use POSIX ":sys_wait_h"; +use POSIX qw(:sys_wait_h); sub REAPER { my $stiff; @@ -397,8 +398,14 @@ sub kill_child_TSTP { sub kill_child_INT { my $self = $Global::process; - ::debug("SIGINT received. Killing $self->{'pid'} Exit\n"); - kill INT => $self->pgrp(); + ::debug("SIGINT received.\n"); + if(not @opt::pid) { + ::debug("Killing $self->{'pid'} Exit\n"); + kill INT => $self->pgrp(); + } else { + ::debug("Continue pids $self->{'pid'} Exit\n"); + kill CONT => $self->pgrp(); + } exit; } diff --git a/src/parallel b/src/parallel index f0a449ea..eeda057b 100755 --- a/src/parallel +++ b/src/parallel @@ -207,6 +207,15 @@ if($opt::filter_hosts and (@opt::sshlogin or @opt::sshloginfile)) { } if($opt::nonall or $opt::onall) { + sub tmp_joblog { + my $joblog = shift; + if(not defined $joblog) { + return undef; + } + my ($fh, $tmpfile) = ::tempfile(SUFFIX => ".log"); + close $fh; + return $tmpfile; + } # Copy all @fhlist into tempfiles my @argfiles = (); for my $fh (@fhlist) { @@ -234,7 +243,7 @@ if($opt::nonall or $opt::onall) { join(" ", ((defined $opt::u) ? "-u" : ""), ((defined $opt::group) ? "-g" : ""), - ((defined $opt::joblog) ? "--joblog $opt::joblog" : ""), + ((defined $opt::files) ? "--files" : ""), ((defined $opt::colsep) ? "--colsep ".shell_quote($opt::colsep) : ""), ((@opt::v) ? "-vv" : ""), ((defined $opt::D) ? "-D" : ""), @@ -247,8 +256,14 @@ if($opt::nonall or $opt::onall) { ::debug("| $0 $options\n"); open(my $parallel_fh, "|-", "$0 -j0 $options") || ::die_bug("This does not run GNU Parallel: $0 $options"); + my @joblogs; for my $sshlogin (values %Global::host) { - print $parallel_fh "$0 $suboptions -j1 ". + my $joblog = tmp_joblog($opt::joblog); + if($joblog) { + push @joblogs, $joblog; + $joblog = "--joblog $joblog"; + } + print $parallel_fh "$0 $suboptions -j1 $joblog ". ((defined $opt::tag) ? "--tagstring ".shell_quote_scalar($sshlogin->string()) : ""). " -S ". shell_quote_scalar($sshlogin->string())." ". @@ -259,6 +274,16 @@ if($opt::nonall or $opt::onall) { debug("--onall exitvalue ",$?); if(@opt::basefile) { cleanup_basefile(); } unlink(@argfiles); + my %seen; + for my $joblog (@joblogs) { + # Append to $joblog + open(my $fh, "<", $joblog) || ::die_bug("Cannot open tmp joblog $joblog"); + # Skip first line (header); + <$fh>; + print $Global::joblog (<$fh>); + close $fh; + unlink($joblog); + } wait_and_exit(min(undef_as_zero($Global::exitstatus),254)); } diff --git a/src/parallel.pod b/src/parallel.pod index 9dd61bd2..9b794bc8 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -1987,6 +1987,18 @@ can be written like this: B +=head1 EXAMPLE: Finding the lowest difference between files + +B is good for finding differences in text files. B +gives an indication of the size of the difference. To find the +differences between all files in the current dir do: + +B + +This way it is possible to see if some files are closer to other +files. + + =head1 EXAMPLE: for-loops with column names When doing multiple nested for-loops it can be easier to keep track of