diff --git a/README b/README index fd84a352..96de9439 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-20230622.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20230622.tar.bz2.sig - gpg parallel-20230622.tar.bz2.sig - bzip2 -dc parallel-20230622.tar.bz2 | tar xvf - - cd parallel-20230622 + wget https://ftpmirror.gnu.org/parallel/parallel-20230722.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20230722.tar.bz2.sig + gpg parallel-20230722.tar.bz2.sig + bzip2 -dc parallel-20230722.tar.bz2 | tar xvf - + cd parallel-20230722 ./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-20230622.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20230622.tar.bz2.sig - gpg parallel-20230622.tar.bz2.sig - bzip2 -dc parallel-20230622.tar.bz2 | tar xvf - - cd parallel-20230622 + wget https://ftpmirror.gnu.org/parallel/parallel-20230722.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20230722.tar.bz2.sig + gpg parallel-20230722.tar.bz2.sig + bzip2 -dc parallel-20230722.tar.bz2 | tar xvf - + cd parallel-20230722 ./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. (2023, June 22). GNU Parallel 20230622 ('Nova Kakhovka'). - Zenodo. https://doi.org/10.5281/zenodo.8051271 + Tange, O. (2023, July 22). GNU Parallel 20230722 ('Приго́жин'). + Zenodo. https://doi.org/10.5281/zenodo.8175685 Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc. diff --git a/configure b/configure index 660aef18..a8eb15a1 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 20230622. +# Generated by GNU Autoconf 2.71 for parallel 20230722. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20230622' -PACKAGE_STRING='parallel 20230622' +PACKAGE_VERSION='20230722' +PACKAGE_STRING='parallel 20230722' 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 20230622 to adapt to many kinds of systems. +\`configure' configures parallel 20230722 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 20230622:";; + short | recursive ) echo "Configuration of parallel 20230722:";; 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 20230622 +parallel configure 20230722 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 20230622, which was +It was created by parallel $as_me 20230722, 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='20230622' + VERSION='20230722' 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 20230622, which was +This file was extended by parallel $as_me 20230722, 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 20230622 +parallel config.status 20230722 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index d641e366..7ce63391 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel],[20230622],[bug-parallel@gnu.org]) +AC_INIT([parallel],[20230722],[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 c40d8c4d..eb9a42ca 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -280,6 +280,7 @@ New in this release: * Bug fixes and man page updates. + GNU Parallel - For people who live life in the parallel lane. If you like GNU Parallel record a video testimonial: Say who you are, what you use GNU Parallel for, how it helps you, and what you like most about it. Include a command that uses GNU Parallel if you feel like it. diff --git a/packager/obs/home-tange/parallel/.osc/_files b/packager/obs/home-tange/parallel/.osc/_files index 2339218a..cb4da6fc 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 06cf5bd7..dc5d694c 100644 --- a/packager/obs/home-tange/parallel/.osc/parallel.spec +++ b/packager/obs/home-tange/parallel/.osc/parallel.spec @@ -1,7 +1,7 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20230622 +Version: 20230722 Release: 2.1 License: GPL-3.0-or-later Group: Productivity/File utilities diff --git a/src/env_parallel.ash b/src/env_parallel.ash index 7745df01..30e1580d 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -393,7 +393,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 3f55b53d..a7ca60f5 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -395,7 +395,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 c782960c..e2939e67 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -393,7 +393,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 29b324fb..f641f921 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -376,7 +376,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 2b396a58..097a3ebe 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -378,7 +378,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 e6b99714..f6265f2b 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -393,7 +393,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 5b126f94..4cbe7c30 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -368,7 +368,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20230622 (GNU parallel `parallel --minversion 1`)" + echo "parset 20230722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2023 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 d4277137..764704a9 100755 --- a/src/niceload +++ b/src/niceload @@ -26,7 +26,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20230622; +$Global::version = 20230722; 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 691ea01c..7ad7d0a2 100755 --- a/src/parallel +++ b/src/parallel @@ -2800,7 +2800,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20230623; + $Global::version = 20230722; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -5761,8 +5761,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. (2023, June 22). GNU Parallel 20230622 ('Nova Kakhovka').", - " Zenodo. https://doi.org/10.5281/zenodo.8051271", + " Tange, O. (2023, July 22). GNU Parallel 20230722 ('Приго́жин').", + " Zenodo. https://doi.org/10.5281/zenodo.8175685", "", # Before changing these lines, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice @@ -5794,8 +5794,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. (2023, June 22). GNU Parallel 20230622 ('Nova Kakhovka').", - " Zenodo. https://doi.org/10.5281/zenodo.8051271", + " Tange, O. (2023, July 22). GNU Parallel 20230722 ('Приго́жин').", + " Zenodo. https://doi.org/10.5281/zenodo.8175685", "", # Before changing these line, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and @@ -5922,20 +5922,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_2023_8051271,", + "\@software{tange_2023_8175685,", " author = {Tange, Ole},", - " title = {GNU Parallel 20230622 ('Nova Kakhovka')},", - " month = Jun,", + " title = {GNU Parallel 20230722 ('Приго́жин')},", + " month = Jul,", " year = 2023,", " 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.8051271},", - " url = {https://doi.org/10.5281/zenodo.8051271}", + " doi = {10.5281/zenodo.8175685},", + " url = {https://doi.org/10.5281/zenodo.8175685}", "}", "", - "(Feel free to use \\nocite{tange_2023_8051271})", + "(Feel free to use \\nocite{tange_2023_8175685})", "", # Before changing these lines, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and diff --git a/src/parallel.pod b/src/parallel.pod index 43471ad4..e22b7d5d 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -1388,13 +1388,13 @@ If the host is long, you can use B to pretty print it: See also: B<--resume> B<--resume-failed> -=item B<--jobs> I (beta testing) +=item B<--jobs> I -=item B<-j> I (beta testing) +=item B<-j> I -=item B<--max-procs> I (beta testing) +=item B<--max-procs> I -=item B<-P> I (beta testing) +=item B<-P> I Number of jobslots on each machine. @@ -1905,7 +1905,7 @@ See also: B<--block> B<--block-timeout> B<--recstart> B<--recend> B<--fifo> B<--cat> B<--pipe-part> B<-N> B<-L> B<--round-robin> -=item B<--pipe-part> (beta testing) +=item B<--pipe-part> Pipe parts of a physical file. diff --git a/src/parsort b/src/parsort index f9252c91..ffac0a92 100755 --- a/src/parsort +++ b/src/parsort @@ -137,7 +137,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20230622; +$Global::version = 20230722; if($opt::version) { version(); exit 0; } # Remove -D and --parallel=N my @s = (grep { ! /^-D$|^--parallel=\S+$/ } diff --git a/src/sql b/src/sql index 109d5584..fb15ad5a 100755 --- a/src/sql +++ b/src/sql @@ -670,7 +670,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20230622; + $Global::version = 20230722; $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 616ed855..b6624e5a 100644 --- a/testsuite/tests-to-run/parallel-local-10s.sh +++ b/testsuite/tests-to-run/parallel-local-10s.sh @@ -297,7 +297,9 @@ par_failing_compressor() { } export -f doit stdout parallel -vk --header : --argsep ,,, \ - parallel -k {tag} {lb} {files} --compress --compress-program {comp} --decompress-program {decomp} doit ::: C={comp},D={decomp} \ + stdout 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 --files0 -k \ @@ -418,17 +420,6 @@ par_xargs_compat() { (seq 1 10; echo 1234; seq 12 15) | stdsort xargs -s 10 -x echo } -par_sem_2jobs() { - echo '### Test semaphore 2 jobs running simultaneously' - parallel --semaphore --id 2jobs -u -j2 'echo job1a 1; sleep 4; echo job1b 3' - sleep 0.5 - parallel --semaphore --id 2jobs -u -j2 'echo job2a 2; sleep 4; echo job2b 5' - sleep 0.5 - parallel --semaphore --id 2jobs -u -j2 'echo job3a 4; sleep 4; echo job3b 6' - parallel --semaphore --id 2jobs --wait - echo done -} - par_line_buffer() { echo "### --line-buffer" tmp1=$(mktemp) diff --git a/testsuite/tests-to-run/parallel-local-race01.sh b/testsuite/tests-to-run/parallel-local-race01.sh index b0042365..11e6836d 100755 --- a/testsuite/tests-to-run/parallel-local-race01.sh +++ b/testsuite/tests-to-run/parallel-local-race01.sh @@ -4,6 +4,17 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +par_sem_2jobs() { + echo '### Test semaphore 2 jobs running simultaneously' + parallel --semaphore --id 2jobs -u -j2 'echo job1a 1; sleep 4; echo job1b 3' + sleep 0.5 + parallel --semaphore --id 2jobs -u -j2 'echo job2a 2; sleep 4; echo job2b 5' + sleep 0.5 + parallel --semaphore --id 2jobs -u -j2 'echo job3a 4; sleep 4; echo job3b 6' + parallel --semaphore --id 2jobs --wait + echo done +} + par_2jobs() { echo '### Test similar example as from man page - run 2 jobs simultaneously' echo 'Expect done: 1 2 5 3 4' diff --git a/testsuite/tests-to-run/parallel-macos.sh b/testsuite/tests-to-run/parallel-macos.sh index df1ab22b..491ec343 100644 --- a/testsuite/tests-to-run/parallel-macos.sh +++ b/testsuite/tests-to-run/parallel-macos.sh @@ -174,7 +174,9 @@ macsshlogin=$(parallel --halt now,success=1 ssh {} echo {} ::: ota@mac macosx.p) if scp /usr/local/bin/parallel $macsshlogin:bin/ ; then true else - echo "Mac not found. Skip testing" + echo "**" + echo "** Mac not found. Skip testing" + echo "**" exit 1 fi diff --git a/testsuite/wanted-results/parallel-local-10s b/testsuite/wanted-results/parallel-local-10s index a9d4033a..8a8a4dd3 100644 --- a/testsuite/wanted-results/parallel-local-10s +++ b/testsuite/wanted-results/parallel-local-10s @@ -114,117 +114,117 @@ 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 --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' +par_failing_compressor stdout parallel -k --tag --line-buffer --files0 --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/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' +par_failing_compressor stdout parallel -k --tag --line-buffer --files0 --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/tmpfile -par_failing_compressor parallel -k --tag --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor stdout parallel -k --tag --line-buffer --files0 --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/tmpfile par_failing_compressor parallel: Error: cat;false failed. par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' +par_failing_compressor stdout parallel -k --tag --line-buffer --files0 --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/tmpfile par_failing_compressor parallel: Error: cat;false failed. 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 stdout 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 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 stdout 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 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 stdout 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 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 C=cat;false,D=cat;true C=cat;false,D=cat;true +par_failing_compressor stdout 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 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 --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: 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 stdout parallel -k --tag -k --files0 --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/tmpfile -par_failing_compressor parallel -k --tag -k --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' +par_failing_compressor stdout parallel -k --tag -k --files0 --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/tmpfile -par_failing_compressor parallel -k --tag -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor stdout parallel -k --tag -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. par_failing_compressor C=cat;false,D=cat;true /TMP/tmpfile par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor stdout parallel -k --tag -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k --tag -k --files0 --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/tmpfile par_failing_compressor parallel: Error: cat;false failed. -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 stdout 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 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 stdout 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 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 stdout parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' 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 C=cat;false,D=cat;true C=cat;false,D=cat;true +par_failing_compressor stdout parallel -k --tag -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' 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 --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: 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 stdout parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor /TMP/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' +par_failing_compressor stdout parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor /TMP/tmpfile -par_failing_compressor parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor stdout parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' par_failing_compressor /TMP/tmpfile par_failing_compressor parallel: Error: cat;false failed. par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' +par_failing_compressor stdout parallel -k -k --line-buffer --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor /TMP/tmpfile par_failing_compressor parallel: Error: cat;false failed. 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 stdout 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 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 stdout 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 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 stdout 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 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 parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true +par_failing_compressor stdout 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 parallel: Error: cat;false failed. 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_failing_compressor parallel -k -k -k --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' +par_failing_compressor stdout parallel -k -k -k --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true' par_failing_compressor /TMP/tmpfile -par_failing_compressor parallel -k -k -k --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' +par_failing_compressor stdout parallel -k -k -k --files0 --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false' par_failing_compressor /TMP/tmpfile -par_failing_compressor parallel -k -k -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor stdout parallel -k -k -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' +par_failing_compressor parallel: Error: cat;false failed. par_failing_compressor /TMP/tmpfile par_failing_compressor parallel: Error: cat;false failed. +par_failing_compressor stdout parallel -k -k -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor parallel: Error: cat;false failed. -par_failing_compressor parallel -k -k -k --files0 --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' par_failing_compressor /TMP/tmpfile par_failing_compressor parallel: Error: cat;false failed. -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 stdout 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 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 stdout 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 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 stdout parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true' 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 parallel: Error: cat;false failed. +par_failing_compressor C=cat;false,D=cat;true +par_failing_compressor stdout parallel -k -k -k -k --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false' +par_failing_compressor parallel: Error: cat;false failed. 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 parallel: Warning: --cat/--fifo fails under csh if $TMPDIR contains newline. @@ -1118,14 +1118,6 @@ par_retries_all_fail 5 par_retries_all_fail 6 par_retries_all_fail 7 par_retries_all_fail 8 -par_sem_2jobs ### Test semaphore 2 jobs running simultaneously -par_sem_2jobs job1a 1 -par_sem_2jobs job2a 2 -par_sem_2jobs job1b 3 -par_sem_2jobs job3a 4 -par_sem_2jobs job2b 5 -par_sem_2jobs job3b 6 -par_sem_2jobs done par_seqreplace_long_line ### Test --seqreplace and line too long par_seqreplace_long_line 9 1 1 101 par_seqreplace_long_line 90 1 1 201 diff --git a/testsuite/wanted-results/parallel-local-race01 b/testsuite/wanted-results/parallel-local-race01 index a8683cd0..10e44163 100644 --- a/testsuite/wanted-results/parallel-local-race01 +++ b/testsuite/wanted-results/parallel-local-race01 @@ -1,3 +1,20 @@ +par_2jobs ### Test similar example as from man page - run 2 jobs simultaneously +par_2jobs Expect done: 1 2 5 3 4 +par_2jobs Scheduling 5 +par_2jobs starting 5 +par_2jobs Scheduling 1 +par_2jobs starting 1 +par_2jobs Scheduling 2 +par_2jobs done 1 +par_2jobs starting 2 +par_2jobs Scheduling 3 +par_2jobs done 2 +par_2jobs starting 3 +par_2jobs Scheduling 4 +par_2jobs done 5 +par_2jobs starting 4 +par_2jobs done 3 +par_2jobs done 4 par_bug56403 bug #56403: --pipe block by time. par_bug56403 1 job1a par_bug56403 2 job2b @@ -108,6 +125,14 @@ par_print_before_halt_on_error 2 exit code 1 par_print_before_halt_on_error 2 0.1 0.1 par_print_before_halt_on_error 2 parallel: This job failed: par_print_before_halt_on_error 2 perl -e 'sleep 1; sleep $ARGV[0]; print STDERR ",@ARGV,"\n"; 2 > 0 ? exit shift : exit not shift;' 1 +par_sem_2jobs ### Test semaphore 2 jobs running simultaneously +par_sem_2jobs job1a 1 +par_sem_2jobs job2a 2 +par_sem_2jobs job1b 3 +par_sem_2jobs job3a 4 +par_sem_2jobs job2b 5 +par_sem_2jobs job3b 6 +par_sem_2jobs done par_sem_dir ### bug #58985: sem stall if .parallel/semaphores is chmod 0 par_sem_dir parallel: Error: Semaphoredir must be writable: '~/.parallel/semaphores' par_tmux_termination ### --tmux test - check termination diff --git a/testsuite/wanted-results/parallel-remote1 b/testsuite/wanted-results/parallel-remote1 index 28aa75ec..49e385d0 100644 --- a/testsuite/wanted-results/parallel-remote1 +++ b/testsuite/wanted-results/parallel-remote1 @@ -9,6 +9,7 @@ par_controlmaster_is_faster -M should finish first - eventhough there are 2x job par_controlmaster_is_faster With --controlmaster - finish first par_controlmaster_is_faster No --controlmaster - finish last par_force_number_of_cpu ### Check forced number of CPUs being respected +par_force_number_of_cpu ssh is slow, so should only get 7. : should get the rest par_force_number_of_cpu 7 par_force_number_of_cpu 13 par_special_ssh ### Test use special ssh diff --git a/testsuite/wanted-results/sem01 b/testsuite/wanted-results/sem01 index 2acac743..3987a1af 100644 --- a/testsuite/wanted-results/sem01 +++ b/testsuite/wanted-results/sem01 @@ -1,20 +1,3 @@ -par_2jobs ### Test similar example as from man page - run 2 jobs simultaneously -par_2jobs Expect done: 1 2 5 3 4 -par_2jobs Scheduling 5 -par_2jobs starting 5 -par_2jobs Scheduling 1 -par_2jobs starting 1 -par_2jobs Scheduling 2 -par_2jobs done 1 -par_2jobs starting 2 -par_2jobs Scheduling 3 -par_2jobs done 2 -par_2jobs starting 3 -par_2jobs Scheduling 4 -par_2jobs done 5 -par_2jobs starting 4 -par_2jobs done 3 -par_2jobs done 4 par_bg_p_should_error ### Test bug #33621: --bg -p should give an error message par_bg_p_should_error parallel: Error: Jobs running in the background cannot be interactive. par_exit ### Exit values diff --git a/testsuite/wanted-results/sql01 b/testsuite/wanted-results/sql01 index 6155777d..9ea4e264 100644 --- a/testsuite/wanted-results/sql01 +++ b/testsuite/wanted-results/sql01 @@ -60,7 +60,7 @@ par_dburl_user_password_host_port ### Test dburl with username password host por par_dburl_user_password_host_port Test dburl with username password host port par_dburl_user_password_host_port OK par_listproc ### Test --show-processlist|proclist|listproc -par_listproc 3 34 +par_listproc 3 32 par_listproc 2 17 par_listproc 2 17 par_noheaders ### Test --noheaders --no-headers -n