From fa72e99c1601aeb968d57e9444cc6fcb8212aa2e Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Sat, 28 Mar 2015 14:24:15 +0100 Subject: [PATCH] parallel: Allow for running command called ' ' on MacOSX. --- src/parallel | 270 ++++++++++--------- testsuite/tests-to-run/parallel-polarhome.sh | 12 + testsuite/wanted-results/parallel-polarhome | 50 ++-- 3 files changed, 177 insertions(+), 155 deletions(-) diff --git a/src/parallel b/src/parallel index cbd498a0..57911446 100755 --- a/src/parallel +++ b/src/parallel @@ -3190,6 +3190,14 @@ sub show_limits { sub __GENERIC_COMMON_FUNCTION__ {} +sub tmpfile { + # Create tempfile as $TMPDIR/parXXXXX + # Returns: + # $filehandle = opened file handle + # $filename = file name created + return ::tempfile(DIR=>$ENV{'TMPDIR'}, TEMPLATE => 'parXXXXX', @_); +} + sub uniq { # Remove duplicates and return unique values return keys %{{ map { $_ => 1 } @_ }}; @@ -3243,6 +3251,99 @@ sub undef_as_empty { return $a ? $a : ""; } +sub multiply_binary_prefix { + # Evalualte numbers with binary prefix + # Ki=2^10, Mi=2^20, Gi=2^30, Ti=2^40, Pi=2^50, Ei=2^70, Zi=2^80, Yi=2^80 + # ki=2^10, mi=2^20, gi=2^30, ti=2^40, pi=2^50, ei=2^70, zi=2^80, yi=2^80 + # K =2^10, M =2^20, G =2^30, T =2^40, P =2^50, E =2^70, Z =2^80, Y =2^80 + # k =10^3, m =10^6, g =10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24 + # 13G = 13*1024*1024*1024 = 13958643712 + # Input: + # $s = string with prefixes + # Returns: + # $value = int with prefixes multiplied + my $s = shift; + if(not $s) { + return $s; + } + $s =~ s/ki/*1024/gi; + $s =~ s/mi/*1024*1024/gi; + $s =~ s/gi/*1024*1024*1024/gi; + $s =~ s/ti/*1024*1024*1024*1024/gi; + $s =~ s/pi/*1024*1024*1024*1024*1024/gi; + $s =~ s/ei/*1024*1024*1024*1024*1024*1024/gi; + $s =~ s/zi/*1024*1024*1024*1024*1024*1024*1024/gi; + $s =~ s/yi/*1024*1024*1024*1024*1024*1024*1024*1024/gi; + $s =~ s/xi/*1024*1024*1024*1024*1024*1024*1024*1024*1024/gi; + + $s =~ s/K/*1024/g; + $s =~ s/M/*1024*1024/g; + $s =~ s/G/*1024*1024*1024/g; + $s =~ s/T/*1024*1024*1024*1024/g; + $s =~ s/P/*1024*1024*1024*1024*1024/g; + $s =~ s/E/*1024*1024*1024*1024*1024*1024/g; + $s =~ s/Z/*1024*1024*1024*1024*1024*1024*1024/g; + $s =~ s/Y/*1024*1024*1024*1024*1024*1024*1024*1024/g; + $s =~ s/X/*1024*1024*1024*1024*1024*1024*1024*1024*1024/g; + + $s =~ s/k/*1000/g; + $s =~ s/m/*1000*1000/g; + $s =~ s/g/*1000*1000*1000/g; + $s =~ s/t/*1000*1000*1000*1000/g; + $s =~ s/p/*1000*1000*1000*1000*1000/g; + $s =~ s/e/*1000*1000*1000*1000*1000*1000/g; + $s =~ s/z/*1000*1000*1000*1000*1000*1000*1000/g; + $s =~ s/y/*1000*1000*1000*1000*1000*1000*1000*1000/g; + $s =~ s/x/*1000*1000*1000*1000*1000*1000*1000*1000*1000/g; + + $s = eval $s; + ::debug($s); + return $s; +} + +{ + my ($disk_full_fh, $b8193, $name); + sub exit_if_disk_full { + # Checks if $TMPDIR is full by writing 8kb to a tmpfile + # If the disk is full: Exit immediately. + # Returns: + # N/A + if(not $disk_full_fh) { + ($disk_full_fh, $name) = ::tmpfile(SUFFIX => ".df"); + # Separate unlink due to NFS dealing badly with File::Temp + unlink $name; + $b8193 = "x"x8193; + } + # Linux does not discover if a disk is full if writing <= 8192 + # Tested on: + # bfs btrfs cramfs ext2 ext3 ext4 ext4dev jffs2 jfs minix msdos + # ntfs reiserfs tmpfs ubifs vfat xfs + # TODO this should be tested on different OS similar to this: + # + # doit() { + # sudo mount /dev/ram0 /mnt/loop; sudo chmod 1777 /mnt/loop + # seq 100000 | parallel --tmpdir /mnt/loop/ true & + # seq 6900000 > /mnt/loop/i && echo seq OK + # seq 6980868 > /mnt/loop/i + # seq 10000 > /mnt/loop/ii + # sleep 3 + # sudo umount /mnt/loop/ || sudo umount -l /mnt/loop/ + # echo >&2 + # } + print $disk_full_fh $b8193; + if(not $disk_full_fh + or + tell $disk_full_fh != 8193) { + # On raspbian the disk can be full except for 10 chars. + ::error("Output is incomplete. Cannot append to buffer file in $ENV{'TMPDIR'}. Is the disk full?\n"); + ::error("Change \$TMPDIR with --tmpdir or use --compress.\n"); + ::wait_and_exit(255); + } + truncate $disk_full_fh, 0; + seek($disk_full_fh, 0, 0) || die; + } +} + sub spacefree { # Remove comments and spaces # Inputs: @@ -3376,15 +3477,49 @@ sub which { my $p=$$; for (@pidtable) { # must match: 24436 21224 busybox ash - /(\S+)\s+(\S+)\s+(\S+.*)/ or ::die_bug("pidtable format: $_"); - $parent_of{$1} = $2; - push @{$children_of{$2}}, $1; - $name_of{$1} = $3; + # must match: 24436 21224 <> + # or: perl -e 'while($0=" "){}' + if(/^\s*(\S+)\s+(\S+)\s+(\S+.*)/ + or + $^O eq "darwin" and /^\s*(\S+)\s+(\S+)\s+()$/) { + $parent_of{$1} = $2; + push @{$children_of{$2}}, $1; + $name_of{$1} = $3; + } else { + ::die_bug("pidtable format: $_"); + } } return(\%children_of, \%parent_of, \%name_of); } } +sub now { + # Returns time since epoch as in seconds with 3 decimals + # Uses: + # @Global::use + # Returns: + # $time = time now with millisecond accuracy + if(not $Global::use{"Time::HiRes"}) { + if(eval "use Time::HiRes qw ( time );") { + eval "sub TimeHiRestime { return Time::HiRes::time };"; + } else { + eval "sub TimeHiRestime { return time() };"; + } + $Global::use{"Time::HiRes"} = 1; + } + + return (int(TimeHiRestime()*1000))/1000; +} + +sub usleep { + # Sleep this many milliseconds. + # Input: + # $ms = milliseconds to sleep + my $ms = shift; + ::debug(int($ms),"ms "); + select(undef, undef, undef, $ms/1000); +} + sub reap_usleep { # Reap dead children. # If no dead children: Sleep specified amount with exponential backoff @@ -3417,33 +3552,6 @@ sub reap_usleep { } } -sub usleep { - # Sleep this many milliseconds. - # Input: - # $ms = milliseconds to sleep - my $ms = shift; - ::debug(int($ms),"ms "); - select(undef, undef, undef, $ms/1000); -} - -sub now { - # Returns time since epoch as in seconds with 3 decimals - # Uses: - # @Global::use - # Returns: - # $time = time now with millisecond accuracy - if(not $Global::use{"Time::HiRes"}) { - if(eval "use Time::HiRes qw ( time );") { - eval "sub TimeHiRestime { return Time::HiRes::time };"; - } else { - eval "sub TimeHiRestime { return time() };"; - } - $Global::use{"Time::HiRes"} = 1; - } - - return (int(TimeHiRestime()*1000))/1000; -} - sub kill_youngster_if_not_enough_mem { # Check each $sshlogin if there is enough mem. # If less than 50% enough free mem: kill off the youngest child @@ -3473,106 +3581,6 @@ sub kill_youngster_if_not_enough_mem { } } -sub multiply_binary_prefix { - # Evalualte numbers with binary prefix - # Ki=2^10, Mi=2^20, Gi=2^30, Ti=2^40, Pi=2^50, Ei=2^70, Zi=2^80, Yi=2^80 - # ki=2^10, mi=2^20, gi=2^30, ti=2^40, pi=2^50, ei=2^70, zi=2^80, yi=2^80 - # K =2^10, M =2^20, G =2^30, T =2^40, P =2^50, E =2^70, Z =2^80, Y =2^80 - # k =10^3, m =10^6, g =10^9, t=10^12, p=10^15, e=10^18, z=10^21, y=10^24 - # 13G = 13*1024*1024*1024 = 13958643712 - # Input: - # $s = string with prefixes - # Returns: - # $value = int with prefixes multiplied - my $s = shift; - if(not $s) { - return $s; - } - $s =~ s/ki/*1024/gi; - $s =~ s/mi/*1024*1024/gi; - $s =~ s/gi/*1024*1024*1024/gi; - $s =~ s/ti/*1024*1024*1024*1024/gi; - $s =~ s/pi/*1024*1024*1024*1024*1024/gi; - $s =~ s/ei/*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/zi/*1024*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/yi/*1024*1024*1024*1024*1024*1024*1024*1024/gi; - $s =~ s/xi/*1024*1024*1024*1024*1024*1024*1024*1024*1024/gi; - - $s =~ s/K/*1024/g; - $s =~ s/M/*1024*1024/g; - $s =~ s/G/*1024*1024*1024/g; - $s =~ s/T/*1024*1024*1024*1024/g; - $s =~ s/P/*1024*1024*1024*1024*1024/g; - $s =~ s/E/*1024*1024*1024*1024*1024*1024/g; - $s =~ s/Z/*1024*1024*1024*1024*1024*1024*1024/g; - $s =~ s/Y/*1024*1024*1024*1024*1024*1024*1024*1024/g; - $s =~ s/X/*1024*1024*1024*1024*1024*1024*1024*1024*1024/g; - - $s =~ s/k/*1000/g; - $s =~ s/m/*1000*1000/g; - $s =~ s/g/*1000*1000*1000/g; - $s =~ s/t/*1000*1000*1000*1000/g; - $s =~ s/p/*1000*1000*1000*1000*1000/g; - $s =~ s/e/*1000*1000*1000*1000*1000*1000/g; - $s =~ s/z/*1000*1000*1000*1000*1000*1000*1000/g; - $s =~ s/y/*1000*1000*1000*1000*1000*1000*1000*1000/g; - $s =~ s/x/*1000*1000*1000*1000*1000*1000*1000*1000*1000/g; - - $s = eval $s; - ::debug($s); - return $s; -} - -sub tmpfile { - # Create tempfile as $TMPDIR/parXXXXX - # Returns: - # $filehandle = opened file handle - # $filename = file name created - return ::tempfile(DIR=>$ENV{'TMPDIR'}, TEMPLATE => 'parXXXXX', @_); -} - -{ - my ($disk_full_fh, $b8193, $name); - sub exit_if_disk_full { - # Checks if $TMPDIR is full by writing 8kb to a tmpfile - # If the disk is full: Exit immediately. - # Returns: - # N/A - if(not $disk_full_fh) { - ($disk_full_fh, $name) = ::tmpfile(SUFFIX => ".df"); - # Separate unlink due to NFS dealing badly with File::Temp - unlink $name; - $b8193 = "x"x8193; - } - # Linux does not discover if a disk is full if writing <= 8192 - # Tested on: - # bfs btrfs cramfs ext2 ext3 ext4 ext4dev jffs2 jfs minix msdos - # ntfs reiserfs tmpfs ubifs vfat xfs - # TODO this should be tested on different OS similar to this: - # - # doit() { - # sudo mount /dev/ram0 /mnt/loop; sudo chmod 1777 /mnt/loop - # seq 100000 | parallel --tmpdir /mnt/loop/ true & - # seq 6900000 > /mnt/loop/i && echo seq OK - # seq 6980868 > /mnt/loop/i - # seq 10000 > /mnt/loop/ii - # sleep 3 - # sudo umount /mnt/loop/ || sudo umount -l /mnt/loop/ - # echo >&2 - # } - print $disk_full_fh $b8193; - if(not $disk_full_fh - or - tell $disk_full_fh != 8193) { - # On raspbian the disk can be full except for 10 chars. - ::error("Output is incomplete. Cannot append to buffer file in $ENV{'TMPDIR'}. Is the disk full?\n"); - ::error("Change \$TMPDIR with --tmpdir or use --compress.\n"); - ::wait_and_exit(255); - } - truncate $disk_full_fh, 0; - seek($disk_full_fh, 0, 0) || die; - } -} sub __DEBUGGING__ {} sub debug { diff --git a/testsuite/tests-to-run/parallel-polarhome.sh b/testsuite/tests-to-run/parallel-polarhome.sh index d4e2db32..30eb7591 100644 --- a/testsuite/tests-to-run/parallel-polarhome.sh +++ b/testsuite/tests-to-run/parallel-polarhome.sh @@ -16,6 +16,16 @@ echo '### Tests on polarhome machines' echo 'Setup on polarhome machines' stdout parallel -kj0 ssh -oLogLevel=quiet {} mkdir -p bin ::: $POLAR & + +test_empty_cmd() { + echo '### Test if empty command in process list causes problems' + perl -e '$0=" ";sleep 1' & + bin/perl bin/parallel echo ::: OK_with_empty_cmd +} +export -f test_empty_cmd +stdout parallel -j0 -k --retries 5 --timeout 80 --delay 0.1 --tag \ + --nonall --env test_empty_cmd -S macosx.polarhome.com test_empty_cmd > /tmp/test_empty_cmd & + copy_and_test() { H=$1 # scp to each polarhome machine do not work. Use cat @@ -28,3 +38,5 @@ copy_and_test() { export -f copy_and_test stdout parallel -j0 -k --retries 5 --timeout 80 --delay 0.1 --tag -v copy_and_test {} ::: $POLAR +cat /tmp/test_empty_cmd +rm /tmp/test_empty_cmd diff --git a/testsuite/wanted-results/parallel-polarhome b/testsuite/wanted-results/parallel-polarhome index c8a534e5..268ed2e3 100644 --- a/testsuite/wanted-results/parallel-polarhome +++ b/testsuite/wanted-results/parallel-polarhome @@ -5,107 +5,109 @@ minix.polarhome.com ### Run the test on minix.polarhome.com copy_and_test freebsd.polarhome.com freebsd.polarhome.com ### Run the test on freebsd.polarhome.com freebsd.polarhome.com Works on freebsd.polarhome.com -freebsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531. +freebsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198. copy_and_test solaris.polarhome.com solaris.polarhome.com ### Run the test on solaris.polarhome.com solaris.polarhome.com Works on solaris.polarhome.com solaris.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -solaris.polarhome.com at bin/parallel line 3531 +solaris.polarhome.com at bin/parallel line 3198 copy_and_test openbsd.polarhome.com openbsd.polarhome.com ### Run the test on openbsd.polarhome.com openbsd.polarhome.com Works on openbsd.polarhome.com -openbsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +openbsd.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test netbsd.polarhome.com netbsd.polarhome.com ### Run the test on netbsd.polarhome.com netbsd.polarhome.com Works on netbsd.polarhome.com -netbsd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531. +netbsd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198. copy_and_test debian.polarhome.com debian.polarhome.com ### Run the test on debian.polarhome.com debian.polarhome.com Works on debian.polarhome.com -debian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +debian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test aix.polarhome.com aix.polarhome.com ### Run the test on aix.polarhome.com aix.polarhome.com Works on aix.polarhome.com -aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at bin/parallel line 3531 +aix.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: The file access permissions do not allow the specified action. at bin/parallel line 3198 copy_and_test redhat.polarhome.com redhat.polarhome.com ### Run the test on redhat.polarhome.com redhat.polarhome.com Works on redhat.polarhome.com -redhat.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +redhat.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test hpux.polarhome.com hpux.polarhome.com ### Run the test on hpux.polarhome.com hpux.polarhome.com Works on hpux.polarhome.com -hpux.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +hpux.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test qnx.polarhome.com qnx.polarhome.com ### Run the test on qnx.polarhome.com qnx.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1. qnx.polarhome.com Works on qnx.polarhome.com -qnx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +qnx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test tru64.polarhome.com tru64.polarhome.com ### Run the test on tru64.polarhome.com tru64.polarhome.com Works on tru64.polarhome.com tru64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -tru64.polarhome.com at bin/parallel line 3531 +tru64.polarhome.com at bin/parallel line 3198 copy_and_test openindiana.polarhome.com openindiana.polarhome.com ### Run the test on openindiana.polarhome.com openindiana.polarhome.com parallel: Warning: Cannot figure out number of CPU cores. Using 1. openindiana.polarhome.com Works on openindiana.polarhome.com -openindiana.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +openindiana.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test suse.polarhome.com suse.polarhome.com ### Run the test on suse.polarhome.com suse.polarhome.com Works on suse.polarhome.com -suse.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531. +suse.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198. copy_and_test solaris-x86.polarhome.com solaris-x86.polarhome.com ### Run the test on solaris-x86.polarhome.com solaris-x86.polarhome.com Works on solaris-x86.polarhome.com -solaris-x86.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +solaris-x86.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test mandriva.polarhome.com mandriva.polarhome.com ### Run the test on mandriva.polarhome.com mandriva.polarhome.com Works on mandriva.polarhome.com -mandriva.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +mandriva.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test ubuntu.polarhome.com ubuntu.polarhome.com ### Run the test on ubuntu.polarhome.com ubuntu.polarhome.com Works on ubuntu.polarhome.com -ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531. +ubuntu.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198. copy_and_test scosysv.polarhome.com scosysv.polarhome.com ### Run the test on scosysv.polarhome.com scosysv.polarhome.com Works on scosysv.polarhome.com scosysv.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -scosysv.polarhome.com at bin/parallel line 3531 +scosysv.polarhome.com at bin/parallel line 3198 copy_and_test unixware.polarhome.com unixware.polarhome.com ### Run the test on unixware.polarhome.com unixware.polarhome.com Works on unixware.polarhome.com -unixware.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +unixware.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test dragonfly.polarhome.com dragonfly.polarhome.com ### Run the test on dragonfly.polarhome.com dragonfly.polarhome.com Works on dragonfly.polarhome.com -dragonfly.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +dragonfly.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test centos.polarhome.com centos.polarhome.com ### Run the test on centos.polarhome.com centos.polarhome.com Works on centos.polarhome.com centos.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -centos.polarhome.com at bin/parallel line 3531 +centos.polarhome.com at bin/parallel line 3198 copy_and_test miros.polarhome.com miros.polarhome.com ### Run the test on miros.polarhome.com miros.polarhome.com Works on miros.polarhome.com miros.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -miros.polarhome.com at bin/parallel line 3531 +miros.polarhome.com at bin/parallel line 3198 copy_and_test hurd.polarhome.com hurd.polarhome.com ### Run the test on hurd.polarhome.com hurd.polarhome.com Works on hurd.polarhome.com -hurd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531. +hurd.polarhome.com Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198. copy_and_test raspbian.polarhome.com raspbian.polarhome.com ### Run the test on raspbian.polarhome.com raspbian.polarhome.com Works on raspbian.polarhome.com -raspbian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +raspbian.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test macosx.polarhome.com macosx.polarhome.com ### Run the test on macosx.polarhome.com macosx.polarhome.com Works on macosx.polarhome.com -macosx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3531 +macosx.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at bin/parallel line 3198 copy_and_test hpux-ia64.polarhome.com hpux-ia64.polarhome.com ### Run the test on hpux-ia64.polarhome.com hpux-ia64.polarhome.com Works on hpux-ia64.polarhome.com hpux-ia64.polarhome.com Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable -hpux-ia64.polarhome.com at bin/parallel line 3531 +hpux-ia64.polarhome.com at bin/parallel line 3198 copy_and_test syllable.polarhome.com syllable.polarhome.com ### Run the test on syllable.polarhome.com syllable.polarhome.com chmod: changing permissions of `bin/p.tmp': Function not implemented +macosx.polarhome.com ### Test if empty command in process list causes problems +macosx.polarhome.com OK_with_empty_cmd