Released as 20240722 ('Assange')

This commit is contained in:
Ole Tange 2024-07-21 05:21:21 +02:00
parent e5281f89c9
commit b4b3da4b0f
32 changed files with 576 additions and 265 deletions

26
NEWS
View file

@ -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:

24
README
View file

@ -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.

20
configure vendored
View file

@ -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 <bug-parallel@gnu.org>.
#
@ -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\\"

View file

@ -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([

View file

@ -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

View file

@ -268,40 +268,35 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
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.

View file

@ -1,8 +1,8 @@
<directory name="parallel" rev="389" vrev="2" srcmd5="8dc4fed077745f6e2807891e42f73703">
<directory name="parallel" rev="390" vrev="2" srcmd5="491dbee376ddabe7e9acf3e6dd268f7b">
<entry name="Makefile" md5="a165cdcca90c744dc5a5b17cde72ad8e" size="1182" mtime="1698101769" />
<entry name="PKGBUILD" md5="d9d67ae64d3839f14e461846f34ac714" size="714" mtime="1719249737" />
<entry name="parallel-20240622.tar.bz2" md5="68ff354e027014e83570e44895b4cf66" size="2570487" mtime="1719249790" />
<entry name="parallel.spec" md5="2df5ce1371be81fb1a3cb5f3f9fda974" size="6224" mtime="1719249792" />
<entry name="parallel_20240622.dsc" md5="ed82106cb7f6002906855500479977e2" size="556" mtime="1719249793" />
<entry name="parallel_20240622.tar.gz" md5="6ce704b44dfcd122c98aaaa4d06a51c5" size="2840248" mtime="1719249808" />
<entry name="PKGBUILD" md5="16b2780a64ee18b0df1060680cec804c" size="714" mtime="1721531636" />
<entry name="parallel-20240722.tar.bz2" md5="e6bdcd2fa790b2096665ed05850bbe53" size="2617438" mtime="1721531681" />
<entry name="parallel.spec" md5="d49c3a3bd1906e68ad98cf2377b3d8ea" size="6224" mtime="1721531682" />
<entry name="parallel_20240722.dsc" md5="13bb25db4380d128d45b57f95d1422e0" size="556" mtime="1721531683" />
<entry name="parallel_20240722.tar.gz" md5="0229f60e3fe8aabc84dd7a908ff6bb11" size="2883193" mtime="1721531695" />
</directory>

View file

@ -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

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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<env_parallel> for B<csh> 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<env_parallel> for B<tcsh> breaks B<$PARALLEL>, so do not use
B<$PARALLEL>.

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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 <https://gnu.org/licenses/gpl.html>"

View file

@ -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) {

View file

@ -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

View file

@ -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<size> (beta testing)
=item B<--memfree> I<size>
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>.

View file

@ -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+$/ }

View file

@ -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

View file

@ -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

View file

@ -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

0
testsuite/tests-to-run/parallel-local-0.3s.sh Normal file → Executable file
View file

2
testsuite/tests-to-run/parallel-local-leak.sh Normal file → Executable file
View file

@ -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

View file

@ -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/'

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
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{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-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{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish ' par_funky_fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'
par_funky_ksh
par_funky_ksh par_funky_ksh  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky
par_funky_ksh par_funky_ksh  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-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{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-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{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_funky_fish Funkyenv- par_funky_fish  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish
par_funky_fish ' par_funky_fish  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'
par_parset_fish Not implemented