diff --git a/NEWS b/NEWS index b12ae6b2..23413cba 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,31 @@ -20220822 +20221022 + +New in this release: + +* --latest-line chops line length at terminal width. + +* Determine max command length faster on Microsoft Windows. + +News about GNU Parallel: + +* Distributed Task Processing with GNU Parallel https://www.youtube.com/watch?v=usbMLggdMgc + +* GNU Parallel workflow for many small, independent runs https://docs.csc.fi/support/tutorials/many/ + +* Copy a File To Multiple Directories With A Single Command on Linux https://www.linuxfordevices.com/tutorials/linux/copy-file-to-multiple-directories-with-one-command + +* Behind The Scenes: The Power Of Simple Command Line Tools At Cloud Scale https://blog.gdeltproject.org/behind-the-scenes-the-power-of-simple-command-line-tools-at-cloud-scale/ + +* Run lz4 compression in parallel using GNU parallel https://www.openguru.com/2022/09/ + +* Xargs / Parallel With Code Examples https://www.folkstalk.com/2022/09/xargs-parallel-with-code-examples.html + +* Parallel processing on a single node with GNU Parallel https://www3.cs.stonybrook.edu/~cse416/Section01/Slides/SeaWulfIntro_CSE416_09222022.pdf + +* Using GNU parallel painlessly -- from basics to bioinformatics job orchestration https://www.youtube.com/watch?v=qypUdm-IE9c + + +20220922 New in this release: diff --git a/README b/README index fd0fd556..0445853e 100644 --- a/README +++ b/README @@ -57,11 +57,11 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20220922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20220922.tar.bz2.sig - gpg parallel-20220922.tar.bz2.sig - bzip2 -dc parallel-20220922.tar.bz2 | tar xvf - - cd parallel-20220922 + wget https://ftpmirror.gnu.org/parallel/parallel-20221022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20221022.tar.bz2.sig + gpg parallel-20221022.tar.bz2.sig + bzip2 -dc parallel-20221022.tar.bz2 | tar xvf - + cd parallel-20221022 ./configure && make && sudo make install @@ -70,11 +70,11 @@ 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-20220922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20220922.tar.bz2.sig - gpg parallel-20220922.tar.bz2.sig - bzip2 -dc parallel-20220922.tar.bz2 | tar xvf - - cd parallel-20220922 + wget https://ftpmirror.gnu.org/parallel/parallel-20221022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20221022.tar.bz2.sig + gpg parallel-20221022.tar.bz2.sig + bzip2 -dc parallel-20221022.tar.bz2 | tar xvf - + cd parallel-20221022 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel @@ -122,8 +122,8 @@ will love you for it. When using programs that use GNU Parallel to process data for publication please cite: - Tange, O. (2022, September 22). GNU Parallel 20220922 ('Elizabeth'). - Zenodo. https://doi.org/10.5281/zenodo.7105792 + Tange, O. (2022, October 22). GNU Parallel 20221022 ('Nord Stream'). + Zenodo. https://doi.org/10.5281/zenodo.7239559 Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc. diff --git a/configure b/configure index dd7313fe..3272798e 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.71 for parallel 20220922. +# Generated by GNU Autoconf 2.71 for parallel 20221022. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20220922' -PACKAGE_STRING='parallel 20220922' +PACKAGE_VERSION='20221022' +PACKAGE_STRING='parallel 20221022' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1246,7 +1246,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 20220922 to adapt to many kinds of systems. +\`configure' configures parallel 20221022 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1313,7 +1313,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20220922:";; + short | recursive ) echo "Configuration of parallel 20221022:";; esac cat <<\_ACEOF @@ -1390,7 +1390,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20220922 +parallel configure 20221022 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1427,7 +1427,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 20220922, which was +It was created by parallel $as_me 20221022, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2379,7 +2379,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20220922' + VERSION='20221022' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3026,7 +3026,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 20220922, which was +This file was extended by parallel $as_me 20221022, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3090,7 +3090,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -parallel config.status 20220922 +parallel config.status 20221022 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 38c4aff3..9ecd9ad1 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel],[20220922],[bug-parallel@gnu.org]) +AC_INIT([parallel],[20221022],[bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/doc/haikus b/doc/haikus index b70e4a0c..df3d6ae2 100644 --- a/doc/haikus +++ b/doc/haikus @@ -7,9 +7,6 @@ Quote of the month: Got around to using GNU parallel for the first time from a suggestion by @jdwasmuth ... now I'm wishing I started using this years ago -- Stefan Gavriliuc @GavriliucStefan@twitter - If used properly, #gnuparallel actually enables time travel. - -- Dr. James Wasmuth @jdwasmuth@twitter - I’m a big fan of GNU parallel! -- Scott Cain @scottjcain@twitter @@ -207,6 +204,9 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html === Used === + If used properly, #gnuparallel actually enables time travel. + -- Dr. James Wasmuth @jdwasmuth@twitter + reduced our backend test pipelines from 4 to 1.30 hrs. gnu parallel for the win!!! -- Swapnil Sahu @CaffeinatedWryy@twitter diff --git a/doc/release_new_version b/doc/release_new_version index b01dde6a..bdb6694f 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -255,31 +255,40 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20221022 ('Керчь/Nord Stream/Annectxation/DART/Mahsa Amini/Mobilising/Niemann') released +Subject: GNU Parallel 20221022 ('Nord Stream') released -GNU Parallel 20221022 ('') has been released. It is available for download at: lbry://@GnuParallel:4 +GNU Parallel 20221022 ('Nord Stream') has been released. It is available for download at: lbry://@GnuParallel:4 Quote of the month: - <<>> - + If used properly, #gnuparallel actually enables time travel. + -- Dr. James Wasmuth @jdwasmuth@twitter + New in this release: -* +* --latest-line chops line length at terminal width. + +* Determine max command length faster on Microsoft Windows. * Bug fixes and man page updates. News about GNU Parallel: -https://www.youtube.com/watch?v=usbMLggdMgc +* Distributed Task Processing with GNU Parallel https://www.youtube.com/watch?v=usbMLggdMgc -https://docs.csc.fi/support/tutorials/many/ -https://www.linuxfordevices.com/tutorials/linux/copy-file-to-multiple-directories-with-one-command -https://blog.gdeltproject.org/behind-the-scenes-the-power-of-simple-command-line-tools-at-cloud-scale/ -https://www.openguru.com/2022/09/ -https://www.folkstalk.com/2022/09/xargs-parallel-with-code-examples.html -https://www3.cs.stonybrook.edu/~cse416/Section01/Slides/SeaWulfIntro_CSE416_09222022.pdf -https://www.youtube.com/watch?v=qypUdm-IE9c +* GNU Parallel workflow for many small, independent runs https://docs.csc.fi/support/tutorials/many/ + +* Copy a File To Multiple Directories With A Single Command on Linux https://www.linuxfordevices.com/tutorials/linux/copy-file-to-multiple-directories-with-one-command + +* Behind The Scenes: The Power Of Simple Command Line Tools At Cloud Scale https://blog.gdeltproject.org/behind-the-scenes-the-power-of-simple-command-line-tools-at-cloud-scale/ + +* Run lz4 compression in parallel using GNU parallel https://www.openguru.com/2022/09/ + +* Xargs / Parallel With Code Examples https://www.folkstalk.com/2022/09/xargs-parallel-with-code-examples.html + +* Parallel processing on a single node with GNU Parallel https://www3.cs.stonybrook.edu/~cse416/Section01/Slides/SeaWulfIntro_CSE416_09222022.pdf + +* Using GNU parallel painlessly -- from basics to bioinformatics job orchestration https://www.youtube.com/watch?v=qypUdm-IE9c GNU Parallel - For people who live life in the parallel lane. diff --git a/src/env_parallel.ash b/src/env_parallel.ash index a6967a79..3d857081 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -395,7 +395,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 20193783..757b2f19 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -397,7 +397,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 4bd11abf..a986a7b3 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -395,7 +395,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 4c10d8a2..bf956374 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -378,7 +378,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 82b7fdb9..23e34cf8 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -380,7 +380,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 48d74474..929d8e72 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -395,7 +395,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 6c2e851e..2b2d6adb 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -370,7 +370,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20220923 (GNU parallel `parallel --minversion 1`)" + echo "parset 20221022 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2022 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 38f0af00..2f5f8889 100755 --- a/src/niceload +++ b/src/niceload @@ -26,7 +26,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20220923; +$Global::version = 20221022; 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 3faa25fe..26e60d2f 100755 --- a/src/parallel +++ b/src/parallel @@ -2680,7 +2680,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20220923; + $Global::version = 20221022; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -5560,8 +5560,8 @@ sub usage() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - " Tange, O. (2022, September 22). GNU Parallel 20220922 ('Elizabeth').", - " Zenodo. https://doi.org/10.5281/zenodo.7105792", + " Tange, O. (2022, October 22). GNU Parallel 20221022 ('Nord Stream').", + " Zenodo. https://doi.org/10.5281/zenodo.7239559", "", # Before changing these lines, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice @@ -5593,8 +5593,8 @@ sub citation_notice() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - " Tange, O. (2022, September 22). GNU Parallel 20220922 ('Elizabeth').", - " Zenodo. https://doi.org/10.5281/zenodo.7105792", + " Tange, O. (2022, October 22). GNU Parallel 20221022 ('Nord Stream').", + " Zenodo. https://doi.org/10.5281/zenodo.7239559", "", # Before changing these line, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and @@ -5721,20 +5721,20 @@ sub citation() { "If you use programs that use GNU Parallel to process data for an article in a", "scientific publication, please cite:", "", - "\@software{tange_2022_7105792,", + "\@software{tange_2022_7239559,", " author = {Tange, Ole},", - " title = {GNU Parallel 20220922 ('Elizabeth')},", - " month = Sep,", + " title = {GNU Parallel 20221022 ('Nord Stream')},", + " month = Oct,", " year = 2022,", " note = {{GNU Parallel is a general parallelizer to run", " multiple serial command line programs in parallel", " without changing them.}},", " publisher = {Zenodo},", - " doi = {10.5281/zenodo.7105792},", - " url = {https://doi.org/10.5281/zenodo.7105792}", + " doi = {10.5281/zenodo.7239559},", + " url = {https://doi.org/10.5281/zenodo.7239559}", "}", "", - "(Feel free to use \\nocite{tange_2022_7105792})", + "(Feel free to use \\nocite{tange_2022_7239559})", "", # Before changing these lines, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and @@ -9248,6 +9248,7 @@ sub filter_through_compress($) { # When the echo is written to $comfile, # it is known that output file is opened, # thus output file can then be removed by the decompressor. + # empty_input_wrapper is needed for plzip my $wpid = open(my $fdw,"|-", "(echo > $comfile; ". empty_input_wrapper($opt::compress_program).") >". ::Q($self->fh($fdno,'name'))) || die $?; @@ -10760,6 +10761,7 @@ sub interactive_start($) { $ENV{'PARALLEL_TMUX'} ||= "tmux"; if(not $tmuxsocket) { $tmuxsocket = ::tmpname("tms"); + ::debug("tmux", "Start: $ENV{'PARALLEL_TMUX'} -S $tmuxsocket attach"); if($opt::fg) { if(not fork) { # Run tmux in the foreground diff --git a/src/parallel.pod b/src/parallel.pod index 877135ee..0dce7c78 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -749,7 +749,7 @@ See also: B<--basefile> B<--transfer> B<--transferfile> B<--sshlogin> B<--return> -=item B<--color> (alpha testing) +=item B<--color> (beta testing) Colour output. @@ -761,9 +761,9 @@ B<--color> is ignored when using B<-u>. See also: B<--color-failed> -=item B<--color-failed> (alpha testing) +=item B<--color-failed> (beta testing) -=item B<--cf> (alpha testing) +=item B<--cf> (beta testing) Colour the output from failing jobs white on red. @@ -1268,7 +1268,7 @@ soon,fail=1-99% =back -=item B<--header> I (beta testing) +=item B<--header> I Use regexp as header. @@ -1594,9 +1594,9 @@ Example: See also: B<--line-buffer> -=item B<--line-buffer> (alpha testing) +=item B<--line-buffer> (beta testing) -=item B<--lb> (alpha testing) +=item B<--lb> (beta testing) Buffer output on line basis. @@ -1937,7 +1937,7 @@ called with B<--sshlogin>). See also: B<--profile> -=item B<--plus> (beta testing) +=item B<--plus> Add more replacement strings. @@ -2013,7 +2013,7 @@ B<--progress> on a running GNU B process. See also: B<--eta> B<--bar> -=item B<--max-line-length-allowed> +=item B<--max-line-length-allowed> (alpha testing) Print maximal command line length. @@ -2496,7 +2496,7 @@ I=0 means infinite. See also: B<--term-seq> B<--sshlogin> -=item B<--return> I (beta testing) +=item B<--return> I Transfer files from remote computers. @@ -3020,13 +3020,13 @@ I is in seconds, but can be postfixed with s, m, h, or d. See also: TIME POSTFIXES B<--sshlogin> B<--delay> -=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (alpha testing) +=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (beta testing) -=item B<--sshlogin> I<@hostgroup> (alpha testing) +=item B<--sshlogin> I<@hostgroup> (beta testing) -=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (alpha testing) +=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (beta testing) -=item B<-S> I<@hostgroup> (alpha testing) +=item B<-S> I<@hostgroup> (beta testing) Distribute jobs to remote computers. @@ -3331,7 +3331,7 @@ Print the job to be run on stderr (standard error). See also: B<-v> B<--interactive> -=item B<--transfer> (beta testing) +=item B<--transfer> Transfer files to remote computers. @@ -3340,9 +3340,9 @@ Shorthand for: B<--transferfile {}>. See also: B<--transferfile>. -=item B<--transferfile> I (beta testing) +=item B<--transferfile> I -=item B<--tf> I (beta testing) +=item B<--tf> I Transfer I to remote computers. @@ -3394,7 +3394,7 @@ See also: B<--workdir> B<--sshlogin> B<--basefile> B<--return> B<--cleanup> -=item B<--trc> I (beta testing) +=item B<--trc> I Transfer, Return, Cleanup. Shorthand for: B<--transfer> B<--return> I B<--cleanup> diff --git a/src/parallel_design.pod b/src/parallel_design.pod index 51fff964..85aee124 100644 --- a/src/parallel_design.pod +++ b/src/parallel_design.pod @@ -261,7 +261,9 @@ More detailed it works like this: cattail ( rm tmpfile; compound decompress ) < tmpfile This complex setup is to make sure compress program is only started if -there is input. +there is input. This means each job will cause 8 processes to run. If +combined with B<--keep-order> these processes will run until the job +has been printed. =head2 Wrapping diff --git a/src/parsort b/src/parsort index 015b6cd3..3cc64d71 100755 --- a/src/parsort +++ b/src/parsort @@ -122,7 +122,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20220923; +$Global::version = 20221022; if($opt::version) { version(); exit 0; } @Global::sortoptions = grep { ! /^-D$/ } shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]); diff --git a/src/sql b/src/sql index 80fd2218..b19f82ae 100755 --- a/src/sql +++ b/src/sql @@ -667,7 +667,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20220923; + $Global::version = 20221022; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-local-10s.sh b/testsuite/tests-to-run/parallel-local-10s.sh index ff9632aa..181a6489 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -182,8 +182,14 @@ par_failing_compressor() { echo 'Test --tag/--line-buffer/--files in all combinations' echo 'Test working/failing compressor/decompressor in all combinations' echo '(-k is used as a dummy argument)' + doit() { + # Print something to stdout/stderr + echo "$@" + echo "$@" >&2 + } + export -f doit stdout parallel -vk --header : --argsep ,,, \ - parallel -k {tag} {lb} {files} --compress --compress-program {comp} --decompress-program {decomp} echo ::: C={comp},D={decomp} \ + parallel -k {tag} {lb} {files} --compress --compress-program {comp} --decompress-program {decomp} doit ::: C={comp},D={decomp} \ ,,, tag --tag -k \ ,,, lb --line-buffer -k \ ,,, files --files -k \ diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index 024fa7bb..774ae2c8 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -106,86 +106,118 @@ par_failing_compressor Compress with failing (de)compressor par_failing_compressor Test --tag/--line-buffer/--files in all combinations par_failing_compressor Test working/failing compressor/decompressor in all combinations par_failing_compressor (-k is used as a dummy argument) -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true +par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true -par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor C=cat;true,D=cat;true C=cat;true,D=cat;true +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false -par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor C=cat;true,D=cat;false C=cat;true,D=cat;false +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true C=cat;false,D=cat;true +par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor C=cat;true,D=cat;true +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor C=cat;true,D=cat;false +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true +par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;false +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile -par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor /tmp/parallel-local-10s-tmpdir/tmpfile par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' echo ::: C='cat;true',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor C=cat;true,D=cat;true -par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' echo ::: C='cat;true',D='cat;false' +par_failing_compressor C=cat;true,D=cat;true +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor C=cat;true,D=cat;false -par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' echo ::: C='cat;false',D='cat;true' +par_failing_compressor C=cat;true,D=cat;false +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor C=cat;false,D=cat;true par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' echo ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true +par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor C=cat;false,D=cat;false par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;false par_fifo_under_csh ### Test --fifo under csh par_fifo_under_csh 1048571 par_fifo_under_csh 1