parallel: Simpler job scheduling flow.

This commit is contained in:
Ole Tange 2018-11-25 19:06:06 +01:00
parent addb7ee8b4
commit 8286e771ec
28 changed files with 386 additions and 192 deletions

View file

@ -206,9 +206,9 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20181122 ('Kilogram/brexitdeal/Stan Lee/Cesar Sayoc/Tree of Life/Iran') released <<[stable]>>
Subject: GNU Parallel 20181222 ('Kilogram/brexitdeal/Stan Lee/Cesar Sayoc/Tree of Life/Iran') released <<[stable]>>
GNU Parallel 20181122 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20181222 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>>
@ -216,9 +216,7 @@ Quote of the month:
New in this release:
* https://codeday.me/bug/20181015/298447.html
* https://qiita.com//grohiro/items/4db3fa951a4778c5c479
* https://qiita.com/hana_shin/items/53c3c78525c9c758ae7c
* Bug fixes and man page updates.

View file

@ -24,7 +24,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20181122;
$Global::version = 20181124;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -120,17 +120,27 @@ if($Global::semaphore) {
$sem = acquire_semaphore();
}
$SIG{TERM} = \&start_no_new_jobs;
while(start_more_jobs()) {}
if($opt::tee) {
# All jobs must be running in parallel for --tee
while(start_more_jobs()) {}
$Global::start_no_new_jobs = 1;
if(not $Global::JobQueue->empty()) {
::error("--tee requres --jobs to be higher. Try --jobs 0.");
::wait_and_exit(255);
}
} elsif($opt::pipe and not $opt::pipepart) {
# Fill all jobslots
while(start_more_jobs()) {}
spreadstdin();
} else {
# Reap one - start one
while(reaper() + start_more_jobs()) {}
}
::debug("init", "Start draining\n");
drain_job_queue();
::debug("init", "Done draining\n");
reaper();
reapers();
::debug("init", "Done reaping\n");
if($Global::semaphore) {
$sem->release();
@ -186,11 +196,14 @@ sub max_jobs_running {
# Returns:
# $Global::max_jobs_running
if(not $Global::max_jobs_running) {
for my $sshlogin (values %Global::host) {
$sshlogin->max_jobs_running();
}
}
if(not $Global::max_jobs_running) {
::error("Cannot run any jobs.");
wait_and_exit(255);
}
return $Global::max_jobs_running;
}
@ -462,15 +475,6 @@ sub spreadstdin {
# %Global::running
# Returns: N/A
if($opt::tee) {
# Spawn all jobs
# read a record
# Write record to all jobs
if(not $Global::JobQueue->empty()) {
::error("--tee requres --jobs to be higher. Try --jobs 0.");
}
}
my $buf = "";
my ($recstart,$recend) = recstartrecend();
my $recendrecstart = $recend.$recstart;
@ -1555,7 +1559,7 @@ sub check_invalid_option_combinations {
sub init_globals {
# Defaults:
$Global::version = 20181122;
$Global::version = 20181124;
$Global::progname = 'parallel';
$Global::infinity = 2**31;
$Global::debug = 0;
@ -4035,37 +4039,46 @@ sub start_no_new_jobs {
$Global::start_no_new_jobs ||= 1;
}
sub reapers {
# Run reaper until there are no more left
# Returns:
# @pids_reaped = pids of reaped processes
my @pids_reaped;
my $pid;
while($pid = reaper()) {
push @pids_reaped, $pid;
}
return @pids_reaped;
}
sub reaper {
# A job finished.
# Print the output.
# Start another job
# A job finished:
# * Set exitstatus, exitsignal, endtime.
# * Free ressources for new job
# * Update median runtime
# * Print output
# * If --halt = now: Kill children
# * Print progress
# Uses:
# %Global::sshmaster
# %Global::running
# $opt::timeout
# $Global::timeoutq
# $opt::halt
# $opt::keeporder
# $Global::total_running
# Returns:
# @pids_reaped = PIDs of children finished
# $stiff = PID of child finished
my $stiff;
my @pids_reaped;
my $total_reaped;
debug("run", "Reaper ");
if (($stiff = waitpid(-1, &WNOHANG)) > 0) {
if(($stiff = waitpid(-1, &WNOHANG)) <= 0) {
# No jobs waiting to be reaped
return 0;
}
# $stiff = pid of dead process
if(wantarray) {
push(@pids_reaped,$stiff);
}
$total_reaped++;
if($Global::sshmaster{$stiff}) {
# This is one of the ssh -M: ignore
next;
}
my $job = $Global::running{$stiff};
# '-a <(seq 10)' will give us a pid not in %Global::running
# The same will one of the ssh -M: ignore
$job or return 0;
delete $Global::running{$stiff};
$Global::total_running--;
@ -4112,9 +4125,9 @@ sub reaper {
my %progress = progress();
::status_no_nl("\r",$progress{'status'});
}
}
debug("run", "done ");
return wantarray ? @pids_reaped : $total_reaped;
return $stiff;
}
@ -4123,8 +4136,11 @@ sub __USAGE__ {}
sub killall {
# Kill all jobs by killing their process groups
# Uses:
# $Global::start_no_new_jobs = we are stopping
# $Global::killall = Flag to not run reaper
$Global::start_no_new_jobs ||= 1;
# Do not reap killed children: Ignore them instead
$Global::killall ||= 1;
kill_sleep_seq(keys %Global::running);
}
@ -4145,34 +4161,34 @@ sub kill_sleep_seq {
}
sub kill_sleep {
# Kill pids with a signal and wait a while for them to die
# Input:
# $signal = signal to send to @pids
# $sleep_max = number of ms to sleep at most before returning
# @pids = pids to kill (actually process groups)
# Uses:
# $Global::killall = set by killall() to avoid calling reaper
# Returns:
# @pids = pids still alive
my ($signal, $sleep_max, @pids) = @_;
::debug("kill","kill_sleep $signal ",(join " ",sort @pids),"\n");
kill $signal, @pids;
my $sleepsum = 0;
my $sleep = 0.001;
my @dead;
while(@pids and $sleepsum < $sleep_max) {
if($Global::killall) {
# Killall => don't run reaper
my $stiff;
while (($stiff = waitpid(-1, &WNOHANG)) > 0) {
# remove $stiff from @pids
@pids = grep { $_ != $stiff } @pids;
while(waitpid(-1, &WNOHANG) > 0) {
$sleep = $sleep/2+0.001;
}
} elsif(@dead = reaper()) {
# Remove reaped pids
for my $stiff (@dead) {
@pids = grep { $_ != $stiff } @pids;
}
} elsif(reapers()) {
$sleep = $sleep/2+0.001;
}
@pids = grep { kill( 0, $_) } @pids;
$sleep *= 1.1;
::usleep($sleep);
$sleepsum += $sleep;
# Remove dead children
# Keep only living children
@pids = grep { kill(0, $_) } @pids;
}
return @pids;
@ -4188,7 +4204,7 @@ sub wait_and_exit {
killall();
}
for (keys %Global::unkilled_children) {
# Kill any (non-jobs) children
# Kill any (non-jobs) children (e.g. reserved processes)
kill 9, $_;
waitpid($_,0);
delete $Global::unkilled_children{$_};
@ -5095,8 +5111,7 @@ sub reap_usleep {
# $ms/2+0.001 if children reaped
# $ms*1.1 if no children reaped
my $ms = shift;
if(reaper()) {
while(reaper()) {}
if(reapers()) {
if(not $Global::total_completed % 100) {
if($opt::timeout) {
# Force cleaning the timeout queue for every 1000 jobs
@ -6302,7 +6317,7 @@ sub simultaneous_sshlogin_limit {
my $serverlogin = $self->serverlogin();
::warning("ssh to $serverlogin only allows ".
"for $ssh_limit simultaneous logins.",
"You may raise this by changing ".
"You may raise this by changing",
"/etc/ssh/sshd_config:MaxStartups and MaxSessions on $serverlogin.",
"You can also try --sshdelay 0.1",
"Using only ".($ssh_limit-1)." connections ".
@ -6316,9 +6331,12 @@ sub simultaneous_sshlogin_limit {
sub simultaneous_sshlogin {
# Using $sshlogin try to see if we can do $wanted_processes
# simultaneous logins
# (ssh host echo simultaneouslogin & ssh host echo simultaneouslogin & ...)|grep simul|wc -l
# (ssh host echo simul-login & ssh host echo simul-login & ...) |
# grep simul|wc -l
# Input:
# $wanted_processes = Try for this many logins in parallel
# Returns:
# Number of succesful logins
# $ssh_limit = Number of succesful parallel logins
local $/ = "\n";
my $self = shift;
my $wanted_processes = shift;
@ -6326,7 +6344,8 @@ sub simultaneous_sshlogin {
my $serverlogin = $self->serverlogin();
my $sshdelay = $opt::sshdelay ? "sleep $opt::sshdelay;" : "";
# TODO sh -c wrapper to work for csh
my $cmd = "$sshdelay$sshcmd $serverlogin -- echo simultaneouslogin </dev/null 2>&1 &"x$wanted_processes;
my $cmd = ("$sshdelay$sshcmd $serverlogin -- ".
"echo simultaneouslogin </dev/null 2>&1 &")x$wanted_processes;
::debug("init", "Trying $wanted_processes logins at $serverlogin\n");
open (my $simul_fh, "-|", "($cmd)|grep simultaneouslogin | wc -l") or
::die_bug("simultaneouslogin");
@ -6343,8 +6362,10 @@ sub set_ncpus {
sub user_requested_processes {
# Parse the number of processes that the user asked for using -j
# Input:
# $opt_P = string formatted as for -P
# Returns:
# the number of processes to run on this sshlogin
# $processes = the number of processes to run on this sshlogin
my $self = shift;
my $opt_P = shift;
my $processes;
@ -6390,6 +6411,11 @@ sub user_requested_processes {
}
sub ncpus {
# Number of CPU threads
# --use_sockets_instead_of_threads = count socket instead
# --use_cores_instead_of_threads = count physical cores instead
# Returns:
# $ncpus = number of cpu (threads) on this sshlogin
local $/ = "\n";
my $self = shift;
if(not defined $self->{'ncpus'}) {
@ -6886,6 +6912,8 @@ sub sct_tru64() {
}
sub sshcommand {
# Returns:
# $sshcommand = the command (incl options) to run when using ssh
my $self = shift;
if (not defined $self->{'sshcommand'}) {
$self->sshcommand_of_sshlogin();
@ -6894,6 +6922,8 @@ sub sshcommand {
}
sub serverlogin {
# Returns:
# $sshcommand = the command (incl options) to run when using ssh
my $self = shift;
if (not defined $self->{'serverlogin'}) {
$self->sshcommand_of_sshlogin();
@ -6902,14 +6932,15 @@ sub serverlogin {
}
sub sshcommand_of_sshlogin {
# Compute ssh command and serverlogin from sshlogin
# 'server' -> ('ssh -S /tmp/parallel-ssh-RANDOM/host-','server')
# 'user@server' -> ('ssh','user@server')
# 'myssh user@server' -> ('myssh','user@server')
# 'myssh -l user server' -> ('myssh -l user','server')
# '/usr/bin/myssh -l user server' -> ('/usr/bin/myssh -l user','server')
# Returns:
# sshcommand - defaults to 'ssh'
# login@host
# Sets:
# $self->{'sshcommand'}
# $self->{'serverlogin'}
my $self = shift;
my ($sshcmd, $serverlogin);
# If $opt::ssh is unset, use $PARALLEL_SSH or 'ssh'
@ -6963,7 +6994,7 @@ sub sshcommand_of_sshlogin {
sub control_path_dir {
# Returns:
# path to directory
# $control_path_dir = dir of control path (for -M)
my $self = shift;
if(not defined $self->{'control_path_dir'}) {
$self->{'control_path_dir'} =
@ -7051,6 +7082,8 @@ sub cleanup_cmd {
sub rsync {
# rsync 3.1.x uses protocol 31 which is unsupported by 2.5.7.
# If the version >= 3.1.0: downgrade to protocol 30
# Returns:
# $rsync = "rsync" or "rsync --protocol 30"
if(not $rsync) {
my @out = `rsync --version`;
for (@out) {
@ -7117,8 +7150,8 @@ sub unget {
sub empty {
my $self = shift;
my $empty = (not @{$self->{'unget'}})
&& $self->{'commandlinequeue'}->empty();
my $empty = (not @{$self->{'unget'}}) &&
$self->{'commandlinequeue'}->empty();
::debug("run", "JobQueue->empty $empty ");
return $empty;
}
@ -7487,7 +7520,7 @@ sub grouped {
open(my $fdr,"<", $self->fh($fdno,'name')) ||
::die_bug("fdr: Cannot open ".$self->fh($fdno,'name'));
$self->set_fh($fdno,'r',$fdr);
# Unlink if required
# Unlink if not debugging
$Global::debug or ::rm($self->fh($fdno,"unlink"));
}
}
@ -9993,12 +10026,12 @@ sub replaced {
sub replace_placeholders {
# Replace foo{}bar with fooargbar
# Uses:
# @Arg::arg = arguments as strings to be use in {= =}
# Input:
# $targetref = command as shell words
# $quote = should everything be quoted?
# $quote_arg = should replaced arguments be quoted?
# Uses:
# @Arg::arg = arguments as strings to be use in {= =}
# Returns:
# @target with placeholders replaced
my $self = shift;
@ -10524,7 +10557,8 @@ sub unget {
sub empty {
my $self = shift;
my $empty = (not @{$self->{'unget'}}) && $self->{'arg_queue'}->empty();
my $empty = (not @{$self->{'unget'}}) &&
$self->{'arg_queue'}->empty();
::debug("run", "CommandLineQueue->empty $empty");
return $empty;
}
@ -10745,8 +10779,8 @@ sub unget {
sub empty {
my $self = shift;
my $empty = not @{$self->{'unget'}};
$empty &&= $self->{'arg_sub_queue'}->empty();
my $empty = (not @{$self->{'unget'}}) &&
$self->{'arg_sub_queue'}->empty();
::debug("run", "RecordQueue->empty $empty");
return $empty;
}
@ -10821,8 +10855,8 @@ sub unget {
sub empty {
my $self = shift;
my $empty = (not @{$self->{'unget'}} and
$self->{'arg_sub_queue'}->empty());
my $empty = (not @{$self->{'unget'}}) &&
$self->{'arg_sub_queue'}->empty();
::debug("run", "RecordColQueue->empty $empty");
return $empty;
}
@ -10907,8 +10941,8 @@ sub unget {
sub empty {
my $self = shift;
my $empty = (not @Global::unget_argv
and not @{$self->{'unget'}});
my $empty = (not @Global::unget_argv) &&
not @{$self->{'unget'}};
for my $fh (@{$self->{'fhs'}}) {
$empty &&= eof($fh);
}

View file

@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20181122;
$Global::version = 20181124;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -854,6 +854,17 @@ par_empty_input_on_stdin() {
true | stdout parallel --shuf echo
}
par_tee_too_many_args() {
echo '### Fail if there are more arguments than --jobs'
seq 11 |parallel -k --tag --pipe -j4 --tee grep {} ::: {1..4}
seq 11 |parallel -k --tag --pipe -j4 --tee grep {} ::: {1..5}
}
par_space_envvar() {
echo "### bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'"
export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK'
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'

View file

@ -354,7 +354,6 @@ par_long_line_remote() {
parallel -j1 -S lo -N 10000 echo {} |wc
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | LC_ALL=C sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -151,7 +151,7 @@ par_test_detected_shell() {
tmp="/tmp/test_unknown_shell_$shell"
cp $(which "$shell") "$tmp"
chmod +x "$tmp"
$tmp -c 'ppar -Dinit echo ::: 1; true' |
$tmp -c 'parallel -Dinit echo ::: 1; true' |
grep Global::shell
rm "$tmp"
}

View file

@ -20,7 +20,7 @@ export -f perl5.14parallel
par_2gb_records_N() {
echo '### bug #44358: 2 GB records cause problems for -N'
echo '5 GB version: Eats 12.5 GB'
echo '5 GB version: Eats 12.5 GB RAM + 4 GB Swap'
(gendata 5000MB; echo FOO;
gendata 3000MB; echo FOO;
gendata 1000MB;) |
@ -33,7 +33,7 @@ par_2gb_records_N() {
perl5.14parallel --pipe --recend FOO -N2 --block 1g -k LANG=c wc -c
echo '### -L >4GB';
echo 'Eats 12.5 GB';
echo 'Eats 12.5 GB RAM + 6 GB Swap';
(head -c 5000MB /dev/zero; echo FOO;
head -c 3000MB /dev/zero; echo FOO;
head -c 1000MB /dev/zero;) |

View file

@ -125,6 +125,22 @@ par_linebuffer_tag_slow_output() {
parallel --delay 0.5 -j0 --tag --line-buffer halfline ::: a b
}
par_continuous_output() {
# After the first batch, each jobs should output when it finishes.
# Old versions delayed output by $jobslots jobs
doit() {
echo "Test delayed output with '$1'"
echo "-u is optimal but hard to reach, due to non-mixing"
seq 10 |
parallel -j1 $1 --delay 1 -N0 echo |
parallel -j4 $1 -N0 'sleep 0.6;date' |
timestamp -dd |
perl -pe 's/(.).*/$1/'
}
export -f doit
parallel -k doit ::: '' -u
}
export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort |
# parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -40,11 +40,6 @@ echo '### bug #45906: {= in header =}'
parallel --rpl '{G} $_=lc($_)' -S parallel@lo --return {G} --cleanup echo {G} '>' {G} ::: RETURNFILE45906;
ls returnfile45906
echo '### bug #45907: --header : + --return {header}'
rm returnfile45907;
ppar --header : -S parallel@lo --return {G} --cleanup echo {G} '>' {G} ::: G returnfile45907;
ls returnfile45907
echo "### bug #47608: parallel --nonall -S lo 'echo ::: ' blocks"
parallel --nonall -S lo 'echo ::: '
@ -59,6 +54,13 @@ echo '### bug #49404: "Max jobs to run" does not equal the number of jobs specif
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
EOF
par_header_in_return() {
echo '### bug #45907: --header : + --return {header}'
rm returnfile45907
parallel --header : -S parallel@lo --return {G} --cleanup echo {G} '>' {G} ::: G returnfile45907
ls returnfile45907
}
par_trc_with_space() {
echo '### Test --trc with space added in filename'
cd

View file

@ -153,11 +153,25 @@ par_env_parallel_big_env() {
env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK
}
par_no_route_to_host() {
echo '### no route to host with | and -j0 causes inf loop'
via_parallel() {
seq 11 | stdout parallel -j0 -S 192.168.1.199 echo
}
export -f via_parallel
raw() {
stdout ssh 192.168.1.199 echo
}
export -f raw
parallel -k ::: raw via_parallel
}
export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
#compgen -A function | grep par_ | sort |
compgen -A function | grep par_ | sort -r |
# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` -j200% --tag -k '{} 2>&1' |
parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j200% --tag -k '{} 2>&1' |
perl -pe 's/line \d\d\d+:/line XXX:/' |
perl -pe 's/\[\d\d\d+\]:/[XXX]:/'

View file

@ -255,13 +255,13 @@ echo 'Because of -t these lines can be flipped around therefore sort'
stdout parallel -k -X -s30 -t echo < stairs.xi | sort
echo '### -t echo this plus that < space.xi'
stdout xargs -t echo this plus that < space.xi
stdout parallel -k -t echo this plus that < space.xi
stdout parallel -k -t echo this plus that < space.xi | sort
echo '### -n1 printf "@%s@\n" < empty.xi'
stdout xargs -n1 printf "@%s@\n" < empty.xi
stdout parallel -k -n1 printf "@%s@\n" < empty.xi
echo '### -n2 -t echo < foobar.xi'
stdout xargs -n2 -t echo < foobar.xi
stdout parallel -k -n2 -t echo < foobar.xi
stdout parallel -k -n2 -t echo < foobar.xi | sort
EOF

View file

@ -133,7 +133,4 @@ echo 'bug #34241: --pipe should not spawn unneeded processes - part 2'
echo No .par should exist;
stdout ls *.par
echo "bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'"
export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK'
EOF

View file

@ -82,6 +82,9 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/
s{rsync error: some files/attrs were not transferred .*\n}{};
s{.* GtkDialog .*\n}{};
' |
perl -ne '/GTK2_RC_FILES/ and next;
/GTK_RC_FILES/ and next;
print' |
uniq
# 3+3 .par files (from --files), 1 .tms-file from tmux attach
find {$TMPDIR,/var/tmp,/tmp}/{fif,tms,par[^a]}* -mmin -10 2>/dev/null | wc -l

View file

@ -1251,11 +1251,9 @@ par_PARALLEL_ENV OK as file
par_PARALLEL_ENV ### PARALLEL_ENV as fifo
par_PARALLEL_ENV OK as fifo
par_X_eta_div_zero ### bug #34422: parallel -X --eta crashes with div by zero
par_X_eta_div_zero
par_X_eta_div_zero 0
par_X_eta_div_zero Computers / CPU cores / Max jobs to run
par_X_eta_div_zero 0:local / 0 / 0
par_X_eta_div_zero
par_X_eta_div_zero Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
par_append_joblog ### can you append to a joblog using +
par_append_joblog 1
par_append_joblog 1
@ -1485,6 +1483,9 @@ par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks
par_slow_pipe_regexp This should take a few ms, but took more than 2 hours
par_slow_pipe_regexp 979 980 5875
par_slow_pipe_regexp 25022 25022 150131
par_space_envvar ### bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'
par_space_envvar echo 'space in envvar OK'
par_space_envvar space in envvar OK
par_tagstring_pipe bug #50228: --pipe --tagstring broken
par_tagstring_pipe 1 1000 1000 3893
par_tagstring_pipe 2 1000 1000 5000
@ -1519,6 +1520,14 @@ par_tee 4 -l 122853
par_tee 4 -c 815290
par_tee 5 -l 122853
par_tee 5 -c 815290
par_tee_too_many_args ### Fail if there are more arguments than --jobs
par_tee_too_many_args 1 1
par_tee_too_many_args 1 10
par_tee_too_many_args 1 11
par_tee_too_many_args 2 2
par_tee_too_many_args 3 3
par_tee_too_many_args 4 4
par_tee_too_many_args parallel: Error: --tee requres --jobs to be higher. Try --jobs 0.
par_testquote ash "#&/
par_testquote ash ()*=?'
par_testquote bash "#&/

View file

@ -372,30 +372,6 @@ par_test_build_and_install test -d "parallel-00000000" || mkdir "parallel-000000
par_test_build_and_install (cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
par_test_build_and_install am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
par_test_build_and_install make[0]: Entering directory '~/privat/parallel/src'
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sql > ./sql.1n \
par_test_build_and_install && mv ./sql.1n ./sql.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
par_test_build_and_install && mv ./sql.htmln ./sql.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
par_test_build_and_install && mv ./parset.htmln ./parset.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel/src'
par_test_build_and_install test -n "" \
par_test_build_and_install || find "parallel-00000000" -type d ! -perm -755 \

View file

@ -27,8 +27,8 @@ par_interactive sleep 0.1; echo opt-p 2 ?...n
par_interactive sleep 0.1; echo opt-p 3 ?...y
par_interactive spawn /tmp/parallel-script-for-expect
par_k ### Test -k
par_k parallel: Warning: Only enough file handles to run 9 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 9 --pipe parallel -j0' or
par_k parallel: Warning: Only enough file handles to run 8 jobs in parallel.
par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or
par_k parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
par_k parallel: Warning: or /proc/sys/fs/file-max may help.
par_k begin

View file

@ -15,7 +15,7 @@ par_2gb_record_reading Eats 4.7 GB
par_2gb_record_reading parallel: Warning: --blocksize >= 2G causes problems. Using 2G-1.
par_2gb_record_reading 2300000004
par_2gb_records_N ### bug #44358: 2 GB records cause problems for -N
par_2gb_records_N 5 GB version: Eats 12.5 GB
par_2gb_records_N 5 GB version: Eats 12.5 GB RAM + 4 GB Swap
par_2gb_records_N parallel: Warning: A record was longer than 1000000000. Increasing to --blocksize 1300000001.
par_2gb_records_N parallel: Warning: A record was longer than 1300000001. Increasing to --blocksize 1690000003.
par_2gb_records_N parallel: Warning: A record was longer than 1690000003. Increasing to --blocksize 2147483647.
@ -28,7 +28,7 @@ par_2gb_records_N parallel: Warning: A record was longer than 1690000003. Increa
par_2gb_records_N 4600000007
par_2gb_records_N 1000000001
par_2gb_records_N ### -L >4GB
par_2gb_records_N Eats 12.5 GB
par_2gb_records_N Eats 12.5 GB RAM + 6 GB Swap
par_2gb_records_N parallel: Warning: A record was longer than 1000000000. Increasing to --blocksize 1300000001.
par_2gb_records_N parallel: Warning: A record was longer than 1300000001. Increasing to --blocksize 1690000003.
par_2gb_records_N parallel: Warning: A record was longer than 1690000003. Increasing to --blocksize 2147483647.

View file

@ -11,6 +11,30 @@ Control case: Burn for 2.9 seconds
stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(1){ }" ::: 1 | \grep -q CPUTIME=1
1=OK 1
par_continuous_output Test delayed output with ''
par_continuous_output -u is optimal but hard to reach, due to non-mixing
par_continuous_output 4
par_continuous_output 0
par_continuous_output 0
par_continuous_output 0
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_continuous_output 0
par_continuous_output Test delayed output with '-u'
par_continuous_output -u is optimal but hard to reach, due to non-mixing
par_continuous_output 4
par_continuous_output 0
par_continuous_output 0
par_continuous_output 0
par_continuous_output 0
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_continuous_output 1
par_hostgroup ### --hostgroup force ncpu
par_hostgroup parallel
par_hostgroup parallel

View file

@ -28,7 +28,7 @@ echo '### Stop if all hosts are filtered and there are no hosts left to run on'
### Stop if all hosts are filtered and there are no hosts left to run on
stdout parallel --filter-hosts -S no-such.host echo ::: 1
parallel: Warning: Removed no-such.host.
parallel: Error: There are no hosts left to run on.
parallel: Error: Cannot run any jobs.
echo '### Can csh propagate a variable containing \n'; export A=$(seq 3); parallel -S csh@lo --env A bash -c \''echo "$A"'\' ::: dummy
### Can csh propagate a variable containing \n
1

View file

@ -20,10 +20,6 @@ echo '### bug #45906: {= in header =}'
### bug #45906: {= in header =}
rm -f returnfile45906; parallel --rpl '{G} $_=lc($_)' -S parallel@lo --return {G} --cleanup echo {G} '>' {G} ::: RETURNFILE45906; ls returnfile45906
returnfile45906
echo '### bug #45907: --header : + --return {header}'
### bug #45907: --header : + --return {header}
rm returnfile45907; ppar --header : -S parallel@lo --return {G} --cleanup echo {G} '>' {G} ::: G returnfile45907; ls returnfile45907
returnfile45907
echo "### bug #47608: parallel --nonall -S lo 'echo ::: ' blocks"
### bug #47608: parallel --nonall -S lo 'echo ::: ' blocks
parallel --nonall -S lo 'echo ::: '
@ -39,6 +35,8 @@ echo '### bug #49404: "Max jobs to run" does not equal the number of jobs specif
should give 10 running jobs
stdout parallel -S 16/lo --progress true ::: {1..10} | grep /.10
1:lo / 16 / 10
par_header_in_return ### bug #45907: --header : + --return {header}
par_header_in_return returnfile45907
par_hostgroup_only_on_args ### Auto add hostgroup if given on on argument
par_hostgroup_only_on_args parallel: Warning: Adding hostgroups: sh@lo
par_hostgroup_only_on_args sh

View file

@ -27,7 +27,7 @@ par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel
par_path_remote_csh parallel: Command not found.
par_path_remote_csh ^^^^^^^^ Not found is OK
par_path_remote_csh parallel: Warning: Removed lo.
par_path_remote_csh parallel: Error: There are no hosts left to run on.
par_path_remote_csh parallel: Error: Cannot run any jobs.
par_path_remote_csh Right now it seems csh does not respect /bin:/usr/bin:/tmp if set from Perl
par_path_remote_csh Done
par_retries_1 ### Test of --retries - it should run 13 jobs in total

View file

@ -54,6 +54,14 @@ par_propagate_env ** test_csh_filter
par_propagate_env FOO=test_csh_filter
par_propagate_env HOME=~
par_propagate_env ** bug #41805 done
par_no_route_to_host ### no route to host with | and -j0 causes inf loop
par_no_route_to_host ssh: connect to host 192.168.1.199 port 22: No route to host
par_no_route_to_host parallel: Warning: ssh to 192.168.1.199 only allows for 0 simultaneous logins.
par_no_route_to_host parallel: Warning: You may raise this by changing
par_no_route_to_host parallel: Warning: /etc/ssh/sshd_config:MaxStartups and MaxSessions on 192.168.1.199.
par_no_route_to_host parallel: Warning: You can also try --sshdelay 0.1
par_no_route_to_host parallel: Warning: Using only -1 connections to avoid race conditions.
par_no_route_to_host parallel: Error: Cannot run any jobs.
par_ksh_embed --embed
par_ksh_embed Redirect the output to a file and add your changes at the end:
par_ksh_embed /usr/local/bin/parallel --embed > new_script

View file

@ -1342,9 +1342,9 @@ echo '### -t echo this plus that < space.xi'
stdout xargs -t echo this plus that < space.xi
echo this plus that
this plus that
stdout parallel -k -t echo this plus that < space.xi
echo this plus that ''
stdout parallel -k -t echo this plus that < space.xi | sort
echo this plus that ' '
echo this plus that ''
this plus that
this plus that
echo '### -n1 printf "@%s@\n" < empty.xi'
@ -1365,7 +1365,7 @@ echo foo bar
foo bar
echo baz ugh
baz ugh
stdout parallel -k -n2 -t echo < foobar.xi
stdout parallel -k -n2 -t echo < foobar.xi | sort
echo 'foo bar' 'baz '
echo ugh
foo bar baz

View file

@ -314,8 +314,3 @@ bug #34241: --pipe should not spawn unneeded processes - part 2
2
No .par should exist
ls: cannot access '*.par': No such file or directory
echo "bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'"
bug: --gnu was ignored if env var started with space: PARALLEL=' --gnu'
export PARALLEL=" -v" && parallel echo ::: 'space in envvar OK'
echo 'space in envvar OK'
space in envvar OK

View file

@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
echo '### --version must have higher priority than retired options'
### --version must have higher priority than retired options
$NICEPAR --version -g -Y -U -W -T | tail
GNU parallel 20181024
GNU parallel 20181124
Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.

View file

@ -6,15 +6,12 @@ MAXTIME=50 RETRIES=2 MAXPROC=11 MAXINNERPROC=3
< alpha
7d4
< syllable
13d9
< debian-ppc
28,32d21
28,29d24
< dragonfly
< vax
< ultrix
31d25
< minix
< irix
34,35d23
34,35d27
< beaglebone
< cubieboard2
### Copy commands to servers
@ -27,6 +24,7 @@ bin/parallel solaris copy solaris bin/parallel parallel
bin/parallel openindiana copy openindiana bin/parallel parallel
bin/parallel aix copy aix bin/parallel parallel
bin/parallel hpux copy hpux bin/parallel parallel
bin/parallel debian-ppc copy debian-ppc bin/parallel parallel
bin/parallel suse copy suse bin/parallel parallel
bin/parallel solaris-x86 copy solaris-x86 bin/parallel parallel
bin/parallel mandriva copy mandriva bin/parallel parallel
@ -41,6 +39,8 @@ bin/parallel netbsd copy netbsd bin/parallel parallel
bin/parallel openbsd copy openbsd bin/parallel parallel
bin/parallel freebsd copy freebsd bin/parallel parallel
bin/parallel debian copy debian bin/parallel parallel
bin/parallel ultrix copy ultrix bin/parallel parallel
bin/parallel irix copy irix bin/parallel parallel
bin/parallel hurd copy hurd bin/parallel parallel
bin/parallel minix copy minix bin/parallel parallel
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
@ -52,6 +52,7 @@ bin/env_parallel solaris copy solaris bin/env_parallel env_parallel
bin/env_parallel openindiana copy openindiana bin/env_parallel env_parallel
bin/env_parallel aix copy aix bin/env_parallel env_parallel
bin/env_parallel hpux copy hpux bin/env_parallel env_parallel
bin/env_parallel debian-ppc copy debian-ppc bin/env_parallel env_parallel
bin/env_parallel suse copy suse bin/env_parallel env_parallel
bin/env_parallel solaris-x86 copy solaris-x86 bin/env_parallel env_parallel
bin/env_parallel mandriva copy mandriva bin/env_parallel env_parallel
@ -66,6 +67,8 @@ bin/env_parallel netbsd copy netbsd bin/env_parallel env_parallel
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
bin/env_parallel debian copy debian bin/env_parallel env_parallel
bin/env_parallel ultrix copy ultrix bin/env_parallel env_parallel
bin/env_parallel irix copy irix bin/env_parallel env_parallel
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
bin/env_parallel minix copy minix bin/env_parallel env_parallel
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
@ -77,6 +80,7 @@ bin/env_parallel.ash solaris copy solaris bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openindiana copy openindiana bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash aix copy aix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hpux copy hpux bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian-ppc copy debian-ppc bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash suse copy suse bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash solaris-x86 copy solaris-x86 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash mandriva copy mandriva bin/env_parallel.ash env_parallel.ash
@ -91,6 +95,8 @@ bin/env_parallel.ash netbsd copy netbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash ultrix copy ultrix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash irix copy irix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
@ -102,6 +108,7 @@ bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.ba
bin/env_parallel.bash openindiana copy openindiana bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash aix copy aix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hpux copy hpux bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian-ppc copy debian-ppc bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash suse copy suse bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash solaris-x86 copy solaris-x86 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash mandriva copy mandriva bin/env_parallel.bash env_parallel.bash
@ -116,9 +123,10 @@ bin/env_parallel.bash netbsd copy netbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash ultrix copy ultrix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash irix copy irix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hurd copy hurd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash minix cat: stdout: no space left on device
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh pidora copy pidora bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh tru64 copy tru64 bin/env_parallel.csh env_parallel.csh
@ -128,6 +136,7 @@ bin/env_parallel.csh solaris copy solaris bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openindiana copy openindiana bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh aix copy aix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hpux copy hpux bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian-ppc copy debian-ppc bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh suse copy suse bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh solaris-x86 copy solaris-x86 bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh mandriva copy mandriva bin/env_parallel.csh env_parallel.csh
@ -142,6 +151,8 @@ bin/env_parallel.csh netbsd copy netbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh ultrix copy ultrix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh irix copy irix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
@ -153,6 +164,7 @@ bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.da
bin/env_parallel.dash openindiana copy openindiana bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash aix copy aix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hpux copy hpux bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash debian-ppc copy debian-ppc bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash suse copy suse bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash solaris-x86 copy solaris-x86 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash mandriva copy mandriva bin/env_parallel.dash env_parallel.dash
@ -167,6 +179,8 @@ bin/env_parallel.dash netbsd copy netbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash ultrix copy ultrix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash irix copy irix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
@ -178,6 +192,7 @@ bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fi
bin/env_parallel.fish openindiana copy openindiana bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish aix copy aix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hpux copy hpux bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian-ppc copy debian-ppc bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish suse copy suse bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish solaris-x86 copy solaris-x86 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish mandriva copy mandriva bin/env_parallel.fish env_parallel.fish
@ -192,6 +207,8 @@ bin/env_parallel.fish netbsd copy netbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish ultrix copy ultrix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish irix copy irix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
@ -203,6 +220,7 @@ bin/env_parallel.ksh solaris copy solaris bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openindiana copy openindiana bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh aix copy aix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hpux copy hpux bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian-ppc copy debian-ppc bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh suse copy suse bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh solaris-x86 copy solaris-x86 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh mandriva copy mandriva bin/env_parallel.ksh env_parallel.ksh
@ -217,6 +235,8 @@ bin/env_parallel.ksh netbsd copy netbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh ultrix copy ultrix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh irix copy irix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
@ -228,6 +248,7 @@ bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mk
bin/env_parallel.mksh openindiana copy openindiana bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh aix copy aix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux copy hpux bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian-ppc copy debian-ppc bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh suse copy suse bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris-x86 copy solaris-x86 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh mandriva copy mandriva bin/env_parallel.mksh env_parallel.mksh
@ -242,6 +263,8 @@ bin/env_parallel.mksh netbsd copy netbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh ultrix copy ultrix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh irix copy irix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
@ -253,6 +276,7 @@ bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.
bin/env_parallel.pdksh openindiana copy openindiana bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh aix copy aix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hpux copy hpux bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian-ppc copy debian-ppc bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh suse copy suse bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh solaris-x86 copy solaris-x86 bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh mandriva copy mandriva bin/env_parallel.pdksh env_parallel.pdksh
@ -267,6 +291,8 @@ bin/env_parallel.pdksh netbsd copy netbsd bin/env_parallel.pdksh env_parallel.pd
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh ultrix copy ultrix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh irix copy irix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
@ -278,6 +304,7 @@ bin/env_parallel.sh solaris copy solaris bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openindiana copy openindiana bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh aix copy aix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hpux copy hpux bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian-ppc copy debian-ppc bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh suse copy suse bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh solaris-x86 copy solaris-x86 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh mandriva copy mandriva bin/env_parallel.sh env_parallel.sh
@ -292,6 +319,8 @@ bin/env_parallel.sh netbsd copy netbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh ultrix copy ultrix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh irix copy irix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
@ -303,6 +332,7 @@ bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tc
bin/env_parallel.tcsh openindiana copy openindiana bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh aix copy aix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hpux copy hpux bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian-ppc copy debian-ppc bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh suse copy suse bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh solaris-x86 copy solaris-x86 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh mandriva copy mandriva bin/env_parallel.tcsh env_parallel.tcsh
@ -317,6 +347,8 @@ bin/env_parallel.tcsh netbsd copy netbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh ultrix copy ultrix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh irix copy irix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
@ -328,6 +360,7 @@ bin/env_parallel.zsh solaris copy solaris bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openindiana copy openindiana bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh aix copy aix bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hpux copy hpux bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian-ppc copy debian-ppc bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh suse copy suse bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh solaris-x86 copy solaris-x86 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh mandriva copy mandriva bin/env_parallel.zsh env_parallel.zsh
@ -342,6 +375,8 @@ bin/env_parallel.zsh netbsd copy netbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh ultrix copy ultrix bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh irix copy irix bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
bin/parcat qnx copy qnx bin/parcat parcat
@ -353,6 +388,7 @@ bin/parcat solaris copy solaris bin/parcat parcat
bin/parcat openindiana copy openindiana bin/parcat parcat
bin/parcat aix copy aix bin/parcat parcat
bin/parcat hpux copy hpux bin/parcat parcat
bin/parcat debian-ppc copy debian-ppc bin/parcat parcat
bin/parcat suse copy suse bin/parcat parcat
bin/parcat solaris-x86 copy solaris-x86 bin/parcat parcat
bin/parcat mandriva copy mandriva bin/parcat parcat
@ -367,6 +403,8 @@ bin/parcat netbsd copy netbsd bin/parcat parcat
bin/parcat openbsd copy openbsd bin/parcat parcat
bin/parcat freebsd copy freebsd bin/parcat parcat
bin/parcat debian copy debian bin/parcat parcat
bin/parcat ultrix copy ultrix bin/parcat parcat
bin/parcat irix copy irix bin/parcat parcat
bin/parcat hurd copy hurd bin/parcat parcat
bin/parcat minix copy minix bin/parcat parcat
bin/stdout qnx copy qnx bin/stdout stdout
@ -378,6 +416,7 @@ bin/stdout solaris copy solaris bin/stdout stdout
bin/stdout openindiana copy openindiana bin/stdout stdout
bin/stdout aix copy aix bin/stdout stdout
bin/stdout hpux copy hpux bin/stdout stdout
bin/stdout debian-ppc copy debian-ppc bin/stdout stdout
bin/stdout suse copy suse bin/stdout stdout
bin/stdout solaris-x86 copy solaris-x86 bin/stdout stdout
bin/stdout mandriva copy mandriva bin/stdout stdout
@ -392,6 +431,8 @@ bin/stdout netbsd copy netbsd bin/stdout stdout
bin/stdout openbsd copy openbsd bin/stdout stdout
bin/stdout freebsd copy freebsd bin/stdout stdout
bin/stdout debian copy debian bin/stdout stdout
bin/stdout ultrix copy ultrix bin/stdout stdout
bin/stdout irix copy irix bin/stdout stdout
bin/stdout hurd copy hurd bin/stdout stdout
bin/stdout minix copy minix bin/stdout stdout
Done copying
@ -406,10 +447,13 @@ Done copying
aix Works on aix7
centos Works on centos.polarhome.com
debian Works on debian
debian-ppc Works on debian-ppc
freebsd Syntax error: Bad fd number
hpux Works on hpux64
hpux-ia64 Works on hpux-ia64
hurd Works on hurd
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix Unknown open() mode '>&' at /home/t/tange/bin/parallel line 2458.
macosx Works on macosx.polarhome.com
mandriva Works on mandriva.polarhome.com
miros Works on miros.polarhome.com
@ -445,6 +489,8 @@ centos 1
centos 1
debian 1
debian 2
debian-ppc 1
debian-ppc 1
freebsd Syntax error: Bad fd number
hpux 1
hpux 1
@ -452,6 +498,9 @@ hpux-ia64 1
hpux-ia64 1
hurd
hurd 1
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix Unknown open() mode '>&' at /home/t/tange/bin/parallel line 2458.
irix Unknown open() mode '>&' at /home/t/tange/bin/parallel line 2458.
macosx 2
macosx 2
mandriva 1
@ -498,6 +547,8 @@ centos 1
centos 1
debian 2
debian 2
debian-ppc 1
debian-ppc 1
freebsd Syntax error: Bad fd number
hpux 1
hpux 1
@ -505,6 +556,9 @@ hpux-ia64 2
hpux-ia64 1
hurd 1
hurd 1
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix Unknown open() mode '>&' at /home/t/tange/bin/parallel line 2458.
irix Unknown open() mode '>&' at /home/t/tange/bin/parallel line 2458.
macosx 2
macosx 2
mandriva 1
@ -561,6 +615,8 @@ centos at /home/t/tange/bin/parallel line 0000
centos OK readonly tmp
debian Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian OK readonly tmp
debian-ppc Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
debian-ppc OK readonly tmp
freebsd Syntax error: Bad fd number
hpux Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
hpux OK readonly tmp
@ -569,6 +625,8 @@ hpux-ia64 at /home/t/tange/bin/parallel line 0000
hpux-ia64 OK readonly tmp
hurd Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
hurd OK readonly tmp
irix Undefined subroutine &main::decode_base64 called at -e line 1.
irix open3: exec of bzip2 -dc failed at -e line 1
macosx Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /Users/tange/bin/parallel line 0000
macosx OK readonly tmp
mandriva Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000
@ -607,6 +665,7 @@ tru64 at /home/t/tange/bin/parallel line 0000
tru64 OK readonly tmp
ubuntu Error in tempfile() using template /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at /home/t/tange/bin/parallel line 0000.
ubuntu OK readonly tmp
ultrix open3: wtr should not be null at -e line 1
unixware UX:sh (/bin/sh): ERROR: source: Not found
unixware UX:env: ERROR: No such file or directory: bash
echo
@ -630,6 +689,8 @@ centos test funcA
centos bash only A
debian test funcA
debian bash only A
debian-ppc test funcA
debian-ppc bash only A
freebsd Syntax error: Bad fd number
hpux test funcA
hpux bash only A
@ -637,6 +698,8 @@ hpux-ia64 test funcA
hpux-ia64 bash only A
hurd test funcA
hurd bash only A
irix Undefined subroutine &main::decode_base64 called at -e line 1.
irix open3: exec of bzip2 -dc failed at -e line 1
macosx test funcA
macosx bash only A
mandriva test funcA
@ -673,6 +736,7 @@ tru64 test funcA
tru64 bash only A
ubuntu test funcA
ubuntu bash only A
ultrix open3: wtr should not be null at -e line 1
unixware test funcA
unixware UX:sh (/bin/sh): ERROR: source: Not found
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 3: `(' unexpected
@ -701,6 +765,8 @@ centos test funcB
centos bash only B
debian test funcB
debian bash only B
debian-ppc test funcB
debian-ppc bash only B
freebsd test funcB
freebsd bash only B
hpux test funcB
@ -709,6 +775,8 @@ hpux-ia64 test funcB
hpux-ia64 bash only B
hurd test funcB
hurd bash only B
irix Undefined subroutine &main::decode_base64 called at -e line 1.
irix open3: exec of bzip2 -dc failed at -e line 1
macosx test funcB
macosx bash only B
mandriva test funcB
@ -744,6 +812,7 @@ tru64 test funcB
tru64 bash only B
ubuntu test funcB
ubuntu bash only B
ultrix open3: wtr should not be null at -e line 1
unixware test funcB
unixware bash only B
echo
@ -792,6 +861,17 @@ debian /home/t/tange/.profile
debian /home/t/tange/.cshrc
debian /home/t/tange/.tcshrc
debian install-OK
debian-ppc Installed env_parallel in:
debian-ppc /home/t/tange/.bashrc
debian-ppc /home/t/tange/.shrc
debian-ppc /home/t/tange/.zshenv
debian-ppc /home/t/tange/.config/fish/config.fish
debian-ppc /home/t/tange/.kshrc
debian-ppc /home/t/tange/.mkshrc
debian-ppc /home/t/tange/.profile
debian-ppc /home/t/tange/.cshrc
debian-ppc /home/t/tange/.tcshrc
debian-ppc install-OK
freebsd Syntax error: Bad fd number
hpux Installed env_parallel in:
hpux /home/t/tange/.bashrc
@ -827,6 +907,8 @@ hurd /home/t/tange/.profile
hurd /home/t/tange/.cshrc
hurd /home/t/tange/.tcshrc
hurd install-OK
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix env: bash: No such file or directory
macosx Installed env_parallel in:
macosx /Users/tange/.bashrc
macosx /Users/tange/.shrc
@ -1020,10 +1102,13 @@ unixware UX:env: ERROR: No such file or directory: bash
aix env_parallel run-OK
centos env_parallel run-OK
debian env_parallel run-OK
debian-ppc env_parallel run-OK
freebsd Syntax error: Bad fd number
hpux env_parallel run-OK
hpux-ia64 env_parallel run-OK
hurd env_parallel run-OK
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix env: bash: No such file or directory
macosx env_parallel run-OK
mandriva env_parallel run-OK
miros env_parallel run-OK
@ -1049,13 +1134,18 @@ tru64 env_parallel run-OK
ubuntu env_parallel run-OK
unixware env_parallel run-OK
unixware UX:sh (/bin/sh): ERROR: source: Not found
parallel: Warning: Starting 11 processes took > 2 sec.
parallel: Warning: Consider adjusting -j. Press CTRL-C to stop.
aix reading from process substitution OK
centos reading from process substitution OK
debian reading from process substitution OK
debian-ppc reading from process substitution OK
freebsd Syntax error: "(" unexpected (expecting word)
hpux reading from process substitution OK
hpux-ia64 reading from process substitution OK
hurd reading from process substitution OK
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix env: bash: No such file or directory
macosx reading from process substitution OK
mandriva reading from process substitution OK
miros reading from process substitution OK
@ -1075,6 +1165,7 @@ sshwithpass minix reading from process substitution OK
suse reading from process substitution OK
tru64 reading from process substitution OK
ubuntu reading from process substitution OK
ultrix Missing name for redirect.
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `(' unexpected
# Test empty command name in process list
test_empty_cmd() {
@ -1093,6 +1184,8 @@ centos ### Test if empty command name in process list causes problems
centos OK_with_empty_cmd
debian ### Test if empty command name in process list causes problems
debian OK_with_empty_cmd
debian-ppc ### Test if empty command name in process list causes problems
debian-ppc OK_with_empty_cmd
freebsd ### Test if empty command name in process list causes problems
freebsd OK_with_empty_cmd
hpux ### Test if empty command name in process list causes problems
@ -1101,6 +1194,8 @@ hpux-ia64 ### Test if empty command name in process list causes problems
hpux-ia64 OK_with_empty_cmd
hurd ### Test if empty command name in process list causes problems
hurd OK_with_empty_cmd
irix open3: exec of bzip2 -dc failed at -e line 1
irix Undefined subroutine &main::decode_base64 called at -e line 1.
macosx ### Test if empty command name in process list causes problems
macosx OK_with_empty_cmd
mandriva ### Test if empty command name in process list causes problems
@ -1136,6 +1231,7 @@ tru64 ### Test if empty command name in process list causes problems
tru64 OK_with_empty_cmd
ubuntu ### Test if empty command name in process list causes problems
ubuntu OK_with_empty_cmd
ultrix open3: wtr should not be null at -e line 1
unixware ### Test if empty command name in process list causes problems
unixware OK_with_empty_cmd
echo
@ -1152,10 +1248,14 @@ unixware OK_with_empty_cmd
aix 1 2 1 2 3 1 2 3 4
centos 1 2 1 2 3 1 2 3 4
debian 1 2 1 2 3 1 2 3 4
debian-ppc 1 2 1 2 3 1 2 3 4
freebsd Syntax error: Bad fd number
hpux
hpux-ia64 1 2 1 2 3 1 2 3 4
hurd 1 2 1 2 3 1 2 3 4
irix
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix /usr/freeware/bin/bash: line 1: parset: command not found
macosx 1 2 1 2 3 1 2 3 4
mandriva 1 2 1 2 3 1 2 3 4
miros 1 2 1 2 3 1 2 3 4
@ -1183,10 +1283,14 @@ unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpec
aix 2 2 3 2 3 4
centos 2 2 3 2 3 4
debian 2 2 3 2 3 4
debian-ppc 2 2 3 2 3 4
freebsd Syntax error: Bad fd number
hpux
hpux-ia64 1 2 1 2 1 2
hurd 2 2 3 2 3 4
irix
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix /usr/freeware/bin/bash: line 1: env_parset: command not found
macosx 2 2 3 2 3 4
mandriva 2 2 3 2 3 4
miros 1 2 1 2 1 2
@ -1229,10 +1333,14 @@ unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 1: `arr=' unexpec
aix 1 2,1 2 3,1 2 3 4
centos 1 2,1 2 3,1 2 3 4
debian 1 2,1 2 3,1 2 3 4
debian-ppc 1 2,1 2 3,1 2 3 4
freebsd Syntax error: Bad fd number
hpux ,,
hpux-ia64 1 2,1 2 3,1 2 3 4
hurd 1 2,1 2 3,1 2 3 4
irix ,,
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix /usr/freeware/bin/bash: line 1: parset: command not found
macosx 1 2,1 2 3,1 2 3 4
mandriva 1 2,1 2 3,1 2 3 4
miros 1 2,1 2 3,1 2 3 4
@ -1260,10 +1368,14 @@ unixware UX:sh (/bin/sh): ERROR: source: Not found
aix 2,2 3,2 3 4
centos 2,2 3,2 3 4
debian 2,2 3,2 3 4
debian-ppc 2,2 3,2 3 4
freebsd Syntax error: Bad fd number
hpux ,,
hpux-ia64 1 2,1 2,1 2
hurd 2,2 3,2 3 4
irix ,,
irix /usr/freeware/bin/bash: line 1: /home/t/tange/setupenv: No such file or directory
irix /usr/freeware/bin/bash: line 1: env_parset: command not found
macosx 2,2 3,2 3 4
mandriva 2,2 3,2 3 4
miros 1 2,1 2,1 2

View file

@ -839,8 +839,6 @@ DISPLAY
GOPATH
GPG_AGENT_INFO
GS_LIB
GTK2_RC_FILES
GTK_RC_FILES
HISTCONTROL
HOME
JAVA_HOME