Fixed env_parallel does not respect exit code from functions.

http://lists.gnu.org/archive/html/bug-parallel/2016-10/msg00001.html
This commit is contained in:
Ole Tange 2016-10-18 00:02:48 +02:00
parent 0f8d12839f
commit 089fc5b287
9 changed files with 48 additions and 8 deletions

View file

@ -110,5 +110,7 @@ env_parallel() {
unset _list_variable_VALUES unset _list_variable_VALUES
unset _list_function_BODIES unset _list_function_BODIES
`which parallel` "$@"; `which parallel` "$@";
_parallel_exit_CODE=$?
unset PARALLEL_ENV; unset PARALLEL_ENV;
return $_parallel_exit_CODE
} }

View file

@ -25,6 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St, # or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA # Fifth Floor, Boston, MA 02110-1301 USA
set _parallel_exit_CODE=0
if ("`alias env_parallel`" == '') then if ("`alias env_parallel`" == '') then
# Activate alias # Activate alias
alias env_parallel 'setenv PARALLEL "\!*"; source `which env_parallel.csh`' alias env_parallel 'setenv PARALLEL "\!*"; source `which env_parallel.csh`'
@ -127,9 +128,11 @@ else
unset _tMpaLLfILe; unset _tMpaLLfILe;
# Use $PARALLEL set in calling alias # Use $PARALLEL set in calling alias
parallel parallel
set _parallel_exit_CODE=$status
setenv PARALLEL_ENV setenv PARALLEL_ENV
setenv PARALLEL setenv PARALLEL
endif endif
sh -c "exit 0$_parallel_exit_CODE"
# Tested working for aliases # Tested working for aliases
# alias env_parallel 'setenv PARALLEL_ENV "`alias | perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g;`";parallel \!*; setenv PARALLEL_ENV' # alias env_parallel 'setenv PARALLEL_ENV "`alias | perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g;`";parallel \!*; setenv PARALLEL_ENV'

View file

@ -128,5 +128,7 @@ function env_parallel
s/\n/\001/' s/\n/\001/'
) )
parallel $argv; parallel $argv;
set _parallel_exit_CODE $status
set -e PARALLEL_ENV set -e PARALLEL_ENV
return $_parallel_exit_CODE
end end

View file

@ -103,5 +103,7 @@ env_parallel() {
unset _list_variable_VALUES unset _list_variable_VALUES
unset _list_function_BODIES unset _list_function_BODIES
`which parallel` "$@"; `which parallel` "$@";
_parallel_exit_CODE=$?
unset PARALLEL_ENV; unset PARALLEL_ENV;
return $_parallel_exit_CODE
} }

View file

@ -108,5 +108,7 @@ env_parallel() {
unset _list_variable_VALUES unset _list_variable_VALUES
unset _list_function_BODIES unset _list_function_BODIES
`which parallel` "$@"; `which parallel` "$@";
_parallel_exit_CODE=$?
unset PARALLEL_ENV; unset PARALLEL_ENV;
return $_parallel_exit_CODE
} }

View file

@ -25,6 +25,7 @@
# or write to the Free Software Foundation, Inc., 51 Franklin St, # or write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA # Fifth Floor, Boston, MA 02110-1301 USA
set _parallel_exit_CODE=0
if ("`alias env_parallel`" == '') then if ("`alias env_parallel`" == '') then
# Activate alias # Activate alias
alias env_parallel 'setenv PARALLEL "\!*"; source `which env_parallel.tcsh`' alias env_parallel 'setenv PARALLEL "\!*"; source `which env_parallel.tcsh`'
@ -127,9 +128,11 @@ else
unset _tMpaLLfILe; unset _tMpaLLfILe;
# Use $PARALLEL set in calling alias # Use $PARALLEL set in calling alias
parallel parallel
set _parallel_exit_CODE=$status
setenv PARALLEL_ENV setenv PARALLEL_ENV
setenv PARALLEL setenv PARALLEL
endif endif
sh -c "exit 0$_parallel_exit_CODE"
# Tested working for aliases # Tested working for aliases
# alias env_parallel 'setenv PARALLEL_ENV "`alias | perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g;`";parallel \!*; setenv PARALLEL_ENV' # alias env_parallel 'setenv PARALLEL_ENV "`alias | perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g;`";parallel \!*; setenv PARALLEL_ENV'

