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