diff --git a/README b/README index 1b5739a2..20473bb1 100644 --- a/README +++ b/README @@ -44,9 +44,9 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2 - bzip2 -dc parallel-20180122.tar.bz2 | tar xvf - - cd parallel-20180122 + wget https://ftpmirror.gnu.org/parallel/parallel-20180222.tar.bz2 + bzip2 -dc parallel-20180222.tar.bz2 | tar xvf - + cd parallel-20180222 ./configure && make && sudo make install @@ -55,9 +55,9 @@ Full installation of GNU Parallel is as simple as: If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget https://ftpmirror.gnu.org/parallel/parallel-20180122.tar.bz2 - bzip2 -dc parallel-20180122.tar.bz2 | tar xvf - - cd parallel-20180122 + wget https://ftpmirror.gnu.org/parallel/parallel-20180222.tar.bz2 + bzip2 -dc parallel-20180222.tar.bz2 | tar xvf - + cd parallel-20180222 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff --git a/configure.ac b/configure.ac index a6bf0707..db6337c3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20180122], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20180222], [bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/doc/release_new_version b/doc/release_new_version index 858658e4..41825620 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -199,9 +199,9 @@ to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20180222 ('') released <<[stable]>> +Subject: GNU Parallel 20180222 ('Henrik') released <<[stable]>> -GNU Parallel 20180222 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ +GNU Parallel 20180222 ('Henrik') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ <> @@ -210,9 +210,19 @@ Quote of the month: New in this release: -* https://mike42.me/blog/tag/fedora +* --embed makes it possible to embed GNU parallel in a shell script. This is useful if you need to distribute your script to someone who does not want to install GNU parallel. -* https://www.datascienceatthecommandline.com/ +* Parallelize Your Large Batches of Small Jobs https://amito.me/2018/02/Parallelize-Your-Large-Batches-of-Small-Jobs/ + +* Klaatu expounds upon xargs and talks GNU parallel in episode 12x6 http://gnuworldorder.info/ + +* How to use parallel to speed up your work https://mike42.me/blog/how-to-use-parallel-to-speed-up-your-work + +* Transient compute clustering with GNU Parallel and sshfs https://dennismungai.wordpress.com/2018/02/06/transient-compute-clustering-with-gnu-parallel-and-sshfs/ + +* Useful Examples of ffmpeg and GNU parallel on the command-line https://dennismungai.wordpress.com/2018/02/06/useful-examples-of-ffmpeg-and-gnu-parallel-on-the-command-line/ + +* Data Science at the Command Line (Chapter 8.3) https://www.datascienceatthecommandline.com/ <> diff --git a/src/Makefile.am b/src/Makefile.am index ea12e765..9b5f7e4e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,4 @@ -bin_SCRIPTS = parallel sql niceload parcat env_parallel \ +bin_SCRIPTS = parallel sql niceload parcat parset env_parallel \ env_parallel.ash env_parallel.bash env_parallel.csh \ env_parallel.dash env_parallel.fish env_parallel.ksh \ env_parallel.pdksh env_parallel.sh env_parallel.tcsh \ diff --git a/src/Makefile.in b/src/Makefile.in index 0a97ec25..ce1c2b84 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -229,7 +229,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -bin_SCRIPTS = parallel sql niceload parcat env_parallel \ +bin_SCRIPTS = parallel sql niceload parcat parset env_parallel \ env_parallel.ash env_parallel.bash env_parallel.csh \ env_parallel.dash env_parallel.fish env_parallel.ksh \ env_parallel.pdksh env_parallel.sh env_parallel.tcsh \ diff --git a/src/env_parallel b/src/env_parallel index b503cfd7..30757924 100755 --- a/src/env_parallel +++ b/src/env_parallel @@ -73,7 +73,7 @@ while test $# -gt 0; do done -cat <<_EOS +cat <<'_EOS' env_parallel only works if it is a function. Do the below and restart your shell. bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` diff --git a/src/niceload b/src/niceload index ce9ed3dd..0fd57261 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20180123; +$Global::version = 20180222; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff --git a/src/parallel b/src/parallel index e9ec1b6e..00fd727d 100755 --- a/src/parallel +++ b/src/parallel @@ -433,7 +433,7 @@ sub cat_partial { sysseek(STDIN,shift,0) || die; $left = shift; while($read = - sysread(STDIN,$buf, $left > 131072 ? 131072 : $left)){ + sysread(STDIN,$buf, $left > 1048524 ? 1048524 : $left)){ $left -= $read; syswrite(STDOUT,$buf); } @@ -962,7 +962,7 @@ sub options_hash { "seqreplace=s" => \$opt::seqreplace, "slotreplace=s" => \$opt::slotreplace, "jobs|j=s" => \$opt::jobs, - "delay=f" => \$opt::delay, + "delay=s" => \$opt::delay, "sshdelay=f" => \$opt::sshdelay, "load=s" => \$opt::load, "noswap" => \$opt::noswap, @@ -1231,6 +1231,7 @@ sub parse_options { # Set --delay to --sshdelay if not set $opt::delay = $opt::sshdelay; } + $opt::delay = multiply_time_units($opt::delay); if($opt::compress_program) { $opt::compress = 1; $opt::decompress_program ||= $opt::compress_program." -dc"; @@ -1416,7 +1417,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20180123; + $Global::version = 20180222; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -4563,6 +4564,27 @@ sub multiply_binary_prefix { return wantarray ? @v : $v[0]; } +sub multiply_time_units { + # Evalualte numbers with time units + # s=1, m=60, h=3600, d=86400 + # Input: + # $s = string time units + # Returns: + # $value = int in seconds + my @v = @_; + for(@v) { + defined $_ or next; + if(/[dhms]/i) { + s/s/*1+/gi; + s/m/*60+/gi; + s/h/*3600+/gi; + s/d/*86400+/gi; + $_ = eval $_."0"; + } + } + return wantarray ? @v : $v[0]; +} + { my ($disk_full_fh, $b8193, $error_printed); sub exit_if_disk_full { @@ -10970,13 +10992,8 @@ sub new { $pct = $1/100; $delta_time = 1_000_000; } - if($delta_time =~ /[dhms]/i) { - $delta_time =~ s/s/*1+/gi; - $delta_time =~ s/m/*60+/gi; - $delta_time =~ s/h/*3600+/gi; - $delta_time =~ s/d/*86400+/gi; - $delta_time = eval $delta_time."0"; - } + $delta_time = ::multiply_time_units($delta_time); + return bless { 'queue' => [], 'delta_time' => $delta_time, diff --git a/src/parallel.pod b/src/parallel.pod index 21e47461..86aac717 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -831,7 +831,7 @@ exit when 3% of the jobs have finished. Kill running jobs. For backwards compability these also work: -=over 7 +=over 12 =item Z<>0 diff --git a/src/parallel_design.pod b/src/parallel_design.pod index ae2c116f..564e3211 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -16,7 +16,7 @@ GNU B is a Perl script in a single file. It is object oriented, but contrary to normal Perl scripts each class is not in its own file. This is due to user experience: The goal is that in a pinch the user will be able to get GNU B working simply by copying -a single file: No need messing around with environment variables like +a single file: No need to mess around with environment variables like PERL5LIB. @@ -27,6 +27,13 @@ goal of being able to run on old installations. Currently the target is CentOS 3.9 and Perl 5.8.0. +=head2 Scalability up and down + +The smallest system GNU B is tested on is a 32 MB ASUS +WL500gP. The largest is a 2 TB 128-core machine. It scales up to +around 100 machines - depending on the duration of each job. + + =head2 Exponentially back off GNU B busy waits. This is because the reason why a job is diff --git a/src/parallel_tutorial.pod b/src/parallel_tutorial.pod index 25de1aff..4dedb5b0 100644 --- a/src/parallel_tutorial.pod +++ b/src/parallel_tutorial.pod @@ -3,8 +3,10 @@ =head1 GNU Parallel Tutorial This tutorial shows off much of GNU B's functionality. The -tutorial is meant to learn the options in GNU B. The tutorial -is not to show realistic examples from the real world. +tutorial is meant to learn the options in and syntax of GNU +B. The tutorial is B to show realistic examples from the +real world. For realistic examples see B in the EXAMPLE +section. Spend an hour walking through the tutorial. Your command line will love you for it. diff --git a/src/parset b/src/parset index 4d1922e0..80b57e1a 100755 --- a/src/parset +++ b/src/parset @@ -1,3 +1,118 @@ -#!/bin/bash +#!/usr/bin/env bash -echo You need to: source `which env_parallel.bash` +# Copyright (C) 2016,2017,2018 +# Ole Tange and Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see +# or write to the Free Software Foundation, Inc., 51 Franklin St, +# Fifth Floor, Boston, MA 02110-1301 USA + +grepq() { + # grep -q for systems without -q + grep >/dev/null 2>/dev/null "$@" +} + +installer() { + source="$1" + script="$2" + into="$3" + if grepq $script $into; then + true already installed + else + echo $source \`which $script\` >> $into + fi +} + +while test $# -gt 0; do + key="$1" + + case $key in + -i|--install) + installer . env_parallel.bash $HOME/.bashrc + installer . env_parallel.sh $HOME/.shrc + installer . env_parallel.zsh $HOME/.zshenv + installer source env_parallel.ksh $HOME/.kshrc + echo $SHELL | grepq /pdksh && + installer . env_parallel.pdksh $HOME/.profile + echo $SHELL | grepq /ash && + installer . env_parallel.ash $HOME/.profile + echo $SHELL | grepq /dash && + installer . env_parallel.dash $HOME/.profile + installer source env_parallel.csh $HOME/.cshrc + installer source env_parallel.tcsh $HOME/.tcshrc + mkdir -p $HOME/.config/fish + grepq env_parallel.fish $HOME/.config/fish/config.fish || + echo '. (which env_parallel.fish)' >> $HOME/.config/fish/config.fish + echo 'Installed env_parallel in:' + echo " " $HOME/.bashrc + echo " " $HOME/.shrc + echo " " $HOME/.zshenv + echo " " $HOME/.config/fish/config.fish + echo " " $HOME/.kshrc + echo " " $HOME/.profile + echo " " $HOME/.cshrc + echo " " $HOME/.tcshrc + exit + ;; + *) + echo "Unknown option: $key" + ;; + esac + shift # past argument or value +done + + +cat <<'_EOS' +parset only works if it is a function. The function is defined as part +of env_parallel. + +Do the below and restart your shell. + +bash: Put this in $HOME/.bashrc: . `which env_parallel.bash` + E.g. by doing: echo '. `which env_parallel.bash`' >> $HOME/.bashrc + Supports: aliases, functions, variables, arrays + +zsh: Put this in $HOME/.zshrc: . `which env_parallel.zsh` + E.g. by doing: echo '. `which env_parallel.zsh`' >> $HOME/.zshenv + Supports: functions, variables, arrays + +fish: Unsupported + +ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh` + E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc + Supports: aliases, functions, variables, arrays + +pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh` + E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile + Supports: aliases, functions, variables, arrays + +ash: Put this in $HOME/.profile: . `which env_parallel.ash` + E.g. by doing: echo '. `which env_parallel.ash`' >> $HOME/.profile + Supports: aliases, variables + +dash: Put this in $HOME/.profile: . `which env_parallel.dash` + E.g. by doing: echo '. `which env_parallel.dash`' >> $HOME/.profile + Supports: aliases, variables + +csh: Unsupported + +tcsh: Unsupported + +To install in all shells run: + + parset --install + +For details: see man parset + +_EOS diff --git a/src/sql b/src/sql index 8752a45f..2c3162db 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20180123; + $Global::version = 20180222; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index af7c4f27..65b7bb2e 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -292,8 +292,11 @@ par_plus_dyn_repl() { par_linebuffer_tag_slow_output() { echo "Test output tag with mixing halflines" - - parallel --delay 0.5 --tag --line-buffer ping -c 4 ::: localhost lo | field 1 + halfline() { + perl -e '$| = 1; map { print $ARGV[0]; sleep(2); print "$_\n" } split //, "Half\n"' $1 + } + export -f halfline + parallel --delay 1 -j0 --tag --line-buffer halfline ::: a b } export -f $(compgen -A function | grep par_) diff --git a/testsuite/tests-to-run/parallel-local-3s.sh b/testsuite/tests-to-run/parallel-local-3s.sh index 329f5f51..f20d792c 100644 --- a/testsuite/tests-to-run/parallel-local-3s.sh +++ b/testsuite/tests-to-run/parallel-local-3s.sh @@ -81,10 +81,10 @@ par_children_receive_sig() { } export -f show_signals echo | stdout parallel --termseq TERM,200,TERM,100,TERM,50,KILL,25 -u \ - --timeout 1 show_signals + --timeout 1s show_signals echo | stdout parallel --termseq INT,200,TERM,100,KILL,25 -u \ - --timeout 1 show_signals + --timeout 1s show_signals sleep 3 } @@ -138,16 +138,16 @@ par_keeporder_roundrobin() { par_multiline_commands() { echo 'bug #50781: joblog format with multiline commands' rm -f /tmp/jl.$$ - seq 1 3 | parallel --jl /tmp/jl.$$ --timeout 2 'sleep {}; echo {}; + seq 1 3 | parallel --jl /tmp/jl.$$ --timeout 2s 'sleep {}; echo {}; echo finish {}' - seq 1 3 | parallel --jl /tmp/jl.$$ --timeout 4 --retry-failed 'sleep {}; echo {}; + seq 1 3 | parallel --jl /tmp/jl.$$ --timeout 4s --retry-failed 'sleep {}; echo {}; echo finish {}' rm -f /tmp/jl.$$ } par_dryrun_timeout_ungroup() { - echo 'bug #51039: --dry-run --timeout 3600 -u breaks' - seq 1000 | stdout parallel --dry-run --timeout 100 -u --jobs 10 echo | wc + echo 'bug #51039: --dry-run --timeout 1.4m -u breaks' + seq 1000 | stdout parallel --dry-run --timeout 1.4m -u --jobs 10 echo | wc } par_sqlworker_hostname() { @@ -213,8 +213,36 @@ par_nice() { # parallel-20160422 OK parallel --timeout 3 --nice 18 bzip2 '<' ::: /dev/zero /dev/zero & sleep 1 + # Should find 2 lines ps -eo "%c %n" | grep 18 | grep bzip2 } +par_delay_human_readable() { + # Test that you can use d h m s in --delay + parallel --delay 0.1s echo ::: a b c + parallel --delay 0.01m echo ::: a b c +} + +par_exitval_signal() { + echo '### Test --joblog with exitval and Test --joblog with signal -- timing dependent' + rm -f /tmp/parallel_sleep + cp /bin/sleep mysleep + chmod +x mysleep + parallel --joblog /tmp/parallel_joblog_signal \ + './mysleep {}' ::: 30 2>/dev/null & + parallel --joblog /tmp/parallel_joblog_exitval \ + 'echo foo >/tmp/parallel_sleep; ./mysleep {} && echo sleep was not killed=BAD' ::: 30 2>/dev/null & + while [ ! -e /tmp/parallel_sleep ] ; do + sleep 1 + done + sleep 1 + killall -6 mysleep + wait + grep -q 134 /tmp/parallel_joblog_exitval && echo exitval=128+6 OK + grep -q '[^0-9]6[^0-9]' /tmp/parallel_joblog_signal && echo signal OK + + rm -f /tmp/parallel_joblog_exitval /tmp/parallel_joblog_signal +} + export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local150.sh b/testsuite/tests-to-run/parallel-local150.sh index 185adff5..c0bcadda 100644 --- a/testsuite/tests-to-run/parallel-local150.sh +++ b/testsuite/tests-to-run/parallel-local150.sh @@ -68,7 +68,7 @@ echo '### Test make .deb package'; stdout make | grep 'To install the GNU Parallel Debian package, run:' echo '### Test of segfaulting issue' - echo 'This gave /home/tange/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; + echo 'This gave ~/bin/stdout: line 3: 20374 Segmentation fault "$@" 2>&1'; echo 'before adding wait() before exit'; seq 1 300 | stdout parallel ./trysegfault diff --git a/testsuite/tests-to-run/parallel-local6.sh b/testsuite/tests-to-run/parallel-local6.sh index 1b79ca3f..05a7907c 100755 --- a/testsuite/tests-to-run/parallel-local6.sh +++ b/testsuite/tests-to-run/parallel-local6.sh @@ -1,17 +1,2 @@ #!/bin/bash -echo '### Test --joblog with exitval and Test --joblog with signal -- timing dependent' -rm -f /tmp/parallel_sleep -parallel --joblog /tmp/parallel_joblog_signal 'sleep {}' ::: 30 2>/dev/null & -parallel --joblog /tmp/parallel_joblog_exitval 'echo foo >/tmp/parallel_sleep; sleep {} && echo sleep was not killed=BAD' ::: 30 2>/dev/null & -while [ ! -e /tmp/parallel_sleep ] ; do - sleep 1 -done -sleep 1 -killall -6 sleep -wait -grep -q 134 /tmp/parallel_joblog_exitval && echo exitval=128+6 OK -grep -q '[^0-9]6[^0-9]' /tmp/parallel_joblog_signal && echo signal OK - -rm -f /tmp/parallel_joblog_exitval /tmp/parallel_joblog_signal - diff --git a/testsuite/wanted-results/parallel-install b/testsuite/wanted-results/parallel-install index f6792a84..0ebbdb3d 100644 --- a/testsuite/wanted-results/parallel-install +++ b/testsuite/wanted-results/parallel-install @@ -255,7 +255,7 @@ pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \ Warning: pod2pdf not found. Using old parset.pdf make[0]: Entering directory '/tmp/parallel-00000000/src' /bin/mkdir -p '/usr/local/bin' - /usr/bin/install -c parallel sql niceload parcat env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/usr/local/bin' + /usr/bin/install -c parallel sql niceload parcat parset env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/usr/local/bin' make install-exec-hook make[0]: Entering directory '/tmp/parallel-00000000/src' rm /usr/local/bin/sem || true diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index c2e0a643..f794fcd4 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -552,7 +552,7 @@ e echo '### test too long args' ### test too long args perl -e 'print "z"x1000000' | parallel echo 2>&1 -parallel: Error: Command line too long (1000005 >= 131049) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... +parallel: Error: Command line too long (1000005 >= 131057) at input 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... perl -e 'print "z"x1000000' | xargs echo 2>&1 xargs: argument line too long (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdsort parallel -j1 -km -s 10 echo @@ -819,7 +819,7 @@ echo far ### Test --show-limits (echo b; echo c; echo f) | parallel -k --show-limits echo {}ar Maximal size of command: 131049 -Maximal used size of command: 131049 +Maximal used size of command: 131057 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please diff --git a/testsuite/wanted-results/parallel-local-100s b/testsuite/wanted-results/parallel-local-100s index a61f44a5..09f983f7 100644 --- a/testsuite/wanted-results/parallel-local-100s +++ b/testsuite/wanted-results/parallel-local-100s @@ -45,12 +45,12 @@ par_exit_code dash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code fish /tmp/mysleep 100 137 par_exit_code fish parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code fish parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 -par_exit_code fish parallel --halt-on-error now,done=1 true ::: 100 1 +par_exit_code fish parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code fish parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code fish true;/tmp/mysleep 100 137 par_exit_code fish parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code fish parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 -par_exit_code fish parallel --halt-on-error now,done=1 "true;true" ::: 100 1 +par_exit_code fish parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code fish parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code mksh /tmp/mysleep 100 0 par_exit_code mksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 1f0072de..c7d889ef 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -7,7 +7,7 @@ par__pipe_tee bug #45479: --pipe/--pipepart --tee par__pipe_tee --pipe --tee par__pipe_tee 3221225472 par__pipepart_spawn ### bug #46214: Using --pipepart doesnt spawn multiple jobs in version 20150922 -par__pipepart_spawn 1:local / 2 / 999 +par__pipepart_spawn 1:local / 8 / 999 par__pipepart_tee bug #45479: --pipe/--pipepart --tee par__pipepart_tee --pipepart --tee par__pipepart_tee 3221225472 @@ -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 8 jobs in parallel. -par_k parallel: Warning: Running 'parallel -j0 -N 8 --pipe parallel -j0' or +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: 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 @@ -240,26 +240,20 @@ par_line_buffer ### --line-buffer par_line_buffer 55 55 120 par_line_buffer These must diff: 1 par_linebuffer_tag_slow_output Test output tag with mixing halflines -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output localhost -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output lo -par_linebuffer_tag_slow_output lo +par_linebuffer_tag_slow_output a aH +par_linebuffer_tag_slow_output b bH +par_linebuffer_tag_slow_output a aa +par_linebuffer_tag_slow_output b ba +par_linebuffer_tag_slow_output a al +par_linebuffer_tag_slow_output b bl +par_linebuffer_tag_slow_output a af +par_linebuffer_tag_slow_output b bf +par_linebuffer_tag_slow_output a a +par_linebuffer_tag_slow_output a +par_linebuffer_tag_slow_output b b +par_linebuffer_tag_slow_output b par_maxlinelen_X_I ### Test max line length -X -I -par_maxlinelen_X_I 3cfc69ee81b0fe7fdbe8eb059ad2da61 - +par_maxlinelen_X_I 201ecb8ca789cecf39ee914a6d75611b - par_maxlinelen_X_I Chars per line (817788/7): 116826 par_maxlinelen_m_I ### Test max line length -m -I par_maxlinelen_m_I c78bd0799bc23d8946732f8b3ae3c94e - @@ -337,10 +331,10 @@ par_results_compress 0 par_results_compress 1 par_results_csv bug #: --results csv par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --tag --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --header : --tag --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -365,10 +359,10 @@ par_results_csv --header : --tag ", par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --header : --tag ", par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr -par_results_csv --header : --files --compress 1,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --header : --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --header : --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr par_results_csv --header : --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, @@ -393,15 +387,15 @@ par_results_csv --header : ", par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 par_results_csv --header : ", par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --tag --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", -par_results_csv --tag --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile", +par_results_csv --tag --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --tag --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile", par_results_csv --tag --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile", @@ -451,15 +445,15 @@ par_results_csv --tag ", par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12 par_results_csv --tag ", par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr -par_results_csv --files --compress 1,:,999.999,999.999,0,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, -par_results_csv --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile, +par_results_csv --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr par_results_csv --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile, par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile, diff --git a/testsuite/wanted-results/parallel-local-1s b/testsuite/wanted-results/parallel-local-1s index 9b7f3a36..05157c08 100644 --- a/testsuite/wanted-results/parallel-local-1s +++ b/testsuite/wanted-results/parallel-local-1s @@ -263,10 +263,10 @@ par_linebuffer_files lrz --results par_linebuffer_files lrz 1 par_max_length_len_128k ### BUG: The length for -X is not close to max (131072) par_max_length_len_128k 1 12817 131016 -par_max_length_len_128k 1 10946 131032 -par_max_length_len_128k 1 23691 131040 -par_max_length_len_128k 1 15806 131030 -par_max_length_len_128k 1 11788 131032 +par_max_length_len_128k 1 10947 131046 +par_max_length_len_128k 1 23693 131052 +par_max_length_len_128k 1 15808 131047 +par_max_length_len_128k 1 11789 131045 par_max_length_len_128k 1 25543 131043 par_no_newline_compress bug #41613: --compress --line-buffer - no newline par_no_newline_compress tagstring=--tagstring {#} compress=--compress diff --git a/testsuite/wanted-results/parallel-local-3s b/testsuite/wanted-results/parallel-local-3s index 818aa3a8..2ddc31ba 100644 --- a/testsuite/wanted-results/parallel-local-3s +++ b/testsuite/wanted-results/parallel-local-3s @@ -27,8 +27,17 @@ par_commandline_with_newline . : ... ... . . . . false "commandwithwithnewlines" d par_commandline_with_newline . : ... ... . . . . false "commandwithnewlines" e par_commandline_with_newline Seq Host Starttime JobRuntime Send Receive Exitval Signal Command -par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 3600 -u breaks +par_delay_human_readable a +par_delay_human_readable b +par_delay_human_readable c +par_delay_human_readable a +par_delay_human_readable b +par_delay_human_readable c +par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 1.4m -u breaks par_dryrun_timeout_ungroup 1000 2000 8893 +par_exitval_signal ### Test --joblog with exitval and Test --joblog with signal -- timing dependent +par_exitval_signal exitval=128+6 OK +par_exitval_signal signal OK par_keeporder_roundrobin bug #50081: --keep-order --round-robin should give predictable results par_keeporder_roundrobin OK par_kill_int_twice ### Are children killed if GNU Parallel receives INT twice? There should be no sleep at the end diff --git a/testsuite/wanted-results/parallel-local-ssh5 b/testsuite/wanted-results/parallel-local-ssh5 index d03906c6..1b3847f4 100644 --- a/testsuite/wanted-results/parallel-local-ssh5 +++ b/testsuite/wanted-results/parallel-local-ssh5 @@ -54,7 +54,7 @@ par_autossh AUTOSSH_DEBUG - turn logging to maximum verbosity and log par_autossh stderr par_autossh par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [sender] -par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.2] +par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] par_autossh /usr/lib/autossh/autossh: invalid option -- '-' par_autossh usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS] par_autossh @@ -86,4 +86,4 @@ par_autossh AUTOSSH_DEBUG - turn logging to maximum verbosity and log par_autossh stderr par_autossh par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] -par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.2] +par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1] diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 323034e8..e262a402 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -313,7 +313,7 @@ par_tcsh_funky par_tcsh_funky 3 arg alias_works par_tcsh_funky 3 arg alias_works_over_ssh par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky alias_var_works -par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh +par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky alias_var_works_over_ssh par_tcsh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ par_tcsh_funky func_echo: Command not found. par_tcsh_funky func_echo: Command not found. @@ -1176,11 +1176,13 @@ par_bash_man exit value 2 should be 2 par_bash_man Unknown option: no-such-option par_bash_man exit value 255 should be 255 par_bash_funky +par_bash_funky +par_bash_funky par_bash_funky \\\\\\\\ par_bash_funky  par_bash_funky  -par_bash_funky -funkymultiline -par_bash_funky -funkymultiline +par_bash_funky +par_bash_funky par_bash_funky space 6 par_bash_funky space 6 par_bash_funky 3 arg alias_works @@ -1197,6 +1199,8 @@ par_bash_funky function_works par_bash_funky function_works_over_ssh par_bash_funky myvar works par_bash_funky myvar works +par_bash_funky -funkymultiline +par_bash_funky -funkymultiline par_bash_environment_too_big bug #50815: env_parallel should warn if the environment is too big par_bash_environment_too_big OK_bigvar par_bash_environment_too_big OK_bigvar_remote diff --git a/testsuite/wanted-results/parallel-local-ssh9 b/testsuite/wanted-results/parallel-local-ssh9 index a28d30fe..2cacf5d1 100644 --- a/testsuite/wanted-results/parallel-local-ssh9 +++ b/testsuite/wanted-results/parallel-local-ssh9 @@ -6,6 +6,7 @@ par_zsh_embed your par_zsh_embed code par_zsh_embed here par_zsh_embed parallel_OK +par_zsh_embed /home/zsh/.zshenv:.:3: no such file or directory: env_parallel.zsh par_zsh_embed _which:12: argument list too long: perl par_zsh_embed env_parallel: Error: Your environment is too big. par_zsh_embed env_parallel: Error: Try running this in a clean environment once: diff --git a/testsuite/wanted-results/parallel-local12 b/testsuite/wanted-results/parallel-local12 index 28d7894b..8217f5ff 100644 --- a/testsuite/wanted-results/parallel-local12 +++ b/testsuite/wanted-results/parallel-local12 @@ -33,7 +33,7 @@ If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice: run 'parallel --citation' once. 10 files to edit -[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on. +[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?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-local18 b/testsuite/wanted-results/parallel-local18 index d26bdeb1..e7dc95bf 100644 --- a/testsuite/wanted-results/parallel-local18 +++ b/testsuite/wanted-results/parallel-local18 @@ -7,8 +7,6 @@ par_env_newline_backslash_bash 8 par_env_newline_backslash_csh ### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails par_env_newline_backslash_csh 2 2\ \92V2=\ \92 par_env_newline_backslash_csh 2 2\\ \92V2=\\ \92 -par_env_newline_backslash_csh 2 Unmatched ". -par_env_newline_backslash_csh 2 Unmatched '"'. par_env_newline_backslash_onall_bash ### Test --env for \n and \\ - single and double --onall (bash only) - no output is good par_env_newline_backslash_onall_bash 16 par_env_newline_backslash_onall_bash 16 @@ -17,6 +15,7 @@ par_env_newline_backslash_onall_bash 8 10 par_env_newline_backslash_onall_bash 8 10V2= par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92 par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails +par_env_newline_backslash_onall_csh 8 Unmatched ". par_space ### Test --env - https://savannah.gnu.org/bugs/?37351 par_space a 2 spaces b 1 par_space a 2 spaces b 1 diff --git a/testsuite/wanted-results/parallel-local19 b/testsuite/wanted-results/parallel-local19 index 9afc2fdd..44b5d465 100644 --- a/testsuite/wanted-results/parallel-local19 +++ b/testsuite/wanted-results/parallel-local19 @@ -107,7 +107,7 @@ a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6 a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6 echo '### Test -m with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -km echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1 ### Test -m with 60000 args -f5e1ea298b25c5516d63061df5c56f79 - +d025d2d552a9ff809216d17d408de0b4 - 10 179980 1286692 echo '### Test -X with 60000 args'; seq 1 60000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1 ### Test -X with 60000 args diff --git a/testsuite/wanted-results/parallel-local22 b/testsuite/wanted-results/parallel-local22 index 052b4ffb..8fa31f17 100644 --- a/testsuite/wanted-results/parallel-local22 +++ b/testsuite/wanted-results/parallel-local22 @@ -5,12 +5,12 @@ Chars per line: 116300 6 119994 697800 echo '### Test of xargs -X command lines > 130k'; seq 1 60000 | parallel -X -j1 echo a{}b{}c | tee >(wc >/tmp/bwc$$) >(sort | (sleep 1; md5sum)) >/tmp/b$$; wait; CHAR=$(cat /tmp/b$$ | wc -c); LINES=$(cat /tmp/b$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/bwc$$; rm /tmp/b$$ /tmp/bwc$$ ### Test of xargs -X command lines > 130k -3cfc69ee81b0fe7fdbe8eb059ad2da61 - +201ecb8ca789cecf39ee914a6d75611b - Chars per line: 116826 7 60000 817788 echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -k -j1 -m echo | md5sum ### Test of xargs -m command lines > 130k -00b8aed2c1bc28368381273aa2ae104e - +590091fd85dcb98f91c5e89cdddf21ef - echo '### This causes problems if we kill child processes'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. ### This causes problems if we kill child processes seq 2 40 | parallel -j 0 seq 1 10 2>/dev/null | sort | md5sum @@ -75,11 +75,11 @@ parallel: Error: --pipepart is incompatible with --max-replace-args, --max-lines echo '### bug #42893: --block should not cause decimals in cat_partial' ### bug #42893: --block should not cause decimals in cat_partial seq 100000 >/tmp/parallel-decimal; parallel --dry-run -kvv --pipepart --block 0.12345M -a /tmp/parallel-decimal true; rm /tmp/parallel-decimal -131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 129450 | (true) -131072?131072:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 129450 129450 | (true) -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) +1048524?1048524:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 0 129450 | (true) +1048524?1048524:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 129450 129450 | (true) +1048524?1048524:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 258900 129450 | (true) +1048524?1048524:$left)){$left-=$read;syswrite(STDOUT,$buf);}}' 0 0 388350 129450 | (true) +1048524?1048524:$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 diff --git a/testsuite/wanted-results/parallel-local23 b/testsuite/wanted-results/parallel-local23 index fef7356f..9ab31700 100644 --- a/testsuite/wanted-results/parallel-local23 +++ b/testsuite/wanted-results/parallel-local23 @@ -74,8 +74,8 @@ please cite as described in 'parallel --citation'. echo '### bug #39787: --xargs broken' ### bug #39787: --xargs broken nice perl -e 'for(1..30000){print "$_\n"}' | $NICEPAR --xargs -k echo | perl -ne 'print length $_,"\n"' -131040 -37854 +131052 +37842 echo '### --delay should grow by 3 sec per arg' ### --delay should grow by 3 sec per arg stdout /usr/bin/time -f %e parallel --delay 3 true ::: 1 2 | perl -ne '$_ >= 3 and $_ <= 8 and print "OK\n"' diff --git a/testsuite/wanted-results/parallel-local6 b/testsuite/wanted-results/parallel-local6 index 76d44067..e69de29b 100644 --- a/testsuite/wanted-results/parallel-local6 +++ b/testsuite/wanted-results/parallel-local6 @@ -1,3 +0,0 @@ -### Test --joblog with exitval and Test --joblog with signal -- timing dependent -exitval=128+6 OK -signal OK diff --git a/testsuite/wanted-results/parallel-local9 b/testsuite/wanted-results/parallel-local9 index 2eaa3c4a..0ca69816 100644 --- a/testsuite/wanted-results/parallel-local9 +++ b/testsuite/wanted-results/parallel-local9 @@ -63,7 +63,7 @@ echo '### Test --number-of-cpus'; stdout $NICEPAR --number-of-cpus 1 echo '### Test --number-of-cores'; stdout $NICEPAR --number-of-cores ### Test --number-of-cores -2 +8 echo '### Test --use-cpus-instead-of-cores'; (seq 1 8 | stdout parallel --use-cpus-instead-of-cores -j100% sleep) && echo CPUs done & (seq 1 8 | stdout parallel -j100% sleep) && echo cores done & echo 'Cores should complete first on machines with less than 8 physical CPUs'; wait ### Test --use-cpus-instead-of-cores Cores should complete first on machines with less than 8 physical CPUs @@ -400,7 +400,7 @@ echo "### BUG: empty lines with --show-limit" ### BUG: empty lines with --show-limit echo | $NICEPAR --show-limits Maximal size of command: 131049 -Maximal used size of command: 131049 +Maximal used size of command: 131057 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please