Fixed bug #55992: --delay with ms accuracy (around 5 ms).

This commit is contained in:
Ole Tange 2019-09-22 07:30:08 +02:00
parent 512059bf1e
commit 372d3fdf24
22 changed files with 177 additions and 77 deletions

View file

@ -209,7 +209,7 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20190822 ('Dorian') released <<[stable]>>
Subject: GNU Parallel 20190822 ('Dorian/Stallman') released <<[stable]>>
GNU Parallel 20190822 ('Dorian') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
@ -225,12 +225,16 @@ Quote of the month:
New in this release:
* --delay is now accurate to around 5 ms.
* --nice is now inherited by the nice level that GNU Parallel is started at. So 'nice -n10 parallel' will also cause remote jobs to be run at nice level 10.
* GNU Parallel will be presented at Driving IT 2019: https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools
* Greenland Ice Sheet solid ice discharge from 1986 through 2017 https://www.earth-syst-sci-data.net/11/769/2019/essd-11-769-2019.pdf
* App Center Cloud Build Machines > Installed Software > Utilities https://docs.microsoft.com/en-us/appcenter/build/software
https://dualuse.io/blog/curryfinger/
https://wiki.cac.washington.edu/display/hyakusers/Hyak+parallel-sql

View file

@ -1677,7 +1677,7 @@ sub parse_options(@) {
$ENV{'PARALLEL_RSYNC_OPTS'} = $opt::rsync_opts ||
$ENV{'PARALLEL_RSYNC_OPTS'} || '-rlDzR';
# Default: Same nice level as GNU Parallel is started at
$opt::nice ||= getpriority(0,0) || 0;
$opt::nice ||= eval { getpriority(0,0) } || 0;
if(defined $opt::help) { usage(); exit(0); }
if(defined $opt::embed) { embed(); exit(0); }
if(defined $opt::sqlandworker) {
@ -3214,7 +3214,7 @@ sub init_run_jobs() {
if ($sshlogin->jobs_running() < $sshlogin->max_jobs_running()) {
if($opt::delay
and
$opt::delay > ::now() - $Global::newest_starttime) {
$opt::delay - 0.008 > ::now() - $Global::newest_starttime) {
# It has been too short since last start
next;
}
@ -5699,7 +5699,7 @@ sub reap_usleep() {
if(reapers()) {
if(not $Global::total_completed % 100) {
if($opt::timeout) {
# Force cleaning the timeout queue for every 1000 jobs
# Force cleaning the timeout queue for every 100 jobs
# Fixes potential memleak
$Global::timeoutq->process_timeouts();
}
@ -5716,13 +5716,6 @@ sub reap_usleep() {
if($opt::limit) {
kill_youngest_if_over_limit();
}
if($ms > 0.002) {
# When a child dies, wake up from sleep (or select(,,,))
$SIG{CHLD} = sub { kill "ALRM", $$ };
usleep($ms);
# --compress needs $SIG{CHLD} unset
$SIG{CHLD} = 'DEFAULT';
}
exit_if_disk_full();
if($opt::linebuffer) {
my $something_printed = 0;
@ -5739,6 +5732,19 @@ sub reap_usleep() {
$ms = $ms/2+0.001;
}
}
if($ms > 0.002) {
# When a child dies, wake up from sleep (or select(,,,))
$SIG{CHLD} = sub { kill "ALRM", $$ };
if($opt::delay) {
# The 0.004s is approximately the time it takes for one round
usleep(1000*($Global::newest_starttime +
$opt::delay - 0.004 - ::now()));
} else {
usleep($ms);
}
# --compress needs $SIG{CHLD} unset
$SIG{CHLD} = 'DEFAULT';
}
# Sleep exponentially longer (1.1^n) if a job did not finish,
# though at most 1000 ms.
return (($ms < 1000) ? ($ms * 1.1) : ($ms));

View file

@ -18,7 +18,8 @@ install_packages() {
# Compression
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz pxz gzip plzip pbzip2 lzma xz-utils lzip bzip2 lbzip2 lrzip"
# Shells
shell_pkgs="ash csh dash fdclone fish fizsh ksh mksh posh rc rush sash tcsh yash zsh"
# (csh = bsd-csh that is broken)
shell_pkgs="ash dash fdclone fish fizsh ksh mksh posh rc rush sash tcsh yash zsh"
# Databases
database_pkgs="postgresql mysql-server sqlite"
if $INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs $compression_pkgs $shell_pkgs $database_pkgs; then
@ -143,9 +144,11 @@ create_shell_logins() {
# Remove env_parallel from .profile
ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc'
ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin'
ssh nopathbash@lo 'echo $PATH; echo 1 | parallel echo' || echo Should FAIL
ssh nopathcsh@lo 'echo $PATH; echo 1 | parallel echo' || echo Should FAIL
ssh nopathcsh@lo 'echo >> .login setenv PATH /bin:/usr/bin'
ssh nopathbash@lo 'echo $PATH; echo 1 | parallel echo' ||
echo Great - this should FAIL: parallel should not be found
ssh nopathcsh@lo 'echo $PATH; echo 1 | parallel echo' ||
echo Great - this should FAIL: parallel should not be found
)
}
@ -184,10 +187,34 @@ add_freebsd() {
echo Ciphers +aes256-cbc
}
tmux_versions() {
(cd /tmp
git clone https://github.com/tmux/tmux.git
make_one() {
rsync -a --delete tmux/ tmux$1/
cd tmux$1
git reset --hard
git checkout $1
./autogen.sh &&
./configure &&
make -j2 &&
sudo cp tmux /usr/local/bin/tmux-$1
}
export -f make_one
echo '# Building tmux'
seq 1.8 0.1 3.0 |
stdout parallel --lb --tag '/usr/local/bin/tmux-{} -V || make_one {}'
seq 1.8 0.1 3.0 |
parallel -k -v /usr/local/bin/tmux-{} -V
)
}
misc() {
parallel --record-env
sudo cp /usr/bin/tmux /usr/local/bin/tmux1.8
#sudo cp /usr/bin/tmux /usr/local/bin/tmux1.8
# Build locale for LC_ALL=zh_HK.big5hkscs perl -e 1
sudo locale-gen zh_HK
}
install_packages &&

View file

@ -3,6 +3,7 @@
# Argument can be substring of tests (such as 'local')
export LANG=C
export LC_ALL=C
unset LC_MONETARY
SHFILE=/tmp/unittest-parallel.sh
MAX_SEC_PER_TEST=900

View file

@ -444,14 +444,17 @@ par_newline_in_command() {
par_wd_3dot_local() {
echo 'bug #45993: --wd ... should also work when run locally'
(
parallel --wd /bi 'pwd; echo $OLDPWD; echo' ::: fail
parallel --wd /bin 'pwd; echo $OLDPWD; echo' ::: OK
parallel --wd / 'pwd; echo $OLDPWD; echo' ::: OK
parallel --wd /tmp 'pwd; echo $OLDPWD; echo' ::: OK
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK |
perl -pe 's:/mnt/4tb::; s:/home/tange:~:;' |
perl -pe 's/'`hostname`'/hostname/g; s/\d+/0/g'
parallel --wd ... 'pwd; echo $OLDPWD; echo' ::: OK
parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK
) |
perl -pe 's:/mnt/4tb::; s:/home/tange:~:;' |
perl -pe 's:parallel./:parallel/:;' |
perl -pe 's/'`hostname`'/hostname/g; s/\d+/0/g'
}
par_X_eta_div_zero() {

View file

@ -515,4 +515,8 @@ par_tmp_full() {
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'
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' |
perl -pe 's/,31,0/,15,0/' |
perl -pe 's:~:'$HOME':' |
perl -pe 's:'$PWD':.:' |
perl -pe 's:'$HOME':~:'

View file

@ -4,6 +4,16 @@
# Each should be taking 1-3s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_profiles_with_space() {
echo '### bug #42902: profiles containing arguments with space'
echo "--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' " > ~/.parallel/FULLPATH;
parallel -JFULLPATH echo FULLPATH ::: $0
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: . |
perl -pe 's:parallel./:parallel/:'
}
par_fifo_under_csh() {
echo '### Test --fifo under csh'

View file

@ -90,7 +90,7 @@ par_continuous_output() {
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 -j1 $1 --delay 1.5 -N0 echo |
parallel -j4 $1 -N0 'sleep 0.6;date' |
timestamp -dd |
perl -pe 's/(.).*/$1/'

View file

@ -90,4 +90,5 @@ par_tee_ssh() {
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 |
parallel --joblog /tmp/jl-`basename $0` --retries 3 -j300% --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` --retries 3 -j300% --tag -k '{} 2>&1' |
perl -pe "s//'/g;s//'/g"

View file

@ -47,7 +47,6 @@ par_path_remote_csh() {
env_parallel --filter --env A,PATH -Slo echo '$PATH' ::: OK
# Sleep needed to avoid stderr/stdout mixing
sleep 1
echo Right now it seems csh does not respect $PATH if set from Perl
echo Done
_EOS
}
@ -91,21 +90,21 @@ par_bar_m() {
par_retries_1() {
echo '### Test of --retries - it should run 13 jobs in total';
export PARALLEL="--retries 1 -S 12/localhost,1/:,parallel@parallel-server1 -uq"
export PARALLEL="--retries 1 -S 12/localhost,1/:,parallel@lo -uq"
seq 0 12 |
parallel perl -e 'print "job{}\n";exit({})' 2>/dev/null | wc -l
}
par_retries_2() {
echo '### Test of --retries - it should run 25 jobs in total';
export PARALLEL="--retries 2 -S 12/localhost,1/:,parallel@parallel-server1 -uq"
export PARALLEL="--retries 2 -S 12/localhost,1/:,parallel@lo -uq"
seq 0 12 |
parallel perl -e 'print "job{}\n";exit({})' 2>/dev/null | wc -l
}
par_retries_4() {
echo '### Test of --retries - it should run 49 jobs in total';
export PARALLEL="--retries 4 -S 12/localhost,1/:,parallel@parallel-server1 -uq"
export PARALLEL="--retries 4 -S 12/localhost,1/:,parallel@lo -uq"
seq 0 12 |
parallel perl -e 'print "job{}\n";exit({})' 2>/dev/null | wc -l
}

View file

@ -128,7 +128,8 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
rm parallel-embed
_EOF
)
ssh zsh@lo "$myscript"
ssh zsh@lo "$myscript" 2>&1 |
grep -v .zshenv:.:1
}
par_propagate_env() {
@ -197,14 +198,14 @@ par_PARALLEL_SSHLOGIN() {
echo '### bug #56554: Introduce $PARALLEL_SSHLOGIN'
(echo lo; echo zsh@lo; echo /usr/bin/ssh csh@lo; echo 1/sh@lo;
echo 1//usr/bin/ssh tcsh@lo) |
parallel --tag --nonall -S - 'whoami;echo $PARALLEL_SSHLOGIN' |
sort
parallel -k --tag --nonall -S - 'whoami;echo $PARALLEL_SSHLOGIN' |
LANG=C sort
}
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_ | LANG=C sort -r |
compgen -A function | grep par_ | LANG=C sort -ri |
# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --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:/' |

View file

@ -65,12 +65,14 @@ par_env_newline_backslash_bash() {
par_env_newline_backslash_csh() {
echo '### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails'
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo ''
test_chr_on_sshlogin 10,92 2/tcsh@lo,2/csh@lo '' |
perl -pe "s/'(.)'/\$1/g"
}
par_env_newline_backslash_onall_bash() {
echo '### Test --env for \n and \\ - single and double --onall (bash only) - no output is good'
test_chr_on_sshlogin 10,92 :,lo --onall
test_chr_on_sshlogin 10,92 :,lo --onall |
grep -v "Unmatched '\"'"
}
par_env_newline_backslash_onall_csh() {

View file

@ -62,12 +62,6 @@ echo '### bug #42893: --block should not cause decimals in cat_partial'
parallel --dry-run -kvv --pipepart --block 0.12345M -a /tmp/parallel-decimal true;
rm /tmp/parallel-decimal
echo '### bug #42902: profiles containing arguments with space'
echo "--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' " > ~/.parallel/FULLPATH;
parallel -JFULLPATH echo FULLPATH ::: $0
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: .
echo '### bug #42892: parallel -a nonexiting --pipepart'
parallel --pipepart -a nonexisting wc

View file

@ -399,7 +399,7 @@ par_parset 4
par_parset 5
par_parset The commands to run can be an array
par_parset <<joe "double space" cartoon>>
par_parset ~/privat/parallel/testsuite
par_parset .
par_parset You cannot pipe into parset, but must use a tempfile
par_parset 1
par_parset 10

View file

@ -212,6 +212,11 @@ par_pipe_compress_blocks 1 2 3
par_pipe_compress_blocks 1
par_pipe_compress_blocks 2
par_pipe_compress_blocks 3
par_profiles_with_space ### bug #42902: profiles containing arguments with space
par_profiles_with_space /bin/bash=/bin/bash
par_profiles_with_space echo '/bin/bash=/bin/bash'
par_profiles_with_space /bin/bash=/bin/bash
par_profiles_with_space With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite
par_pxz_complains bug #44250: pxz complains File format not recognized but decompresses anyway
par_pxz_complains ls: cannot access '/OK-if-missing-file': No such file or directory
par_pxz_complains can not seek in input: Illegal seek

View file

@ -13,7 +13,7 @@ stdout /usr/bin/time -f CPUTIME=%U parallel --timeout 5 -q perl -e "while(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 6
par_continuous_output 0
par_continuous_output 0
par_continuous_output 0
@ -25,8 +25,7 @@ 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 5
par_continuous_output 0
par_continuous_output 0
par_continuous_output 0
@ -35,6 +34,7 @@ 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

@ -26,9 +26,7 @@ par_path_remote_csh logged in
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: 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 /bin:/usr/bin:/tmp OK
par_path_remote_csh Done
par_retries_1 ### Test of --retries - it should run 13 jobs in total
par_retries_1 13

View file

@ -6,7 +6,10 @@ par_zsh_embed your
par_zsh_embed code
par_zsh_embed here
par_zsh_embed parallel_OK
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed env_parallel --env OK
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed _which_PAR:13: argument list too long: perl
par_zsh_embed env_parallel: Error: Your environment is too big.
par_zsh_embed env_parallel: Error: You can try 3 different approaches:
@ -19,9 +22,17 @@ par_zsh_embed env_parallel: Error: And then use '--env _'
par_zsh_embed env_parallel: Error: For details see: man env_parallel
par_zsh_embed ParsetOK
par_zsh_embed Put
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed your
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed code
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed here
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed /home/zsh/.zshenv:.:1: no such file or directory: env_parallel.zsh
par_zsh_embed Put your code here
par_tcsh_embed Not implemented
par_sh_embed --embed
@ -54,17 +65,6 @@ par_propagate_env ** test_csh_filter
par_propagate_env FOO=test_csh_filter
par_propagate_env HOME=~
par_propagate_env ** bug #41805 done
par_PARALLEL_SSHLOGIN ### bug #56554: Introduce $PARALLEL_SSHLOGIN
par_PARALLEL_SSHLOGIN lo lo
par_PARALLEL_SSHLOGIN lo tange
par_PARALLEL_SSHLOGIN sh@lo sh
par_PARALLEL_SSHLOGIN sh@lo sh@lo
par_PARALLEL_SSHLOGIN /usr/bin/ssh csh@lo csh
par_PARALLEL_SSHLOGIN /usr/bin/ssh csh@lo /usr/bin/ssh csh@lo
par_PARALLEL_SSHLOGIN /usr/bin/ssh tcsh@lo tcsh
par_PARALLEL_SSHLOGIN /usr/bin/ssh tcsh@lo /usr/bin/ssh tcsh@lo
par_PARALLEL_SSHLOGIN zsh@lo zsh
par_PARALLEL_SSHLOGIN zsh@lo zsh@lo
par_no_route_to_host ### no route to host with | and -j0 causes inf loop
par_no_route_to_host ssh: connect to host i.p.n.r port 22: No route to host par_no_route_to_host
par_no_route_to_host parallel: This job finished:
@ -147,3 +147,14 @@ par_ash_embed your
par_ash_embed code
par_ash_embed here
par_ash_embed Put your code here
par_PARALLEL_SSHLOGIN ### bug #56554: Introduce $PARALLEL_SSHLOGIN
par_PARALLEL_SSHLOGIN /usr/bin/ssh csh@lo /usr/bin/ssh csh@lo
par_PARALLEL_SSHLOGIN /usr/bin/ssh csh@lo csh
par_PARALLEL_SSHLOGIN /usr/bin/ssh tcsh@lo /usr/bin/ssh tcsh@lo
par_PARALLEL_SSHLOGIN /usr/bin/ssh tcsh@lo tcsh
par_PARALLEL_SSHLOGIN lo lo
par_PARALLEL_SSHLOGIN lo tange
par_PARALLEL_SSHLOGIN sh@lo sh
par_PARALLEL_SSHLOGIN sh@lo sh@lo
par_PARALLEL_SSHLOGIN zsh@lo zsh
par_PARALLEL_SSHLOGIN zsh@lo zsh@lo

View file

@ -39,7 +39,7 @@ https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
To silence this citation notice: run 'parallel --citation' once.
10 files to edit
[?2004h[?1049h[?1h=[?2004h[?12h[?12l[?25l"file1" [New File] [>c]10;?]11;?~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 0,0-1All[?25h[?25lE173: 9 more files to edit[?2004h0,0-1All[?25h[?2004l[?2004l[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.
[?2004h[?1049h[?1h=[?2004h[?12h[?12l[?25l"file1" [New File]½ [>c]10;?]11;?~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 0,0-1All[?25h[?25lE173: 9 more files to edit[?2004h0,0-1All[?25h[?2004l[?2004l[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.
If you use programs that use GNU Parallel to process data for an article in a
scientific publication, please cite:

View file

@ -80,15 +80,6 @@ echo '### bug #42893: --block should not cause decimals in cat_partial'
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 258900 129450 |(true)
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 388350 129450 |(true)
</tmp/parallel-decimal perl -e 'while(@ARGV){sysseek(STDIN,shift,0)||die;$left=shift;while($read=sysread(STDIN,$buf,$left>131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 517800 71095 |(true)
echo '### bug #42902: profiles containing arguments with space'
### bug #42902: profiles containing arguments with space
echo "--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' " > ~/.parallel/FULLPATH; parallel -JFULLPATH echo FULLPATH ::: $0
/bin/bash=/bin/bash
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0
echo '/bin/bash=/bin/bash'
/bin/bash=/bin/bash
PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: .
With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite
echo '### bug #42892: parallel -a nonexiting --pipepart'
### bug #42892: parallel -a nonexiting --pipepart
parallel --pipepart -a nonexisting wc

View file

@ -10,13 +10,14 @@ MAXTIME=50 RETRIES=3 MAXPROC=100 MAXINNERPROC=3
< dragonfly
< vax
< minix
32,33d20
32,33d21
< beaglebone
< cubieboard2
### Copy commands to servers
bin/parallel qnx copy qnx bin/parallel parallel
bin/parallel pidora copy pidora bin/parallel parallel
bin/parallel tru64 copy tru64 bin/parallel parallel
bin/parallel hpux-ia64 copy hpux-ia64 bin/parallel parallel
bin/parallel raspbian copy raspbian bin/parallel parallel
bin/parallel solaris copy solaris bin/parallel parallel
bin/parallel openindiana copy openindiana bin/parallel parallel
@ -41,6 +42,7 @@ bin/parallel minix copy minix bin/parallel parallel
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
bin/env_parallel tru64 copy tru64 bin/env_parallel env_parallel
bin/env_parallel hpux-ia64 copy hpux-ia64 bin/env_parallel env_parallel
bin/env_parallel raspbian copy raspbian bin/env_parallel env_parallel
bin/env_parallel solaris copy solaris bin/env_parallel env_parallel
bin/env_parallel openindiana copy openindiana bin/env_parallel env_parallel
@ -65,6 +67,7 @@ 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
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash tru64 copy tru64 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hpux-ia64 copy hpux-ia64 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash raspbian copy raspbian bin/env_parallel.ash env_parallel.ash
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
@ -89,6 +92,7 @@ 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
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash tru64 copy tru64 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hpux-ia64 copy hpux-ia64 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash raspbian copy raspbian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openindiana copy openindiana bin/env_parallel.bash env_parallel.bash
@ -113,6 +117,7 @@ bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
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
bin/env_parallel.csh hpux-ia64 copy hpux-ia64 bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh raspbian copy raspbian bin/env_parallel.csh env_parallel.csh
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
@ -137,6 +142,7 @@ 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
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash tru64 copy tru64 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hpux-ia64 copy hpux-ia64 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash raspbian copy raspbian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openindiana copy openindiana bin/env_parallel.dash env_parallel.dash
@ -161,6 +167,7 @@ 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
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish tru64 copy tru64 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hpux-ia64 copy hpux-ia64 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish raspbian copy raspbian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openindiana copy openindiana bin/env_parallel.fish env_parallel.fish
@ -185,6 +192,7 @@ 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
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh tru64 copy tru64 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hpux-ia64 copy hpux-ia64 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh raspbian copy raspbian bin/env_parallel.ksh env_parallel.ksh
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
@ -209,6 +217,7 @@ 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
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh tru64 copy tru64 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux-ia64 copy hpux-ia64 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh raspbian copy raspbian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openindiana copy openindiana bin/env_parallel.mksh env_parallel.mksh
@ -233,6 +242,7 @@ 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
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh tru64 copy tru64 bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hpux-ia64 copy hpux-ia64 bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh raspbian copy raspbian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh openindiana copy openindiana bin/env_parallel.pdksh env_parallel.pdksh
@ -257,6 +267,7 @@ bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdks
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh tru64 copy tru64 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hpux-ia64 copy hpux-ia64 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh raspbian copy raspbian bin/env_parallel.sh env_parallel.sh
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
@ -281,6 +292,7 @@ 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
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh tru64 copy tru64 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hpux-ia64 copy hpux-ia64 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh raspbian copy raspbian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openindiana copy openindiana bin/env_parallel.tcsh env_parallel.tcsh
@ -305,6 +317,7 @@ 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
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh tru64 copy tru64 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hpux-ia64 copy hpux-ia64 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh raspbian copy raspbian bin/env_parallel.zsh env_parallel.zsh
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
@ -329,6 +342,7 @@ bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
bin/parcat qnx copy qnx bin/parcat parcat
bin/parcat pidora copy pidora bin/parcat parcat
bin/parcat tru64 copy tru64 bin/parcat parcat
bin/parcat hpux-ia64 copy hpux-ia64 bin/parcat parcat
bin/parcat raspbian copy raspbian bin/parcat parcat
bin/parcat solaris copy solaris bin/parcat parcat
bin/parcat openindiana copy openindiana bin/parcat parcat
@ -365,8 +379,9 @@ debian Works on debian
debian-ppc Works on debian-ppc
freebsd Works on freebsd.polarhome.com
hpux Works on hpux64
hpux-ia64 Works on hpux-ia64
hurd Works on hurd
macosx Works on macosx.polarhome.com
macosx Works on macosx
mandriva Works on mandriva.polarhome.com
miros Works on miros.polarhome.com
netbsd Works on netbsd.polarhome.com
@ -460,6 +475,8 @@ hpux 1
hpux 1
hpux-ia64 2
hpux-ia64 1
hurd 1
hurd 1
macosx 2
macosx 2
mandriva 1
@ -521,8 +538,10 @@ hurd OK readonly tmp
hpux Error in tempfile() using /XXXXXXXX.arg: Could not create temp file /XXXXXXXX.arg: Permission denied at ~/bin/parallel line 0000
hpux OK readonly tmp
hpux-ia64 Error in tempfile() using /XXXXXXXX.arg: Parent directory (/) is not writable
hpux-ia64 at /home/t/tange/bin/parallel line 0000
hpux-ia64 at ~/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 ~/bin/parallel line 0000.
hurd OK readonly tmp
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 ~/bin/parallel line 0000
@ -593,6 +612,8 @@ hpux bash only A
hpux test funcA
hpux-ia64 bash only A
hpux-ia64 test funcA
hurd bash only A
hurd test funcA
macosx bash only A
macosx test funcA
mandriva bash only A
@ -665,6 +686,8 @@ hpux test funcB
hpux bash only B
hpux-ia64 test funcB
hpux-ia64 bash only B
hurd test funcB
hurd bash only B
macosx test funcB
macosx bash only B
mandriva test funcB
@ -765,6 +788,18 @@ freebsd ~/.profile
freebsd ~/.cshrc
freebsd ~/.tcshrc
freebsd install-OK
hpux-ia64 Installed env_parallel in:
hpux-ia64 ~/.bashrc
hpux-ia64 ~/.shrc
hpux-ia64 ~/.zshenv
hpux-ia64 ~/.config/fish/config.fish
hpux-ia64 ~/.kshrc
hpux-ia64 ~/.mkshrc
hpux-ia64 ~/.profile
hpux-ia64 ~/.cshrc
hpux-ia64 ~/.tcshrc
hpux-ia64 install-OK
hpux-ia64 bin/env_parallel: line 33: ~/.cshrc: Permission denied
hurd Installed env_parallel in:
hurd ~/.bashrc
hurd ~/.shrc
@ -1003,6 +1038,7 @@ freebsd env_parallel run-OK
hurd env_parallel run-OK
hpux env_parallel run-OK
hpux-ia64 env_parallel run-OK
hurd env_parallel run-OK
macosx env_parallel run-OK
mandriva env_parallel run-OK
miros env_parallel run-OK
@ -1044,6 +1080,7 @@ freebsd Syntax error: "(" unexpected (expecting word)
hurd reading from process substitution OK
hpux reading from process substitution OK
hpux-ia64 reading from process substitution OK
hurd reading from process substitution OK
macosx reading from process substitution OK
mandriva reading from process substitution OK
miros reading from process substitution OK
@ -1097,6 +1134,8 @@ hpux ### Test if empty command name in process list causes problems
hpux OK_with_empty_cmd
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
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
@ -1152,6 +1191,7 @@ freebsd eval: 1: Syntax error: word unexpected (expecting ")")
hurd 1 2 1 2 3 1 2 3 4
hpux
hpux-ia64 1 2 1 2 3 1 2 3 4
hurd 1 2 1 2 3 1 2 3 4
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
@ -1181,6 +1221,7 @@ freebsd eval: 1: Syntax error: word unexpected (expecting ")")
hurd 2 2 3 2 3 4
hpux
hpux-ia64 1 2 1 2 1 2
hurd 2 2 3 2 3 4
macosx 2 2 3 2 3 4
mandriva 2 2 3 2 3 4
miros 1 2 1 2 1 2
@ -1225,6 +1266,7 @@ freebsd 1 2,1 2 3,1 2 3 4
hurd 1 2,1 2 3,1 2 3 4
hpux ,,
hpux-ia64 1 2,1 2 3,1 2 3 4
hurd 1 2,1 2 3,1 2 3 4
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

View file

@ -158,9 +158,9 @@ B
(echo 1; echo; echo 2) | parallel --no-run-if-empty echo
9
parallel ::: ls 'echo foo' pwd
abc-file
abc0-file
abc_-file
abc-file
def-file
fixedlen
num1000000
@ -397,12 +397,12 @@ pre-A-post
=ls
parallel 'set a="{}"; if( { test -d "$a" } ) echo "$a is a dir"' ::: *
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc0-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc_-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="def-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="fixedlen"; if( { test -d "$a" } ) echo "$a is a dir"'
@ -831,7 +831,6 @@ foo bar baz
in my_func baz
parallel --record-env
cat ~/.parallel/ignored_vars|sort
_
BASH_FUNC_run_once%%
BASH_FUNC_run_test%%
COLORFGBG
@ -888,7 +887,6 @@ PROFILEHOME
PWD
QT_ACCESSIBILITY
QT_AUTO_SCREEN_SCALE_FACTOR
S_COLORS
SERVER1
SERVER2
SESSION_MANAGER
@ -897,6 +895,7 @@ SHELL_SESSION_ID
SHLVL
SSH_AGENT_PID
SSH_AUTH_SOCK
S_COLORS
TERM
TIMEOUT
TMPDIR
@ -919,6 +918,8 @@ XDG_SESSION_ID
XDG_SESSION_PATH
XDG_SESSION_TYPE
XDG_VTNR
_
mysqlrootpass
# The function is only copied if using Bash
my_func2() {
echo in my_func2 $VAR $1