diff --git a/NEWS b/NEWS index 933f5419..ef4c361f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,20 @@ +20180922 + +* Minix is supported again. + +* Updated graph showing GNU Parallel's overhead per job for each + version. https://www.gnu.org/software/parallel/process-time-j2-1700MHz-3000-1000.pdf + +* Intro to Computing at CARC includes introduction to GNU Parallel + http://carc.unm.edu/education--training/workshops-and-seminars.html + +* Fast-GBS uses GNU Parallel https://bitbucket.org/jerlar73/fast-gbs/wiki/Home + +* Belgium at 10 m resolution in July 2018 http://www.cesbio.ups-tlse.fr/multitemp/?p=14116 + +* Bug fixes and man page updates. + + 20180822 * parset sets exit code. diff --git a/README b/README index dd05a899..9f89b4ca 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-20180822.tar.bz2 - bzip2 -dc parallel-20180822.tar.bz2 | tar xvf - - cd parallel-20180822 + wget https://ftpmirror.gnu.org/parallel/parallel-20180922.tar.bz2 + bzip2 -dc parallel-20180922.tar.bz2 | tar xvf - + cd parallel-20180922 ./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-20180822.tar.bz2 - bzip2 -dc parallel-20180822.tar.bz2 | tar xvf - - cd parallel-20180822 + wget https://ftpmirror.gnu.org/parallel/parallel-20180922.tar.bz2 + bzip2 -dc parallel-20180922.tar.bz2 | tar xvf - + cd parallel-20180922 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff --git a/configure b/configure index 993ebfeb..f9efdce0 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20180822. +# Generated by GNU Autoconf 2.69 for parallel 20180922. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20180822' -PACKAGE_STRING='parallel 20180822' +PACKAGE_VERSION='20180922' +PACKAGE_STRING='parallel 20180922' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures parallel 20180822 to adapt to many kinds of systems. +\`configure' configures parallel 20180922 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1281,7 +1281,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20180822:";; + short | recursive ) echo "Configuration of parallel 20180922:";; esac cat <<\_ACEOF @@ -1357,7 +1357,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20180822 +parallel configure 20180922 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by parallel $as_me 20180822, which was +It was created by parallel $as_me 20180922, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2237,7 +2237,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20180822' + VERSION='20180922' cat >>confdefs.h <<_ACEOF @@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by parallel $as_me 20180822, which was +This file was extended by parallel $as_me 20180922, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2942,7 +2942,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -parallel config.status 20180822 +parallel config.status 20180922 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 12ac1a67..3ec179fd 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20180822], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20180922], [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 2853e4b6..02fcd196 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -205,10 +205,9 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama +Subject: GNU Parallel 20180922 ('Danske') released <<[stable]>> -Subject: GNU Parallel 20180922 ('Danske/Korea/India/Myanmar/Jacksonville/Chemnitz') released <<[stable]>> - -GNU Parallel 20180922 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ +GNU Parallel 20180922 ('Danske') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ <> @@ -219,58 +218,15 @@ Quote of the month: New in this release: +* Minix is supported again. + * Updated graph showing GNU Parallel's overhead per job for each version. https://www.gnu.org/software/parallel/process-time-j2-1700MHz-3000-1000.pdf -http://carc.unm.edu/education--training/workshops-and-seminars.html +* Intro to Computing at CARC includes introduction to GNU Parallel http://carc.unm.edu/education--training/workshops-and-seminars.html +* Fast-GBS uses GNU Parallel https://bitbucket.org/jerlar73/fast-gbs/wiki/Home -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> - -<> GNU Parallel was used (unfortunately without citation) in: MUGBAS: a species free gene-based programme suite for post-GWAS analysis http://www.ncbi.nlm.nih.gov/pubmed/25765345 - -<> GNU Parallel was used in: Large Scale Author Name Disambiguation in Digital Libraries http://ieeexplore.ieee.org/xpl/abstractReferences.jsp?tp=&arnumber=7004487&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7004487 - -<> GNU Parallel was used (unfortunately with wrong citation) in: TADSim: Discrete Event-Based Performance Prediction for Temperature-Accelerated Dynamics http://vruehle.de/publications/2015c.pdf -http://www.researchgate.net/profile/Christoph_Junghans/publication/276178326_TADSim_Discrete_Event-Based_Performance_Prediction_for_Temperature-Accelerated_Dynamics/links/55562b6708ae980ca60c8369.pdf - -<< Update forventet juni Rachel har lige svaret >> GNU Parallel was used in: SISRS: Site Identification from Short Read Sequences https://github.com/rachelss/SISRS/ - -<> - -<> - -<> - -<> - -<> - -<> - -<> +* Belgium at 10 m resolution in July 2018 http://www.cesbio.ups-tlse.fr/multitemp/?p=14116 * Bug fixes and man page updates. diff --git a/packager/obs/home:tange/parallel/.osc/_files b/packager/obs/home:tange/parallel/.osc/_files index ca9ef7df..ef9c8e1a 100644 --- a/packager/obs/home:tange/parallel/.osc/_files +++ b/packager/obs/home:tange/parallel/.osc/_files @@ -1,6 +1,6 @@ - - - - - + + + + + diff --git a/packager/obs/home:tange/parallel/.osc/parallel.spec b/packager/obs/home:tange/parallel/.osc/parallel.spec index ee8fe748..07636beb 100644 --- a/packager/obs/home:tange/parallel/.osc/parallel.spec +++ b/packager/obs/home:tange/parallel/.osc/parallel.spec @@ -1,6 +1,7 @@ + Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20180822 +Version: 20180922 Release: 1.2 License: GPL Group: Productivity/File utilities diff --git a/packager/obs/home:tange/parallel/parallel.spec b/packager/obs/home:tange/parallel/parallel.spec index ee8fe748..07636beb 100644 --- a/packager/obs/home:tange/parallel/parallel.spec +++ b/packager/obs/home:tange/parallel/parallel.spec @@ -1,6 +1,7 @@ + Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20180822 +Version: 20180922 Release: 1.2 License: GPL Group: Productivity/File utilities diff --git a/src/niceload b/src/niceload index 700a2066..2bf9a042 100755 --- a/src/niceload +++ b/src/niceload @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20180824; +$Global::version = 20180922; 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 a764dbfe..271edeb2 100755 --- a/src/parallel +++ b/src/parallel @@ -1554,7 +1554,7 @@ sub check_invalid_option_combinations { sub init_globals { # Defaults: - $Global::version = 20180916; + $Global::version = 20180922; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; @@ -6944,8 +6944,7 @@ sub sshcommand_of_sshlogin { open(STDIN,"<","/dev/null"); # Run a sleep that outputs data, so it will discover # if the ssh connection closes. - my $sleep = ::Q - ('$|=1;while(1){sleep 1;print "foo\n"}'); + my $sleep = ::Q('$|=1;while(1){sleep 1;print "foo\n"}'); my @master = ($opt::ssh, "-MTS", $control_path, $serverlogin, "--", "perl", "-e", $sleep); diff --git a/src/parallel_alternatives.pod b/src/parallel_alternatives.pod index 39125ec7..1f34e888 100644 --- a/src/parallel_alternatives.pod +++ b/src/parallel_alternatives.pod @@ -717,8 +717,10 @@ B<~/.parallel/config>: --rpl 'DIRNAME $_=Q(::dirname($_));chomp($_=qx{readlink -f $_});' --rpl 'BASENAME s:.*/::;s:\.[^/.]+$::;' --rpl 'EXT s:.*\.::' - --rpl 'RELDIR $_=Q($_);chomp(($_,$c)=qx{readlink -f $_;pwd});s:\Q$c/\E::;$_=::dirname($_);' - --rpl 'RELPATH $_=Q($_);chomp(($_,$c)=qx{readlink -f $_;pwd});s:\Q$c/\E::;' + --rpl 'RELDIR $_=Q($_);chomp(($_,$c)=qx{readlink -f $_;pwd}); + s:\Q$c/\E::;$_=::dirname($_);' + --rpl 'RELPATH $_=Q($_);chomp(($_,$c)=qx{readlink -f $_;pwd}); + s:\Q$c/\E::;' B deals badly with filenames containing " and newline, and it fails for output larger than 200k: diff --git a/src/sql b/src/sql index e63a3505..5328708b 100755 --- a/src/sql +++ b/src/sql @@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20180824; + $Global::version = 20180922; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index 692af765..1dc4ec36 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -1625,16 +1625,88 @@ _EOF } par_ash_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25 + len_var_remote=100-50+25+12+6+3 + len_var_quote=100-50+25-12-6+3-2 + len_var_quote_remote=100-50-25+12+6-3 + len_fun=100+50+25+12+6-3 + len_fun_remote=100-50+25+12-6+3 + len_fun_quote=100+50-25-12 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.ash`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail - functions not supported in ash + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc-not-supported + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote-not-supported + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote-not-supported + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote-not-supported + + bigfunc() { true; } +_EOF + ) + ssh ash@lo "$myscript" +} + +__ash_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.ash`; bigvar="$(perl -e 'print "x"x130000')" env_parallel echo ::: OK_bigvar + bigvar="$(perl -e 'print "x"x65000')" env_parallel -S lo echo ::: OK_bigvar_remote bigvar="$(perl -e 'print "\""x65000')" env_parallel echo ::: OK_bigvar_quote + bigvar="$(perl -e 'print "\""x32000')" env_parallel -S lo echo ::: OK_bigvar_quote_remote # Functions not supported in ash @@ -1652,10 +1724,12 @@ par_ash_environment_too_big() { bigvar="$(perl -e 'print "x"x131000')" env_parallel echo ::: fail_bigvar + bigvar="$(perl -e 'print "x"x65000')" env_parallel -S lo echo ::: fail_bigvar_remote bigvar="$(perl -e 'print "\""x66000')" env_parallel echo ::: fail_bigvar_quote + bigvar="$(perl -e 'print "\""x33000')" env_parallel -S lo echo ::: fail_bigvar_quote_remote # Functions not supported in ash @@ -1674,26 +1748,32 @@ _EOF ssh ash@lo "$myscript" } -par_bash_environment_too_big() { +__bash_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.bash`; + repeat() { + bigvar="$(perl -e 'print "x"x110000')" env_parallel echo ::: OK_bigvar + bigvar="$(perl -e 'print "x"x55000')" env_parallel -S lo echo ::: OK_bigvar_remote bigvar="$(perl -e 'print "\""x55000')" env_parallel echo ::: OK_bigvar_quote + bigvar="$(perl -e 'print "\""x27000')" env_parallel -S lo echo ::: OK_bigvar_quote_remote bigvar=u eval 'bigfunc() { a="'"$(perl -e 'print "x"x110000')"'"; };' env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(perl -e 'print "x"x55000')"'"; };' env_parallel -S lo echo ::: OK_bigfunc_remote eval 'bigfunc() { a="'"$(perl -e 'print "\""x110000')"'"; };' env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(perl -e 'print "\""x55000')"'"; };' env_parallel -S lo echo ::: OK_bigfunc_quote_remote bigfunc() { true; } @@ -1701,19 +1781,93 @@ par_bash_environment_too_big() { bigvar="$(perl -e 'print "x"x127000')" env_parallel echo ::: fail_bigvar + bigvar="$(perl -e 'print "x"x64000')" env_parallel -S lo echo ::: fail_bigvar_remote bigvar="$(perl -e 'print "\""x64000')" env_parallel echo ::: fail_bigvar_quote + bigvar="$(perl -e 'print "\""x32000')" env_parallel -S lo echo ::: fail_bigvar_quote_remote bigvar=u - eval 'bigfunc() { a="'"$(perl -e 'print "x"x1220000')"'"; };' + eval 'bigfunc() { a="'"$(perl -e 'print "x"x122000')"'"; };' env_parallel echo ::: fail_bigfunc + eval 'bigfunc() { a="'"$(perl -e 'print "x"x61000')"'"; };' env_parallel -S lo echo ::: fail_bigfunc_remote eval 'bigfunc() { a="'"$(perl -e 'print "\""x127000')"'"; };' env_parallel echo ::: fail_bigfunc_quote + eval 'bigfunc() { a="'"$(perl -e 'print "\""x64000')"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote + + bigfunc() { true; } +_EOF + ) + ssh bash@lo "$myscript" +} + +par_bash_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25-12+6-3+2 + len_var_remote=100-50+25+12-6+3 + len_var_quote=100-50+25-12-6+3-2 + len_var_quote_remote=100-50-25+12+6-3 + len_fun=100+50-25-12+6-3 + len_fun_remote=100-50+25+12-6+3 + len_fun_quote=100+50-25-12 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.bash`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' env_parallel -S lo echo ::: fail_bigfunc_quote_remote bigfunc() { true; } @@ -1727,16 +1881,88 @@ par_csh_environment_too_big() { } par_dash_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25 + len_var_remote=100-50+25+12+6+3 + len_var_quote=100-50+25-12-6+3-2 + len_var_quote_remote=100-50-25+12+6-3 + len_fun=100+50+25+12+6-3 + len_fun_remote=100-50+25+12-6+3 + len_fun_quote=100+50-25-12 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.dash`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail - functions not supported in dash + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc-not-supported + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote-not-supported + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote-not-supported + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote-not-supported + + bigfunc() { true; } +_EOF + ) + ssh dash@lo "$myscript" +} + +__dash_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.dash`; bigvar="$(perl -e 'print "x"x130000')" env_parallel echo ::: OK_bigvar + bigvar="$(perl -e 'print "x"x65000')" env_parallel -S lo echo ::: OK_bigvar_remote bigvar="$(perl -e 'print "\""x65000')" env_parallel echo ::: OK_bigvar_quote + bigvar="$(perl -e 'print "\""x32000')" env_parallel -S lo echo ::: OK_bigvar_quote_remote # Functions not supported @@ -1754,10 +1980,12 @@ par_dash_environment_too_big() { bigvar="$(perl -e 'print "x"x131000')" env_parallel echo ::: fail_bigvar + bigvar="$(perl -e 'print "x"x65000')" env_parallel -S lo echo ::: fail_bigvar_remote bigvar="$(perl -e 'print "\""x66000')" env_parallel echo ::: fail_bigvar_quote + bigvar="$(perl -e 'print "\""x33000')" env_parallel -S lo echo ::: fail_bigvar_quote_remote # Functions not supported @@ -1780,7 +2008,148 @@ par_fish_environment_too_big() { echo Not implemented } + par_ksh_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25-12 + len_var_remote=100-50+25+12-6-3 + len_var_quote=100+50-25-12 + len_var_quote_remote=100-50+25+12-6 + len_fun=100+12+6-3 + len_fun_remote=100-50+25+12-6+3 + len_fun_quote=100+50-25-12 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.ksh`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote + + bigfunc() { true; } +_EOF + ) + ssh ksh@lo "$myscript" +} + +__ksh_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25 + len_var_remote=100-50+25+12+6+3 + len_var_quote=100-50+25-12-6+3-2 + len_var_quote_remote=100-50-25+12+6-3 + len_fun=100+50+25+12+6-3 + len_fun_remote=100-50+25+12-6+3 + len_fun_quote=100+50-25-12 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.ksh`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote + + bigfunc() { true; } +_EOF + ) + ssh ksh@lo "$myscript" +} + +__ksh_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.ksh`; @@ -1829,6 +2198,76 @@ _EOF } par_mksh_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+6 + len_var_remote=100-50+25+12-6-3 + len_var_quote=100+6 + len_var_quote_remote=100-50+25 + len_fun=100+6 + len_fun_remote=100-50+25-6+3 + len_fun_quote=100+6 + len_fun_quote_remote=100-50+25 + + . `which env_parallel.mksh`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote + + bigfunc() { true; } +_EOF + ) + ssh mksh@lo "$myscript" +} + +__mksh_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.mksh`; @@ -1876,17 +2315,19 @@ _EOF ssh mksh@lo "$myscript" } -par_sh_environment_too_big() { +__sh_environment_too_big() { myscript=$(cat <<'_EOF' echo 'bug #50815: env_parallel should warn if the environment is too big' . `which env_parallel.sh`; bigvar="$(perl -e 'print "x"x130000')" env_parallel echo ::: OK_bigvar + bigvar="$(perl -e 'print "x"x90000')" env_parallel -S lo echo ::: OK_bigvar_remote bigvar="$(perl -e 'print "\""x65000')" env_parallel echo ::: OK_bigvar_quote + bigvar="$(perl -e 'print "\""x45000')" env_parallel -S lo echo ::: OK_bigvar_quote_remote # Functions not supported @@ -1925,6 +2366,75 @@ _EOF ) ssh sh@lo "$myscript" } +par_sh_environment_too_big() { + myscript=$(cat <<'_EOF' + echo 'bug #50815: env_parallel should warn if the environment is too big' + len_var=100+50-25 + len_var_remote=100-12 + len_var_quote=100-50+6 + len_var_quote_remote=100-50-6 + len_fun=100+25 + len_fun_remote=100-50+25-6+3+10 + len_fun_quote=100+6+10 + len_fun_quote_remote=100-50+25+12-6 + + . `which env_parallel.sh`; + + repeat() { + # Repeat input string n*1000 times + perl -e 'print ((shift)x(eval "1000*(".shift.")"))' "$@" + } + + bigvar=$(repeat x $len_var) + env_parallel echo ::: OK_bigvar + bigvar=$(repeat x $len_var_remote) + env_parallel -S lo echo ::: OK_bigvar_remote + + bigvar=$(repeat \" $len_var_quote) + env_parallel echo ::: OK_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote) + env_parallel -S lo echo ::: OK_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun)"'"; };' + env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_remote + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote)"'"; };' + env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote_remote)"'"; };' + env_parallel -S lo echo ::: OK_bigfunc_quote_remote + bigfunc() { true; } + + echo Rest should fail - functions not supported in sh + + bigvar=$(repeat x $len_var+10) + env_parallel echo ::: fail_bigvar + bigvar=$(repeat x $len_var_remote+10) + env_parallel -S lo echo ::: fail_bigvar_remote + + bigvar=$(repeat \" $len_var_quote+10) + env_parallel echo ::: fail_bigvar_quote + bigvar=$(repeat \" $len_var_quote_remote+10) + env_parallel -S lo echo ::: fail_bigvar_quote_remote + + bigvar=u + eval 'bigfunc() { a="'"$(repeat x $len_fun+10)"'"; };' + env_parallel echo ::: fail_bigfunc-not-supported + eval 'bigfunc() { a="'"$(repeat x $len_fun_remote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_remote-not-supported + + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel echo ::: fail_bigfunc_quote-not-supported + eval 'bigfunc() { a="'"$(repeat \" $len_fun_quote+10)"'"; };' + env_parallel -S lo echo ::: fail_bigfunc_quote_remote-not-supported + + bigfunc() { true; } +_EOF + ) + ssh sh@lo "$myscript" +} par_tcsh_environment_too_big() { echo Not implemented @@ -1937,19 +2447,23 @@ par_zsh_environment_too_big() { bigvar="$(perl -e 'print "x"x24000')" env_parallel echo ::: OK_bigvar + bigvar="$(perl -e 'print "x"x12000')" env_parallel -S lo echo ::: OK_bigvar_remote bigvar="$(perl -e 'print "\""x24000')" env_parallel echo ::: OK_bigvar_quote + bigvar="$(perl -e 'print "\""x12000')" env_parallel -S lo echo ::: OK_bigvar_quote_remote bigvar=u eval 'bigfunc() { a="'"$(perl -e 'print "x"x24000')"'"; };' env_parallel echo ::: OK_bigfunc + eval 'bigfunc() { a="'"$(perl -e 'print "x"x12000')"'"; };' env_parallel -S lo echo ::: OK_bigfunc_remote eval 'bigfunc() { a="'"$(perl -e 'print "\""x24000')"'"; };' env_parallel echo ::: OK_bigfunc_quote + eval 'bigfunc() { a="'"$(perl -e 'print "\""x12000')"'"; };' env_parallel -S lo echo ::: OK_bigfunc_quote_remote bigfunc() { true; } @@ -2748,5 +3262,6 @@ compgen -A function | grep par_ | sort -r | # parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1' parallel --joblog /tmp/jl-`basename $0` -j200% --tag -k '{} 2>&1' | perl -pe 's/line \d\d\d:/line XXX:/; + s/\d+ >= \d+/XXX >= XXX/; s/sh:? \d?\d\d:/sh: XXX:/; s/sh\[\d+\]/sh[XXX]/;' diff --git a/testsuite/tests-to-run/parallel-local-ssh9.sh b/testsuite/tests-to-run/parallel-local-ssh9.sh index cd684aaf..118676a9 100644 --- a/testsuite/tests-to-run/parallel-local-ssh9.sh +++ b/testsuite/tests-to-run/parallel-local-ssh9.sh @@ -150,7 +150,7 @@ par_env_parallel_big_env() { a=`rand | head -c 75000` env_parallel -Slo echo should not ::: fail 2>&1 a=`rand | head -c 76000` - env_parallel -Slo echo should not ::: fail 2>/dev/null || echo OK + env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK } export -f $(compgen -A function | grep par_) diff --git a/testsuite/tests-to-run/parallel-tutorial.sh b/testsuite/tests-to-run/parallel-tutorial.sh index 5ed53572..7e53214f 100644 --- a/testsuite/tests-to-run/parallel-tutorial.sh +++ b/testsuite/tests-to-run/parallel-tutorial.sh @@ -48,8 +48,8 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/ s/,[a-z]*,\d+.\d+,\d+.\d+/,:,000000000.000,0.000/g; # /usr/bin/time -f %e s/^(\d+)\.\d+$/$1/; - # Base 64 string - s:[\\+/a-z0-9=]{50,}:BASE64:ig; + # Base 64 string with quotes + s:['"'"'"\\+/a-z0-9=]{50,}:BASE64:ig; # --workdir ... s:parallel/tmp/aspire-\d+-1:TMPWORKDIR:g; # + cat ... | (Bash outputs these in random order) diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 0a3ae1b3..0011b9f1 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -487,27 +487,11 @@ par_sh_environment_too_big OK_bigvar par_sh_environment_too_big OK_bigvar_remote par_sh_environment_too_big OK_bigvar_quote par_sh_environment_too_big OK_bigvar_quote_remote -par_sh_environment_too_big Rest should fail -par_sh_environment_too_big sh: XXX: perl: Argument list too long -par_sh_environment_too_big env_parallel: Error: Your environment is too big. -par_sh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_sh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_sh_environment_too_big env_parallel: Error: variables or define functions. -par_sh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_sh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_sh_environment_too_big env_parallel: Error: env_parallel --record-env -par_sh_environment_too_big env_parallel: Error: And then use '--env _' -par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_sh_environment_too_big sh: XXX: perl: Argument list too long -par_sh_environment_too_big env_parallel: Error: Your environment is too big. -par_sh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_sh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_sh_environment_too_big env_parallel: Error: variables or define functions. -par_sh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_sh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_sh_environment_too_big env_parallel: Error: env_parallel --record-env -par_sh_environment_too_big env_parallel: Error: And then use '--env _' -par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_sh_environment_too_big OK_bigfunc +par_sh_environment_too_big OK_bigfunc_remote +par_sh_environment_too_big OK_bigfunc_quote +par_sh_environment_too_big OK_bigfunc_quote_remote +par_sh_environment_too_big Rest should fail - functions not supported in sh par_sh_environment_too_big sh: XXX: perl: Argument list too long par_sh_environment_too_big env_parallel: Error: Your environment is too big. par_sh_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -518,6 +502,7 @@ par_sh_environment_too_big env_parallel: Error: 3. Try running this in a clean e par_sh_environment_too_big env_parallel: Error: env_parallel --record-env par_sh_environment_too_big env_parallel: Error: And then use '--env _' par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_sh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote par_sh_environment_too_big sh: XXX: perl: Argument list too long par_sh_environment_too_big env_parallel: Error: Your environment is too big. par_sh_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -528,6 +513,11 @@ par_sh_environment_too_big env_parallel: Error: 3. Try running this in a clean e par_sh_environment_too_big env_parallel: Error: env_parallel --record-env par_sh_environment_too_big env_parallel: Error: And then use '--env _' par_sh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_sh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote +par_sh_environment_too_big fail_bigfunc-not-supported +par_sh_environment_too_big fail_bigfunc_remote-not-supported +par_sh_environment_too_big fail_bigfunc_quote-not-supported +par_sh_environment_too_big fail_bigfunc_quote_remote-not-supported par_sh_env_parallel_session ### Test env_parallel --session par_sh_env_parallel_session /bin/sh: XXX: aliasbefore: not found par_sh_env_parallel_session /bin/sh: XXX: aliasbefore: not found @@ -711,86 +701,14 @@ par_mksh_environment_too_big OK_bigfunc_remote par_mksh_environment_too_big OK_bigfunc_quote par_mksh_environment_too_big OK_bigfunc_quote_remote par_mksh_environment_too_big Rest should fail -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_mksh_environment_too_big mksh: /usr/bin/perl: Argument list too long -par_mksh_environment_too_big env_parallel: Error: Your environment is too big. -par_mksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_mksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_mksh_environment_too_big env_parallel: Error: variables or define functions. -par_mksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_mksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_mksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_mksh_environment_too_big env_parallel: Error: And then use '--env _' -par_mksh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_remote +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_quote +par_mksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_quote_remote par_mksh_env_parallel_session ### Test env_parallel --session par_mksh_env_parallel_session /bin/mksh: aliasbefore: not found par_mksh_env_parallel_session /bin/mksh: aliasbefore: not found @@ -1008,6 +926,7 @@ par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env par_ksh_environment_too_big env_parallel: Error: And then use '--env _' par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] par_ksh_environment_too_big env_parallel: Error: Your environment is too big. par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1018,6 +937,7 @@ par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env par_ksh_environment_too_big env_parallel: Error: And then use '--env _' par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] par_ksh_environment_too_big env_parallel: Error: Your environment is too big. par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1028,36 +948,7 @@ par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env par_ksh_environment_too_big env_parallel: Error: And then use '--env _' par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] -par_ksh_environment_too_big env_parallel: Error: Your environment is too big. -par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_ksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_ksh_environment_too_big env_parallel: Error: variables or define functions. -par_ksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_ksh_environment_too_big env_parallel: Error: And then use '--env _' -par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] -par_ksh_environment_too_big env_parallel: Error: Your environment is too big. -par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_ksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_ksh_environment_too_big env_parallel: Error: variables or define functions. -par_ksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_ksh_environment_too_big env_parallel: Error: And then use '--env _' -par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel -par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] -par_ksh_environment_too_big env_parallel: Error: Your environment is too big. -par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_ksh_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_ksh_environment_too_big env_parallel: Error: variables or define functions. -par_ksh_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_ksh_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_ksh_environment_too_big env_parallel: Error: env_parallel --record-env -par_ksh_environment_too_big env_parallel: Error: And then use '--env _' -par_ksh_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ksh_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_remote par_ksh_environment_too_big ksh[XXX]: perl: /usr/bin/perl: cannot execute [Argument list too long] par_ksh_environment_too_big env_parallel: Error: Your environment is too big. par_ksh_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1332,27 +1223,11 @@ par_dash_environment_too_big OK_bigvar par_dash_environment_too_big OK_bigvar_remote par_dash_environment_too_big OK_bigvar_quote par_dash_environment_too_big OK_bigvar_quote_remote -par_dash_environment_too_big Rest should fail -par_dash_environment_too_big dash: XXX: perl: Argument list too long -par_dash_environment_too_big env_parallel: Error: Your environment is too big. -par_dash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_dash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_dash_environment_too_big env_parallel: Error: variables or define functions. -par_dash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_dash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_dash_environment_too_big env_parallel: Error: env_parallel --record-env -par_dash_environment_too_big env_parallel: Error: And then use '--env _' -par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel -par_dash_environment_too_big dash: XXX: perl: Argument list too long -par_dash_environment_too_big env_parallel: Error: Your environment is too big. -par_dash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_dash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_dash_environment_too_big env_parallel: Error: variables or define functions. -par_dash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_dash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_dash_environment_too_big env_parallel: Error: env_parallel --record-env -par_dash_environment_too_big env_parallel: Error: And then use '--env _' -par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_dash_environment_too_big OK_bigfunc +par_dash_environment_too_big OK_bigfunc_remote +par_dash_environment_too_big OK_bigfunc_quote +par_dash_environment_too_big OK_bigfunc_quote_remote +par_dash_environment_too_big Rest should fail - functions not supported in dash par_dash_environment_too_big dash: XXX: perl: Argument list too long par_dash_environment_too_big env_parallel: Error: Your environment is too big. par_dash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1363,6 +1238,7 @@ par_dash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_dash_environment_too_big env_parallel: Error: env_parallel --record-env par_dash_environment_too_big env_parallel: Error: And then use '--env _' par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_dash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote par_dash_environment_too_big dash: XXX: perl: Argument list too long par_dash_environment_too_big env_parallel: Error: Your environment is too big. par_dash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1373,6 +1249,11 @@ par_dash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_dash_environment_too_big env_parallel: Error: env_parallel --record-env par_dash_environment_too_big env_parallel: Error: And then use '--env _' par_dash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_dash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote +par_dash_environment_too_big fail_bigfunc-not-supported +par_dash_environment_too_big fail_bigfunc_remote-not-supported +par_dash_environment_too_big fail_bigfunc_quote-not-supported +par_dash_environment_too_big fail_bigfunc_quote_remote-not-supported par_dash_env_parallel_session ### Test env_parallel --session par_dash_env_parallel_session /bin/dash: XXX: aliasbefore: not found par_dash_env_parallel_session /bin/dash: XXX: aliasbefore: not found @@ -1687,6 +1568,7 @@ par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_bash_environment_too_big env_parallel: Error: env_parallel --record-env par_bash_environment_too_big env_parallel: Error: And then use '--env _' par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long par_bash_environment_too_big env_parallel: Error: Your environment is too big. par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1697,6 +1579,7 @@ par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_bash_environment_too_big env_parallel: Error: env_parallel --record-env par_bash_environment_too_big env_parallel: Error: And then use '--env _' par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long par_bash_environment_too_big env_parallel: Error: Your environment is too big. par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1707,36 +1590,7 @@ par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_bash_environment_too_big env_parallel: Error: env_parallel --record-env par_bash_environment_too_big env_parallel: Error: And then use '--env _' par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel -par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long -par_bash_environment_too_big env_parallel: Error: Your environment is too big. -par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_bash_environment_too_big env_parallel: Error: variables or define functions. -par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_bash_environment_too_big env_parallel: Error: env_parallel --record-env -par_bash_environment_too_big env_parallel: Error: And then use '--env _' -par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel -par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long -par_bash_environment_too_big env_parallel: Error: Your environment is too big. -par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_bash_environment_too_big env_parallel: Error: variables or define functions. -par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_bash_environment_too_big env_parallel: Error: env_parallel --record-env -par_bash_environment_too_big env_parallel: Error: And then use '--env _' -par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel -par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long -par_bash_environment_too_big env_parallel: Error: Your environment is too big. -par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_bash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_bash_environment_too_big env_parallel: Error: variables or define functions. -par_bash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_bash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_bash_environment_too_big env_parallel: Error: env_parallel --record-env -par_bash_environment_too_big env_parallel: Error: And then use '--env _' -par_bash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_bash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigfunc_remote par_bash_environment_too_big /usr/local/bin/env_parallel.bash: line XXX: /usr/bin/perl: Argument list too long par_bash_environment_too_big env_parallel: Error: Your environment is too big. par_bash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1882,27 +1736,11 @@ par_ash_environment_too_big OK_bigvar par_ash_environment_too_big OK_bigvar_remote par_ash_environment_too_big OK_bigvar_quote par_ash_environment_too_big OK_bigvar_quote_remote -par_ash_environment_too_big Rest should fail -par_ash_environment_too_big ash: XXX: perl: Argument list too long -par_ash_environment_too_big env_parallel: Error: Your environment is too big. -par_ash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_ash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_ash_environment_too_big env_parallel: Error: variables or define functions. -par_ash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_ash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_ash_environment_too_big env_parallel: Error: env_parallel --record-env -par_ash_environment_too_big env_parallel: Error: And then use '--env _' -par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel -par_ash_environment_too_big ash: XXX: perl: Argument list too long -par_ash_environment_too_big env_parallel: Error: Your environment is too big. -par_ash_environment_too_big env_parallel: Error: You can try 3 different approaches: -par_ash_environment_too_big env_parallel: Error: 1. Run 'env_parallel --session' before you set -par_ash_environment_too_big env_parallel: Error: variables or define functions. -par_ash_environment_too_big env_parallel: Error: 2. Use --env and only mention the names to copy. -par_ash_environment_too_big env_parallel: Error: 3. Try running this in a clean environment once: -par_ash_environment_too_big env_parallel: Error: env_parallel --record-env -par_ash_environment_too_big env_parallel: Error: And then use '--env _' -par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ash_environment_too_big OK_bigfunc +par_ash_environment_too_big OK_bigfunc_remote +par_ash_environment_too_big OK_bigfunc_quote +par_ash_environment_too_big OK_bigfunc_quote_remote +par_ash_environment_too_big Rest should fail - functions not supported in ash par_ash_environment_too_big ash: XXX: perl: Argument list too long par_ash_environment_too_big env_parallel: Error: Your environment is too big. par_ash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1913,6 +1751,7 @@ par_ash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_ash_environment_too_big env_parallel: Error: env_parallel --record-env par_ash_environment_too_big env_parallel: Error: And then use '--env _' par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_remote par_ash_environment_too_big ash: XXX: perl: Argument list too long par_ash_environment_too_big env_parallel: Error: Your environment is too big. par_ash_environment_too_big env_parallel: Error: You can try 3 different approaches: @@ -1923,6 +1762,11 @@ par_ash_environment_too_big env_parallel: Error: 3. Try running this in a clean par_ash_environment_too_big env_parallel: Error: env_parallel --record-env par_ash_environment_too_big env_parallel: Error: And then use '--env _' par_ash_environment_too_big env_parallel: Error: For details see: man env_parallel +par_ash_environment_too_big parallel: Error: Command line too long (XXX >= XXX) at input 0: fail_bigvar_quote_remote +par_ash_environment_too_big fail_bigfunc-not-supported +par_ash_environment_too_big fail_bigfunc_remote-not-supported +par_ash_environment_too_big fail_bigfunc_quote-not-supported +par_ash_environment_too_big fail_bigfunc_quote_remote-not-supported par_ash_env_parallel_session ### Test env_parallel --session par_ash_env_parallel_session /bin/ash: XXX: aliasbefore: not found par_ash_env_parallel_session /bin/ash: XXX: aliasbefore: not found diff --git a/testsuite/wanted-results/parallel-tutorial b/testsuite/wanted-results/parallel-tutorial index e9e3483b..ff76666d 100644 --- a/testsuite/wanted-results/parallel-tutorial +++ b/testsuite/wanted-results/parallel-tutorial @@ -20,6 +20,7 @@ sleep .3 /bin/bash: -c: line 0: syntax error near unexpected token `)' /bin/bash: -c: line 0: ` perl -e 'for(1..10){print "$_\n"}') > num_%header' perl -e 'print "HHHHAAABBBCCC"' > fixedlen + parallel echo ::: A B C A B @@ -995,7 +996,7 @@ For details: see man env_parallel export -f my_func3 parallel -vv --workdir ... --nice 17 --env _ --trc {}.out \ -S $SERVER1 my_func3 {} ::: abc-file -ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -e'ssh -l parallel' ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e "'"'@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;'"'" "'"'BASE64'"'";_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ./.TMPWORKDIR/./.; rsync' -rlDzR -e'ssh -l parallel' lo:./abc-file.out ./.;ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file.out; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status; +ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -e'ssh -l parallel' ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e "'"'@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;'"'" BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ./.TMPWORKDIR/./.; rsync' -rlDzR -e'ssh -l parallel' lo:./abc-file.out ./.;ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file.out; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status; parset myvar1,myvar2 echo ::: a b echo $myvar1 echo $myvar2 @@ -1486,8 +1487,7 @@ If you pay 10000 EUR you should feel free to use GNU Parallel without citing. parallel --version GNU parallel VERSION -Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018 -Ole Tange and Free Software Foundation, Inc. +Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. GNU parallel comes with no warranty.