View file

@ -109,5 +109,7 @@ env_parallel() {
unset _list_variable_VALUES unset _list_variable_VALUES
unset _list_function_BODIES unset _list_function_BODIES
`which parallel` "$@"; `which parallel` "$@";
_parallel_exit_CODE=$?
unset PARALLEL_ENV; unset PARALLEL_ENV;
return $_parallel_exit_CODE
} }

View file

@ -35,6 +35,9 @@ par_bash_man() {
env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2 env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2
env_parallel ::: true false true false
echo exit value $? should be 2
_EOF _EOF
) )
ssh bash@lo "$myscript" ssh bash@lo "$myscript"
@ -70,6 +73,9 @@ par_zsh_man() {
env_parallel -k -S server echo "\${myarray[{}]}" ::: 1 2 3; env_parallel -k -S server echo "\${myarray[{}]}" ::: 1 2 3;
env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 1 2 3; env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 1 2 3;
env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 1 2 3 env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 1 2 3
env_parallel ::: true false true false
echo exit value $? should be 2
_EOF _EOF
) )
ssh zsh@lo "$myscript" ssh zsh@lo "$myscript"
@ -107,6 +113,9 @@ par_ksh_man() {
env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2 env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2
env_parallel ::: true false true false
echo exit value $? should be 2
_EOF _EOF
) )
ssh ksh@lo "$myscript" ssh ksh@lo "$myscript"
@ -144,6 +153,9 @@ _disabled_pdksh_man() {
env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k -S server echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2; env_parallel -k --env myarray echo "\${myarray[{}]}" ::: 0 1 2;
env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2 env_parallel -k --env myarray -S server echo "\${myarray[{}]}" ::: 0 1 2
env_parallel ::: true false true false
echo exit value $? should be 2
_EOF _EOF
) )
ssh pdksh@lo "$myscript" ssh pdksh@lo "$myscript"
@ -176,6 +188,8 @@ par_tcsh_man() {
env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3 env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3 env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel ::: true false true false
echo exit value $status should be 2
_EOF _EOF
) )
ssh -tt tcsh@lo "$myscript" ssh -tt tcsh@lo "$myscript"
@ -208,6 +222,8 @@ par_csh_man() {
env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3 env_parallel -k --env myarray echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3 env_parallel -k --env myarray -S server echo \$'{myarray[{}]}' ::: 1 2 3
env_parallel ::: true false true false
echo exit value $status should be 2
_EOF _EOF
) )
ssh csh@lo "$myscript" ssh csh@lo "$myscript"
@ -244,6 +260,8 @@ par_fish_man() {
env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3 env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3
env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3 env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3
env_parallel ::: true false true false
echo exit value $status should be 2
_EOF _EOF
) )
ssh fish@lo "$myscript" ssh fish@lo "$myscript"

View file

