From 3916f78fb223809674cdaba15ca6de1005db530b Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Wed, 21 Aug 2024 22:37:15 +0200 Subject: [PATCH] parallel: Most basic --fast implemented. --- NEWS | 14 +++ doc/haikus | 6 +- doc/release_new_version | 23 ++-- src/env_parallel.ash | 2 +- src/env_parallel.bash | 2 +- src/env_parallel.dash | 2 +- src/env_parallel.ksh | 2 +- src/env_parallel.mksh | 2 +- src/env_parallel.sh | 2 +- src/env_parallel.zsh | 2 +- src/niceload | 2 +- src/parallel | 102 +++++++++++++++++- src/parallel.pod | 53 ++++++--- src/parallel_alternatives.pod | 4 +- src/parsort | 2 +- src/pod2rst-fix | 3 +- src/sql | 2 +- testsuite/Makefile | 2 +- testsuite/REQUIREMENTS | 2 +- testsuite/wanted-results/parallel-local-0.3s | 8 +- testsuite/wanted-results/parallel-local-sql01 | 2 +- testsuite/wanted-results/parallel-tutorial | 5 + testsuite/wanted-results/test21 | 8 +- testsuite/wanted-results/test60 | 10 +- 24 files changed, 193 insertions(+), 69 deletions(-) diff --git a/NEWS b/NEWS index 99ffd8c0..f856903e 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,20 @@ New in this release: +* --fast disables a lot of functionality to speed up running jobs. + +* Bug fixes and man page updates. + +News about GNU Parallel: + +* Job requiring GNU Parallel knowledge + https://www.capgemini.com/ca-en/jobs/Id6D4pEBZ6aB2WPS2aAJ/systems-engineer/ + + +20240822 + +New in this release: + * --match Match input source with regexp to set replacement fields. * {:%fmt} Use printf formatting of replacement strings. diff --git a/doc/haikus b/doc/haikus index ff5b8a0e..1cf06b08 100644 --- a/doc/haikus +++ b/doc/haikus @@ -4,9 +4,6 @@ Quote of the month: - Recently executed a flawless live data migration of ~2.4pb using GNU parallel for scale and bash scripts. - -- @mechanicker@twitter Dhruva - by extreme do you mean extremely slow? you could do it at least 100x faster using awk + grep + gnu parallel -- @ObssessedDev@twitter @@ -227,6 +224,9 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html === Used === + Recently executed a flawless live data migration of ~2.4pb using GNU parallel for scale and bash scripts. + -- @mechanicker@twitter Dhruva + honestly the coolest software i've ever seen gotta be gnu parallel or ffmpeg, nothing like them -- @scootykins scoot diff --git a/doc/release_new_version b/doc/release_new_version index 3bf78946..49b2c0a6 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -268,34 +268,25 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20240822 ('Southport') released +Subject: GNU Parallel 20240922 ('Gold Apollo AR924') released -GNU Parallel 20240822 ('Southport') has been released. It is available for download at: lbry://@GnuParallel:4 +GNU Parallel 20240922 ('Gold Apollo AR924') has been released. It is available for download at: lbry://@GnuParallel:4 Quote of the month: - honestly the coolest software i've ever seen gotta be gnu parallel or - ffmpeg, nothing like them - -- @scootykins scoot + Recently executed a flawless live data migration of ~2.4pb using GNU parallel for scale and bash scripts. + -- @mechanicker@twitter Dhruva New in this release: -* --match Match input source with regexp to set replacement fields. - -* {:%fmt} Use printf formatting of replacement strings. +* --fast disables a lot of functionality to speed up running jobs. * Bug fixes and man page updates. - News about GNU Parallel: -* Powerful GNU parallel, more than a loop https://www.linkedin.com/pulse/powerful-gnu-parallel-more-than-loop-zhenguo-zhang-18dxc - -* How To Increase File Transfer Speed Using Parallel Rsync? https://contentbase.com/blog/increase-file-transfer-speed-parallel-rsync/ - -* Converting WebP Images to PNG Using parallel and dwebp https://bytefreaks.net/2024/07/27 - -* Turbocharging the Box CLI with GNU Parallel https://medium.com/box-developer-blog/turbocharging-the-box-cli-with-gnu-parallel-ee44c48811c0 +* Job requiring GNU Parallel knowledge + https://www.capgemini.com/ca-en/jobs/Id6D4pEBZ6aB2WPS2aAJ/systems-engineer/ GNU Parallel - For people who live life in the parallel lane. diff --git a/src/env_parallel.ash b/src/env_parallel.ash index a057da1c..49adc19e 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.bash b/src/env_parallel.bash index a41e08da..75ce2671 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -605,7 +605,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.dash b/src/env_parallel.dash index 699d923e..c81c6577 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.ksh b/src/env_parallel.ksh index 9b335cd1..081b4998 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.mksh b/src/env_parallel.mksh index 8f9300ea..ccaf5206 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -570,7 +570,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.sh b/src/env_parallel.sh index 04a9c148..31fe4cb3 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.zsh b/src/env_parallel.zsh index 4cda7a00..9ba7180d 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240822 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240823 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/niceload b/src/niceload index 24ba9761..23919b87 100755 --- a/src/niceload +++ b/src/niceload @@ -26,7 +26,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20240822; +$Global::version = 20240823; 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 0873f252..71910c42 100755 --- a/src/parallel +++ b/src/parallel @@ -156,6 +156,91 @@ sub halt() { } +sub __FAST_MODE__() {} + + +sub fast() { + my $jobslots = $Global::host{':'}->user_requested_processes($opt::jobs); + my $i; + my $jobs_per_chunk; + my $buffer_len = 100; + my $splitstring = ("\n#\0\n"); + # n = jobslots + # Read 100 jobs + # Split into n chunks + # Read 3*100 jobs + # Split into n chunks + # Read 3*3*100 jobs (up to at most 300K jobs) + # Split into n chunks + # Receiver: parallel --block 1k --pipe -N1 --recend '\n#\0\n' dash + # TODO --group? --halt? --tag? $PARALLEL_JOBSLOT + # _PARALLEL_TAG="foo" + # | tagger + # _PARALLEL_EXIT + # maybe_exit + my $executer_fh; + if($opt::D eq "fast") { + open($executer_fh, "|-", "cat") || die; + } else { + open($executer_fh, "|-", "parallel --plain -j $jobslots --block 1k --pipe -N1 --recend '\\n#\\0\\n' $Global::shell") || die; + } + # Do some testing of a stuck job - dns = 5 sec + my $block_start = q{ + error() { + _exit=$((_exit+1)) + # --halt-on-error stuff + if [ $_exit -gt 40 ]; then + echo "ERROR: More than 40" + exit 1 + fi + } + + _tagger() { + { + rm -f "$1" + # This will fail for either /1 or /2 + rmdir "$2" 2>/dev/null + # TODO use awk (see fasttag) + perl -pe 's{^}{$ENV{PARALLEL_TAGSTRING}}' + } < "$1" + } + + _taggerwrap() { + _dir=`mktemp -d` + mkfifo "$_dir"/1 "$_dir"/2 + _tagger "$_dir"/1 "$_dir" >&1 & + _tagger "$_dir"/2 "$_dir" >&2 & + # ( ... ) is needed to deal correctly with 'exit 1' + ( eval $@ ; ) >"$_dir"/1 2>"$_dir"/2 || error + wait + } + PARALLEL_TAGSTRING=dummy + export PARALLEL_TAGSTRING + }; + my $block_end = "\n# Define get exit value\necho EXIT=\$_exit\n".$splitstring."\n"; + do { + $i = 0; + my @jobbuffer; + while(my $job = $Global::JobQueue->get()) { + push (@jobbuffer, "PARALLEL_TAGSTRING=".Q($job->tag()). + "\n_taggerwrap ". Q($job->replaced())); + ($i++ < $buffer_len) or last; + } + my $jobs_per_chunk = 1 + ($i / $jobslots); + my $j = 0; + print $executer_fh $block_start; + for(@jobbuffer) { + print $executer_fh $_,"\n"; + (++$j % $jobs_per_chunk) or print $executer_fh $block_end,$block_start; + } + print $executer_fh $block_end; + if($buffer_len < 100000) { $buffer_len *= 3; } + } while ($i); + close $executer_fh; + exit(0); +} + + sub __PIPE_MODE__() {} @@ -2084,7 +2169,7 @@ sub options_completion_hash() { "first line of a script. The content of the file will be treated ". "as inputsource]" => \$opt::shebang), - ("_pipe-means-argfiles[internal]" + ("_pipe-means-argfiles[Internal: Called by --shebang-wrap]" => \$opt::_pipe_means_argfiles), "Y" => \$opt::retired, ("skip-first-line|skipfirstline". @@ -2141,7 +2226,8 @@ sub options_completion_hash() { "[Embed GNU parallel in a shell script]" => \$opt::combineexec, ("filter=s[Only run jobs where filter is true]:filter" => \@opt::filter), - "_parset=s[Generate shell code for parset]" => \$opt::_parset, + "fast[Run commands fast]" => \$opt::fast, + "_parset=s[Internal: Generate shell code for parset]" => \$opt::_parset, ("shell-completion|shellcompletion=s". "[Generate shell code for shell completion]:shell:(bash zsh)" => \$opt::shellcompletion), @@ -2248,8 +2334,12 @@ sub parse_options(@) { # ## Shell # - $Global::shell = $ENV{'PARALLEL_SHELL'} || parent_shell($$) - || $ENV{'SHELL'} || "/bin/sh"; + if($opt::fast) { + $Global::shell = $ENV{'PARALLEL_SHELL'} || which("dash") || "/bin/sh"; + } else { + $Global::shell = $ENV{'PARALLEL_SHELL'} || parent_shell($$) + || $ENV{'SHELL'} || "/bin/sh"; + } if(not -x $Global::shell and not which($Global::shell)) { ::error("Shell '$Global::shell' not found."); wait_and_exit(255); @@ -2798,7 +2888,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20240822; + $Global::version = 20240823; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -15700,6 +15790,8 @@ sub main() { # Fill all jobslots while(start_more_jobs()) {} spreadstdin(); + } elsif($opt::fast) { + fast(); } else { # Reap the finished jobs and start more while(reapers() + start_more_jobs()) {} diff --git a/src/parallel.pod b/src/parallel.pod index ee6965a2..d9cf18aa 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -134,7 +134,7 @@ B: Use B. B: Use B. -=item B<{}> (alpha testing) +=item B<{}> (beta testing) Input line. @@ -155,7 +155,7 @@ See also: B<--plus> B<{.}> B<{/}> B<{//}> B<{/.}> B<{#}> B<{%}> B<{>IB<}> B<{=>IB<=}> -=item B<{.}> (alpha testing) +=item B<{.}> (beta testing) Input line without extension. @@ -173,7 +173,7 @@ The replacement string B<{.}> can be changed with B<--extensionreplace> See also: B<{}> B<--extensionreplace> -=item B<{/}> (alpha testing) +=item B<{/}> (beta testing) Basename of input line. @@ -183,7 +183,7 @@ directory part removed. See also: B<{}> B<--basenamereplace> -=item B<{//}> (alpha testing) +=item B<{//}> (beta testing) Dirname of input line. @@ -193,7 +193,7 @@ line. See B(1). See also: B<{}> B<--dirnamereplace> -=item B<{/.}> (alpha testing) +=item B<{/.}> (beta testing) Basename of input line without extension. @@ -204,7 +204,7 @@ B<{/}> and B<{.}>. See also: B<{}> B<--basenameextensionreplace> -=item B<{#}> (alpha testing) +=item B<{#}> (beta testing) Sequence number of the job to run. @@ -214,7 +214,7 @@ job being run. It contains the same number as $PARALLEL_SEQ. See also: B<{}> B<--seqreplace> -=item B<{%}> (alpha testing) +=item B<{%}> (beta testing) Job slot number. @@ -249,7 +249,7 @@ Notice how {%} and $PARALLEL_JOBSLOT differ in the retry run of C and D. See also: B<{}> B<--jobs> B<--slotreplace> -=item B<{>IB<}> (alpha testing) +=item B<{>IB<}> (beta testing) Argument from input source I or the I'th argument. @@ -263,7 +263,7 @@ See also: B<{}> B<{>I.B<}> B<{>I/B<}> B<{>I//B<}> B<{>I/.B<}> B<--colsep> -=item B<{>I.B<}> (alpha testing) +=item B<{>I.B<}> (beta testing) Argument from input source I or the I'th argument without extension. @@ -278,7 +278,7 @@ extension removed. See also: B<{>IB<}> B<{.}> -=item B<{>I/B<}> (alpha testing) +=item B<{>I/B<}> (beta testing) Basename of argument from input source I or the I'th argument. @@ -292,7 +292,7 @@ directory (if any) removed. See also: B<{>IB<}> B<{/}> -=item B<{>I//B<}> (alpha testing) +=item B<{>I//B<}> (beta testing) Dirname of argument from input source I or the I'th argument. @@ -305,7 +305,7 @@ the I'th argument (when used with B<-N>). See B(1). See also: B<{>IB<}> B<{//}> -=item B<{>I/.B<}> (alpha testing) +=item B<{>I/.B<}> (beta testing) Basename of argument from input source I or the I'th argument without extension. @@ -321,7 +321,7 @@ directory (if any) and extension removed. See also: B<{>IB<}> B<{/.}> -=item B<{=>IB<=}> (alpha testing) +=item B<{=>IB<=}> (beta testing) Replace with calculated I. @@ -438,7 +438,7 @@ See also: B<--rpl> B<--parens> B<{}> B<{=>I IB<=}> B<--filter> -=item B<{=>I IB<=}> (alpha testing) +=item B<{=>I IB<=}> (beta testing) Positional equivalent to B<{=>IB<=}>. @@ -447,7 +447,7 @@ To understand positional replacement strings see B<{>IB<}>. See also: B<{=>IB<=}> B<{>IB<}> -=item B<{>I:IB<}> (alpha testing) +=item B<{>I:IB<}> (beta testing) Format replacement string. @@ -1104,6 +1104,27 @@ Implies B<--progress>. See also: B<--bar> B<--progress> B<--total-jobs> +=item B<--fast> (alpha testing) + +Run jobs fast. + +This disables a lot of functionality of GNU B to make jobs +run as fast as possible: Think of it as the nitro racing car compared +to the Volvo. + +Useful for benchmarking and if you have 1000's of tiny jobs. + +Compare: + + time parallel echo ::: {1..10} ::: {1..10} ::: {1..10} + time parallel --fast echo ::: {1..10} ::: {1..10} ::: {1..10} + time parallel --fast echo ::: {1..100} ::: {1..100} ::: {1..100} + +Supported options: B<--group> B<--keep-order> + +If you need more options: File a bug. + + =item B<--fg> Run command in foreground. @@ -1796,7 +1817,7 @@ If in doubt use B<-X> as that will most likely do what is needed. See also: B<-X> B<--xargs> -=item B<--match> I (alpha testing) +=item B<--match> I (beta testing) Match input source with regexp to set replacement fields. diff --git a/src/parallel_alternatives.pod b/src/parallel_alternatives.pod index fc567313..81cbbc9b 100644 --- a/src/parallel_alternatives.pod +++ b/src/parallel_alternatives.pod @@ -1555,11 +1555,11 @@ B is fast: 0.1 ms/job. Similar to B. =head3 EXAMPLES FROM parallelion - 1$ parallelion -progress 'echo {}' {1..1000} + 1$ parallelion --progress 'echo {}' {1..1000} 1$ parallel --bar echo {} ::: {1..1000} - 2$ parallelion -progress 'echo {}' $(seq 1 999) + 2$ parallelion --progress 'echo {}' $(seq 1 999) 2$ seq 1 999 | parallel --bar echo diff --git a/src/parsort b/src/parsort index 9205d574..58d1ffa8 100755 --- a/src/parsort +++ b/src/parsort @@ -137,7 +137,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20240822; +$Global::version = 20240823; if($opt::version) { version(); exit 0; } # Remove -D and --parallel=N my @s = (grep { ! /^-D$|^--parallel=\S+$/ } diff --git a/src/pod2rst-fix b/src/pod2rst-fix index e44574d3..b93033d8 100755 --- a/src/pod2rst-fix +++ b/src/pod2rst-fix @@ -97,7 +97,8 @@ sub pre3 { # If =for not already there, insert: # =for pod2rst next-code-block: bash $all = ; - @codepar = split/(?<=\n .{0,25}\S.{0,200}\n{2,10})(?=[0-9a-zA-Z=])/, $all; + # Split after code block (where indented lines => no indent) + @codepar = split/(?<=\n .{0,25}\S.{0,200}\n{2,10})(?=^[0-9a-zA-Z=])/m, $all; for(@codepar) { /=for pod2rst next-code-block:/ and next; s/((\n +\S))/\n=for pod2rst next-code-block: bash\n$1/; diff --git a/src/sql b/src/sql index ce32b4e8..d9824784 100755 --- a/src/sql +++ b/src/sql @@ -670,7 +670,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20240822; + $Global::version = 20240823; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/Makefile b/testsuite/Makefile index fe32cffa..7ab86c61 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -123,7 +123,7 @@ stop=(stdout ping -w 1 -c 1 {} && \ (cd vagrant/*/{} && vagrant suspend) ) | \ grep -Ev "${ignore}" -namedservers=centos8 freebsd13 freebsd14 rhel8 centos3 +namedservers=centos9 freebsd13 freebsd14 rhel8 centos3 servers=parallel-server1 parallel-server2 parallel-server3 parallel-server4 ${namedservers} startvm: diff --git a/testsuite/REQUIREMENTS b/testsuite/REQUIREMENTS index a68e14e5..0068fa23 100644 --- a/testsuite/REQUIREMENTS +++ b/testsuite/REQUIREMENTS @@ -290,7 +290,7 @@ add_server_to_hosts() { insert_in_etc_hosts 127.1.2.3 server insert_in_etc_hosts 127.0.0.2 lo - parallel add_single_vagrant_to_etc_hosts {} parallel-server{#} ::: centos8 freebsd13 freebsd14 rhel8 centos3 + parallel add_single_vagrant_to_etc_hosts {} parallel-server{#} ::: centos9 freebsd13 freebsd14 rhel8 centos3 } vagrant_up() { diff --git a/testsuite/wanted-results/parallel-local-0.3s b/testsuite/wanted-results/parallel-local-0.3s index 8ce4e927..20993002 100644 --- a/testsuite/wanted-results/parallel-local-0.3s +++ b/testsuite/wanted-results/parallel-local-0.3s @@ -984,10 +984,10 @@ par_sem_quote ### sem --quote should not add empty argument par_sem_quote echo par_sem_quote par_shellcompletion ### --shellcompletion -par_shellcompletion bf790ce8a53d1e7e5f8e78b063dc65bc - -par_shellcompletion bf790ce8a53d1e7e5f8e78b063dc65bc - -par_shellcompletion 2230e8ac0593f660fccd983596377613 - -par_shellcompletion 2230e8ac0593f660fccd983596377613 - +par_shellcompletion 1eba455fe1456f03376f19255aed28d3 - +par_shellcompletion 1eba455fe1456f03376f19255aed28d3 - +par_shellcompletion 1ea63315f24ede14c1e8d93c1b64150a - +par_shellcompletion 1ea63315f24ede14c1e8d93c1b64150a - par_slow_pipe_regexp ### bug #53718: --pipe --regexp -N blocks par_slow_pipe_regexp This should take a few ms, but took more than 2 hours par_slow_pipe_regexp 0 1 1 diff --git a/testsuite/wanted-results/parallel-local-sql01 b/testsuite/wanted-results/parallel-local-sql01 index 7121feb0..8a3df37a 100644 --- a/testsuite/wanted-results/parallel-local-sql01 +++ b/testsuite/wanted-results/parallel-local-sql01 @@ -1855,7 +1855,7 @@ SQLITE par_empty p_wrapper par_empty $SQLITE SQLITE par_empty Do nothing: TBL99999 does not exist because it is not created SQLITE par_empty Exit=0 SQLITE par_empty Exit=0 -SQLITE par_empty Parse error near line 1: no such table: TBL99999 (1) +SQLITE par_empty Parse error near line 1: no such table: TBL99999 SQLITE par_no_table p_wrapper par_no_table $SQLITE SQLITE par_no_table bug #50018: --dburl without table dies SQLITE par_no_table 255 diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index bc378cdd..bd886e5d 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -720,6 +720,7 @@ BASH_FUNC_replace_tmpdir%% BASH_FUNC_run_once%% BASH_FUNC_run_test%% _ +mysqlrootpass qTMPDIR qqTMPDIR testsuitedir @@ -1061,16 +1062,19 @@ cat: num_%header: No such file or directory /usr/bin/bash: line 2: foo: command not found #!/usr/bin/perl print "@ARGV\n" +Warning: unknown mime-type for "@ARGV\n" -- using "application/octet-stream" Error: no such file "@ARGV\n" parallel perl_echo ::: foo bar /usr/bin/bash: line 1: perl_echo: command not found #!/usr/bin/parallel --shebang-wrap /usr/bin/perl print "@ARGV\n" +Warning: unknown mime-type for "@ARGV\n" -- using "application/octet-stream" Error: no such file "@ARGV\n" perl_echo foo bar /usr/bin/bash: line 1: perl_echo: command not found #!/usr/bin/parallel --shebang-wrap /usr/bin/perl print "Arguments @ARGV\n"; +Warning: unknown mime-type for "Arguments @ARGV\n" -- using "application/octet-stream" Error: no such file "Arguments @ARGV\n" #!/usr/bin/parallel --shebang-wrap /usr/bin/python print 'Arguments', str(sys.argv) @@ -1091,6 +1095,7 @@ Arguments #!/usr/bin/parallel --shebang-wrap /usr/bin/ruby print "Arguments " puts ARGV +Warning: unknown mime-type for "Arguments " -- using "application/octet-stream" Error: no such file "Arguments " /usr/bin/bash: line 4: puts: command not found #!/usr/bin/parallel --shebang-wrap /usr/bin/octave diff --git a/testsuite/wanted-results/test21 b/testsuite/wanted-results/test21 index ea18f2f9..b0628eae 100644 --- a/testsuite/wanted-results/test21 +++ b/testsuite/wanted-results/test21 @@ -3,28 +3,28 @@ 134332 134332 940324 1 1 -centos8.localdomain +centos9s.localdomain freebsd14.localdomain hostname; echo 1 hostname; echo 1 ### Test $PARALLEL - multi line 1 1 -centos8.localdomain +centos9s.localdomain freebsd14.localdomain hostname; echo 1 hostname; echo 1 ### Test ~/.parallel/config - single line 1 1 -centos8.localdomain +centos9s.localdomain freebsd14.localdomain hostname; echo 1 hostname; echo 1 ### Test ~/.parallel/config - multi line 1 1 -centos8.localdomain +centos9s.localdomain freebsd14.localdomain hostname; echo 1 hostname; echo 1 diff --git a/testsuite/wanted-results/test60 b/testsuite/wanted-results/test60 index d2684c41..68672cfc 100644 --- a/testsuite/wanted-results/test60 +++ b/testsuite/wanted-results/test60 @@ -1,15 +1,15 @@ par_nonall ### Test --nonall -par_nonall centos8.localdomain +par_nonall centos9s.localdomain par_nonall freebsd13.localdomain par_nonall_basefile ### Test --nonall --basefile par_nonall_basefile /tmp/nonall--basefile par_nonall_basefile /tmp/nonall--basefile par_nonall_sshloginfile_stdin ### Test read sshloginfile from STDIN -par_nonall_sshloginfile_stdin centos8.localdomain -par_nonall_sshloginfile_stdin centos8.localdomain +par_nonall_sshloginfile_stdin centos9s.localdomain +par_nonall_sshloginfile_stdin centos9s.localdomain par_nonall_u ### Test --nonall -u - should be interleaved x y x y -par_nonall_u 1 centos8.localdomain -par_nonall_u 1 centos8.localdomain +par_nonall_u 1 centos9s.localdomain +par_nonall_u 1 centos9s.localdomain par_nonall_u 1 freebsd13.localdomain par_nonall_u 1 freebsd13.localdomain par_onall ### Test --onall