From b4b3da4b0f95447940614c4ee889270faa784e25 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Sun, 21 Jul 2024 05:21:21 +0200 Subject: [PATCH] Released as 20240722 ('Assange') --- NEWS | 26 ++ README | 24 +- configure | 20 +- configure.ac | 2 +- doc/haikus | 15 +- doc/release_new_version | 27 +- packager/obs/home-tange/parallel/.osc/_files | 12 +- .../home-tange/parallel/.osc/parallel.spec | 2 +- src/env_parallel.ash | 2 +- src/env_parallel.bash | 2 +- src/env_parallel.dash | 2 +- src/env_parallel.fish | 6 +- src/env_parallel.ksh | 2 +- src/env_parallel.mksh | 2 +- src/env_parallel.pod | 6 +- src/env_parallel.sh | 2 +- src/env_parallel.zsh | 2 +- src/niceload | 2 +- src/parallel | 22 +- src/parallel.pod | 6 +- src/parsort | 2 +- src/sql | 2 +- testsuite/Makefile | 8 +- testsuite/tests-to-run/niceload01.sh | 2 +- testsuite/tests-to-run/parallel-local-0.3s.sh | 0 testsuite/tests-to-run/parallel-local-leak.sh | 2 +- testsuite/tests-to-run/parallel-local-ssh4.sh | 3 +- testsuite/tests-to-run/parallel-local-ssh7.sh | 51 ++- testsuite/tests-to-run/parallel-ssh-fish.sh | 262 ++++++++++++++ testsuite/tests-to-run/sql03.sh | 3 + testsuite/wanted-results/parallel-local-ssh4 | 3 +- testsuite/wanted-results/parallel-local-ssh7 | 319 +++++++++--------- 32 files changed, 576 insertions(+), 265 deletions(-) mode change 100644 => 100755 testsuite/tests-to-run/parallel-local-0.3s.sh mode change 100644 => 100755 testsuite/tests-to-run/parallel-local-leak.sh create mode 100755 testsuite/tests-to-run/parallel-ssh-fish.sh diff --git a/NEWS b/NEWS index 2431e06f..424a25b3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,29 @@ +20240722 + +New in this release: + +* No new features. This is a candidate for a stable release. + +* Bug fixes and man page updates. + +News about GNU Parallel: + +* Scientific Workflows at Scale using GNU Parallel + https://web.cvent.com/event/f318e73c-2230-432a-a044-b75625020543/websitePage:afd80266-008e-414b-9f94-2fd9b4dd1924?session=fe79a785-ec60-414c-8d2b-c29208f53d4c&shareLink=true + +* Use GNU Parallel to render blender movies distributed by a bunch of + nodes https://github.com/tfmoraes/blender_gnu_parallel_render + +* Lessons Learned from Scaling to Multi-Terabyte Datasets + https://v2thegreat.com/2024/06/19/lessons-learned-from-scaling-to-multi-terabyte-datasets/ + +* Efisiensi Maksimal: Cara Paralelisasi Perintah di CLI Linux + https://medium.com/@nfrozi/efisiensi-maksimal-cara-paralelisasi-perintah-di-cli-linux-f4fda3afe2a0 + +* Introduction to GNU parallel + https://datascience.101workbook.org/06-hpc/06-parallel/01-intro-to-gnu-parallel/#gsc.tab=0 + + 20240622 New in this release: diff --git a/README b/README index df2cf8f7..b5b0d4f6 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-20240622.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20240622.tar.bz2.sig - gpg parallel-20240622.tar.bz2.sig - bzip2 -dc parallel-20240622.tar.bz2 | tar xvf - - cd parallel-20240622 + wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2.sig + gpg parallel-20240722.tar.bz2.sig + bzip2 -dc parallel-20240722.tar.bz2 | tar xvf - + cd parallel-20240722 ./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-20240622.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20240622.tar.bz2.sig - gpg parallel-20240622.tar.bz2.sig - bzip2 -dc parallel-20240622.tar.bz2 | tar xvf - - cd parallel-20240622 + wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20240722.tar.bz2.sig + gpg parallel-20240722.tar.bz2.sig + bzip2 -dc parallel-20240722.tar.bz2 | tar xvf - + cd parallel-20240722 ./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. (2024, June 22). GNU Parallel 20240622 ('34 counts'). - Zenodo. https://doi.org/10.5281/zenodo.12518196 + Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange'). + Zenodo. https://doi.org/10.5281/zenodo.12789352 Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc. diff --git a/configure b/configure index e05195cc..a5bd25ad 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 20240622. +# Generated by GNU Autoconf 2.71 for parallel 20240722. # # Report bugs to . # @@ -610,8 +610,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20240622' -PACKAGE_STRING='parallel 20240622' +PACKAGE_VERSION='20240722' +PACKAGE_STRING='parallel 20240722' 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 20240622 to adapt to many kinds of systems. +\`configure' configures parallel 20240722 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 20240622:";; + short | recursive ) echo "Configuration of parallel 20240722:";; 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 20240622 +parallel configure 20240722 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 20240622, which was +It was created by parallel $as_me 20240722, 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='20240622' + VERSION='20240722' 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 20240622, which was +This file was extended by parallel $as_me 20240722, 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 20240622 +parallel config.status 20240722 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index f018a512..b534459e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel],[20240622],[bug-parallel@gnu.org]) +AC_INIT([parallel],[20240722],[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 241f94d8..9c5d9b2d 100644 --- a/doc/haikus +++ b/doc/haikus @@ -15,14 +15,14 @@ Output is in sync write a haiku about gnu parallel and the :::+ option + o GNU Parallel é muito foda, acabei de usar ele pra dividir um CSV + -- @pumpkin_link@twitter Johnny Cage.dev + GNU Parallel and Tmux are the two tools I rely on daily for my work. Indispensable. -- @mitchelvalentino1569@YouTube - - parallel is frickin great for launching jobs on multiple - machines. Ansible and Jenkins and others may be good too but I was - able to jump right in with parallel. - -- dwhite21787@reddit + 今始めて知ったが GNU parallel ってコマンドクソ便利じゃん。なんで今まで自分のアンテナに引っかからなかったんだろう…。 + -- @kawaz@twitter Yoshiaki Kawazu Big fan of GNU parallel! -- lovelyloafers@reddit @@ -221,6 +221,11 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html === Used === + parallel is frickin great for launching jobs on multiple + machines. Ansible and Jenkins and others may be good too but I was + able to jump right in with parallel. + -- dwhite21787@reddit + The most glorious 15,000 lines of Perl ever written. -- @nibblrrr7124@YouTube diff --git a/doc/release_new_version b/doc/release_new_version index d8eebdbb..461f946a 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -268,40 +268,35 @@ from:tange@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org stable-bcc: Jesse Alama -Subject: GNU Parallel 20240722 ('Assange') released +Subject: GNU Parallel 20240722 ('Assange') released [stable] GNU Parallel 20240722 ('Assange') has been released. It is available for download at: lbry://@GnuParallel:4 Quote of the month: - <<>> + parallel is frickin great for launching jobs on multiple + machines. Ansible and Jenkins and others may be good too but I was + able to jump right in with parallel. + -- dwhite21787@reddit New in this release: -<<>> +* No new features. This is a candidate for a stable release. * Bug fixes and man page updates. News about GNU Parallel: -* Scientific Workflows at Scale using GNU Parallel https://www.escience-conference.org/2023/tutorials/gnu_parallel/ +* Scientific Workflows at Scale using GNU Parallel https://web.cvent.com/event/f318e73c-2230-432a-a044-b75625020543/websitePage:afd80266-008e-414b-9f94-2fd9b4dd1924?session=fe79a785-ec60-414c-8d2b-c29208f53d4c&shareLink=true -https://web.cvent.com/event/f318e73c-2230-432a-a044-b75625020543/websitePage:afd80266-008e-414b-9f94-2fd9b4dd1924?session=fe79a785-ec60-414c-8d2b-c29208f53d4c&shareLink=true +* Use GNU Parallel to render blender movies distributed by a bunch of nodes https://github.com/tfmoraes/blender_gnu_parallel_render -?https://www.jvt.me/posts/2022/04/28/shell-queue/ -?https://github.com/tfmoraes/blender_gnu_parallel_render +* Lessons Learned from Scaling to Multi-Terabyte Datasets https://v2thegreat.com/2024/06/19/lessons-learned-from-scaling-to-multi-terabyte-datasets/ -https://v2thegreat.com/2024/06/19/lessons-learned-from-scaling-to-multi-terabyte-datasets/ +* Efisiensi Maksimal: Cara Paralelisasi Perintah di CLI Linux https://medium.com/@nfrozi/efisiensi-maksimal-cara-paralelisasi-perintah-di-cli-linux-f4fda3afe2a0 -https://medium.com/@nfrozi/efisiensi-maksimal-cara-paralelisasi-perintah-di-cli-linux-f4fda3afe2a0 +* Introduction to GNU parallel https://datascience.101workbook.org/06-hpc/06-parallel/01-intro-to-gnu-parallel/#gsc.tab=0 -https://usercomp.com/news/1295687/parallel-ssh-file-transfer-with-gnuparallel -https://usercomp.com/news/1300817/gnu-parallel-process-one-line-with-pipe -https://datascience.101workbook.org/06-hpc/06-parallel/01-intro-to-gnu-parallel/#gsc.tab=0 - -https://www.cyberciti.biz/faq/linux-unix-copy-a-file-to-multiple-directories-using-cp-command/ - -<<>> GNU Parallel - For people who live life in the parallel lane. diff --git a/packager/obs/home-tange/parallel/.osc/_files b/packager/obs/home-tange/parallel/.osc/_files index 67084521..cfab1682 100644 --- a/packager/obs/home-tange/parallel/.osc/_files +++ b/packager/obs/home-tange/parallel/.osc/_files @@ -1,8 +1,8 @@ - + - - - - - + + + + + diff --git a/packager/obs/home-tange/parallel/.osc/parallel.spec b/packager/obs/home-tange/parallel/.osc/parallel.spec index 900ecdbc..37675477 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: 20240622 +Version: 20240722 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 4737d814..eb850f17 100755 --- a/src/env_parallel.ash +++ b/src/env_parallel.ash @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.bash b/src/env_parallel.bash index 34f43b35..57c8c32f 100755 --- a/src/env_parallel.bash +++ b/src/env_parallel.bash @@ -605,7 +605,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.dash b/src/env_parallel.dash index 7f5c0e62..fc9cae22 100755 --- a/src/env_parallel.dash +++ b/src/env_parallel.dash @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.fish b/src/env_parallel.fish index b0abc500..929afead 100755 --- a/src/env_parallel.fish +++ b/src/env_parallel.fish @@ -129,7 +129,8 @@ function env_parallel perl -ne 'chomp; ($name,$val)=split(/ /,$_,2); $name=~/^(HOME|USER|COLUMNS|FISH_VERSION|LINES|PWD|SHLVL|_| - history|status|version)$|\./x and next; + fish_kill_signal|fish_pid|history|hostname|status| + status_generation|version)$|\./x and next; if($val=~/^'"'"'/) { next; } print "set $name \"\$$name\";\n"; ') @@ -160,7 +161,8 @@ function env_parallel ($name,$val)=split(/ /,$_,2); # Ignore read-only vars $name=~/^(HOME|USER|COLUMNS|FISH_VERSION|LINES|PWD|SHLVL|_| - fish_pid|history|hostname|status|version)$/x and next; + fish_kill_signal|fish_pid|history|hostname|status| + status_generation|version)$/x and next; # Single quote $val if($val =~ /[^-_.+a-z0-9\/]/i) { $val =~ s/\047/\047"\047"\047/g; # "-quote single quotes diff --git a/src/env_parallel.ksh b/src/env_parallel.ksh index bbdb2991..e9192214 100755 --- a/src/env_parallel.ksh +++ b/src/env_parallel.ksh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.mksh b/src/env_parallel.mksh index e0459943..c2b9f228 100644 --- a/src/env_parallel.mksh +++ b/src/env_parallel.mksh @@ -570,7 +570,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.pod b/src/env_parallel.pod index ad5675a4..b4181873 100644 --- a/src/env_parallel.pod +++ b/src/env_parallel.pod @@ -275,7 +275,7 @@ Due to a bug in Bash, aliases containing newlines must be followed by a newline in the command. Some systems are not affected by this bug, but will print a warning anyway. -=head2 csh +=head2 csh (alpha testing) B for B breaks B<$PARALLEL>, so do not use B<$PARALLEL>. @@ -384,7 +384,7 @@ B<--session> is supported. =back -=head2 fish +=head2 fish (alpha testing) =head3 Installation @@ -679,7 +679,7 @@ B<--session> is supported. =back -=head2 tcsh +=head2 tcsh (alpha testing) B for B breaks B<$PARALLEL>, so do not use B<$PARALLEL>. diff --git a/src/env_parallel.sh b/src/env_parallel.sh index 9568cc2a..e04d4f23 100755 --- a/src/env_parallel.sh +++ b/src/env_parallel.sh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/env_parallel.zsh b/src/env_parallel.zsh index 6b4cfc69..0e4e4537 100755 --- a/src/env_parallel.zsh +++ b/src/env_parallel.zsh @@ -601,7 +601,7 @@ _parset_main() { fi if [ "$_parset_NAME" = "--version" ] ; then # shellcheck disable=SC2006 - echo "parset 20240623 (GNU parallel `parallel --minversion 1`)" + echo "parset 20240722 (GNU parallel `parallel --minversion 1`)" echo "Copyright (C) 2007-2024 Ole Tange, http://ole.tange.dk and Free Software" echo "Foundation, Inc." echo "License GPLv3+: GNU GPL version 3 or later " diff --git a/src/niceload b/src/niceload index 92930de6..9503ba40 100755 --- a/src/niceload +++ b/src/niceload @@ -26,7 +26,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20240623; +$Global::version = 20240722; 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 b9d32004..84a04fc3 100755 --- a/src/parallel +++ b/src/parallel @@ -2793,7 +2793,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20240624; + $Global::version = 20240722; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -5847,8 +5847,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. (2024, June 22). GNU Parallel 20240622 ('34 counts').", - " Zenodo. https://doi.org/10.5281/zenodo.12518196", + " Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange').", + " Zenodo. https://doi.org/10.5281/zenodo.12789352", "", # Before changing these lines, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice @@ -5880,8 +5880,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. (2024, June 22). GNU Parallel 20240622 ('34 counts').", - " Zenodo. https://doi.org/10.5281/zenodo.12518196", + " Tange, O. (2024, July 22). GNU Parallel 20240722 ('Assange').", + " Zenodo. https://doi.org/10.5281/zenodo.12789352", "", # Before changing these line, please read # https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and @@ -6007,20 +6007,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_2024_12518196,", + "\@software{tange_2024_12789352,", " author = {Tange, Ole},", - " title = {GNU Parallel 20240622 ('34 counts')},", - " month = Jun,", + " title = {GNU Parallel 20240722 ('Assange')},", + " 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.12518196},", - " url = {https://doi.org/10.5281/zenodo.12518196}", + " doi = {10.5281/zenodo.12789352},", + " url = {https://doi.org/10.5281/zenodo.12789352}", "}", "", - "(Feel free to use \\nocite{tange_2024_12518196})", + "(Feel free to use \\nocite{tange_2024_12789352})", "", # 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 2ef08dc1..e78601c5 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -1775,7 +1775,7 @@ If in doubt use B<-X> as that will most likely do what is needed. See also: B<-X> B<--xargs> -=item B<--memfree> I (beta testing) +=item B<--memfree> I Minimum memory free when starting another job. @@ -1879,7 +1879,7 @@ is somewhat slower than B<--block>. See also: UNIT PREFIX B<--pipe> B<--block> B<-m> B<-X> B<--max-args> -=item B<--nonall> (beta testing) +=item B<--nonall> B<--onall> with no arguments. @@ -1894,7 +1894,7 @@ servers. See also: B<--onall> B<--sshlogin> -=item B<--onall> (beta testing) +=item B<--onall> Run all the jobs on all computers given with B<--sshlogin>. diff --git a/src/parsort b/src/parsort index a914a79c..0f80e4ab 100755 --- a/src/parsort +++ b/src/parsort @@ -137,7 +137,7 @@ GetOptions( "help" => \$opt::dummy, ) || exit(255); $Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1]; -$Global::version = 20240623; +$Global::version = 20240722; 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 b7c560e0..3a79c25f 100755 --- a/src/sql +++ b/src/sql @@ -670,7 +670,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20240623; + $Global::version = 20240722; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/Makefile b/testsuite/Makefile index 6f79a88c..fe32cffa 100644 --- a/testsuite/Makefile +++ b/testsuite/Makefile @@ -133,13 +133,13 @@ startvm: stopvm: parallel -j0 --tag -k '${stop}' ::: ${namedservers} || true +startdb: + sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;" || \ + (cd vagrant-projects/OracleDatabase/23.4.0-Free && vagrant up && \ + sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;") stopdb: cd vagrant-projects/OracleDatabase/23.4.0-Free; vagrant suspend -startdb: - cd vagrant-projects/OracleDatabase/23.4.0-Free; vagrant up - sql oracle://SYSTEM:$$VM_ORACLE_PWD@/FREE "select 'Oracle is running' from dual;" - ### Distribution installparallel: ../src/parallel cd .. && make -j && sudo make -j install diff --git a/testsuite/tests-to-run/niceload01.sh b/testsuite/tests-to-run/niceload01.sh index e3903907..6c4e9861 100755 --- a/testsuite/tests-to-run/niceload01.sh +++ b/testsuite/tests-to-run/niceload01.sh @@ -92,7 +92,7 @@ echo '### -H and --hard' niceload --hard -l 9 uptime | grep ':.[1-9][0-9].[0-9][0-9],' || echo OK-load below 10 EOF -cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 --joblog /tmp/jl-`basename $0` -L1 +cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel --timeout 300 -vj0 --joblog /tmp/jl-`basename $0` -L1 echo '### -f and --factor' niceload -H --factor 30 -l6 echo factor 30 finish last niceload -H -f 0.01 -l6 echo f 0.1 finish first diff --git a/testsuite/tests-to-run/parallel-local-0.3s.sh b/testsuite/tests-to-run/parallel-local-0.3s.sh old mode 100644 new mode 100755 diff --git a/testsuite/tests-to-run/parallel-local-leak.sh b/testsuite/tests-to-run/parallel-local-leak.sh old mode 100644 new mode 100755 index ed37fd2d..04568aab --- a/testsuite/tests-to-run/parallel-local-leak.sh +++ b/testsuite/tests-to-run/parallel-local-leak.sh @@ -21,7 +21,7 @@ par__memory_leak() { parset small_max,big ::: 'seq 300 | parallel a_run 1 | jq -s max' 'a_run 3000' # Perl 5.38.2 has a small leak (~300KB) - not present in 5.2X.X # TODO find out which perl version introduces this - echo "`date` [ $small_max < $big ]" >> /tmp/parallel-mem-leak.log + echo "`date` [ $small_max < $big ]" >> /tmp/parallel-mem-leak.out if [ $(($small_max+500)) -lt $big ] ; then echo "Bad: Memleak likely. [ $small_max < $big ]" else diff --git a/testsuite/tests-to-run/parallel-local-ssh4.sh b/testsuite/tests-to-run/parallel-local-ssh4.sh index 79bc04f5..57f79e4b 100755 --- a/testsuite/tests-to-run/parallel-local-ssh4.sh +++ b/testsuite/tests-to-run/parallel-local-ssh4.sh @@ -189,7 +189,8 @@ par__--tmux_different_shells() { } par_--tmux_length() { - echo '### works' + echo '### tmux examples that earlier blocked' + echo 'Runtime 14 seconds on non-loaded machine' short_TMPDIR() { # TMPDIR must be short for -M export TMPDIR=/tmp/ssh/' diff --git a/testsuite/tests-to-run/parallel-local-ssh7.sh b/testsuite/tests-to-run/parallel-local-ssh7.sh index 3be7fd12..2f21f1aa 100755 --- a/testsuite/tests-to-run/parallel-local-ssh7.sh +++ b/testsuite/tests-to-run/parallel-local-ssh7.sh @@ -6,6 +6,25 @@ echo '### test --env _, env_parallel for different shells' +retry() { + times=$1 + shift + declare -a array_runs + first_run=$($@) + array_runs+=("$first_run") + for ((i=1; i<=$times; i++)); do + run=$($@) + exit=$? + if [[ " ${array_runs[@]} " =~ " $run " ]]; then + echo "$run" + return $exit + fi + done + echo "$run" + return $exit +} +export -f retry + # ## par_*_man = tests from the man page # @@ -286,7 +305,6 @@ par__man_fish() { env_parallel -k -S server echo '$myarray[{}]' ::: 1 2 3 4 env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3 4 env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3 4 - env_parallel --argsep --- env_parallel -k echo ::: multi level --- env_parallel env_parallel ::: true false true false @@ -812,12 +830,7 @@ par_--env_underscore_fish() { set myarray and arrays in; echo Test copying; - env_parallel myfunc ::: work; - env_parallel -S server myfunc ::: work; - env_parallel --env myfunc,myvar,myarray,myecho myfunc ::: work; - env_parallel --env myfunc,myvar,myarray,myecho -S server myfunc ::: work; - env_parallel --env _ myfunc ::: work; - env_parallel --env _ -S server myfunc ::: work; + echo '*** Moved to parallel-ssh-fish.sh ***' echo Test ignoring; env_parallel --env _ -S server not_copied_alias ::: error=OK; @@ -3149,14 +3162,7 @@ _EOF export -f $(compgen -A function | grep par_) -# --retries 2 due to ssh_exchange_identification: read: Connection reset by peer - -#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' -#compgen -A function | grep par_ | sort | -compgen -A function | G par_ "$@" | LC_ALL=C sort | -# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1' - # 2019-07-14 200% too high for 16 GB/4 thread - parallel --joblog /tmp/jl-`basename $0` -j75% --retries 2 --tag -k '{} 2>&1' | +clean_output() { perl -pe 's/line \d\d+/line 99/g; s/\d+ >= \d+/999 >= 999/; s/sh:? \d?\d\d:/sh: 999:/; @@ -3168,3 +3174,18 @@ compgen -A function | G par_ "$@" | LC_ALL=C sort | s!/tmp/par-job-\d+_.....!script!g; s/script: \d\d+/script: 99/g; ' +} + +# --retries 2 due to ssh_exchange_identification: read: Connection reset by peer + +#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' +#compgen -A function | grep par_ | sort | +compgen -A function | G par_ "$@" | LC_ALL=C sort | G -v fish | + # 2019-07-14 200% too high for 16 GB/4 thread + parallel --joblog /tmp/jl-`basename $0` -j75% --retries 2 --tag -k '{} 2>&1' | + clean_output + +compgen -A function | G par_ "$@" | LC_ALL=C sort | G fish | + # 2024-07-18 fish is prone to racing + parallel --joblog /tmp/jl-`basename $0` -j1 --retries 2 --tag -k '{} 2>&1' | + clean_output diff --git a/testsuite/tests-to-run/parallel-ssh-fish.sh b/testsuite/tests-to-run/parallel-ssh-fish.sh new file mode 100755 index 00000000..2d19a1fb --- /dev/null +++ b/testsuite/tests-to-run/parallel-ssh-fish.sh @@ -0,0 +1,262 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: 2021-2024 Ole Tange, http://ole.tange.dk and Free Software and Foundation, Inc. +# +# SPDX-License-Identifier: GPL-3.0-or-later + +# Run parts from parallel-local-ssh7.sh that fail often +# I think there is a race condition in fish + +par__man_fish() { + echo '### fish' + myscript=$(cat <<'_EOF' + echo "### From man env_parallel" + + env_parallel --session + alias myecho='echo aliases with \= \& \" \!'" \'" + myecho work + env_parallel myecho ::: work + env_parallel -S server myecho ::: work + env_parallel --env myecho myecho ::: work + env_parallel --env myecho -S server myecho ::: work + + # multiline aliases does not work in fish + + function myfunc + echo functions 'with = & " !'" '" $argv; + end + myfunc work + env_parallel myfunc ::: work + env_parallel -S server myfunc ::: work + env_parallel --env myfunc myfunc ::: work + env_parallel --env myfunc -S server myfunc ::: work + + set myvar 'variables with = & " !'" '" + echo "$myvar" work + env_parallel echo '$myvar' ::: work + env_parallel -S server echo '$myvar' ::: work + env_parallel --env myvar echo '$myvar' ::: work + env_parallel --env myvar -S server echo '$myvar' ::: work + + set multivar 'multiline + variables with = & " !'" '" + echo "$multivar" work + env_parallel echo '"$multivar"' ::: work + env_parallel -S server echo '"$multivar"' ::: work + env_parallel --env multivar echo '"$multivar"' ::: work + env_parallel --env multivar -S server echo '"$multivar"' ::: work + + set myarray arrays 'with = & " !'" '" work, too + echo $myarray[1] $myarray[2] $myarray[3] $myarray[4] + echo "# these 4 fail often. Race condition?" + env_parallel -k echo '$myarray[{}]' ::: 1 2 3 4 + env_parallel -k -S server echo '$myarray[{}]' ::: 1 2 3 4 + env_parallel -k --env myarray echo '$myarray[{}]' ::: 1 2 3 4 + env_parallel -k --env myarray -S server echo '$myarray[{}]' ::: 1 2 3 4 + env_parallel --argsep --- env_parallel -k echo ::: multi level --- env_parallel + + env_parallel ::: true false true false + echo exit value $status should be 2 + + env_parallel --no-such-option >/dev/null + echo exit value $status should be 255 `sleep 1` +_EOF + ) + ssh fish@lo "$myscript" + #| LC_ALL=C sort +} + +par_--env_underscore_fish() { + echo '### fish' + myscript=$(cat <<'_EOF' + echo "Fish is broken" + echo "### Testing of --env _" + + source (which env_parallel.fish) + true > ~/.parallel/ignored_vars; + + alias not_copied_alias="echo BAD" + function not_copied_func + echo BAD + end + set not_copied_var "BAD"; + set not_copied_array BAD BAD BAD; +# env_parallel --record-env; + env_parallel --session; + alias myecho="echo \$myvar aliases"; + function myfunc + myecho $myarray functions $argv + end + set myvar "variables in"; + set myarray and arrays in; + + echo Test copying; + env_parallel myfunc ::: work; + env_parallel -S server myfunc ::: work; + env_parallel --env myfunc,myvar,myarray,myecho myfunc ::: work; + env_parallel --env myfunc,myvar,myarray,myecho -S server myfunc ::: work; + env_parallel --env _ myfunc ::: work; + env_parallel --env _ -S server myfunc ::: work; + +# echo Test ignoring; +# env_parallel --env _ -S server not_copied_alias ::: error=OK; +# env_parallel --env _ -S server not_copied_func ::: error=OK; +# env_parallel --env _ -S server echo \$not_copied_var ::: error=OK; +# env_parallel --env _ -S server echo \$not_copied_array ::: error=OK; +# +# echo Test single ignoring; +# echo myvar > ~/.parallel/ignored_vars; +# env_parallel --env _ myfunc ::: work; +# sleep 0.1 +# env_parallel --env _ -S server myfunc ::: work; +# sleep 0.1 +# echo myarray >> ~/.parallel/ignored_vars; +# env_parallel --env _ myfunc ::: work; +# env_parallel --env _ -S server myfunc ::: work; +# echo myecho >> ~/.parallel/ignored_vars; +# env_parallel --env _ myfunc ::: work; +# echo "OK if ^^^^^^^^^^^^^^^^^ no myecho" >&2; +# env_parallel --env _ -S server myfunc ::: work; +# echo "OK if ^^^^^^^^^^^^^^^^^ no myecho" >&2; +# echo myfunc >> ~/.parallel/ignored_vars; +# env_parallel --env _ myfunc ::: work; +# echo "OK if ^^^^^^^^^^^^^^^^^ no myfunc" >&2; +# env_parallel --env _ -S server myfunc ::: work; +# echo "OK if ^^^^^^^^^^^^^^^^^ no myfunc" >&2; +_EOF + ) + # Old versions of fish sometimes throw up bugs all over, + # but seem to work OK otherwise. So ignore these errors. + stdout ssh fish@lo "$myscript" | + perl -ne '/^\^|fish:|fish\(/ and next; print' | + perl -pe 's/^[ ~^]+$//g' +} + + +par_funky_fish() { + myscript=$(cat <<'_EOF' + env_parallel --session + set myvar "myvar works" + setenv myenvvar "myenvvar works" + + set funky (perl -e "print pack \"c*\", 1..255") + # 10 and 30 cause problems + setenv funkyenv (perl -e "print pack \"c*\", 1..9,11..29,31..255") + + set myarray "" array_val2 3 "" 5 " space 6 " + + # Assoc arrays do not exist + #typeset -A assocarr + #assocarr[a]=assoc_val_a + #assocarr[b]=assoc_val_b + alias alias_echo="echo 3 arg"; + + function func_echo + echo $argv; + echo "$myvar" + echo "$myenvvar" + echo "$myarray[6]" + # Assoc arrays do not exist in fish + # echo ${assocarr[a]} + echo + echo + echo + echo Funky-"$funky"-funky + echo Funkyenv-"$funkyenv"-funkyenv + echo + echo + echo + end + + env_parallel alias_echo ::: alias_works + env_parallel func_echo ::: function_works + env_parallel -S fish@lo alias_echo ::: alias_works_over_ssh + env_parallel -S fish@lo func_echo ::: function_works_over_ssh + echo + echo "$funky" | parallel --shellquote +_EOF + ) + ssh fish@lo "$myscript" +} + +par_env_parallel_fish() { + myscript=$(cat <<'_EOF' + echo 'bug #50435: Remote fifo broke in 20150522' + # Due to $PARALLEL_TMP being transferred + env_parallel --session + set OK OK + echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {}; and echo $OK' + echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; and echo $OK' + echo OK: 0==$status + echo '### Test failing command with --cat' + echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; false' + echo OK: 1==$status + echo data from stdin | parallel --pipe -S lo --cat 'cat {}; false' + echo OK: 1==$status +_EOF + ) + ssh fish@lo "$myscript" +} + +par_env_parallel_--session_fish() { + myscript=$(cat <<'_EOF' + . (which env_parallel.fish) + + echo '### Test env_parallel --session' + + alias aliasbefore='echo before' + set varbefore 'before' + function funcbefore + echo 'before' "$argv" + end + set arraybefore array before + env_parallel --session + # stuff defined + env_parallel aliasbefore ::: must_fail + env_parallel -S lo aliasbefore ::: must_fail + env_parallel funcbefore ::: must_fail + env_parallel -S lo funcbefore ::: must_fail + env_parallel echo '$varbefore' ::: no_before + env_parallel -S lo echo '$varbefore' ::: no_before + env_parallel echo '$arraybefore' ::: no_before + env_parallel -S lo echo '$arraybefore' ::: no_before + alias aliasafter='echo after' + set varafter 'after' + function funcafter + echo 'after' "$argv" + end + set arrayafter array after + env_parallel aliasafter ::: aliasafter_OK + env_parallel -S lo aliasafter ::: aliasafter_OK + env_parallel funcafter ::: funcafter_OK + env_parallel -S lo funcafter ::: funcafter_OK + env_parallel echo '$varafter' ::: varafter_OK + env_parallel -S lo echo '$varafter' ::: varafter_OK + env_parallel echo '$arrayafter' ::: arrayafter_OK + env_parallel -S lo echo '$arrayafter' ::: arrayafter_OK + set -e PARALLEL_IGNORED_NAMES +_EOF + ) + ssh fish@lo "$myscript" 2>&1 | + perl -pe 's/^[ ~^]+$//g' +} + +export -f $(compgen -A function | grep par_) + +clean_output() { + perl -pe 's/line \d\d+/line 99/g; + s/\d+ >= \d+/999 >= 999/; + s/sh:? \d?\d\d:/sh: 999:/; + s/:\d?\d\d:/:999:/; + s/sh\[\d+\]/sh[999]/; + s/.*(tange|zenodo).*//i; + s:/usr/bin:/bin:g; + s:/tmp/par-job-\d+_.....\[\d+\]:script[9]:g; + s!/tmp/par-job-\d+_.....!script!g; + s/script: \d\d+/script: 99/g; + ' +} + +compgen -A function | G par_ "$@" | LC_ALL=C sort | + parallel --joblog /tmp/jl-`basename $0` -j1 --retries 2 --tag -k '{} 2>&1' | + clean_output diff --git a/testsuite/tests-to-run/sql03.sh b/testsuite/tests-to-run/sql03.sh index fa7ea282..3c80f5f5 100644 --- a/testsuite/tests-to-run/sql03.sh +++ b/testsuite/tests-to-run/sql03.sh @@ -4,6 +4,9 @@ # # SPDX-License-Identifier: GPL-3.0-or-later +# Start +(cd "$testsuitedir"; stdout make startdb) >/dev/tty + mysqlrootpass=${mysqlrootpass:-M-b+Ydjq4ejT4E} MYSQL_ADMIN_DBURL=mysql://root:$mysqlrootpass@/mysql diff --git a/testsuite/wanted-results/parallel-local-ssh4 b/testsuite/wanted-results/parallel-local-ssh4 index 13a43c62..560f7c19 100644 --- a/testsuite/wanted-results/parallel-local-ssh4 +++ b/testsuite/wanted-results/parallel-local-ssh4 @@ -160,7 +160,8 @@ par_--nonall_results /TMP/nonall/slash/sh@lo/1 par_--nonall_results /TMP/nonall/slash/sh@lo/1/seq par_--nonall_results /TMP/nonall/slash/sh@lo/1/stderr par_--nonall_results /TMP/nonall/slash/sh@lo/1/stdout -par_--tmux_length ### works +par_--tmux_length ### tmux examples that earlier blocked +par_--tmux_length Runtime 14 seconds on non-loaded machine par_--tmux_length See output with: tmux -S /TMP/tmsXXXXX attach par_--tmux_length See output with: tmux -S /TMP/tmsXXXXX attach par_--tmux_length ### These blocked due to length diff --git a/testsuite/wanted-results/parallel-local-ssh7 b/testsuite/wanted-results/parallel-local-ssh7 index 6e6787cf..6451b770 100644 --- a/testsuite/wanted-results/parallel-local-ssh7 +++ b/testsuite/wanted-results/parallel-local-ssh7 @@ -69,43 +69,6 @@ par_--env_underscore_dash /bin/dash: 1: myecho: not found par_--env_underscore_dash OK if no myecho ^^^^^^^^^^^^^^^^^ par_--env_underscore_dash script: 2: myecho: not found par_--env_underscore_dash OK if no myecho ^^^^^^^^^^^^^^^^^ -par_--env_underscore_fish ### fish -par_--env_underscore_fish Fish is broken -par_--env_underscore_fish ### Testing of --env _ -par_--env_underscore_fish Test copying -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish variables in aliases and arrays in functions work -par_--env_underscore_fish Test ignoring -par_--env_underscore_fish script (line 99): -par_--env_underscore_fish not_copied_alias 'error=OK' -par_--env_underscore_fish script (line 99): -par_--env_underscore_fish not_copied_func 'error=OK' -par_--env_underscore_fish error=OK -par_--env_underscore_fish error=OK -par_--env_underscore_fish Test single ignoring -par_--env_underscore_fish aliases and arrays in functions work -par_--env_underscore_fish aliases and arrays in functions work -par_--env_underscore_fish aliases functions work -par_--env_underscore_fish aliases functions work -par_--env_underscore_fish myecho $myarray functions $argv -par_--env_underscore_fish -par_--env_underscore_fish in function 'myfunc' with arguments 'work' -par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myecho -par_--env_underscore_fish script (line 4): -par_--env_underscore_fish myecho $myarray functions $argv -par_--env_underscore_fish -par_--env_underscore_fish in function 'myfunc' with arguments 'work' -par_--env_underscore_fish called on line 99 of file script -par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myecho -par_--env_underscore_fish myfunc work -par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc -par_--env_underscore_fish script (line 6): -par_--env_underscore_fish myfunc work -par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc par_--env_underscore_ksh ### ksh par_--env_underscore_ksh ### Testing of --env _ par_--env_underscore_ksh variables in aliases in and arrays in functions work @@ -425,57 +388,6 @@ par__man_dash variables with = & " ! ' work par__man_dash exit value 2 should be 2 par__man_dash Unknown option: no-such-option par__man_dash exit value 255 should be 255 -par__man_fish ### fish -par__man_fish ### From man env_parallel -par__man_fish aliases with = & " ! ' work -par__man_fish aliases with = & " ! ' work -par__man_fish aliases with = & " ! ' work -par__man_fish aliases with = & " ! ' work -par__man_fish aliases with = & " ! ' work -par__man_fish functions with = & " ! ' work -par__man_fish functions with = & " ! ' work -par__man_fish functions with = & " ! ' work -par__man_fish functions with = & " ! ' work -par__man_fish functions with = & " ! ' work -par__man_fish variables with = & " ! ' work -par__man_fish variables with = & " ! ' work -par__man_fish variables with = & " ! ' work -par__man_fish variables with = & " ! ' work -par__man_fish variables with = & " ! ' work -par__man_fish multiline -par__man_fish variables with = & " ! ' work -par__man_fish multiline -par__man_fish variables with = & " ! ' work -par__man_fish multiline -par__man_fish variables with = & " ! ' work -par__man_fish multiline -par__man_fish variables with = & " ! ' work -par__man_fish multiline -par__man_fish variables with = & " ! ' work -par__man_fish arrays with = & " ! ' work, too -par__man_fish # these 4 fail often. Race condition? -par__man_fish arrays -par__man_fish with = & " ! ' -par__man_fish work, -par__man_fish too -par__man_fish arrays -par__man_fish with = & " ! ' -par__man_fish work, -par__man_fish too -par__man_fish arrays -par__man_fish with = & " ! ' -par__man_fish work, -par__man_fish too -par__man_fish arrays -par__man_fish with = & " ! ' -par__man_fish work, -par__man_fish too -par__man_fish multi -par__man_fish level -par__man_fish env_parallel -par__man_fish exit value 2 should be 2 -par__man_fish Unknown option: no-such-option -par__man_fish exit value 255 should be 255 `sleep 1` par__man_ksh ### ksh par__man_ksh ### From man env_parallel par__man_ksh aliases with = & " ! ' work @@ -1105,35 +1017,6 @@ par_env_parallel_--session_dash after aliasafter_OK par_env_parallel_--session_dash after aliasafter_OK par_env_parallel_--session_dash after varafter_OK par_env_parallel_--session_dash after varafter_OK -par_env_parallel_--session_fish ### Test env_parallel --session -par_env_parallel_--session_fish fish: Unknown command: aliasbefore -par_env_parallel_--session_fish fish: -par_env_parallel_--session_fish aliasbefore must_fail -par_env_parallel_--session_fish -par_env_parallel_--session_fish fish: Unknown command: aliasbefore -par_env_parallel_--session_fish script (line 6): -par_env_parallel_--session_fish aliasbefore must_fail -par_env_parallel_--session_fish -par_env_parallel_--session_fish fish: Unknown command: funcbefore -par_env_parallel_--session_fish fish: -par_env_parallel_--session_fish funcbefore must_fail -par_env_parallel_--session_fish -par_env_parallel_--session_fish fish: Unknown command: funcbefore -par_env_parallel_--session_fish script (line 6): -par_env_parallel_--session_fish funcbefore must_fail -par_env_parallel_--session_fish -par_env_parallel_--session_fish no_before -par_env_parallel_--session_fish no_before -par_env_parallel_--session_fish no_before -par_env_parallel_--session_fish no_before -par_env_parallel_--session_fish after aliasafter_OK -par_env_parallel_--session_fish after aliasafter_OK -par_env_parallel_--session_fish after funcafter_OK -par_env_parallel_--session_fish after funcafter_OK -par_env_parallel_--session_fish after varafter_OK -par_env_parallel_--session_fish after varafter_OK -par_env_parallel_--session_fish array after arrayafter_OK -par_env_parallel_--session_fish array after arrayafter_OK par_env_parallel_--session_ksh ### Test env_parallel --session par_env_parallel_--session_ksh ### level0 should be hidden, level1 should be transferred par_env_parallel_--session_ksh @@ -1632,17 +1515,6 @@ par_env_parallel_dash bug #50435: Remote fifo broke in 20150522 par_env_parallel_dash bug #52534: Tail of multiline alias is ignored par_env_parallel_dash data from stdin par_env_parallel_dash data from stdin -par_env_parallel_fish bug #50435: Remote fifo broke in 20150522 -par_env_parallel_fish data from stdin -par_env_parallel_fish OK -par_env_parallel_fish data from stdin -par_env_parallel_fish OK -par_env_parallel_fish OK: 0==0 -par_env_parallel_fish ### Test failing command with --cat -par_env_parallel_fish data from stdin -par_env_parallel_fish OK: 1==1 -par_env_parallel_fish data from stdin -par_env_parallel_fish OK: 1==1 par_env_parallel_ksh OK par_env_parallel_ksh OK par_env_parallel_ksh alias line 1 @@ -1755,7 +1627,6 @@ par_environment_too_big_bash parallel: Error: Command line too long (999 >= 999) par_environment_too_big_bash parallel: Error: Command line too long (999 >= 999) at input 0: fail_bigfunc_quote_remote par_environment_too_big_csh Not implemented par_environment_too_big_dash moved to hwdep1.sh -par_environment_too_big_fish Not implemented par_environment_too_big_ksh bug #50815: env_parallel should warn if the environment is too big par_environment_too_big_ksh OK_bigvar par_environment_too_big_ksh OK_bigvar_remote @@ -1856,38 +1727,6 @@ par_funky_dash ' ' par_funky_dash ' par_funky_dash  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_funky_dash 3 arg alias_works par_funky_dash 3 arg alias_works_over_ssh -par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported -par_funky_fish 3 arg alias_works -par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported -par_funky_fish function_works -par_funky_fish myvar works -par_funky_fish myenvvar works -par_funky_fish space 6 -par_funky_fish -par_funky_fish -par_funky_fish -par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky -par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyenv -par_funky_fish -par_funky_fish -par_funky_fish -par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported -par_funky_fish 3 arg alias_works_over_ssh -par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported -par_funky_fish function_works_over_ssh -par_funky_fish myvar works -par_funky_fish myenvvar works -par_funky_fish space 6 -par_funky_fish -par_funky_fish -par_funky_fish -par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky -par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyenv -par_funky_fish -par_funky_fish -par_funky_fish -par_funky_fish -par_funky_fish ' par_funky_fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' par_funky_ksh par_funky_ksh par_funky_ksh  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky par_funky_ksh par_funky_ksh  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky @@ -2052,7 +1891,6 @@ par_parset_dash 2 par_parset_dash 3 par_parset_dash Exit value 2 = 2 par_parset_dash Exit value 2 = 2 -par_parset_fish Not implemented par_parset_ksh parset par_parset_ksh ### parset into array par_parset_ksh foo bar baz @@ -2214,3 +2052,160 @@ par_parset_zsh myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun ba par_parset_zsh myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun bar myecho myvar myarr 0 myfun baz par_parset_zsh Exit value 2 = 2 par_parset_zsh Exit value 2 = 2 +par_--env_underscore_fish ### fish +par_--env_underscore_fish Fish is broken +par_--env_underscore_fish ### Testing of --env _ +par_--env_underscore_fish Test copying +par_--env_underscore_fish *** Moved to parallel-ssh-fish.sh *** +par_--env_underscore_fish Test ignoring +par_--env_underscore_fish script (line 99): +par_--env_underscore_fish not_copied_alias 'error=OK' +par_--env_underscore_fish script (line 99): +par_--env_underscore_fish not_copied_func 'error=OK' +par_--env_underscore_fish error=OK +par_--env_underscore_fish error=OK +par_--env_underscore_fish Test single ignoring +par_--env_underscore_fish aliases and arrays in functions work +par_--env_underscore_fish aliases and arrays in functions work +par_--env_underscore_fish aliases functions work +par_--env_underscore_fish aliases functions work +par_--env_underscore_fish myecho $myarray functions $argv +par_--env_underscore_fish +par_--env_underscore_fish in function 'myfunc' with arguments 'work' +par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myecho +par_--env_underscore_fish script (line 4): +par_--env_underscore_fish myecho $myarray functions $argv +par_--env_underscore_fish +par_--env_underscore_fish in function 'myfunc' with arguments 'work' +par_--env_underscore_fish called on line 99 of file script +par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myecho +par_--env_underscore_fish myfunc work +par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc +par_--env_underscore_fish script (line 6): +par_--env_underscore_fish myfunc work +par_--env_underscore_fish OK if ^^^^^^^^^^^^^^^^^ no myfunc +par__man_fish ### fish +par__man_fish ### From man env_parallel +par__man_fish aliases with = & " ! ' work +par__man_fish aliases with = & " ! ' work +par__man_fish aliases with = & " ! ' work +par__man_fish aliases with = & " ! ' work +par__man_fish aliases with = & " ! ' work +par__man_fish functions with = & " ! ' work +par__man_fish functions with = & " ! ' work +par__man_fish functions with = & " ! ' work +par__man_fish functions with = & " ! ' work +par__man_fish functions with = & " ! ' work +par__man_fish variables with = & " ! ' work +par__man_fish variables with = & " ! ' work +par__man_fish variables with = & " ! ' work +par__man_fish variables with = & " ! ' work +par__man_fish variables with = & " ! ' work +par__man_fish multiline +par__man_fish variables with = & " ! ' work +par__man_fish multiline +par__man_fish variables with = & " ! ' work +par__man_fish multiline +par__man_fish variables with = & " ! ' work +par__man_fish multiline +par__man_fish variables with = & " ! ' work +par__man_fish multiline +par__man_fish variables with = & " ! ' work +par__man_fish arrays with = & " ! ' work, too +par__man_fish # these 4 fail often. Race condition? +par__man_fish arrays +par__man_fish with = & " ! ' +par__man_fish work, +par__man_fish too +par__man_fish arrays +par__man_fish with = & " ! ' +par__man_fish work, +par__man_fish too +par__man_fish arrays +par__man_fish with = & " ! ' +par__man_fish work, +par__man_fish too +par__man_fish arrays +par__man_fish with = & " ! ' +par__man_fish work, +par__man_fish too +par__man_fish multi +par__man_fish level +par__man_fish env_parallel +par__man_fish exit value 2 should be 2 +par__man_fish Unknown option: no-such-option +par__man_fish exit value 255 should be 255 `sleep 1` +par_env_parallel_--session_fish ### Test env_parallel --session +par_env_parallel_--session_fish fish: Unknown command: aliasbefore +par_env_parallel_--session_fish fish: +par_env_parallel_--session_fish aliasbefore must_fail +par_env_parallel_--session_fish +par_env_parallel_--session_fish fish: Unknown command: aliasbefore +par_env_parallel_--session_fish script (line 6): +par_env_parallel_--session_fish aliasbefore must_fail +par_env_parallel_--session_fish +par_env_parallel_--session_fish fish: Unknown command: funcbefore +par_env_parallel_--session_fish fish: +par_env_parallel_--session_fish funcbefore must_fail +par_env_parallel_--session_fish +par_env_parallel_--session_fish fish: Unknown command: funcbefore +par_env_parallel_--session_fish script (line 6): +par_env_parallel_--session_fish funcbefore must_fail +par_env_parallel_--session_fish +par_env_parallel_--session_fish no_before +par_env_parallel_--session_fish no_before +par_env_parallel_--session_fish no_before +par_env_parallel_--session_fish no_before +par_env_parallel_--session_fish after aliasafter_OK +par_env_parallel_--session_fish after aliasafter_OK +par_env_parallel_--session_fish after funcafter_OK +par_env_parallel_--session_fish after funcafter_OK +par_env_parallel_--session_fish after varafter_OK +par_env_parallel_--session_fish after varafter_OK +par_env_parallel_--session_fish array after arrayafter_OK +par_env_parallel_--session_fish array after arrayafter_OK +par_env_parallel_fish bug #50435: Remote fifo broke in 20150522 +par_env_parallel_fish data from stdin +par_env_parallel_fish OK +par_env_parallel_fish data from stdin +par_env_parallel_fish OK +par_env_parallel_fish OK: 0==0 +par_env_parallel_fish ### Test failing command with --cat +par_env_parallel_fish data from stdin +par_env_parallel_fish OK: 1==1 +par_env_parallel_fish data from stdin +par_env_parallel_fish OK: 1==1 +par_environment_too_big_fish Not implemented +par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported +par_funky_fish 3 arg alias_works +par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported +par_funky_fish function_works +par_funky_fish myvar works +par_funky_fish myenvvar works +par_funky_fish space 6 +par_funky_fish +par_funky_fish +par_funky_fish +par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky +par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyenv +par_funky_fish +par_funky_fish +par_funky_fish +par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported +par_funky_fish 3 arg alias_works_over_ssh +par_funky_fish env_parallel: Warning: ASCII value 1 in variables is not supported +par_funky_fish function_works_over_ssh +par_funky_fish myvar works +par_funky_fish myenvvar works +par_funky_fish space 6 +par_funky_fish +par_funky_fish +par_funky_fish +par_funky_fish Funky- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funky +par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-funkyenv +par_funky_fish +par_funky_fish +par_funky_fish +par_funky_fish +par_funky_fish ' par_funky_fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~' +par_parset_fish Not implemented