diff --git a/doc/release_new_version b/doc/release_new_version index b237f968..60eb2b1a 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -209,7 +209,7 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -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 diff --git a/src/parallel b/src/parallel index bdaf887a..e39820b6 100755 --- a/src/parallel +++ b/src/parallel @@ -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)); diff --git a/testsuite/REQUIREMENTS b/testsuite/REQUIREMENTS index e297ce54..020c1b00 100644 --- a/testsuite/REQUIREMENTS +++ b/testsuite/REQUIREMENTS @@ -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 && diff --git a/testsuite/Start.sh b/testsuite/Start.sh index 6b1c686f..b6404d6b 100755 --- a/testsuite/Start.sh +++ b/testsuite/Start.sh @@ -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 diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh index b98da6df..1017c034 100644 --- a/testsuite/tests-to-run/parallel-local-0.3s.sh +++ b/testsuite/tests-to-run/parallel-local-0.3s.sh @@ -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 | + ( + 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 + 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' - parallel --wd . 'pwd; echo $OLDPWD; echo' ::: OK } par_X_eta_div_zero() { diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index 932e0888..b28282b6 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -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':~:' diff --git a/testsuite/tests-to-run/parallel-local-1s.sh b/testsuite/tests-to-run/parallel-local-1s.sh index 6a47158e..b4c6bc71 100644 --- a/testsuite/tests-to-run/parallel-local-1s.sh +++ b/testsuite/tests-to-run/parallel-local-1s.sh @@ -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' diff --git a/testsuite/tests-to-run/parallel-local-race02.sh b/testsuite/tests-to-run/parallel-local-race02.sh index 64b65fbe..3150e6b1 100644 --- a/testsuite/tests-to-run/parallel-local-race02.sh +++ b/testsuite/tests-to-run/parallel-local-race02.sh @@ -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/' diff --git a/testsuite/tests-to-run/parallel-local-ssh2.sh b/testsuite/tests-to-run/parallel-local-ssh2.sh index e5402ea9..e84effd7 100644 --- a/testsuite/tests-to-run/parallel-local-ssh2.sh +++ b/testsuite/tests-to-run/parallel-local-ssh2.sh @@ -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" diff --git a/testsuite/tests-to-run/parallel-local-ssh8.sh b/testsuite/tests-to-run/parallel-local-ssh8.sh index 9dad3922..3ebedaaa 100644 --- a/testsuite/tests-to-run/parallel-local-ssh8.sh +++ b/testsuite/tests-to-run/parallel-local-ssh8.sh @@ -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 } diff --git a/testsuite/tests-to-run/parallel-local-ssh9.sh b/testsuite/tests-to-run/parallel-local-ssh9.sh index e424ce62..d6a1512b 100644 --- a/testsuite/tests-to-run/parallel-local-ssh9.sh +++ b/testsuite/tests-to-run/parallel-local-ssh9.sh @@ -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:/' | diff --git a/testsuite/tests-to-run/parallel-local18.sh b/testsuite/tests-to-run/parallel-local18.sh index ec0b7339..c95fd492 100644 --- a/testsuite/tests-to-run/parallel-local18.sh +++ b/testsuite/tests-to-run/parallel-local18.sh @@ -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() { diff --git a/testsuite/tests-to-run/parallel-local22.sh b/testsuite/tests-to-run/parallel-local22.sh index 7daa8e8b..5154c12e 100755 --- a/testsuite/tests-to-run/parallel-local22.sh +++ b/testsuite/tests-to-run/parallel-local22.sh @@ -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 diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 1879a251..a3948ff7 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -399,7 +399,7 @@ par_parset 4 par_parset 5 par_parset The commands to run can be an array par_parset <> -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 diff --git a/testsuite/wanted-results/parallel-local-1s b/testsuite/wanted-results/parallel-local-1s index 1ce3b4d1..f19f8841 100644 --- a/testsuite/wanted-results/parallel-local-1s +++ b/testsuite/wanted-results/parallel-local-1s @@ -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 diff --git a/testsuite/wanted-results/parallel-local-race02 b/testsuite/wanted-results/parallel-local-race02 index af2e39c5..c5f0e457 100644 --- a/testsuite/wanted-results/parallel-local-race02 +++ b/testsuite/wanted-results/parallel-local-race02 @@ -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 diff --git a/testsuite/wanted-results/parallel-local-ssh8 b/testsuite/wanted-results/parallel-local-ssh8 index 672f8034..1dabfbe0 100644 --- a/testsuite/wanted-results/parallel-local-ssh8 +++ b/testsuite/wanted-results/parallel-local-ssh8 @@ -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 diff --git a/testsuite/wanted-results/parallel-local-ssh9 b/testsuite/wanted-results/parallel-local-ssh9 index 650554c6..91d1c4f9 100644 --- a/testsuite/wanted-results/parallel-local-ssh9 +++ b/testsuite/wanted-results/parallel-local-ssh9 @@ -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 diff --git a/testsuite/wanted-results/parallel-local12 b/testsuite/wanted-results/parallel-local12 index 056b6c73..3b580721 100644 --- a/testsuite/wanted-results/parallel-local12 +++ b/testsuite/wanted-results/parallel-local12 @@ -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: diff --git a/testsuite/wanted-results/parallel-local22 b/testsuite/wanted-results/parallel-local22 index 35e337a3..ed306544 100644 --- a/testsuite/wanted-results/parallel-local22 +++ b/testsuite/wanted-results/parallel-local22 @@ -80,15 +80,6 @@ echo '### bug #42893: --block should not cause decimals in cat_partial' 131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 258900 129450 |(true) 131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 388350 129450 |(true) 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 diff --git a/testsuite/wanted-results/parallel-polarhome b/testsuite/wanted-results/parallel-polarhome index bbab03e7..138043ae 100644 --- a/testsuite/wanted-results/parallel-polarhome +++ b/testsuite/wanted-results/parallel-polarhome @@ -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 diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index 51338329..65c0b5da 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -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