@ -50,6 +50,7 @@ par_bash_man too
par_bash_man arrays par_bash_man arrays
par_bash_man work, par_bash_man work,
par_bash_man too par_bash_man too
par_bash_man exit value 2 should be 2
par_bash_underscore ### bash par_bash_underscore ### bash
par_bash_underscore ### Testing of --env _ par_bash_underscore ### Testing of --env _
par_bash_underscore variables in aliases in and arrays in functions work par_bash_underscore variables in aliases in and arrays in functions work
@ -62,13 +63,13 @@ par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in and arrays in functions work par_bash_underscore aliases in and arrays in functions work
par_bash_underscore aliases in functions work par_bash_underscore aliases in functions work
par_bash_underscore aliases in functions work par_bash_underscore aliases in functions work
par_bash_underscore /bin/bash: line 70: myecho: command not found par_bash_underscore /bin/bash: line 71: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 70: myecho: command not found par_bash_underscore /bin/bash: line 71: myecho: command not found
par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myecho ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 68: myfunc: command not found par_bash_underscore /bin/bash: line 69: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_bash_underscore /bin/bash: line 68: myfunc: command not found par_bash_underscore /bin/bash: line 69: myfunc: command not found
par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^ par_bash_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^^^^^^^^^
par_csh_funky 3 arg alias_works par_csh_funky 3 arg alias_works
par_csh_funky myvar works par_csh_funky myvar works
@ -103,6 +104,7 @@ par_csh_man too
par_csh_man arrays par_csh_man arrays
par_csh_man work, par_csh_man work,
par_csh_man too par_csh_man too
par_csh_man exit value 2 should be 2
par_csh_underscore ### csh par_csh_underscore ### csh
par_csh_underscore ### Testing of --env _ par_csh_underscore ### Testing of --env _
par_csh_underscore #: Command not found. par_csh_underscore #: Command not found.
@ -183,6 +185,7 @@ par_fish_man too
par_fish_man arrays par_fish_man arrays
par_fish_man work, par_fish_man work,
par_fish_man too par_fish_man too
par_fish_man exit value 2 should be 2
par_fish_underscore ### fish par_fish_underscore ### fish
par_fish_underscore ### Testing of --env _ par_fish_underscore ### Testing of --env _
par_fish_underscore variables in aliases and arrays in functions work par_fish_underscore variables in aliases and arrays in functions work
@ -262,6 +265,7 @@ par_ksh_man too
par_ksh_man arrays par_ksh_man arrays
par_ksh_man work, par_ksh_man work,
par_ksh_man too par_ksh_man too
par_ksh_man exit value 2 should be 2
par_ksh_underscore ### ksh par_ksh_underscore ### ksh
par_ksh_underscore ### Testing of --env _ par_ksh_underscore ### Testing of --env _
par_ksh_underscore variables in aliases in and arrays in functions work par_ksh_underscore variables in aliases in and arrays in functions work
@ -274,13 +278,13 @@ par_ksh_underscore aliases in and arrays in functions work
par_ksh_underscore aliases in and arrays in functions work par_ksh_underscore aliases in and arrays in functions work
par_ksh_underscore aliases in functions work par_ksh_underscore aliases in functions work
par_ksh_underscore aliases in functions work par_ksh_underscore aliases in functions work
par_ksh_underscore /usr/bin/ksh[113]: myecho: not found [No such file or directory] par_ksh_underscore /usr/bin/ksh[114]: myecho: not found [No such file or directory]
par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh[113]: myecho: not found [No such file or directory] par_ksh_underscore /usr/bin/ksh[114]: myecho: not found [No such file or directory]
par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myecho ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh: line 113: myfunc: not found par_ksh_underscore /usr/bin/ksh: line 114: myfunc: not found
par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^
par_ksh_underscore /usr/bin/ksh: line 113: myfunc: not found par_ksh_underscore /usr/bin/ksh: line 114: myfunc: not found
par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^ par_ksh_underscore OK if no myfunc ^^^^^^^^^^^^^^^^^
par_tcsh_funky par_tcsh_funky
par_tcsh_funky par_tcsh_funky
@ -320,6 +324,7 @@ par_tcsh_man too
par_tcsh_man arrays par_tcsh_man arrays
par_tcsh_man work, par_tcsh_man work,
par_tcsh_man too par_tcsh_man too
par_tcsh_man exit value 2 should be 2
par_tcsh_man Connection to lo closed. par_tcsh_man Connection to lo closed.
par_tcsh_underscore ### tcsh par_tcsh_underscore ### tcsh
par_tcsh_underscore ### Testing of --env _ par_tcsh_underscore ### Testing of --env _
@ -384,6 +389,7 @@ par_zsh_man too
par_zsh_man arrays par_zsh_man arrays
par_zsh_man work, par_zsh_man work,
par_zsh_man too par_zsh_man too
par_zsh_man exit value 2 should be 2
par_zsh_underscore ### zsh par_zsh_underscore ### zsh
par_zsh_underscore ### Testing of --env _ par_zsh_underscore ### Testing of --env _
par_zsh_underscore variables in aliases in and arrays in functions work par_zsh_underscore variables in aliases in and arrays in functions work