Released as 20201122 ('Biden')

This commit is contained in:
Ole Tange 2020-11-22 16:22:54 +01:00
parent e30d812c99
commit e1a62d362d
45 changed files with 974 additions and 1010 deletions

9
NEWS
View file

@ -1,3 +1,12 @@
20201122
* Bug fixes and man page updates.
News about GNU Parallel:
* https://bash-prompt.net/guides/gnu-parallel-multi-server/
20201022
* --termseq now works for jobs running remotely.

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-20201022.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2.sig
gpg parallel-20201022.tar.bz2.sig
bzip2 -dc parallel-20201022.tar.bz2 | tar xvf -
cd parallel-20201022
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2.sig
gpg parallel-20201122.tar.bz2.sig
bzip2 -dc parallel-20201122.tar.bz2 | tar xvf -
cd parallel-20201122
./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-20201022.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20201022.tar.bz2.sig
gpg parallel-20201022.tar.bz2.sig
bzip2 -dc parallel-20201022.tar.bz2 | tar xvf -
cd parallel-20201022
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2.sig
gpg parallel-20201122.tar.bz2.sig
bzip2 -dc parallel-20201122.tar.bz2 | tar xvf -
cd parallel-20201122
./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. (2020, October 22). GNU Parallel 20201022 ('SamuelPaty').
Zenodo. https://doi.org/10.5281/zenodo.4118697
Tange, O. (2020, November 22). GNU Parallel 20201122 ('Biden').
Zenodo. https://doi.org/10.5281/zenodo.4284075
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free

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.69 for parallel 20201022.
# Generated by GNU Autoconf 2.69 for parallel 20201122.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20201022'
PACKAGE_STRING='parallel 20201022'
PACKAGE_VERSION='20201122'
PACKAGE_STRING='parallel 20201122'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1214,7 +1214,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 20201022 to adapt to many kinds of systems.
\`configure' configures parallel 20201122 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1281,7 +1281,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20201022:";;
short | recursive ) echo "Configuration of parallel 20201122:";;
esac
cat <<\_ACEOF
@ -1357,7 +1357,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20201022
parallel configure 20201122
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -1374,7 +1374,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 20201022, which was
It was created by parallel $as_me 20201122, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2237,7 +2237,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20201022'
VERSION='20201122'
cat >>confdefs.h <<_ACEOF
@ -2880,7 +2880,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 20201022, which was
This file was extended by parallel $as_me 20201122, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2942,7 +2942,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20201022
parallel config.status 20201122
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20201022], [bug-parallel@gnu.org])
AC_INIT([parallel], [20201122], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -46,7 +46,9 @@ measure() {
Rscript - <<_
jl<-read.csv("$HOME/tmp/joblog$CORES-$INNER-$OUTER.csv",sep="\t");
jl\$Command <- as.factor(substr(jl\$Command, 12, nchar(as.character(jl\$Command))-5))
jl\$Command <- as.factor(substr(jl\$Command,
nchar(as.character(jl\$Command))-23,
nchar(as.character(jl\$Command))-5))
pdf("/tmp/boxplot.pdf");
par(cex.axis=0.5);
boxplot(JobRuntime/$INNER*1000~Command,data=jl,las=2,outline=F,

View file

@ -1,5 +1,13 @@
Quote of the month:
I also prefer gnu parallel. Mainly because it makes embarrassingly
parallel tasks embarrassingly easy to run on the command line.
-- Vincent D. Warmerdam @fishnets88@twitter
GNU parallel should be taught in class, it is one of the best tools
to run grids of experiments
-- no love deep learning @tetraduzione@twitter
It's not a data migration party until GNU Parallel is involved...
involved
involved

View file

@ -41,6 +41,9 @@ TAG='PrivacyShield'
# Update version
. packager/releasescripts/updateversion
# Load doi+tag in other window
. .last-doitag.txt
=== Reconfig autoconf/automake, build tar.bz2 and test it ===
make reconf &&
@ -48,24 +51,20 @@ make pack_unpack_and_test_build
== Upload ==
export YYYYMMDD=`yyyymmdd`
export YYYYMMDD=${YYYYMMDD:0:6}22
. .last-doitag.txt
eval `gpg-agent --daemon`
# Takes up to 8 minutes
make upload
# Only needed for alpha:
export YYYYMMDD=`yyyymmdd`
export YYYYMMDD=${YYYYMMDD:0:6}22
. .last-doitag.txt
eval `gpg-agent --daemon`
# Takes up to 8 minutes
make alphaupload
== Update OpenSUSE build system ==
export YYYYMMDD=`yyyymmdd`
export YYYYMMDD=${YYYYMMDD:0:6}22
export YYYYMMDD
. .last-doitag.txt
cd ~/privat/parallel/packager/obs
find home:tange/parallel/* -type f |
@ -193,35 +192,32 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20201022 ('Samuel Paty') released <<[stable]>>
Subject: GNU Parallel 20201122 ('Biden') released <<[stable]>>
GNU Parallel 20201022 ('Samuel Paty') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20201122 ('Biden') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>>
* --termseq now works for jobs running remotely.
* Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4
Please help spreading GNU Parallel by making a testimonial video like Juan Sierra Pons: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4
It does not have to be as detailed as Juan's. It is perfectly fine if
you just say your name, and what field you are using GNU Parallel for.
Quote of the month:
<<>>
New in this release:
<<>>
* --termseq now works for jobs running remotely.
* parsort: Performance optimized for 64-core machines.
* Bug fixes and man page updates.
News about GNU Parallel:
* Juan Sierra Pons has made a testimonial: http://www.elsotanillo.net/wp-content/uploads/GnuParallel_JuanSierraPons.mp4
* https://bash-prompt.net/guides/gnu-parallel-multi-server/
* 「翻译」在生物信息学中使用 GNU-Parallel https://cloud.tencent.com/developer/article/1705499
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html

View file

@ -1,7 +1,6 @@
<directory name="parallel" rev="292" vrev="1" srcmd5="d1085f246b2992392315dcd23b0fdedc">
<entry name="PKGBUILD" md5="c0b88e52fcb876f479963dea743180aa" size="936" mtime="1603397482" />
<entry name="parallel-20201022.tar.bz2" md5="7ce51296e9b1a45c6b573845d5b3d486" size="2103371" mtime="1603397483" />
<entry name="parallel.spec" md5="e7283a6f00122cf15fccdd8a1880c9a0" size="4876" mtime="1603397483" />
<entry name="parallel_20201022.dsc" md5="0ab7d32511338dc1a581c773045f433e" size="556" mtime="1603397483" />
<entry name="parallel_20201022.tar.gz" md5="1d463c5da5be20f96c3622867347ebf6" size="2297597" mtime="1603397483" />
<directory name="parallel" rev="293" vrev="1" srcmd5="2fd7888e80721fcad2b9692458b3e5c8">
<entry name="PKGBUILD" md5="dd337c604bfb2ba77c590dca2cee50da" size="936" mtime="1606058238" />
<entry name="parallel.spec" md5="bfbbaf786288a0ed998ea625c1f070fe" size="4876" mtime="1606058238" />
<entry name="parallel_20201122.dsc" md5="137b1ed3415b1aecb885e46f19b6815c" size="556" mtime="1606058239" />
<entry name="parallel_20201122.tar.gz" md5="f0ba17fbe13f09fd61fc371d3aa4bc19" size="2305081" mtime="1606058239" />
</directory>

View file

@ -1,7 +1,7 @@
Summary: Shell tool for executing jobs in parallel
Name: parallel
Version: 20201022
Version: 20201122
Release: 1.3
License: GPL-3.0-or-later
Group: Productivity/File utilities

View file

@ -17,16 +17,20 @@ updater() {
echo '*** Set DOINO and try again ***'
echo 'https://zenodo.org/deposit/new (Reserve DOI)'
echo '[Save]'
echo DOINO=$(cat .last-doi.txt)
cat .last-doitag.txt
echo . .last-doitag.txt
return
fi
echo "$DOINO" > .last-doi.txt
if [ -z "$TAG" ] ; then
echo '*** Set TAG and try again ***'
echo TAG=$(cat .last-tag.txt)
cat .last-doitag.txt
echo . .last-doitag.txt
return
fi
echo "$TAG" > .last-tag.txt
echo "export DOINO=$DOINO" > .last-doitag.txt
echo "export TAG=$TAG" >> .last-doitag.txt
echo "export YYYYMMDD=$YYYYMMDD" >> .last-doitag.txt
echo 'echo "$DOINO $YYYYMMDD ($TAG)"' >> .last-doitag.txt
perl -i -pe "s/20\d\d\d\d\d\d/$YYYYMMDD/" configure.ac
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/sql

View file

@ -5,8 +5,8 @@ bin_SCRIPTS = parallel sql niceload parcat parset parsort \
env_parallel.sh env_parallel.tcsh env_parallel.zsh
install-exec-hook:
rm $(DESTDIR)$(bindir)/sem || true
$(LN_S) parallel $(DESTDIR)$(bindir)/sem
rm "$(DESTDIR)$(bindir)"/sem || true
$(LN_S) parallel "$(DESTDIR)$(bindir)"/sem
if DOCUMENTATION
man_MANS = parallel.1 env_parallel.1 sem.1 sql.1 niceload.1 \
@ -30,253 +30,253 @@ endif
# Otherwise: Use the distributed version
parallel.1: parallel.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parallel.pod > $(srcdir)/parallel.1n \
&& mv $(srcdir)/parallel.1n $(srcdir)/parallel.1 \
--section=1 "$(srcdir)"/parallel.pod > "$(srcdir)"/parallel.1n \
&& mv "$(srcdir)"/parallel.1n "$(srcdir)"/parallel.1 \
|| echo "Warning: pod2man not found. Using old parallel.1"
env_parallel.1: env_parallel.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/env_parallel.pod > $(srcdir)/env_parallel.1n \
&& mv $(srcdir)/env_parallel.1n $(srcdir)/env_parallel.1 \
--section=1 "$(srcdir)"/env_parallel.pod > "$(srcdir)"/env_parallel.1n \
&& mv "$(srcdir)"/env_parallel.1n "$(srcdir)"/env_parallel.1 \
|| echo "Warning: pod2man not found. Using old env_parallel.1"
parallel_tutorial.7: parallel_tutorial.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_tutorial.pod > $(srcdir)/parallel_tutorial.7n \
&& mv $(srcdir)/parallel_tutorial.7n $(srcdir)/parallel_tutorial.7 \
--section=7 "$(srcdir)"/parallel_tutorial.pod > "$(srcdir)"/parallel_tutorial.7n \
&& mv "$(srcdir)"/parallel_tutorial.7n "$(srcdir)"/parallel_tutorial.7 \
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
parallel_book.7: parallel_book.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_book.pod > $(srcdir)/parallel_book.7n \
&& mv $(srcdir)/parallel_book.7n $(srcdir)/parallel_book.7 \
--section=7 "$(srcdir)"/parallel_book.pod > "$(srcdir)"/parallel_book.7n \
&& mv "$(srcdir)"/parallel_book.7n "$(srcdir)"/parallel_book.7 \
|| echo "Warning: pod2man not found. Using old parallel_book.7"
parallel_design.7: parallel_design.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_design.pod > $(srcdir)/parallel_design.7n \
&& mv $(srcdir)/parallel_design.7n $(srcdir)/parallel_design.7 \
--section=7 "$(srcdir)"/parallel_design.pod > "$(srcdir)"/parallel_design.7n \
&& mv "$(srcdir)"/parallel_design.7n "$(srcdir)"/parallel_design.7 \
|| echo "Warning: pod2man not found. Using old parallel_design.7"
parallel_alternatives.7: parallel_alternatives.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_alternatives.pod > $(srcdir)/parallel_alternatives.7n \
&& mv $(srcdir)/parallel_alternatives.7n $(srcdir)/parallel_alternatives.7 \
--section=7 "$(srcdir)"/parallel_alternatives.pod > "$(srcdir)"/parallel_alternatives.7n \
&& mv "$(srcdir)"/parallel_alternatives.7n "$(srcdir)"/parallel_alternatives.7 \
|| echo "Warning: pod2man not found. Using old parallel_alternatives.7"
sem.1: sem.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/sem.pod > $(srcdir)/sem.1n \
&& mv $(srcdir)/sem.1n $(srcdir)/sem.1 \
--section=1 "$(srcdir)"/sem.pod > "$(srcdir)"/sem.1n \
&& mv "$(srcdir)"/sem.1n "$(srcdir)"/sem.1 \
|| echo "Warning: pod2man not found. Using old sem.1"
sql.1: sql
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/sql > $(srcdir)/sql.1n \
&& mv $(srcdir)/sql.1n $(srcdir)/sql.1 \
--section=1 "$(srcdir)"/sql > "$(srcdir)"/sql.1n \
&& mv "$(srcdir)"/sql.1n "$(srcdir)"/sql.1 \
|| echo "Warning: pod2man not found. Using old sql.1"
niceload.1: niceload.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/niceload.pod > $(srcdir)/niceload.1n \
&& mv $(srcdir)/niceload.1n $(srcdir)/niceload.1 \
--section=1 "$(srcdir)"/niceload.pod > "$(srcdir)"/niceload.1n \
&& mv "$(srcdir)"/niceload.1n "$(srcdir)"/niceload.1 \
|| echo "Warning: pod2man not found. Using old niceload.1"
parcat.1: parcat.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parcat.pod > $(srcdir)/parcat.1n \
&& mv $(srcdir)/parcat.1n $(srcdir)/parcat.1 \
--section=1 "$(srcdir)"/parcat.pod > "$(srcdir)"/parcat.1n \
&& mv "$(srcdir)"/parcat.1n "$(srcdir)"/parcat.1 \
|| echo "Warning: pod2man not found. Using old parcat.1"
parset.1: parset.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parset.pod > $(srcdir)/parset.1n \
&& mv $(srcdir)/parset.1n $(srcdir)/parset.1 \
--section=1 "$(srcdir)"/parset.pod > "$(srcdir)"/parset.1n \
&& mv "$(srcdir)"/parset.1n "$(srcdir)"/parset.1 \
|| echo "Warning: pod2man not found. Using old parset.1"
parsort.1: parsort
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parsort > $(srcdir)/parsort.1n \
&& mv $(srcdir)/parsort.1n $(srcdir)/parsort.1 \
--section=1 "$(srcdir)"/parsort > "$(srcdir)"/parsort.1n \
&& mv "$(srcdir)"/parsort.1n "$(srcdir)"/parsort.1 \
|| echo "Warning: pod2man not found. Using old parsort.1"
parallel.html: parallel.pod
pod2html --title "GNU Parallel" $(srcdir)/parallel.pod > $(srcdir)/parallel.htmln \
&& mv $(srcdir)/parallel.htmln $(srcdir)/parallel.html \
pod2html --title "GNU Parallel" "$(srcdir)"/parallel.pod > "$(srcdir)"/parallel.htmln \
&& mv "$(srcdir)"/parallel.htmln "$(srcdir)"/parallel.html \
|| echo "Warning: pod2html not found. Using old parallel.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel.html to avoid stupid pod2html race condition
env_parallel.html: env_parallel.pod parallel.html
pod2html --title "GNU Parallel with environment" $(srcdir)/env_parallel.pod > $(srcdir)/env_parallel.htmln \
&& mv $(srcdir)/env_parallel.htmln $(srcdir)/env_parallel.html \
pod2html --title "GNU Parallel with environment" "$(srcdir)"/env_parallel.pod > "$(srcdir)"/env_parallel.htmln \
&& mv "$(srcdir)"/env_parallel.htmln "$(srcdir)"/env_parallel.html \
|| echo "Warning: pod2html not found. Using old env_parallel.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on env_parallel.html to avoid stupid pod2html race condition
parallel_tutorial.html: parallel_tutorial.pod env_parallel.html
pod2html --title "GNU Parallel tutorial" $(srcdir)/parallel_tutorial.pod > $(srcdir)/parallel_tutorial.htmln \
&& mv $(srcdir)/parallel_tutorial.htmln $(srcdir)/parallel_tutorial.html \
pod2html --title "GNU Parallel tutorial" "$(srcdir)"/parallel_tutorial.pod > "$(srcdir)"/parallel_tutorial.htmln \
&& mv "$(srcdir)"/parallel_tutorial.htmln "$(srcdir)"/parallel_tutorial.html \
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_tutorial.html to avoid stupid pod2html race condition
parallel_book.html: parallel_book.pod parallel_tutorial.html
pod2html --title "GNU Parallel book" $(srcdir)/parallel_book.pod > $(srcdir)/parallel_book.htmln \
&& mv $(srcdir)/parallel_book.htmln $(srcdir)/parallel_book.html \
pod2html --title "GNU Parallel book" "$(srcdir)"/parallel_book.pod > "$(srcdir)"/parallel_book.htmln \
&& mv "$(srcdir)"/parallel_book.htmln "$(srcdir)"/parallel_book.html \
|| echo "Warning: pod2html not found. Using old parallel_book.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_book.html to avoid stupid pod2html race condition
parallel_design.html: parallel_design.pod parallel_book.html
pod2html --title "GNU Parallel design" $(srcdir)/parallel_design.pod > $(srcdir)/parallel_design.htmln \
&& mv $(srcdir)/parallel_design.htmln $(srcdir)/parallel_design.html \
pod2html --title "GNU Parallel design" "$(srcdir)"/parallel_design.pod > "$(srcdir)"/parallel_design.htmln \
&& mv "$(srcdir)"/parallel_design.htmln "$(srcdir)"/parallel_design.html \
|| echo "Warning: pod2html not found. Using old parallel_design.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_design.html to avoid stupid pod2html race condition
parallel_alternatives.html: parallel_alternatives.pod parallel_design.html
pod2html --title "GNU Parallel alternatives" $(srcdir)/parallel_alternatives.pod > $(srcdir)/parallel_alternatives.htmln \
&& mv $(srcdir)/parallel_alternatives.htmln $(srcdir)/parallel_alternatives.html \
pod2html --title "GNU Parallel alternatives" "$(srcdir)"/parallel_alternatives.pod > "$(srcdir)"/parallel_alternatives.htmln \
&& mv "$(srcdir)"/parallel_alternatives.htmln "$(srcdir)"/parallel_alternatives.html \
|| echo "Warning: pod2html not found. Using old parallel_alternatives.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_alternatives.html to avoid stupid pod2html race condition
sem.html: sem.pod parallel_alternatives.html
pod2html --title "sem (GNU Parallel)" $(srcdir)/sem.pod > $(srcdir)/sem.htmln \
&& mv $(srcdir)/sem.htmln $(srcdir)/sem.html \
pod2html --title "sem (GNU Parallel)" "$(srcdir)"/sem.pod > "$(srcdir)"/sem.htmln \
&& mv "$(srcdir)"/sem.htmln "$(srcdir)"/sem.html \
|| echo "Warning: pod2html not found. Using old sem.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on sem.html to avoid stupid pod2html race condition
sql.html: sql sem.html
pod2html --title "GNU SQL" $(srcdir)/sql > $(srcdir)/sql.htmln \
&& mv $(srcdir)/sql.htmln $(srcdir)/sql.html \
pod2html --title "GNU SQL" "$(srcdir)"/sql > "$(srcdir)"/sql.htmln \
&& mv "$(srcdir)"/sql.htmln "$(srcdir)"/sql.html \
|| echo "Warning: pod2html not found. Using old sql.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on sql.html to avoid stupid pod2html race condition
niceload.html: niceload.pod sql.html
pod2html --title "GNU niceload" $(srcdir)/niceload.pod > $(srcdir)/niceload.htmln \
&& mv $(srcdir)/niceload.htmln $(srcdir)/niceload.html \
pod2html --title "GNU niceload" "$(srcdir)"/niceload.pod > "$(srcdir)"/niceload.htmln \
&& mv "$(srcdir)"/niceload.htmln "$(srcdir)"/niceload.html \
|| echo "Warning: pod2html not found. Using old niceload.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on niceload.html to avoid stupid pod2html race condition
parcat.html: parcat.pod niceload.html
pod2html --title "GNU parcat" $(srcdir)/parcat.pod > $(srcdir)/parcat.htmln \
&& mv $(srcdir)/parcat.htmln $(srcdir)/parcat.html \
pod2html --title "GNU parcat" "$(srcdir)"/parcat.pod > "$(srcdir)"/parcat.htmln \
&& mv "$(srcdir)"/parcat.htmln "$(srcdir)"/parcat.html \
|| echo "Warning: pod2html not found. Using old parcat.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parcat.html to avoid stupid pod2html race condition
parset.html: parset.pod parcat.html
pod2html --title "GNU parset" $(srcdir)/parset.pod > $(srcdir)/parset.htmln \
&& mv $(srcdir)/parset.htmln $(srcdir)/parset.html \
pod2html --title "GNU parset" "$(srcdir)"/parset.pod > "$(srcdir)"/parset.htmln \
&& mv "$(srcdir)"/parset.htmln "$(srcdir)"/parset.html \
|| echo "Warning: pod2html not found. Using old parset.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parset.html to avoid stupid pod2html race condition
parsort.html: parsort parset.html
pod2html --title "GNU parsort" $(srcdir)/parsort > $(srcdir)/parsort.htmln \
&& mv $(srcdir)/parsort.htmln $(srcdir)/parsort.html \
pod2html --title "GNU parsort" "$(srcdir)"/parsort > "$(srcdir)"/parsort.htmln \
&& mv "$(srcdir)"/parsort.htmln "$(srcdir)"/parsort.html \
|| echo "Warning: pod2html not found. Using old parsort.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
parallel.texi: parallel.pod
pod2texi --output=$(srcdir)/parallel.texi $(srcdir)/parallel.pod \
pod2texi --output="$(srcdir)"/parallel.texi "$(srcdir)"/parallel.pod \
|| echo "Warning: pod2texi not found. Using old parallel.texi"
env_parallel.texi: env_parallel.pod
pod2texi --output=$(srcdir)/env_parallel.texi $(srcdir)/env_parallel.pod \
pod2texi --output="$(srcdir)"/env_parallel.texi "$(srcdir)"/env_parallel.pod \
|| echo "Warning: pod2texi not found. Using old env_parallel.texi"
parallel_tutorial.texi: parallel_tutorial.pod
pod2texi --output=$(srcdir)/parallel_tutorial.texi $(srcdir)/parallel_tutorial.pod \
pod2texi --output="$(srcdir)"/parallel_tutorial.texi "$(srcdir)"/parallel_tutorial.pod \
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
parallel_book.texi: parallel_book.pod
pod2texi --output=$(srcdir)/parallel_book.texi $(srcdir)/parallel_book.pod \
pod2texi --output="$(srcdir)"/parallel_book.texi "$(srcdir)"/parallel_book.pod \
|| echo "Warning: pod2texi not found. Using old parallel_book.texi"
parallel_design.texi: parallel_design.pod
pod2texi --output=$(srcdir)/parallel_design.texi $(srcdir)/parallel_design.pod \
pod2texi --output="$(srcdir)"/parallel_design.texi "$(srcdir)"/parallel_design.pod \
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
parallel_alternatives.texi: parallel_alternatives.pod
pod2texi --output=$(srcdir)/parallel_alternatives.texi $(srcdir)/parallel_alternatives.pod \
pod2texi --output="$(srcdir)"/parallel_alternatives.texi "$(srcdir)"/parallel_alternatives.pod \
|| echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
sem.texi: sem.pod
pod2texi --output=$(srcdir)/sem.texi $(srcdir)/sem.pod \
pod2texi --output="$(srcdir)"/sem.texi "$(srcdir)"/sem.pod \
|| echo "Warning: pod2texi not found. Using old sem.texi"
sql.texi: sql
pod2texi --output=$(srcdir)/sql.texi $(srcdir)/sql \
pod2texi --output="$(srcdir)"/sql.texi "$(srcdir)"/sql \
|| echo "Warning: pod2texi not found. Using old sql.texi"
niceload.texi: niceload.pod
pod2texi --output=$(srcdir)/niceload.texi $(srcdir)/niceload.pod \
pod2texi --output="$(srcdir)"/niceload.texi "$(srcdir)"/niceload.pod \
|| echo "Warning: pod2texi not found. Using old niceload.texi"
parcat.texi: parcat.pod
pod2texi --output=$(srcdir)/parcat.texi $(srcdir)/parcat.pod \
pod2texi --output="$(srcdir)"/parcat.texi "$(srcdir)"/parcat.pod \
|| echo "Warning: pod2texi not found. Using old parcat.texi"
parset.texi: parset.pod
pod2texi --output=$(srcdir)/parset.texi $(srcdir)/parset.pod \
pod2texi --output="$(srcdir)"/parset.texi "$(srcdir)"/parset.pod \
|| echo "Warning: pod2texi not found. Using old parset.texi"
parsort.texi: parsort
pod2texi --output=$(srcdir)/parsort.texi $(srcdir)/parsort \
pod2texi --output="$(srcdir)"/parsort.texi "$(srcdir)"/parsort \
|| echo "Warning: pod2texi not found. Using old parsort.texi"
parallel.pdf: parallel.pod
pod2pdf --output-file $(srcdir)/parallel.pdf $(srcdir)/parallel.pod --title "GNU Parallel" \
pod2pdf --output-file "$(srcdir)"/parallel.pdf "$(srcdir)"/parallel.pod --title "GNU Parallel" \
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
env_parallel.pdf: env_parallel.pod
pod2pdf --output-file $(srcdir)/env_parallel.pdf $(srcdir)/env_parallel.pod --title "GNU Parallel with environment" \
pod2pdf --output-file "$(srcdir)"/env_parallel.pdf "$(srcdir)"/env_parallel.pod --title "GNU Parallel with environment" \
|| echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
parallel_tutorial.pdf: parallel_tutorial.pod
pod2pdf --output-file $(srcdir)/parallel_tutorial.pdf $(srcdir)/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
pod2pdf --output-file "$(srcdir)"/parallel_tutorial.pdf "$(srcdir)"/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
parallel_book.pdf: parallel_book.pod
pod2pdf --output-file $(srcdir)/parallel_book.pdf $(srcdir)/parallel_book.pod --title "GNU Parallel Book" \
pod2pdf --output-file "$(srcdir)"/parallel_book.pdf "$(srcdir)"/parallel_book.pod --title "GNU Parallel Book" \
|| echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
parallel_design.pdf: parallel_design.pod
pod2pdf --output-file $(srcdir)/parallel_design.pdf $(srcdir)/parallel_design.pod --title "GNU Parallel Design" \
pod2pdf --output-file "$(srcdir)"/parallel_design.pdf "$(srcdir)"/parallel_design.pod --title "GNU Parallel Design" \
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
parallel_alternatives.pdf: parallel_alternatives.pod
pod2pdf --output-file $(srcdir)/parallel_alternatives.pdf $(srcdir)/parallel_alternatives.pod --title "GNU Parallel alternatives" \
pod2pdf --output-file "$(srcdir)"/parallel_alternatives.pdf "$(srcdir)"/parallel_alternatives.pod --title "GNU Parallel alternatives" \
|| echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
sem.pdf: sem.pod
pod2pdf --output-file $(srcdir)/sem.pdf $(srcdir)/sem.pod --title "GNU sem" \
pod2pdf --output-file "$(srcdir)"/sem.pdf "$(srcdir)"/sem.pod --title "GNU sem" \
|| echo "Warning: pod2pdf not found. Using old sem.pdf"
sql.pdf: sql
pod2pdf --output-file $(srcdir)/sql.pdf $(srcdir)/sql --title "GNU SQL" \
pod2pdf --output-file "$(srcdir)"/sql.pdf "$(srcdir)"/sql --title "GNU SQL" \
|| echo "Warning: pod2pdf not found. Using old sql.pdf"
niceload.pdf: niceload.pod
pod2pdf --output-file $(srcdir)/niceload.pdf $(srcdir)/niceload.pod --title "GNU niceload" \
pod2pdf --output-file "$(srcdir)"/niceload.pdf "$(srcdir)"/niceload.pod --title "GNU niceload" \
|| echo "Warning: pod2pdf not found. Using old niceload.pdf"
parcat.pdf: parcat.pod
pod2pdf --output-file $(srcdir)/parcat.pdf $(srcdir)/parcat.pod --title "GNU parcat" \
pod2pdf --output-file "$(srcdir)"/parcat.pdf "$(srcdir)"/parcat.pod --title "GNU parcat" \
|| echo "Warning: pod2pdf not found. Using old parcat.pdf"
parset.pdf: parset.pod
pod2pdf --output-file $(srcdir)/parset.pdf $(srcdir)/parset.pod --title "GNU parset" \
pod2pdf --output-file "$(srcdir)"/parset.pdf "$(srcdir)"/parset.pod --title "GNU parset" \
|| echo "Warning: pod2pdf not found. Using old parset.pdf"
parsort.pdf: parsort
pod2pdf --output-file $(srcdir)/parsort.pdf $(srcdir)/parsort --title "GNU parsort" \
pod2pdf --output-file "$(srcdir)"/parsort.pdf "$(srcdir)"/parsort --title "GNU parsort" \
|| echo "Warning: pod2pdf not found. Using old parsort.pdf"
parallel_cheat_bw.pdf: parallel_cheat_bw.fodt

View file

@ -618,260 +618,260 @@ uninstall-man: uninstall-man1 uninstall-man7
install-exec-hook:
rm $(DESTDIR)$(bindir)/sem || true
$(LN_S) parallel $(DESTDIR)$(bindir)/sem
rm "$(DESTDIR)$(bindir)"/sem || true
$(LN_S) parallel "$(DESTDIR)$(bindir)"/sem
# Build documentation file if the tool to build exists.
# Otherwise: Use the distributed version
parallel.1: parallel.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parallel.pod > $(srcdir)/parallel.1n \
&& mv $(srcdir)/parallel.1n $(srcdir)/parallel.1 \
--section=1 "$(srcdir)"/parallel.pod > "$(srcdir)"/parallel.1n \
&& mv "$(srcdir)"/parallel.1n "$(srcdir)"/parallel.1 \
|| echo "Warning: pod2man not found. Using old parallel.1"
env_parallel.1: env_parallel.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/env_parallel.pod > $(srcdir)/env_parallel.1n \
&& mv $(srcdir)/env_parallel.1n $(srcdir)/env_parallel.1 \
--section=1 "$(srcdir)"/env_parallel.pod > "$(srcdir)"/env_parallel.1n \
&& mv "$(srcdir)"/env_parallel.1n "$(srcdir)"/env_parallel.1 \
|| echo "Warning: pod2man not found. Using old env_parallel.1"
parallel_tutorial.7: parallel_tutorial.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_tutorial.pod > $(srcdir)/parallel_tutorial.7n \
&& mv $(srcdir)/parallel_tutorial.7n $(srcdir)/parallel_tutorial.7 \
--section=7 "$(srcdir)"/parallel_tutorial.pod > "$(srcdir)"/parallel_tutorial.7n \
&& mv "$(srcdir)"/parallel_tutorial.7n "$(srcdir)"/parallel_tutorial.7 \
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
parallel_book.7: parallel_book.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_book.pod > $(srcdir)/parallel_book.7n \
&& mv $(srcdir)/parallel_book.7n $(srcdir)/parallel_book.7 \
--section=7 "$(srcdir)"/parallel_book.pod > "$(srcdir)"/parallel_book.7n \
&& mv "$(srcdir)"/parallel_book.7n "$(srcdir)"/parallel_book.7 \
|| echo "Warning: pod2man not found. Using old parallel_book.7"
parallel_design.7: parallel_design.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_design.pod > $(srcdir)/parallel_design.7n \
&& mv $(srcdir)/parallel_design.7n $(srcdir)/parallel_design.7 \
--section=7 "$(srcdir)"/parallel_design.pod > "$(srcdir)"/parallel_design.7n \
&& mv "$(srcdir)"/parallel_design.7n "$(srcdir)"/parallel_design.7 \
|| echo "Warning: pod2man not found. Using old parallel_design.7"
parallel_alternatives.7: parallel_alternatives.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=7 $(srcdir)/parallel_alternatives.pod > $(srcdir)/parallel_alternatives.7n \
&& mv $(srcdir)/parallel_alternatives.7n $(srcdir)/parallel_alternatives.7 \
--section=7 "$(srcdir)"/parallel_alternatives.pod > "$(srcdir)"/parallel_alternatives.7n \
&& mv "$(srcdir)"/parallel_alternatives.7n "$(srcdir)"/parallel_alternatives.7 \
|| echo "Warning: pod2man not found. Using old parallel_alternatives.7"
sem.1: sem.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/sem.pod > $(srcdir)/sem.1n \
&& mv $(srcdir)/sem.1n $(srcdir)/sem.1 \
--section=1 "$(srcdir)"/sem.pod > "$(srcdir)"/sem.1n \
&& mv "$(srcdir)"/sem.1n "$(srcdir)"/sem.1 \
|| echo "Warning: pod2man not found. Using old sem.1"
sql.1: sql
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/sql > $(srcdir)/sql.1n \
&& mv $(srcdir)/sql.1n $(srcdir)/sql.1 \
--section=1 "$(srcdir)"/sql > "$(srcdir)"/sql.1n \
&& mv "$(srcdir)"/sql.1n "$(srcdir)"/sql.1 \
|| echo "Warning: pod2man not found. Using old sql.1"
niceload.1: niceload.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/niceload.pod > $(srcdir)/niceload.1n \
&& mv $(srcdir)/niceload.1n $(srcdir)/niceload.1 \
--section=1 "$(srcdir)"/niceload.pod > "$(srcdir)"/niceload.1n \
&& mv "$(srcdir)"/niceload.1n "$(srcdir)"/niceload.1 \
|| echo "Warning: pod2man not found. Using old niceload.1"
parcat.1: parcat.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parcat.pod > $(srcdir)/parcat.1n \
&& mv $(srcdir)/parcat.1n $(srcdir)/parcat.1 \
--section=1 "$(srcdir)"/parcat.pod > "$(srcdir)"/parcat.1n \
&& mv "$(srcdir)"/parcat.1n "$(srcdir)"/parcat.1 \
|| echo "Warning: pod2man not found. Using old parcat.1"
parset.1: parset.pod
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parset.pod > $(srcdir)/parset.1n \
&& mv $(srcdir)/parset.1n $(srcdir)/parset.1 \
--section=1 "$(srcdir)"/parset.pod > "$(srcdir)"/parset.1n \
&& mv "$(srcdir)"/parset.1n "$(srcdir)"/parset.1 \
|| echo "Warning: pod2man not found. Using old parset.1"
parsort.1: parsort
pod2man --release='$(PACKAGE_VERSION)' --center='$(PACKAGE_NAME)' \
--section=1 $(srcdir)/parsort > $(srcdir)/parsort.1n \
&& mv $(srcdir)/parsort.1n $(srcdir)/parsort.1 \
--section=1 "$(srcdir)"/parsort > "$(srcdir)"/parsort.1n \
&& mv "$(srcdir)"/parsort.1n "$(srcdir)"/parsort.1 \
|| echo "Warning: pod2man not found. Using old parsort.1"
parallel.html: parallel.pod
pod2html --title "GNU Parallel" $(srcdir)/parallel.pod > $(srcdir)/parallel.htmln \
&& mv $(srcdir)/parallel.htmln $(srcdir)/parallel.html \
pod2html --title "GNU Parallel" "$(srcdir)"/parallel.pod > "$(srcdir)"/parallel.htmln \
&& mv "$(srcdir)"/parallel.htmln "$(srcdir)"/parallel.html \
|| echo "Warning: pod2html not found. Using old parallel.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel.html to avoid stupid pod2html race condition
env_parallel.html: env_parallel.pod parallel.html
pod2html --title "GNU Parallel with environment" $(srcdir)/env_parallel.pod > $(srcdir)/env_parallel.htmln \
&& mv $(srcdir)/env_parallel.htmln $(srcdir)/env_parallel.html \
pod2html --title "GNU Parallel with environment" "$(srcdir)"/env_parallel.pod > "$(srcdir)"/env_parallel.htmln \
&& mv "$(srcdir)"/env_parallel.htmln "$(srcdir)"/env_parallel.html \
|| echo "Warning: pod2html not found. Using old env_parallel.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on env_parallel.html to avoid stupid pod2html race condition
parallel_tutorial.html: parallel_tutorial.pod env_parallel.html
pod2html --title "GNU Parallel tutorial" $(srcdir)/parallel_tutorial.pod > $(srcdir)/parallel_tutorial.htmln \
&& mv $(srcdir)/parallel_tutorial.htmln $(srcdir)/parallel_tutorial.html \
pod2html --title "GNU Parallel tutorial" "$(srcdir)"/parallel_tutorial.pod > "$(srcdir)"/parallel_tutorial.htmln \
&& mv "$(srcdir)"/parallel_tutorial.htmln "$(srcdir)"/parallel_tutorial.html \
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_tutorial.html to avoid stupid pod2html race condition
parallel_book.html: parallel_book.pod parallel_tutorial.html
pod2html --title "GNU Parallel book" $(srcdir)/parallel_book.pod > $(srcdir)/parallel_book.htmln \
&& mv $(srcdir)/parallel_book.htmln $(srcdir)/parallel_book.html \
pod2html --title "GNU Parallel book" "$(srcdir)"/parallel_book.pod > "$(srcdir)"/parallel_book.htmln \
&& mv "$(srcdir)"/parallel_book.htmln "$(srcdir)"/parallel_book.html \
|| echo "Warning: pod2html not found. Using old parallel_book.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_book.html to avoid stupid pod2html race condition
parallel_design.html: parallel_design.pod parallel_book.html
pod2html --title "GNU Parallel design" $(srcdir)/parallel_design.pod > $(srcdir)/parallel_design.htmln \
&& mv $(srcdir)/parallel_design.htmln $(srcdir)/parallel_design.html \
pod2html --title "GNU Parallel design" "$(srcdir)"/parallel_design.pod > "$(srcdir)"/parallel_design.htmln \
&& mv "$(srcdir)"/parallel_design.htmln "$(srcdir)"/parallel_design.html \
|| echo "Warning: pod2html not found. Using old parallel_design.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_design.html to avoid stupid pod2html race condition
parallel_alternatives.html: parallel_alternatives.pod parallel_design.html
pod2html --title "GNU Parallel alternatives" $(srcdir)/parallel_alternatives.pod > $(srcdir)/parallel_alternatives.htmln \
&& mv $(srcdir)/parallel_alternatives.htmln $(srcdir)/parallel_alternatives.html \
pod2html --title "GNU Parallel alternatives" "$(srcdir)"/parallel_alternatives.pod > "$(srcdir)"/parallel_alternatives.htmln \
&& mv "$(srcdir)"/parallel_alternatives.htmln "$(srcdir)"/parallel_alternatives.html \
|| echo "Warning: pod2html not found. Using old parallel_alternatives.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parallel_alternatives.html to avoid stupid pod2html race condition
sem.html: sem.pod parallel_alternatives.html
pod2html --title "sem (GNU Parallel)" $(srcdir)/sem.pod > $(srcdir)/sem.htmln \
&& mv $(srcdir)/sem.htmln $(srcdir)/sem.html \
pod2html --title "sem (GNU Parallel)" "$(srcdir)"/sem.pod > "$(srcdir)"/sem.htmln \
&& mv "$(srcdir)"/sem.htmln "$(srcdir)"/sem.html \
|| echo "Warning: pod2html not found. Using old sem.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on sem.html to avoid stupid pod2html race condition
sql.html: sql sem.html
pod2html --title "GNU SQL" $(srcdir)/sql > $(srcdir)/sql.htmln \
&& mv $(srcdir)/sql.htmln $(srcdir)/sql.html \
pod2html --title "GNU SQL" "$(srcdir)"/sql > "$(srcdir)"/sql.htmln \
&& mv "$(srcdir)"/sql.htmln "$(srcdir)"/sql.html \
|| echo "Warning: pod2html not found. Using old sql.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on sql.html to avoid stupid pod2html race condition
niceload.html: niceload.pod sql.html
pod2html --title "GNU niceload" $(srcdir)/niceload.pod > $(srcdir)/niceload.htmln \
&& mv $(srcdir)/niceload.htmln $(srcdir)/niceload.html \
pod2html --title "GNU niceload" "$(srcdir)"/niceload.pod > "$(srcdir)"/niceload.htmln \
&& mv "$(srcdir)"/niceload.htmln "$(srcdir)"/niceload.html \
|| echo "Warning: pod2html not found. Using old niceload.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on niceload.html to avoid stupid pod2html race condition
parcat.html: parcat.pod niceload.html
pod2html --title "GNU parcat" $(srcdir)/parcat.pod > $(srcdir)/parcat.htmln \
&& mv $(srcdir)/parcat.htmln $(srcdir)/parcat.html \
pod2html --title "GNU parcat" "$(srcdir)"/parcat.pod > "$(srcdir)"/parcat.htmln \
&& mv "$(srcdir)"/parcat.htmln "$(srcdir)"/parcat.html \
|| echo "Warning: pod2html not found. Using old parcat.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parcat.html to avoid stupid pod2html race condition
parset.html: parset.pod parcat.html
pod2html --title "GNU parset" $(srcdir)/parset.pod > $(srcdir)/parset.htmln \
&& mv $(srcdir)/parset.htmln $(srcdir)/parset.html \
pod2html --title "GNU parset" "$(srcdir)"/parset.pod > "$(srcdir)"/parset.htmln \
&& mv "$(srcdir)"/parset.htmln "$(srcdir)"/parset.html \
|| echo "Warning: pod2html not found. Using old parset.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
# Depending on parset.html to avoid stupid pod2html race condition
parsort.html: parsort parset.html
pod2html --title "GNU parsort" $(srcdir)/parsort > $(srcdir)/parsort.htmln \
&& mv $(srcdir)/parsort.htmln $(srcdir)/parsort.html \
pod2html --title "GNU parsort" "$(srcdir)"/parsort > "$(srcdir)"/parsort.htmln \
&& mv "$(srcdir)"/parsort.htmln "$(srcdir)"/parsort.html \
|| echo "Warning: pod2html not found. Using old parsort.html"
rm -f $(srcdir)/pod2htm*
rm -f "$(srcdir)"/pod2htm*
parallel.texi: parallel.pod
pod2texi --output=$(srcdir)/parallel.texi $(srcdir)/parallel.pod \
pod2texi --output="$(srcdir)"/parallel.texi "$(srcdir)"/parallel.pod \
|| echo "Warning: pod2texi not found. Using old parallel.texi"
env_parallel.texi: env_parallel.pod
pod2texi --output=$(srcdir)/env_parallel.texi $(srcdir)/env_parallel.pod \
pod2texi --output="$(srcdir)"/env_parallel.texi "$(srcdir)"/env_parallel.pod \
|| echo "Warning: pod2texi not found. Using old env_parallel.texi"
parallel_tutorial.texi: parallel_tutorial.pod
pod2texi --output=$(srcdir)/parallel_tutorial.texi $(srcdir)/parallel_tutorial.pod \
pod2texi --output="$(srcdir)"/parallel_tutorial.texi "$(srcdir)"/parallel_tutorial.pod \
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
parallel_book.texi: parallel_book.pod
pod2texi --output=$(srcdir)/parallel_book.texi $(srcdir)/parallel_book.pod \
pod2texi --output="$(srcdir)"/parallel_book.texi "$(srcdir)"/parallel_book.pod \
|| echo "Warning: pod2texi not found. Using old parallel_book.texi"
parallel_design.texi: parallel_design.pod
pod2texi --output=$(srcdir)/parallel_design.texi $(srcdir)/parallel_design.pod \
pod2texi --output="$(srcdir)"/parallel_design.texi "$(srcdir)"/parallel_design.pod \
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
parallel_alternatives.texi: parallel_alternatives.pod
pod2texi --output=$(srcdir)/parallel_alternatives.texi $(srcdir)/parallel_alternatives.pod \
pod2texi --output="$(srcdir)"/parallel_alternatives.texi "$(srcdir)"/parallel_alternatives.pod \
|| echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
sem.texi: sem.pod
pod2texi --output=$(srcdir)/sem.texi $(srcdir)/sem.pod \
pod2texi --output="$(srcdir)"/sem.texi "$(srcdir)"/sem.pod \
|| echo "Warning: pod2texi not found. Using old sem.texi"
sql.texi: sql
pod2texi --output=$(srcdir)/sql.texi $(srcdir)/sql \
pod2texi --output="$(srcdir)"/sql.texi "$(srcdir)"/sql \
|| echo "Warning: pod2texi not found. Using old sql.texi"
niceload.texi: niceload.pod
pod2texi --output=$(srcdir)/niceload.texi $(srcdir)/niceload.pod \
pod2texi --output="$(srcdir)"/niceload.texi "$(srcdir)"/niceload.pod \
|| echo "Warning: pod2texi not found. Using old niceload.texi"
parcat.texi: parcat.pod
pod2texi --output=$(srcdir)/parcat.texi $(srcdir)/parcat.pod \
pod2texi --output="$(srcdir)"/parcat.texi "$(srcdir)"/parcat.pod \
|| echo "Warning: pod2texi not found. Using old parcat.texi"
parset.texi: parset.pod
pod2texi --output=$(srcdir)/parset.texi $(srcdir)/parset.pod \
pod2texi --output="$(srcdir)"/parset.texi "$(srcdir)"/parset.pod \
|| echo "Warning: pod2texi not found. Using old parset.texi"
parsort.texi: parsort
pod2texi --output=$(srcdir)/parsort.texi $(srcdir)/parsort \
pod2texi --output="$(srcdir)"/parsort.texi "$(srcdir)"/parsort \
|| echo "Warning: pod2texi not found. Using old parsort.texi"
parallel.pdf: parallel.pod
pod2pdf --output-file $(srcdir)/parallel.pdf $(srcdir)/parallel.pod --title "GNU Parallel" \
pod2pdf --output-file "$(srcdir)"/parallel.pdf "$(srcdir)"/parallel.pod --title "GNU Parallel" \
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
env_parallel.pdf: env_parallel.pod
pod2pdf --output-file $(srcdir)/env_parallel.pdf $(srcdir)/env_parallel.pod --title "GNU Parallel with environment" \
pod2pdf --output-file "$(srcdir)"/env_parallel.pdf "$(srcdir)"/env_parallel.pod --title "GNU Parallel with environment" \
|| echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
parallel_tutorial.pdf: parallel_tutorial.pod
pod2pdf --output-file $(srcdir)/parallel_tutorial.pdf $(srcdir)/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
pod2pdf --output-file "$(srcdir)"/parallel_tutorial.pdf "$(srcdir)"/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
parallel_book.pdf: parallel_book.pod
pod2pdf --output-file $(srcdir)/parallel_book.pdf $(srcdir)/parallel_book.pod --title "GNU Parallel Book" \
pod2pdf --output-file "$(srcdir)"/parallel_book.pdf "$(srcdir)"/parallel_book.pod --title "GNU Parallel Book" \
|| echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
parallel_design.pdf: parallel_design.pod
pod2pdf --output-file $(srcdir)/parallel_design.pdf $(srcdir)/parallel_design.pod --title "GNU Parallel Design" \
pod2pdf --output-file "$(srcdir)"/parallel_design.pdf "$(srcdir)"/parallel_design.pod --title "GNU Parallel Design" \
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
parallel_alternatives.pdf: parallel_alternatives.pod
pod2pdf --output-file $(srcdir)/parallel_alternatives.pdf $(srcdir)/parallel_alternatives.pod --title "GNU Parallel alternatives" \
pod2pdf --output-file "$(srcdir)"/parallel_alternatives.pdf "$(srcdir)"/parallel_alternatives.pod --title "GNU Parallel alternatives" \
|| echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
sem.pdf: sem.pod
pod2pdf --output-file $(srcdir)/sem.pdf $(srcdir)/sem.pod --title "GNU sem" \
pod2pdf --output-file "$(srcdir)"/sem.pdf "$(srcdir)"/sem.pod --title "GNU sem" \
|| echo "Warning: pod2pdf not found. Using old sem.pdf"
sql.pdf: sql
pod2pdf --output-file $(srcdir)/sql.pdf $(srcdir)/sql --title "GNU SQL" \
pod2pdf --output-file "$(srcdir)"/sql.pdf "$(srcdir)"/sql --title "GNU SQL" \
|| echo "Warning: pod2pdf not found. Using old sql.pdf"
niceload.pdf: niceload.pod
pod2pdf --output-file $(srcdir)/niceload.pdf $(srcdir)/niceload.pod --title "GNU niceload" \
pod2pdf --output-file "$(srcdir)"/niceload.pdf "$(srcdir)"/niceload.pod --title "GNU niceload" \
|| echo "Warning: pod2pdf not found. Using old niceload.pdf"
parcat.pdf: parcat.pod
pod2pdf --output-file $(srcdir)/parcat.pdf $(srcdir)/parcat.pod --title "GNU parcat" \
pod2pdf --output-file "$(srcdir)"/parcat.pdf "$(srcdir)"/parcat.pod --title "GNU parcat" \
|| echo "Warning: pod2pdf not found. Using old parcat.pdf"
parset.pdf: parset.pod
pod2pdf --output-file $(srcdir)/parset.pdf $(srcdir)/parset.pod --title "GNU parset" \
pod2pdf --output-file "$(srcdir)"/parset.pdf "$(srcdir)"/parset.pod --title "GNU parset" \
|| echo "Warning: pod2pdf not found. Using old parset.pdf"
parsort.pdf: parsort
pod2pdf --output-file $(srcdir)/parsort.pdf $(srcdir)/parsort --title "GNU parsort" \
pod2pdf --output-file "$(srcdir)"/parsort.pdf "$(srcdir)"/parsort --title "GNU parsort" \
|| echo "Warning: pod2pdf not found. Using old parsort.pdf"
parallel_cheat_bw.pdf: parallel_cheat_bw.fodt

View file

@ -382,7 +382,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -384,7 +384,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -382,7 +382,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -365,7 +365,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -368,7 +368,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -382,7 +382,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -83,7 +83,7 @@ else
# Make a tmpfile for the variable definitions + alias
set _tMpaLLfILe=`_tempfile`
foreach _vARnAmE ($_vARnAmES);
# These 3 lines break in csh version 20201023-3
# These 3 lines break in csh ver. 20110502-3
# if not defined: next
eval if'(! $?'$_vARnAmE') continue'
# if $#myvar <= 1 echo scalar_myvar=$var

View file

@ -359,7 +359,7 @@ _parset_main() {
return 255
fi
if [ "$_parset_NAME" = "--version" ] ; then
echo "parset 20201023 (GNU parallel `parallel --minversion 1`)"
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
echo "Copyright (C) 2007-2020 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

@ -23,7 +23,7 @@
use strict;
use Getopt::Long;
$Global::progname="niceload";
$Global::version = 20201023;
$Global::version = 20201122;
Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage();
if($opt::version) {

View file

@ -1025,97 +1025,97 @@ command in GNU B<parallel>.
B<1. Simple run, quoting is not necessary>
$ seq 1 3 | rush echo {}
1$ seq 1 3 | rush echo {}
$ seq 1 3 | parallel echo {}
1$ seq 1 3 | parallel echo {}
B<2. Read data from file (`-i`)>
$ rush echo {} -i data1.txt -i data2.txt
2$ rush echo {} -i data1.txt -i data2.txt
$ cat data1.txt data2.txt | parallel echo {}
2$ cat data1.txt data2.txt | parallel echo {}
B<3. Keep output order (`-k`)>
$ seq 1 3 | rush 'echo {}' -k
3$ seq 1 3 | rush 'echo {}' -k
$ seq 1 3 | parallel -k echo {}
3$ seq 1 3 | parallel -k echo {}
B<4. Timeout (`-t`)>
$ time seq 1 | rush 'sleep 2; echo {}' -t 1
4$ time seq 1 | rush 'sleep 2; echo {}' -t 1
$ time seq 1 | parallel --timeout 1 'sleep 2; echo {}'
4$ time seq 1 | parallel --timeout 1 'sleep 2; echo {}'
B<5. Retry (`-r`)>
$ seq 1 | rush 'python unexisted_script.py' -r 1
5$ seq 1 | rush 'python unexisted_script.py' -r 1
$ seq 1 | parallel --retries 2 'python unexisted_script.py'
5$ seq 1 | parallel --retries 2 'python unexisted_script.py'
Use B<-u> to see it is really run twice:
$ seq 1 | parallel -u --retries 2 'python unexisted_script.py'
5$ seq 1 | parallel -u --retries 2 'python unexisted_script.py'
B<6. Dirname (`{/}`) and basename (`{%}`) and remove custom
suffix (`{^suffix}`)>
$ echo dir/file_1.txt.gz | rush 'echo {/} {%} {^_1.txt.gz}'
6$ echo dir/file_1.txt.gz | rush 'echo {/} {%} {^_1.txt.gz}'
$ echo dir/file_1.txt.gz |
parallel --plus echo {//} {/} {%_1.txt.gz}
6$ echo dir/file_1.txt.gz |
parallel --plus echo {//} {/} {%_1.txt.gz}
B<7. Get basename, and remove last (`{.}`) or any (`{:}`) extension>
$ echo dir.d/file.txt.gz | rush 'echo {.} {:} {%.} {%:}'
7$ echo dir.d/file.txt.gz | rush 'echo {.} {:} {%.} {%:}'
$ echo dir.d/file.txt.gz | parallel 'echo {.} {:} {/.} {/:}'
7$ echo dir.d/file.txt.gz | parallel 'echo {.} {:} {/.} {/:}'
B<8. Job ID, combine fields index and other replacement strings>
$ echo 12 file.txt dir/s_1.fq.gz |
rush 'echo job {#}: {2} {2.} {3%:^_1}'
8$ echo 12 file.txt dir/s_1.fq.gz |
rush 'echo job {#}: {2} {2.} {3%:^_1}'
$ echo 12 file.txt dir/s_1.fq.gz |
parallel --colsep ' ' 'echo job {#}: {2} {2.} {3/:%_1}'
8$ echo 12 file.txt dir/s_1.fq.gz |
parallel --colsep ' ' 'echo job {#}: {2} {2.} {3/:%_1}'
B<9. Capture submatch using regular expression (`{@regexp}`)>
$ echo read_1.fq.gz | rush 'echo {@(.+)_\d}'
9$ echo read_1.fq.gz | rush 'echo {@(.+)_\d}'
$ echo read_1.fq.gz | parallel 'echo {@(.+)_\d}'
9$ echo read_1.fq.gz | parallel 'echo {@(.+)_\d}'
B<10. Custom field delimiter (`-d`)>
$ echo a=b=c | rush 'echo {1} {2} {3}' -d =
10$ echo a=b=c | rush 'echo {1} {2} {3}' -d =
$ echo a=b=c | parallel -d = echo {1} {2} {3}
10$ echo a=b=c | parallel -d = echo {1} {2} {3}
B<11. Send multi-lines to every command (`-n`)>
$ seq 5 | rush -n 2 -k 'echo "{}"; echo'
11$ seq 5 | rush -n 2 -k 'echo "{}"; echo'
$ seq 5 |
parallel -n 2 -k \
'echo {=-1 $_=join"\n",@arg[1..$#arg] =}; echo'
11$ seq 5 |
parallel -n 2 -k \
'echo {=-1 $_=join"\n",@arg[1..$#arg] =}; echo'
$ seq 5 | rush -n 2 -k 'echo "{}"; echo' -J ' '
11$ seq 5 | rush -n 2 -k 'echo "{}"; echo' -J ' '
$ seq 5 | parallel -n 2 -k 'echo {}; echo'
11$ seq 5 | parallel -n 2 -k 'echo {}; echo'
B<12. Custom record delimiter (`-D`), note that empty records are not used.>
$ echo a b c d | rush -D " " -k 'echo {}'
12$ echo a b c d | rush -D " " -k 'echo {}'
$ echo a b c d | parallel -d " " -k 'echo {}'
12$ echo a b c d | parallel -d " " -k 'echo {}'
$ echo abcd | rush -D "" -k 'echo {}'
12$ echo abcd | rush -D "" -k 'echo {}'
Cannot be done by GNU Parallel
$ cat fasta.fa
12$ cat fasta.fa
>seq1
tag
>seq2
@ -1126,43 +1126,43 @@ B<12. Custom record delimiter (`-D`), note that empty records are not used.>
a
cat
$ cat fasta.fa | rush -D ">" \
'echo FASTA record {#}: name: {1} sequence: {2}' -k -d "\n"
# rush fails to join the multiline sequences
12$ cat fasta.fa | rush -D ">" \
'echo FASTA record {#}: name: {1} sequence: {2}' -k -d "\n"
# rush fails to join the multiline sequences
$ cat fasta.fa | (read -n1 ignore_first_char;
parallel -d '>' --colsep '\n' echo FASTA record {#}: \
name: {1} sequence: '{=2 $_=join"",@arg[2..$#arg]=}'
)
12$ cat fasta.fa | (read -n1 ignore_first_char;
parallel -d '>' --colsep '\n' echo FASTA record {#}: \
name: {1} sequence: '{=2 $_=join"",@arg[2..$#arg]=}'
)
B<13. Assign value to variable, like `awk -v` (`-v`)>
$ seq 1 |
rush 'echo Hello, {fname} {lname}!' -v fname=Wei -v lname=Shen
13$ seq 1 |
rush 'echo Hello, {fname} {lname}!' -v fname=Wei -v lname=Shen
$ seq 1 |
parallel -N0 \
'fname=Wei; lname=Shen; echo Hello, ${fname} ${lname}!'
13$ seq 1 |
parallel -N0 \
'fname=Wei; lname=Shen; echo Hello, ${fname} ${lname}!'
$ for var in a b; do \
$ seq 1 3 | rush -k -v var=$var 'echo var: {var}, data: {}'; \
$ done
13$ for var in a b; do \
13$ seq 1 3 | rush -k -v var=$var 'echo var: {var}, data: {}'; \
13$ done
In GNU B<parallel> you would typically do:
$ seq 1 3 | parallel -k echo var: {1}, data: {2} ::: a b :::: -
13$ seq 1 3 | parallel -k echo var: {1}, data: {2} ::: a b :::: -
If you I<really> want the var:
$ seq 1 3 |
parallel -k var={1} ';echo var: $var, data: {}' ::: a b :::: -
13$ seq 1 3 |
parallel -k var={1} ';echo var: $var, data: {}' ::: a b :::: -
If you I<really> want the B<for>-loop:
$ for var in a b; do
> export var;
> seq 1 3 | parallel -k 'echo var: $var, data: {}';
> done
13$ for var in a b; do
export var;
seq 1 3 | parallel -k 'echo var: $var, data: {}';
done
Contrary to B<rush> this also works if the value is complex like:
@ -1171,66 +1171,66 @@ Contrary to B<rush> this also works if the value is complex like:
B<14. B<Preset variable> (`-v`), avoid repeatedly writing verbose replacement strings>
# naive way
$ echo read_1.fq.gz | rush 'echo {:^_1} {:^_1}_2.fq.gz'
14$ # naive way
echo read_1.fq.gz | rush 'echo {:^_1} {:^_1}_2.fq.gz'
$ echo read_1.fq.gz | parallel 'echo {:%_1} {:%_1}_2.fq.gz'
14$ echo read_1.fq.gz | parallel 'echo {:%_1} {:%_1}_2.fq.gz'
# macro + removing suffix
$ echo read_1.fq.gz |
rush -v p='{:^_1}' 'echo {p} {p}_2.fq.gz'
14$ # macro + removing suffix
echo read_1.fq.gz |
rush -v p='{:^_1}' 'echo {p} {p}_2.fq.gz'
$ echo read_1.fq.gz |
parallel 'p={:%_1}; echo $p ${p}_2.fq.gz'
14$ echo read_1.fq.gz |
parallel 'p={:%_1}; echo $p ${p}_2.fq.gz'
# macro + regular expression
$ echo read_1.fq.gz | rush -v p='{@(.+?)_\d}' 'echo {p} {p}_2.fq.gz'
14$ # macro + regular expression
echo read_1.fq.gz | rush -v p='{@(.+?)_\d}' 'echo {p} {p}_2.fq.gz'
$ echo read_1.fq.gz | parallel 'p={@(.+?)_\d}; echo $p ${p}_2.fq.gz'
14$ echo read_1.fq.gz | parallel 'p={@(.+?)_\d}; echo $p ${p}_2.fq.gz'
Contrary to B<rush> GNU B<parallel> works with complex values:
echo "My brother's 12\"read_1.fq.gz" |
parallel 'p={@(.+?)_\d}; echo $p ${p}_2.fq.gz'
14$ echo "My brother's 12\"read_1.fq.gz" |
parallel 'p={@(.+?)_\d}; echo $p ${p}_2.fq.gz'
B<15. Interrupt jobs by `Ctrl-C`, rush will stop unfinished commands and exit.>
$ seq 1 20 | rush 'sleep 1; echo {}'
^C
15$ seq 1 20 | rush 'sleep 1; echo {}'
^C
$ seq 1 20 | parallel 'sleep 1; echo {}'
^C
15$ seq 1 20 | parallel 'sleep 1; echo {}'
^C
B<16. Continue/resume jobs (`-c`). When some jobs failed (by
execution failure, timeout, or canceling by user with `Ctrl + C`),
please switch flag `-c/--continue` on and run again, so that `rush`
can save successful commands and ignore them in I<NEXT> run.>
$ seq 1 3 | rush 'sleep {}; echo {}' -t 3 -c
$ cat successful_cmds.rush
$ seq 1 3 | rush 'sleep {}; echo {}' -t 3 -c
16$ seq 1 3 | rush 'sleep {}; echo {}' -t 3 -c
cat successful_cmds.rush
seq 1 3 | rush 'sleep {}; echo {}' -t 3 -c
$ seq 1 3 | parallel --joblog mylog --timeout 2 \
'sleep {}; echo {}'
$ cat mylog
$ seq 1 3 | parallel --joblog mylog --retry-failed \
'sleep {}; echo {}'
16$ seq 1 3 | parallel --joblog mylog --timeout 2 \
'sleep {}; echo {}'
cat mylog
seq 1 3 | parallel --joblog mylog --retry-failed \
'sleep {}; echo {}'
Multi-line jobs:
$ seq 1 3 | rush 'sleep {}; echo {}; \
echo finish {}' -t 3 -c -C finished.rush
$ cat finished.rush
$ seq 1 3 | rush 'sleep {}; echo {}; \
echo finish {}' -t 3 -c -C finished.rush
16$ seq 1 3 | rush 'sleep {}; echo {}; \
echo finish {}' -t 3 -c -C finished.rush
cat finished.rush
seq 1 3 | rush 'sleep {}; echo {}; \
echo finish {}' -t 3 -c -C finished.rush
$ seq 1 3 |
parallel --joblog mylog --timeout 2 'sleep {}; echo {}; \
echo finish {}'
$ cat mylog
$ seq 1 3 |
parallel --joblog mylog --retry-failed 'sleep {}; echo {}; \
echo finish {}'
16$ seq 1 3 |
parallel --joblog mylog --timeout 2 'sleep {}; echo {}; \
echo finish {}'
cat mylog
seq 1 3 |
parallel --joblog mylog --retry-failed 'sleep {}; echo {}; \
echo finish {}'
B<17. A comprehensive example: downloading 1K+ pages given by
three URL list files using `phantomjs save_page.js` (some page
@ -1240,31 +1240,31 @@ running time (`-t`) of `60` seconds and `3` retry changes
(`-r`). Continue flag `-c` is also switched on, so we can continue
unfinished jobs. Luckily, it's accomplished in one run :)>
$ for f in $(seq 2014 2016); do \
$ /bin/rm -rf $f; mkdir -p $f; \
$ cat $f.html.txt | rush -v d=$f -d = \
'phantomjs save_page.js "{}" > {d}/{3}.html' \
-j 20 -t 60 -r 3 -c; \
$ done
17$ for f in $(seq 2014 2016); do \
/bin/rm -rf $f; mkdir -p $f; \
cat $f.html.txt | rush -v d=$f -d = \
'phantomjs save_page.js "{}" > {d}/{3}.html' \
-j 20 -t 60 -r 3 -c; \
done
GNU B<parallel> can append to an existing joblog with '+':
$ rm mylog
$ for f in $(seq 2014 2016); do
/bin/rm -rf $f; mkdir -p $f;
cat $f.html.txt |
parallel -j20 --timeout 60 --retries 4 --joblog +mylog \
--colsep = \
phantomjs save_page.js {1}={2}={3} '>' $f/{3}.html
done
17$ rm mylog
for f in $(seq 2014 2016); do
/bin/rm -rf $f; mkdir -p $f;
cat $f.html.txt |
parallel -j20 --timeout 60 --retries 4 --joblog +mylog \
--colsep = \
phantomjs save_page.js {1}={2}={3} '>' $f/{3}.html
done
B<18. A bioinformatics example: mapping with `bwa`, and
processing result with `samtools`:>
$ ref=ref/xxx.fa
$ threads=25
$ ls -d raw.cluster.clean.mapping/* \
| rush -v ref=$ref -v j=$threads -v p='{}/{%}' \
18$ ref=ref/xxx.fa
threads=25
ls -d raw.cluster.clean.mapping/* \
| rush -v ref=$ref -v j=$threads -v p='{}/{%}' \
'bwa mem -t {j} -M -a {ref} {p}_1.fq.gz {p}_2.fq.gz >{p}.sam;\
samtools view -bS {p}.sam > {p}.bam; \
samtools sort -T {p}.tmp -@ {j} {p}.bam -o {p}.sorted.bam; \
@ -1275,25 +1275,25 @@ processing result with `samtools`:>
GNU B<parallel> would use a function:
$ ref=ref/xxx.fa
$ export ref
$ thr=25
$ export thr
$ bwa_sam() {
p="$1"
bam="$p".bam
sam="$p".sam
sortbam="$p".sorted.bam
bwa mem -t $thr -M -a $ref ${p}_1.fq.gz ${p}_2.fq.gz > "$sam"
samtools view -bS "$sam" > "$bam"
samtools sort -T ${p}.tmp -@ $thr "$bam" -o "$sortbam"
samtools index "$sortbam"
samtools flagstat "$sortbam" > "$sortbam".flagstat
/bin/rm "$bam" "$sam"
}
$ export -f bwa_sam
$ ls -d raw.cluster.clean.mapping/* |
parallel -j 2 --verbose --joblog mylog bwa_sam
18$ ref=ref/xxx.fa
export ref
thr=25
export thr
bwa_sam() {
p="$1"
bam="$p".bam
sam="$p".sam
sortbam="$p".sorted.bam
bwa mem -t $thr -M -a $ref ${p}_1.fq.gz ${p}_2.fq.gz > "$sam"
samtools view -bS "$sam" > "$bam"
samtools sort -T ${p}.tmp -@ $thr "$bam" -o "$sortbam"
samtools index "$sortbam"
samtools flagstat "$sortbam" > "$sortbam".flagstat
/bin/rm "$bam" "$sam"
}
export -f bwa_sam
ls -d raw.cluster.clean.mapping/* |
parallel -j 2 --verbose --joblog mylog bwa_sam
=head3 Other B<rush> features
@ -2255,49 +2255,49 @@ Here are the examples from https://github.com/akramer/lateral with the
corresponding GNU B<sem> and GNU B<parallel> commands:
1$ lateral start
for i in $(cat /tmp/names); do
lateral run -- some_command $i
done
lateral wait
1$ for i in $(cat /tmp/names); do
1$ lateral run -- some_command $i
1$ done
1$ lateral wait
1$
1$ for i in $(cat /tmp/names); do
1$ sem some_command $i
1$ done
1$ sem --wait
1$
sem some_command $i
done
sem --wait
1$ parallel some_command :::: /tmp/names
2$ lateral start
for i in $(seq 1 100); do
lateral run -- my_slow_command < workfile$i > /tmp/logfile$i
done
lateral wait
2$ for i in $(seq 1 100); do
2$ lateral run -- my_slow_command < workfile$i > /tmp/logfile$i
2$ done
2$ lateral wait
2$
2$ for i in $(seq 1 100); do
2$ sem my_slow_command < workfile$i > /tmp/logfile$i
2$ done
2$ sem --wait
2$
sem my_slow_command < workfile$i > /tmp/logfile$i
done
sem --wait
2$ parallel 'my_slow_command < workfile{} > /tmp/logfile{}' \
::: {1..100}
3$ lateral start -p 0 # yup, it will just queue tasks
for i in $(seq 1 100); do
lateral run -- command_still_outputs_but_wont_spam inputfile$i
done
# command output spam can commence
lateral config -p 10; lateral wait
3$ for i in $(seq 1 100); do
3$ lateral run -- command_still_outputs_but_wont_spam inputfile$i
3$ done
3$ # command output spam can commence
3$ lateral config -p 10; lateral wait
3$
3$ for i in $(seq 1 100); do
3$ echo "command inputfile$i" >> joblist
3$ done
3$ parallel -j 10 :::: joblist
3$
echo "command inputfile$i" >> joblist
done
parallel -j 10 :::: joblist
3$ echo 1 > /tmp/njobs
3$ parallel -j /tmp/njobs command inputfile{} \
parallel -j /tmp/njobs command inputfile{} \
::: {1..100} &
3$ echo 10 >/tmp/njobs
3$ wait
echo 10 >/tmp/njobs
wait
https://github.com/akramer/lateral (Last checked: 2019-03)
@ -2614,6 +2614,82 @@ seconds (compared to 10 seconds with GNU B<parallel>).
https://pypi.org/project/papply/ (Last checked: 2020-04)
=head2 DIFFERENCES BETWEEN async AND GNU Parallel
Summary table (see legend above):
- - - I4 - - I7
- - - - - M6
- O2 O3 - O5 O6 - N/A N/A O10
E1 - - E4 - E6 -
- - - - - - - - -
S1 S2
B<async> is very similary to GNU B<parallel>'s B<--semaphore> mode
(aka B<sem>). B<async> requires the user to start a server process.
The input is quoted like B<-q> so you need B<bash -c "...;..."> to run
composed commands.
=head3 Examples as GNU Parallel
1$ S="/tmp/example_socket"
1$ ID=myid
2$ async -s="$S" server --start
2$ # GNU Parallel does not need a server to run
3$ for i in {1..20}; do
# prints command output to stdout
async -s="$S" cmd -- bash -c "sleep 1 && echo test $i"
done
3$ for i in {1..20}; do
# prints command output to stdout
sem --id "$ID" -j100% "sleep 1 && echo test $i"
# GNU Parallel will only print job when it is done
# If you need output from different jobs to mix
# use -u or --line-buffer
sem --id "$ID" -j100% --line-buffer "sleep 1 && echo test $i"
done
4$ # wait until all commands are finished
async -s="$S" wait
4$ sem --id "$ID" --wait
5$ # configure the server to run four commands in parallel
async -s="$S" server -j4
5$ export PARALLEL=-j4
6$ mkdir "/tmp/ex_dir"
for i in {21..40}; do
# redirects command output to /tmp/ex_dir/file*
async -s="$S" cmd -o "/tmp/ex_dir/file$i" -- \
bash -c "sleep 1 && echo test $i"
done
6$ mkdir "/tmp/ex_dir"
for i in {21..40}; do
# redirects command output to /tmp/ex_dir/file*
sem --id "$ID" --result '/tmp/my-ex/file-{=$_=""=}'"$i" \
"sleep 1 && echo test $i"
done
7$ sem --id "$ID" --wait
7$ async -s="$S" wait
8$ # stops server
async -s="$S" server --stop
8$ # GNU Parallel does not need to stop a server
https://github.com/ctbur/async/ (Last checked: 2020-11)
=head2 Todo
test_many_var() {
@ -2695,6 +2771,10 @@ seq 100000 | stdout parallel -Xj1 'echo {} {} | wc'
PASH: Light-touch Data-Parallel Shell Processing
https://arxiv.org/pdf/2007.09436.pdf
https://github.com/UnixJunkie/pardi
https://github.com/UnixJunkie/PAR (Same as http://savannah.nongnu.org/projects/par above?)
https://gitlab.com/netikras/bthread
https://github.com/JeiKeiLim/simple_distribute_job

View file

@ -118,7 +118,7 @@ GetOptions(
"help" => \$opt::dummy,
) || exit(255);
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
$Global::version = 20201023;
$Global::version = 20201122;
if($opt::version) { version(); exit 0; }
@Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)];
#if($opt::zero_terminated) { $/ = "\0"; }

View file

@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err);
sub parse_options {
$Global::version = 20201023;
$Global::version = 20201122;
$Global::progname = 'sql';
# This must be done first as this may exec myself

View file

@ -98,7 +98,7 @@ prereqremote: installparallel startvm
parallel -j0 --timeout 10 --tag ssh vagrant@parallel-server{} parallel --minversion 20121021 ::: 1 2 || (echo parallel on remote required for testsuite; /bin/true)
startvm:
parallel --tag -k 'ping -w 1 -c 1 {} || (cd vagrant/*/{} && vagrant up)' ::: centos8 freebsd11 freebsd12 rhel8 centos3 &
parallel --tag -k 'ping -w 1 -c 1 {} || (cd vagrant/*/{} && vagrant up; wssh vagrant@{} echo {} is up)' ::: centos8 freebsd11 freebsd12 rhel8 centos3 &
stopvm:
parallel --tag -k 'ping -w 1 -c 1 {} && cd vagrant/*/{} && vagrant suspend' ::: centos8 freebsd11 freebsd12 rhel8 centos3

View file

@ -17,7 +17,9 @@ stdout ping -w 1 -c 1 centos3 >/dev/null || (
cd vagrant/tange/centos3/ 2>/dev/null
cd ../vagrant/tange/centos3/ 2>/dev/null
stdout vagrant up >/dev/null
vagrant ssh -c 'sudo ifconfig eth1 172.27.27.3'
vagrant ssh -c 'sudo ifconfig eth1 172.27.27.3' |
# Ignore empty ^M line
grep ..
)
(
# Copy binaries to server

View file

@ -12,6 +12,55 @@ export -f stdsort
# Test amount of parallelization
# parallel --shuf --jl /tmp/myjl -j1 'export JOBS={1};'bash tests-to-run/parallel-local-0.3s.sh ::: {1..16} ::: {1..5}
par_replacement_string_on_utf8() {
echo '### test {} {.} on UTF8 input'
inputlist() {
echo "中国 (Zhōngguó)/China's (中国) road.jpg"
echo "中国.(中国)"
echo /tmp/test-of-{.}-parallel/subdir/file
echo '/tmp/test-of-{.}-parallel/subdir/file{.}.funkyextension}}'
}
inputlist | parallel -k echo {} {.}
}
par_compress_stdout_stderr() {
echo '### Test compress - stdout'
parallel --compress echo ::: OK
echo '### Test compress - stderr'
parallel --compress ls /{} ::: OK-if-missing-file 2>&1 >/dev/null
}
par_regexp_chars_in_template() {
echo '### Test regexp chars in template'
seq 1 6 | parallel -j1 -I :: -X echo 'a::b::^c::[.}c'
}
par_test_m_X() {
echo '### Test -m vs -X'
(echo foo;echo bar;echo joe.gif) | parallel -j1 -km echo 1{}2{.}3 A{.}B{.}C
(echo foo;echo bar;echo joe.gif) | parallel -j1 -kX echo 1{}2{.}3 A{.}B{.}C
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -km echo a{}b{.}c{.}
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -kX echo a{}b{.}c{.}
echo '### Test -q {.}'
echo a | parallel -qX echo "'"{.}"' "
echo a | parallel -qX echo "'{.}'"
}
par_i_t() {
echo '### Test -i'
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{.}ce
echo '### Test --replace'
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{.}ce
echo '### Test -t'
(echo b; echo c; echo f) | parallel -k -t echo {.}ar 2>&1 >/dev/null
echo '### Test --verbose'
(echo b; echo c; echo f) | parallel -k --verbose echo {.}ar 2>&1 >/dev/null
}
par_pipe_float_blocksize() {
echo '### Test --block <<non int>>'
seq 5 | parallel --block 3.1 --pipe wc

View file

@ -116,21 +116,6 @@ par_opt_arg_eaten() {
printf '1\0002\0003\0004\0005\000' | stdout parallel -k -0 -i repl echo repl OK
}
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_nice() {
echo 'Check that --nice works'
# parallel-20160422 OK

View file

@ -4,6 +4,14 @@
# Each should be taking 1-3s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_I_X_m() {
echo '### Test -I with -X and -m'
seq 10 | parallel -k 'seq 1 {.} | parallel -k -I :: echo {.} ::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -X -k -I :: echo a{.} b::'
seq 10 | parallel -k 'seq 1 {.} | parallel -j1 -m -k -I :: echo a{.} b::'
}
par_open_files_blocks() {
echo 'bug #38439: "open files" with --files --pipe blocks after a while'
ulimit -n 28

View file

@ -4,6 +4,21 @@
# Each should be taking 30-100s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_exit_code() {
echo 'bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"'
in_shell_run_command() {

View file

@ -4,6 +4,42 @@
# Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_10000_m_X() {
echo '### Test -m with 10000 args'
seq 10000 | perl -pe 's/$/.gif/' |
parallel -j1 -km echo a{}b{.}c{.} |
parallel -k --pipe --tee ::: wc md5sum
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
}
par_10000_5_rpl_X() {
echo '### Test -X with 10000 args and 5 replacement strings'
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
}
par_rpl_repeats() {
echo '### Test {.} does not repeat more than {}'
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -km echo a{}b{.}c{.}
}
par_X_I_meta() {
echo '### Test -X -I with shell meta chars'
seq 10000 | parallel -j1 -I :: -X echo a::b::c:: | wc -l
seq 10000 | parallel -j1 -I '<>' -X echo 'a<>b<>c<>' | wc -l
seq 10000 | parallel -j1 -I '<' -X echo 'a<b<c<' | wc -l
seq 10000 | parallel -j1 -I '>' -X echo 'a>b>c>' | wc -l
}
par_delay() {
echo "### Test --delay"
seq 9 | /usr/bin/time -f %e parallel -j3 --delay 0.57 true {} 2>&1 |

View file

@ -1,107 +1,2 @@
#!/bin/bash
# Test {.}
rsync -Ha --delete input-files/testdir2/ tmp/
cd tmp
echo '### Test {.} and {}'
find . -name '*.jpg' | parallel -j +0 convert -geometry 120 {} {.}_thumb.jpg
echo '### Test {.} with files that have no . but dir does'
mkdir -p /tmp/test-of-{.}-parallel/subdir;
touch /tmp/test-of-{.}-parallel/subdir/file;
touch /tmp/test-of-{.}-parallel/subdir/file{.}.funkyextension}};
find /tmp/test-of-{.}-parallel -type f | parallel echo {.} | sort;
rm -rf /tmp/test-of-{.}-parallel/subdir
find -type f | parallel -k diff {} a/foo ">"{.}.diff
ls | parallel -kv --group "ls {}|wc;echo {}"
ls | parallel -kj500 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"'
ls | parallel -kj500 --group 'sleep 1; ls {} | perl -ne "END{print $..\" {}\n\"}"'
mkdir 1-col 2-col
ls | parallel -kv touch -- {.}/abc-{.}-{} 2>&1
ls | parallel -kv rm -- {.}/abc-{.}-{} 2>&1
#test05.sh:find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v touch -- {}/abc-{}-{} 2>&1 \
#test05.sh:find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v rm -- {}/abc-{}-{} 2>&1 \
#test05.sh:find . -type d -print0 | perl -0 -pe 's:^./::' | parallel -0 -v rmdir -- {} 2>&1 \
# -L1 will join lines ending in ' '
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj0 -k -L1 --joblog /tmp/jl-`basename $0` -r
echo '### Test compress'
seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10'
echo '### Test compress - stderr'
seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10 >&2' 2>&1 >/dev/null
echo '### Test weird regexp chars'
seq 1 6 | parallel -j1 -I :: -X echo a::b::^c::[.}c
echo '### Test -m'
(echo foo;echo bar;echo joe.gif) | parallel -j1 -km echo 1{}2{.}3 A{.}B{.}C
(echo foo;echo bar;echo joe.gif) | parallel -j1 -kX echo 1{}2{.}3 A{.}B{.}C
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -km echo a{}b{.}c{.}
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -kX echo a{}b{.}c{.}
echo '### Test -m with 10000 args';
seq 10000 | perl -pe 's/$/.gif/' |
parallel -j1 -km echo a{}b{.}c{.} |
tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null;
wait;
sleep 1
echo '### Test -X with 10000 args and 5 expansions'
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
echo '### Test {.} does not repeat more than {}'
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -km echo a{}b{.}c{.}
echo '### Test -I with shell meta chars'
seq 10000 | parallel -j1 -I :: -X echo a::b::c:: | wc -l
seq 10000 | parallel -j1 -I '<>' -X echo 'a<>b<>c<>' | wc -l
seq 10000 | parallel -j1 -I '<' -X echo 'a<b<c<' | wc -l
seq 10000 | parallel -j1 -I '>' -X echo 'a>b>c>' | wc -l
echo '### Test {.}'
echo a | parallel -qX echo "'"{.}"' "
echo a | parallel -qX echo "'{.}'"
(echo "sleep 3; echo begin"; seq 1 30 | parallel -kq echo "sleep 1; echo {.}"; echo "echo end") | parallel -k -j0
echo '### Test -I with -X and -m'
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -k -I :: echo {.} ::'
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -j1 -X -k -I :: echo a{.} b::'
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -j1 -m -k -I :: echo a{.} b::'
echo '### Test -i'
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{.}ce
echo '### Test --replace'
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{.}ce
echo '### Test -t'
(echo b; echo c; echo f) | parallel -k -t echo {.}ar 2>&1 >/dev/null
echo '### Test --verbose'
(echo b; echo c; echo f) | parallel -k --verbose echo {.}ar 2>&1 >/dev/null
EOF

View file

@ -1,10 +1,22 @@
#!/bin/bash
(
cd vagrant/tange/centos3/
stdout vagrant up | grep -v 'default' | grep -v '==>' | grep -E '^$'
stdout ping -w 1 -c 1 centos3 >/dev/null || (
# Vagrant does not set the IP addr
cd testsuite/vagrant/tange/centos3/ 2>/dev/null
cd vagrant/tange/centos3/ 2>/dev/null
cd ../vagrant/tange/centos3/ 2>/dev/null
stdout vagrant up >/dev/null
vagrant ssh -c 'sudo ifconfig eth1 172.27.27.3' |
# Ignore empty ^M line
grep ..
)
stdout parallel --tag -k 'ping -w 1 -c 1 {} || (cd vagrant/*/{} && vagrant up)' ::: rhel8 centos3 |
grep -v 'default' | grep -v '==>' | grep -E '^$' &
wssh vagrant@rhel8 true
wssh vagrant@centos3 true
par_warning_on_centos3() {
echo "### bug #37589: Red Hat 9 (Shrike) perl v5.8.0 built for i386-linux-thread-multi error"
testone() {
@ -29,5 +41,14 @@ compgen -A function | grep par_ | LC_ALL=C sort |
(
cd vagrant/tange/centos3/
stdout vagrant suspend |
grep -v '==> default: Saving VM state'
grep -v '==> default: Saving VM state' |
grep -v 'An action .suspend. was attempted on the machine .default.,' |
grep -v 'but another process is already executing an action on the machine.' |
grep -v 'Vagrant locks each machine for access by only one process at a time.' |
grep -v 'Please wait until the other Vagrant process finishes modifying this' |
grep -v 'machine, then try again.' |
grep -v 'If you believe this message is in error, please check the process' |
grep -v 'listing for any "ruby" or "vagrant" processes and kill them. Then' |
grep -v 'try again.' |
grep .
)

View file

@ -1,6 +1,5 @@
### These tests requires VirtualBox running with the following images
vagrant@centos3
par_shellshock_bug par_shellshock_bug 2>&1
par_shellshock_bug bug #43358: shellshock breaks exporting functions using --env name
par_shellshock_bug Non-shellshock-hardened to non-shellshock-hardened

View file

@ -60,6 +60,10 @@ par_colsep_0 OK
par_colsep_0 OK
par_colsep_default bug #37956: --colsep does not default to '\t' as specified in the man page.
par_colsep_default one 1
par_compress_stdout_stderr ### Test compress - stdout
par_compress_stdout_stderr OK
par_compress_stdout_stderr ### Test compress - stderr
par_compress_stdout_stderr ls: cannot access '/OK-if-missing-file': No such file or directory
par_cr_newline_header ### --header : should set named replacement string if input line ends in \r\n
par_cr_newline_header bar
par_csv col1"x3"-new
@ -175,6 +179,18 @@ par_help ### Test --help and -h: Help output (just check we get the same amount
par_help Output from -h and --help
par_help 37
par_help 37
par_i_t ### Test -i
par_i_t replace
par_i_t ### Test --replace
par_i_t replace
par_i_t ### Test -t
par_i_t echo bar
par_i_t echo car
par_i_t echo far
par_i_t ### Test --verbose
par_i_t echo bar
par_i_t echo car
par_i_t echo far
par_inefficient_L bug #37325: Inefficiency of --pipe -L
par_inefficient_L 276 276 996
par_inefficient_L FOO
@ -771,6 +787,8 @@ par_recend_not_regexp ### bug #56558: --rrs with --recend that is not regexp
par_recend_not_regexp aend
par_recend_not_regexp b
par_recend_not_regexp end
par_regexp_chars_in_template ### Test regexp chars in template
par_regexp_chars_in_template a1b1^c1[.}c a2b2^c2[.}c a3b3^c3[.}c a4b4^c4[.}c a5b5^c5[.}c a6b6^c6[.}c
par_replace_replacementstring ### Test replace {}
par_replace_replacementstring replace curlies
par_replace_replacementstring replace curlies
@ -781,6 +799,11 @@ par_replacement_string_as_part_of_command /bin/ls
par_replacement_string_as_part_of_command /bin/ls
par_replacement_string_as_part_of_command /bin/ls
par_replacement_string_as_part_of_command /bin/ls
par_replacement_string_on_utf8 ### test {} {.} on UTF8 input
par_replacement_string_on_utf8 中国 (Zhōngguó)/China's (中国) road.jpg 中国 (Zhōngguó)/China's (中国) road
par_replacement_string_on_utf8 中国.(中国) 中国
par_replacement_string_on_utf8 /tmp/test-of-{.}-parallel/subdir/file /tmp/test-of-{.}-parallel/subdir/file
par_replacement_string_on_utf8 /tmp/test-of-{.}-parallel/subdir/file{.}.funkyextension}} /tmp/test-of-{.}-parallel/subdir/file{.}
par_results ### --results test.csv
par_results a
par_results b
@ -896,6 +919,14 @@ par_test_L_context_replace a11b a12b a13b a14b a15b a16b a17b a18b a19b
par_test_L_context_replace ### Test -L context replace
par_test_L_context_replace a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b
par_test_L_context_replace a11b a12b a13b a14b a15b a16b a17b a18b a19b
par_test_m_X ### Test -m vs -X
par_test_m_X 1foo bar joe.gif2foo bar joe3 Afoo bar joeBfoo bar joeC
par_test_m_X 1foo2foo3 1bar2bar3 1joe.gif2joe3 AfooBfooC AbarBbarC AjoeBjoeC
par_test_m_X a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6
par_test_m_X a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
par_test_m_X ### Test -q {.}
par_test_m_X 'a'
par_test_m_X 'a'
par_test_r_with_pipe ### Test of -r with --pipe - the first should give an empty line. The second should not.
par_test_r_with_pipe 1
par_test_r_with_pipe 0

View file

@ -24,25 +24,6 @@ par__pipepart_spawn 1:local / 2+ / 2+2+2+
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
par__pipepart_tee --pipepart --tee
par__pipepart_tee 314572800
par_bin ### Test --bin
par_bin 2 2 4
par_bin 2 2 4
par_bin 3 3 6
par_bin 3 3 7
par_bin 2 4 8
par_bin 2 4 8
par_bin 3 6 13
par_bin 3 6 13
par_bin ### Test --bin with expression that gives 1..n
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_bin ### Test --bin with expression that gives 0..n-1
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_colsep ### Test of --colsep
par_colsep a b c
par_colsep a b c

View file

@ -1,3 +1,79 @@
par_I_X_m ### Test -I with -X and -m
par_I_X_m 1 1
par_I_X_m 2 1
par_I_X_m 2 2
par_I_X_m 3 1
par_I_X_m 3 2
par_I_X_m 3 3
par_I_X_m 4 1
par_I_X_m 4 2
par_I_X_m 4 3
par_I_X_m 4 4
par_I_X_m 5 1
par_I_X_m 5 2
par_I_X_m 5 3
par_I_X_m 5 4
par_I_X_m 5 5
par_I_X_m 6 1
par_I_X_m 6 2
par_I_X_m 6 3
par_I_X_m 6 4
par_I_X_m 6 5
par_I_X_m 6 6
par_I_X_m 7 1
par_I_X_m 7 2
par_I_X_m 7 3
par_I_X_m 7 4
par_I_X_m 7 5
par_I_X_m 7 6
par_I_X_m 7 7
par_I_X_m 8 1
par_I_X_m 8 2
par_I_X_m 8 3
par_I_X_m 8 4
par_I_X_m 8 5
par_I_X_m 8 6
par_I_X_m 8 7
par_I_X_m 8 8
par_I_X_m 9 1
par_I_X_m 9 2
par_I_X_m 9 3
par_I_X_m 9 4
par_I_X_m 9 5
par_I_X_m 9 6
par_I_X_m 9 7
par_I_X_m 9 8
par_I_X_m 9 9
par_I_X_m 10 1
par_I_X_m 10 2
par_I_X_m 10 3
par_I_X_m 10 4
par_I_X_m 10 5
par_I_X_m 10 6
par_I_X_m 10 7
par_I_X_m 10 8
par_I_X_m 10 9
par_I_X_m 10 10
par_I_X_m a1 b1
par_I_X_m a2 b1 b2
par_I_X_m a3 b1 b2 b3
par_I_X_m a4 b1 b2 b3 b4
par_I_X_m a5 b1 b2 b3 b4 b5
par_I_X_m a6 b1 b2 b3 b4 b5 b6
par_I_X_m a7 b1 b2 b3 b4 b5 b6 b7
par_I_X_m a8 b1 b2 b3 b4 b5 b6 b7 b8
par_I_X_m a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
par_I_X_m a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
par_I_X_m a1 b1
par_I_X_m a2 b1 2
par_I_X_m a3 b1 2 3
par_I_X_m a4 b1 2 3 4
par_I_X_m a5 b1 2 3 4 5
par_I_X_m a6 b1 2 3 4 5 6
par_I_X_m a7 b1 2 3 4 5 6 7
par_I_X_m a8 b1 2 3 4 5 6 7 8
par_I_X_m a9 b1 2 3 4 5 6 7 8 9
par_I_X_m a10 b1 2 3 4 5 6 7 8 9 10
par_block_negative_prefix ### This should generate 10*2 jobs
par_block_negative_prefix 20 40 720
par_bug34241 ### bug #34241: --pipe should not spawn unneeded processes

View file

@ -218,8 +218,8 @@ par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/bin'
par_test_build_and_install /bin/install -c parallel sql niceload parcat parset parsort env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.mksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/tmp/parallel-install/bin'
par_test_build_and_install make install-exec-hook
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install rm /tmp/parallel-install/bin/sem || true
par_test_build_and_install ln -s parallel /tmp/parallel-install/bin/sem
par_test_build_and_install rm "/tmp/parallel-install/bin"/sem || true
par_test_build_and_install ln -s parallel "/tmp/parallel-install/bin"/sem
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install /bin/install -c -m 644 parallel.html env_parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_book.html parallel_design.html parallel_alternatives.html parcat.html parset.html parsort.html parallel.texi env_parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_book.texi parallel_design.texi parallel_alternatives.texi parcat.texi parset.texi parsort.texi parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf parallel_cheat_bw.pdf '/tmp/parallel-install/share/doc/parallel'
@ -254,222 +254,222 @@ par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
par_test_build_and_install Making install in src
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parallel.pod > ./parallel.1n \
par_test_build_and_install && mv ./parallel.1n ./parallel.1 \
par_test_build_and_install --section=1 "."/parallel.pod > "."/parallel.1n \
par_test_build_and_install && mv "."/parallel.1n "."/parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./env_parallel.pod > ./env_parallel.1n \
par_test_build_and_install && mv ./env_parallel.1n ./env_parallel.1 \
par_test_build_and_install --section=1 "."/env_parallel.pod > "."/env_parallel.1n \
par_test_build_and_install && mv "."/env_parallel.1n "."/env_parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old env_parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old env_parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sem.pod > ./sem.1n \
par_test_build_and_install && mv ./sem.1n ./sem.1 \
par_test_build_and_install --section=1 "."/sem.pod > "."/sem.1n \
par_test_build_and_install && mv "."/sem.1n "."/sem.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sem.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sem.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sql > ./sql.1n \
par_test_build_and_install && mv ./sql.1n ./sql.1 \
par_test_build_and_install --section=1 "."/sql > "."/sql.1n \
par_test_build_and_install && mv "."/sql.1n "."/sql.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sql.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./niceload.pod > ./niceload.1n \
par_test_build_and_install && mv ./niceload.1n ./niceload.1 \
par_test_build_and_install --section=1 "."/niceload.pod > "."/niceload.1n \
par_test_build_and_install && mv "."/niceload.1n "."/niceload.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old niceload.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old niceload.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
par_test_build_and_install && mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
par_test_build_and_install --section=7 "."/parallel_tutorial.pod > "."/parallel_tutorial.7n \
par_test_build_and_install && mv "."/parallel_tutorial.7n "."/parallel_tutorial.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_tutorial.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_tutorial.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_book.pod > ./parallel_book.7n \
par_test_build_and_install && mv ./parallel_book.7n ./parallel_book.7 \
par_test_build_and_install --section=7 "."/parallel_book.pod > "."/parallel_book.7n \
par_test_build_and_install && mv "."/parallel_book.7n "."/parallel_book.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_book.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_book.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_design.pod > ./parallel_design.7n \
par_test_build_and_install && mv ./parallel_design.7n ./parallel_design.7 \
par_test_build_and_install --section=7 "."/parallel_design.pod > "."/parallel_design.7n \
par_test_build_and_install && mv "."/parallel_design.7n "."/parallel_design.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_design.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_design.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
par_test_build_and_install && mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
par_test_build_and_install --section=7 "."/parallel_alternatives.pod > "."/parallel_alternatives.7n \
par_test_build_and_install && mv "."/parallel_alternatives.7n "."/parallel_alternatives.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_alternatives.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_alternatives.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parcat.pod > ./parcat.1n \
par_test_build_and_install && mv ./parcat.1n ./parcat.1 \
par_test_build_and_install --section=1 "."/parcat.pod > "."/parcat.1n \
par_test_build_and_install && mv "."/parcat.1n "."/parcat.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parcat.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parcat.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parset.pod > ./parset.1n \
par_test_build_and_install && mv ./parset.1n ./parset.1 \
par_test_build_and_install --section=1 "."/parset.pod > "."/parset.1n \
par_test_build_and_install && mv "."/parset.1n "."/parset.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parset.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parset.1
par_test_build_and_install pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
par_test_build_and_install && mv ./parallel.htmln ./parallel.html \
par_test_build_and_install pod2html --title "GNU Parallel" "."/parallel.pod > "."/parallel.htmln \
par_test_build_and_install && mv "."/parallel.htmln "."/parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
par_test_build_and_install && mv ./env_parallel.htmln ./env_parallel.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" "."/env_parallel.pod > "."/env_parallel.htmln \
par_test_build_and_install && mv "."/env_parallel.htmln "."/env_parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old env_parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old env_parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
par_test_build_and_install && mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" "."/parallel_tutorial.pod > "."/parallel_tutorial.htmln \
par_test_build_and_install && mv "."/parallel_tutorial.htmln "."/parallel_tutorial.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_tutorial.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_tutorial.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
par_test_build_and_install && mv ./parallel_book.htmln ./parallel_book.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" "."/parallel_book.pod > "."/parallel_book.htmln \
par_test_build_and_install && mv "."/parallel_book.htmln "."/parallel_book.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_book.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_book.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
par_test_build_and_install && mv ./parallel_design.htmln ./parallel_design.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" "."/parallel_design.pod > "."/parallel_design.htmln \
par_test_build_and_install && mv "."/parallel_design.htmln "."/parallel_design.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_design.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_design.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
par_test_build_and_install && mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" "."/parallel_alternatives.pod > "."/parallel_alternatives.htmln \
par_test_build_and_install && mv "."/parallel_alternatives.htmln "."/parallel_alternatives.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_alternatives.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_alternatives.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
par_test_build_and_install && mv ./sem.htmln ./sem.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" "."/sem.pod > "."/sem.htmln \
par_test_build_and_install && mv "."/sem.htmln "."/sem.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sem.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sem.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
par_test_build_and_install && mv ./sql.htmln ./sql.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" "."/sql > "."/sql.htmln \
par_test_build_and_install && mv "."/sql.htmln "."/sql.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sql.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" "."/niceload.pod > "."/niceload.htmln \
par_test_build_and_install && mv "."/niceload.htmln "."/niceload.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old niceload.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" "."/parcat.pod > "."/parcat.htmln \
par_test_build_and_install && mv "."/parcat.htmln "."/parcat.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parcat.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
par_test_build_and_install && mv ./parset.htmln ./parset.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU parset" "."/parset.pod > "."/parset.htmln \
par_test_build_and_install && mv "."/parset.htmln "."/parset.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parset.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2texi --output=./parallel.texi ./parallel.pod \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2texi --output="."/parallel.texi "."/parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel.texi
par_test_build_and_install pod2texi --output=./env_parallel.texi ./env_parallel.pod \
par_test_build_and_install pod2texi --output="."/env_parallel.texi "."/env_parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old env_parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old env_parallel.texi
par_test_build_and_install pod2texi --output=./sem.texi ./sem.pod \
par_test_build_and_install pod2texi --output="."/sem.texi "."/sem.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sem.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sem.texi
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
par_test_build_and_install pod2texi --output="."/sql.texi "."/sql \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sql.texi
par_test_build_and_install pod2texi --output=./niceload.texi ./niceload.pod \
par_test_build_and_install pod2texi --output="."/niceload.texi "."/niceload.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old niceload.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old niceload.texi
par_test_build_and_install pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
par_test_build_and_install pod2texi --output="."/parallel_tutorial.texi "."/parallel_tutorial.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_tutorial.texi
par_test_build_and_install pod2texi --output=./parallel_book.texi ./parallel_book.pod \
par_test_build_and_install pod2texi --output="."/parallel_book.texi "."/parallel_book.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_book.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_book.texi
par_test_build_and_install pod2texi --output=./parallel_design.texi ./parallel_design.pod \
par_test_build_and_install pod2texi --output="."/parallel_design.texi "."/parallel_design.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_design.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_design.texi
par_test_build_and_install pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
par_test_build_and_install pod2texi --output="."/parallel_alternatives.texi "."/parallel_alternatives.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_alternatives.texi
par_test_build_and_install pod2texi --output=./parcat.texi ./parcat.pod \
par_test_build_and_install pod2texi --output="."/parcat.texi "."/parcat.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parcat.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parcat.texi
par_test_build_and_install pod2texi --output=./parset.texi ./parset.pod \
par_test_build_and_install pod2texi --output="."/parset.texi "."/parset.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parset.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parset.texi
par_test_build_and_install pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
par_test_build_and_install pod2pdf --output-file "."/parallel.pdf "."/parallel.pod --title "GNU Parallel" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel.pdf
par_test_build_and_install pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install pod2pdf --output-file "."/env_parallel.pdf "."/env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old env_parallel.pdf
par_test_build_and_install pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
par_test_build_and_install pod2pdf --output-file "."/sem.pdf "."/sem.pod --title "GNU sem" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sem.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sem.pdf
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
par_test_build_and_install pod2pdf --output-file "."/sql.pdf "."/sql --title "GNU SQL" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sql.pdf
par_test_build_and_install pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
par_test_build_and_install pod2pdf --output-file "."/niceload.pdf "."/niceload.pod --title "GNU niceload" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old niceload.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old niceload.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install pod2pdf --output-file "."/parallel_tutorial.pdf "."/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_tutorial.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install pod2pdf --output-file "."/parallel_book.pdf "."/parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_book.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install pod2pdf --output-file "."/parallel_design.pdf "."/parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_design.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install pod2pdf --output-file "."/parallel_alternatives.pdf "."/parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_alternatives.pdf
par_test_build_and_install pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
par_test_build_and_install pod2pdf --output-file "."/parcat.pdf "."/parcat.pod --title "GNU parcat" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parcat.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parcat.pdf
par_test_build_and_install pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
par_test_build_and_install pod2pdf --output-file "."/parset.pdf "."/parset.pod --title "GNU parset" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parset.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parset.pdf
@ -478,228 +478,228 @@ par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/bin'
par_test_build_and_install /bin/install -c parallel sql niceload parcat parset parsort env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.mksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/tmp/parallel-install/bin'
par_test_build_and_install make install-exec-hook
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000/src'
par_test_build_and_install rm /tmp/parallel-install/bin/sem || true
par_test_build_and_install ln -s parallel /tmp/parallel-install/bin/sem
par_test_build_and_install rm "/tmp/parallel-install/bin"/sem || true
par_test_build_and_install ln -s parallel "/tmp/parallel-install/bin"/sem
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/src'
par_test_build_and_install pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
par_test_build_and_install && mv ./parallel.htmln ./parallel.html \
par_test_build_and_install pod2html --title "GNU Parallel" "."/parallel.pod > "."/parallel.htmln \
par_test_build_and_install && mv "."/parallel.htmln "."/parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
par_test_build_and_install && mv ./env_parallel.htmln ./env_parallel.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel with environment" "."/env_parallel.pod > "."/env_parallel.htmln \
par_test_build_and_install && mv "."/env_parallel.htmln "."/env_parallel.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old env_parallel.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old env_parallel.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
par_test_build_and_install && mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel tutorial" "."/parallel_tutorial.pod > "."/parallel_tutorial.htmln \
par_test_build_and_install && mv "."/parallel_tutorial.htmln "."/parallel_tutorial.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_tutorial.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_tutorial.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
par_test_build_and_install && mv ./parallel_book.htmln ./parallel_book.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel book" "."/parallel_book.pod > "."/parallel_book.htmln \
par_test_build_and_install && mv "."/parallel_book.htmln "."/parallel_book.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_book.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_book.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
par_test_build_and_install && mv ./parallel_design.htmln ./parallel_design.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel design" "."/parallel_design.pod > "."/parallel_design.htmln \
par_test_build_and_install && mv "."/parallel_design.htmln "."/parallel_design.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_design.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_design.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
par_test_build_and_install && mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU Parallel alternatives" "."/parallel_alternatives.pod > "."/parallel_alternatives.htmln \
par_test_build_and_install && mv "."/parallel_alternatives.htmln "."/parallel_alternatives.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parallel_alternatives.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parallel_alternatives.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
par_test_build_and_install && mv ./sem.htmln ./sem.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "sem (GNU Parallel)" "."/sem.pod > "."/sem.htmln \
par_test_build_and_install && mv "."/sem.htmln "."/sem.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sem.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sem.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
par_test_build_and_install && mv ./sql.htmln ./sql.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU SQL" "."/sql > "."/sql.htmln \
par_test_build_and_install && mv "."/sql.htmln "."/sql.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old sql.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU niceload" "."/niceload.pod > "."/niceload.htmln \
par_test_build_and_install && mv "."/niceload.htmln "."/niceload.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old niceload.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU parcat" "."/parcat.pod > "."/parcat.htmln \
par_test_build_and_install && mv "."/parcat.htmln "."/parcat.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parcat.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
par_test_build_and_install && mv ./parset.htmln ./parset.html \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2html --title "GNU parset" "."/parset.pod > "."/parset.htmln \
par_test_build_and_install && mv "."/parset.htmln "."/parset.html \
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
par_test_build_and_install /bin/bash: pod2html: command not found
par_test_build_and_install Warning: pod2html not found. Using old parset.html
par_test_build_and_install rm -f ./pod2htm*
par_test_build_and_install pod2texi --output=./parallel.texi ./parallel.pod \
par_test_build_and_install rm -f "."/pod2htm*
par_test_build_and_install pod2texi --output="."/parallel.texi "."/parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel.texi
par_test_build_and_install pod2texi --output=./env_parallel.texi ./env_parallel.pod \
par_test_build_and_install pod2texi --output="."/env_parallel.texi "."/env_parallel.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old env_parallel.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old env_parallel.texi
par_test_build_and_install pod2texi --output=./sem.texi ./sem.pod \
par_test_build_and_install pod2texi --output="."/sem.texi "."/sem.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sem.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sem.texi
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
par_test_build_and_install pod2texi --output="."/sql.texi "."/sql \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old sql.texi
par_test_build_and_install pod2texi --output=./niceload.texi ./niceload.pod \
par_test_build_and_install pod2texi --output="."/niceload.texi "."/niceload.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old niceload.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old niceload.texi
par_test_build_and_install pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
par_test_build_and_install pod2texi --output="."/parallel_tutorial.texi "."/parallel_tutorial.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_tutorial.texi
par_test_build_and_install pod2texi --output=./parallel_book.texi ./parallel_book.pod \
par_test_build_and_install pod2texi --output="."/parallel_book.texi "."/parallel_book.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_book.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_book.texi
par_test_build_and_install pod2texi --output=./parallel_design.texi ./parallel_design.pod \
par_test_build_and_install pod2texi --output="."/parallel_design.texi "."/parallel_design.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_design.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_design.texi
par_test_build_and_install pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
par_test_build_and_install pod2texi --output="."/parallel_alternatives.texi "."/parallel_alternatives.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parallel_alternatives.texi
par_test_build_and_install pod2texi --output=./parcat.texi ./parcat.pod \
par_test_build_and_install pod2texi --output="."/parcat.texi "."/parcat.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parcat.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parcat.texi
par_test_build_and_install pod2texi --output=./parset.texi ./parset.pod \
par_test_build_and_install pod2texi --output="."/parset.texi "."/parset.pod \
par_test_build_and_install || echo "Warning: pod2texi not found. Using old parset.texi"
par_test_build_and_install /bin/bash: pod2texi: command not found
par_test_build_and_install Warning: pod2texi not found. Using old parset.texi
par_test_build_and_install pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
par_test_build_and_install pod2pdf --output-file "."/parallel.pdf "."/parallel.pod --title "GNU Parallel" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel.pdf
par_test_build_and_install pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install pod2pdf --output-file "."/env_parallel.pdf "."/env_parallel.pod --title "GNU Parallel with environment" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old env_parallel.pdf
par_test_build_and_install pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
par_test_build_and_install pod2pdf --output-file "."/sem.pdf "."/sem.pod --title "GNU sem" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sem.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sem.pdf
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
par_test_build_and_install pod2pdf --output-file "."/sql.pdf "."/sql --title "GNU SQL" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old sql.pdf
par_test_build_and_install pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
par_test_build_and_install pod2pdf --output-file "."/niceload.pdf "."/niceload.pod --title "GNU niceload" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old niceload.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old niceload.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install pod2pdf --output-file "."/parallel_tutorial.pdf "."/parallel_tutorial.pod --title "GNU Parallel Tutorial" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_tutorial.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install pod2pdf --output-file "."/parallel_book.pdf "."/parallel_book.pod --title "GNU Parallel Book" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_book.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install pod2pdf --output-file "."/parallel_design.pdf "."/parallel_design.pod --title "GNU Parallel Design" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_design.pdf
par_test_build_and_install pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install pod2pdf --output-file "."/parallel_alternatives.pdf "."/parallel_alternatives.pod --title "GNU Parallel alternatives" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parallel_alternatives.pdf
par_test_build_and_install pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
par_test_build_and_install pod2pdf --output-file "."/parcat.pdf "."/parcat.pod --title "GNU parcat" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parcat.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parcat.pdf
par_test_build_and_install pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
par_test_build_and_install pod2pdf --output-file "."/parset.pdf "."/parset.pod --title "GNU parset" \
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old parset.pdf"
par_test_build_and_install /bin/bash: pod2pdf: command not found
par_test_build_and_install Warning: pod2pdf not found. Using old parset.pdf
par_test_build_and_install /bin/mkdir -p '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install /bin/install -c -m 644 parallel.html env_parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_book.html parallel_design.html parallel_alternatives.html parcat.html parset.html parsort.html parallel.texi env_parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_book.texi parallel_design.texi parallel_alternatives.texi parcat.texi parset.texi parsort.texi parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf parallel_cheat_bw.pdf '/tmp/parallel-install/share/doc/parallel'
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parallel.pod > ./parallel.1n \
par_test_build_and_install && mv ./parallel.1n ./parallel.1 \
par_test_build_and_install --section=1 "."/parallel.pod > "."/parallel.1n \
par_test_build_and_install && mv "."/parallel.1n "."/parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./env_parallel.pod > ./env_parallel.1n \
par_test_build_and_install && mv ./env_parallel.1n ./env_parallel.1 \
par_test_build_and_install --section=1 "."/env_parallel.pod > "."/env_parallel.1n \
par_test_build_and_install && mv "."/env_parallel.1n "."/env_parallel.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old env_parallel.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old env_parallel.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sem.pod > ./sem.1n \
par_test_build_and_install && mv ./sem.1n ./sem.1 \
par_test_build_and_install --section=1 "."/sem.pod > "."/sem.1n \
par_test_build_and_install && mv "."/sem.1n "."/sem.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sem.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sem.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./sql > ./sql.1n \
par_test_build_and_install && mv ./sql.1n ./sql.1 \
par_test_build_and_install --section=1 "."/sql > "."/sql.1n \
par_test_build_and_install && mv "."/sql.1n "."/sql.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old sql.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./niceload.pod > ./niceload.1n \
par_test_build_and_install && mv ./niceload.1n ./niceload.1 \
par_test_build_and_install --section=1 "."/niceload.pod > "."/niceload.1n \
par_test_build_and_install && mv "."/niceload.1n "."/niceload.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old niceload.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old niceload.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
par_test_build_and_install && mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
par_test_build_and_install --section=7 "."/parallel_tutorial.pod > "."/parallel_tutorial.7n \
par_test_build_and_install && mv "."/parallel_tutorial.7n "."/parallel_tutorial.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_tutorial.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_tutorial.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_book.pod > ./parallel_book.7n \
par_test_build_and_install && mv ./parallel_book.7n ./parallel_book.7 \
par_test_build_and_install --section=7 "."/parallel_book.pod > "."/parallel_book.7n \
par_test_build_and_install && mv "."/parallel_book.7n "."/parallel_book.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_book.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_book.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_design.pod > ./parallel_design.7n \
par_test_build_and_install && mv ./parallel_design.7n ./parallel_design.7 \
par_test_build_and_install --section=7 "."/parallel_design.pod > "."/parallel_design.7n \
par_test_build_and_install && mv "."/parallel_design.7n "."/parallel_design.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_design.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_design.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
par_test_build_and_install && mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
par_test_build_and_install --section=7 "."/parallel_alternatives.pod > "."/parallel_alternatives.7n \
par_test_build_and_install && mv "."/parallel_alternatives.7n "."/parallel_alternatives.7 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parallel_alternatives.7"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parallel_alternatives.7
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parcat.pod > ./parcat.1n \
par_test_build_and_install && mv ./parcat.1n ./parcat.1 \
par_test_build_and_install --section=1 "."/parcat.pod > "."/parcat.1n \
par_test_build_and_install && mv "."/parcat.1n "."/parcat.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parcat.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parcat.1
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
par_test_build_and_install --section=1 ./parset.pod > ./parset.1n \
par_test_build_and_install && mv ./parset.1n ./parset.1 \
par_test_build_and_install --section=1 "."/parset.pod > "."/parset.1n \
par_test_build_and_install && mv "."/parset.1n "."/parset.1 \
par_test_build_and_install || echo "Warning: pod2man not found. Using old parset.1"
par_test_build_and_install /bin/bash: pod2man: command not found
par_test_build_and_install Warning: pod2man not found. Using old parset.1

View file

@ -1,3 +1,22 @@
par_bin ### Test --bin
par_bin 2 2 4
par_bin 2 2 4
par_bin 3 3 6
par_bin 3 3 7
par_bin 2 4 8
par_bin 2 4 8
par_bin 3 6 13
par_bin 3 6 13
par_bin ### Test --bin with expression that gives 1..n
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_bin ### Test --bin with expression that gives 0..n-1
par_bin 0 0 0
par_bin 0 0 0
par_bin 5 10 21
par_bin 5 10 21
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
par_exit_code # Ideally the command should return the same
par_exit_code # with or without parallel

View file

@ -1,3 +1,22 @@
par_10000_5_rpl_X ### Test -X with 10000 args and 5 replacement strings
par_10000_5_rpl_X 3
par_10000_5_rpl_X 2
par_10000_5_rpl_X 2
par_10000_5_rpl_X 2
par_10000_5_rpl_X 1
par_10000_m_X ### Test -m with 10000 args
par_10000_m_X 2 29996 186684
par_10000_m_X c606aec1723ee5cc15f2a1b95d83d3cf -
par_10000_m_X 3
par_10000_m_X 2
par_10000_m_X 2
par_10000_m_X 2
par_10000_m_X 1
par_X_I_meta ### Test -X -I with shell meta chars
par_X_I_meta 2
par_X_I_meta 2
par_X_I_meta 2
par_X_I_meta 2
par_children_receive_sig ### Do children receive --termseq signals
par_children_receive_sig parallel: Warning: This job was killed because it timed out:
par_children_receive_sig parallel: Warning: show_signals ''
@ -312,6 +331,13 @@ par_resume_k try 2 = nothing
par_resume_k two extra
par_resume_k job6id
par_resume_k job7id
par_rpl_repeats ### Test {.} does not repeat more than {}
par_rpl_repeats a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
par_rpl_repeats a7.gifb7c7 a8.gifb8c8 a9.gifb9c9 a10.gifb10c10 a11.gifb11c11 a12.gifb12c12
par_rpl_repeats a13.gifb13c13 a14.gifb14c14 a15.gifb15c15
par_rpl_repeats a1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gifb1 2 3 4 5 6 7c1 2 3 4 5 6 7
par_rpl_repeats a8.gif 9.gif 10.gif 11.gif 12.gif 13.gifb8 9 10 11 12 13c8 9 10 11 12 13
par_rpl_repeats a14.gif 15.gifb14 15c14 15
par_slow_args_generation ### Test slow arguments generation - https://savannah.gnu.org/bugs/?32834
par_slow_args_generation 1
par_slow_args_generation 2

View file

@ -1,282 +1,4 @@
### Test {.} and {}
### Test {.} with files that have no . but dir does
/tmp/test-of-{.}-parallel/subdir/file
/tmp/test-of-{.}-parallel/subdir/file{.}
ls 1-col.diff|wc;echo 1-col.diff
1 1 11
1-col.diff
ls 1-col.txt|wc;echo 1-col.txt
1 1 10
1-col.txt
ls 2-col.diff|wc;echo 2-col.diff
1 1 11
2-col.diff
ls 2-col.txt|wc;echo 2-col.txt
1 1 10
2-col.txt
ls a|wc;echo a
6 6 41
a
ls b|wc;echo b
4 4 26
b
ls '中国 (Zhōngguó)'|wc;echo '中国 (Zhōngguó)'
4 12 118
中国 (Zhōngguó)
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 '中国 (Zhōngguó)'
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 '中国 (Zhōngguó)'
touch -- 1-col/abc-1-col-1-col
touch -- 1-col/abc-1-col-1-col.diff
touch -- 1-col/abc-1-col-1-col.txt
touch -- 2-col/abc-2-col-2-col
touch -- 2-col/abc-2-col-2-col.diff
touch -- 2-col/abc-2-col-2-col.txt
touch -- a/abc-a-a
touch -- b/abc-b-b
touch -- '中国 (Zhōngguó)'/abc-'中国 (Zhōngguó)'-'中国 (Zhōngguó)'
rm -- 1-col/abc-1-col-1-col
rm -- 1-col/abc-1-col-1-col.diff
rm -- 1-col/abc-1-col-1-col.txt
rm -- 2-col/abc-2-col-2-col
rm -- 2-col/abc-2-col-2-col.diff
rm -- 2-col/abc-2-col-2-col.txt
rm -- a/abc-a-a
rm -- b/abc-b-b
rm -- '中国 (Zhōngguó)'/abc-'中国 (Zhōngguó)'-'中国 (Zhōngguó)'
echo '### Test compress'
### Test compress
seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10'
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
echo '### Test compress - stderr'
### Test compress - stderr
seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10 >&2' 2>&1 >/dev/null
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
echo '### Test weird regexp chars'
### Test weird regexp chars
seq 1 6 | parallel -j1 -I :: -X echo a::b::^c::[.}c
a1b1^c1[.}c a2b2^c2[.}c a3b3^c3[.}c a4b4^c4[.}c a5b5^c5[.}c a6b6^c6[.}c
echo '### Test -m'
### Test -m
(echo foo;echo bar;echo joe.gif) | parallel -j1 -km echo 1{}2{.}3 A{.}B{.}C
1foo bar joe.gif2foo bar joe3 Afoo bar joeBfoo bar joeC
(echo foo;echo bar;echo joe.gif) | parallel -j1 -kX echo 1{}2{.}3 A{.}B{.}C
1foo2foo3 1bar2bar3 1joe.gif2joe3 AfooBfooC AbarBbarC AjoeBjoeC
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -km echo a{}b{.}c{.}
a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6
seq 1 6 | parallel -k printf '{}.gif\\n' | parallel -j1 -kX echo a{}b{.}c{.}
a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
echo '### Test -m with 10000 args'; seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -km echo a{}b{.}c{.} | tee >(wc; sleep 1) >(md5sum; sleep 1) >/dev/null; wait; sleep 1
### Test -m with 10000 args
c606aec1723ee5cc15f2a1b95d83d3cf -
2 29996 186684
echo '### Test -X with 10000 args and 5 expansions'
### Test -X with 10000 args and 5 expansions
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.}{} | wc -l
3
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.}{.} | wc -l
2
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c{.} | wc -l
2
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b{.}c | wc -l
2
seq 10000 | perl -pe 's/$/.gif/' | parallel -j1 -kX echo a{}b | wc -l
1
echo '### Test {.} does not repeat more than {}'
### Test {.} does not repeat more than {}
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -kX echo a{}b{.}c{.}
a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
a7.gifb7c7 a8.gifb8c8 a9.gifb9c9 a10.gifb10c10 a11.gifb11c11 a12.gifb12c12
a13.gifb13c13 a14.gifb14c14 a15.gifb15c15
seq 15 | perl -pe 's/$/.gif/' | parallel -j1 -s 80 -km echo a{}b{.}c{.}
a1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gifb1 2 3 4 5 6 7c1 2 3 4 5 6 7
a8.gif 9.gif 10.gif 11.gif 12.gif 13.gifb8 9 10 11 12 13c8 9 10 11 12 13
a14.gif 15.gifb14 15c14 15
echo '### Test -I with shell meta chars'
### Test -I with shell meta chars
seq 10000 | parallel -j1 -I :: -X echo a::b::c:: | wc -l
2
seq 10000 | parallel -j1 -I '<>' -X echo 'a<>b<>c<>' | wc -l
2
seq 10000 | parallel -j1 -I '<' -X echo 'a<b<c<' | wc -l
2
seq 10000 | parallel -j1 -I '>' -X echo 'a>b>c>' | wc -l
2
echo '### Test {.}'
### Test {.}
echo a | parallel -qX echo "'"{.}"' "
'a'
echo a | parallel -qX echo "'{.}'"
'a'
(echo "sleep 3; echo begin"; seq 1 30 | parallel -kq echo "sleep 1; echo {.}"; echo "echo end") | parallel -k -j0
begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
end
echo '### Test -I with -X and -m'
### Test -I with -X and -m
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -k -I :: echo {.} ::'
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
6 1
6 2
6 3
6 4
6 5
6 6
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -j1 -X -k -I :: echo a{.} b::'
a1 b1
a2 b1 b2
a3 b1 b2 b3
a4 b1 b2 b3 b4
a5 b1 b2 b3 b4 b5
a6 b1 b2 b3 b4 b5 b6
a7 b1 b2 b3 b4 b5 b6 b7
a8 b1 b2 b3 b4 b5 b6 b7 b8
a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
seq 10 | parallel -k 'seq 1 {.} | 'parallel' -j1 -m -k -I :: echo a{.} b::'
a1 b1
a2 b1 2
a3 b1 2 3
a4 b1 2 3 4
a5 b1 2 3 4 5
a6 b1 2 3 4 5 6
a7 b1 2 3 4 5 6 7
a8 b1 2 3 4 5 6 7 8
a9 b1 2 3 4 5 6 7 8 9
a10 b1 2 3 4 5 6 7 8 9 10
echo '### Test -i'
### Test -i
(echo a; echo END; echo b) | parallel -k -i -eEND echo repl{.}ce
replace
echo '### Test --replace'
### Test --replace
(echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{.}ce
replace
echo '### Test -t'
### Test -t
(echo b; echo c; echo f) | parallel -k -t echo {.}ar 2>&1 >/dev/null
echo bar
echo car
echo far
echo '### Test --verbose'
### Test --verbose
(echo b; echo c; echo f) | parallel -k --verbose echo {.}ar 2>&1 >/dev/null
echo bar
echo car
echo far
#echo '### Test compress'
# seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10'
#echo '### Test compress - stderr'
# seq 5 | parallel -j2 --tag --compress 'seq {} | pv -q -L 10 >&2' 2>&1 >/dev/null

View file

@ -13,5 +13,5 @@ par_many_var 1 5116 122784
par_many_var 1 1552 37220
par_many_var_big_func 1 4388 105312
par_many_var_big_func 1 2280 54692
par_many_var_func 1 6628 159072
par_many_var_func 1 40 932
par_many_var_func 1 4900 117600
par_many_var_func 1 1768 42404

View file

@ -36,8 +36,8 @@ bin/parallel macosx copy macosx bin/parallel parallel
bin/parallel redhat copy redhat bin/parallel parallel
bin/parallel netbsd copy netbsd bin/parallel parallel
bin/parallel openbsd copy openbsd bin/parallel parallel
bin/parallel debian copy debian bin/parallel parallel
bin/parallel freebsd copy freebsd bin/parallel parallel
bin/parallel debian copy debian bin/parallel parallel
bin/parallel hurd copy hurd bin/parallel parallel
bin/parallel minix copy minix bin/parallel parallel
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
@ -62,8 +62,8 @@ bin/env_parallel macosx copy macosx bin/env_parallel env_parallel
bin/env_parallel redhat copy redhat bin/env_parallel env_parallel
bin/env_parallel netbsd copy netbsd bin/env_parallel env_parallel
bin/env_parallel openbsd copy openbsd bin/env_parallel env_parallel
bin/env_parallel debian copy debian bin/env_parallel env_parallel
bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
bin/env_parallel debian copy debian bin/env_parallel env_parallel
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
bin/env_parallel minix copy minix bin/env_parallel env_parallel
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
@ -88,8 +88,8 @@ bin/env_parallel.ash macosx copy macosx bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash redhat copy redhat bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash netbsd copy netbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openbsd copy openbsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
@ -114,8 +114,8 @@ bin/env_parallel.bash macosx copy macosx bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash redhat copy redhat bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash netbsd copy netbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openbsd copy openbsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash freebsd copy freebsd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash debian copy debian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hurd copy hurd bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash minix copy minix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.csh qnx copy qnx bin/env_parallel.csh env_parallel.csh
@ -140,8 +140,8 @@ bin/env_parallel.csh macosx copy macosx bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh redhat copy redhat bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh netbsd copy netbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openbsd copy openbsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
@ -166,7 +166,9 @@ bin/env_parallel.dash macosx copy macosx bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash redhat copy redhat bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash netbsd copy netbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openbsd copy openbsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
@ -190,8 +192,8 @@ bin/env_parallel.fish macosx copy macosx bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish redhat copy redhat bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish netbsd copy netbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openbsd copy openbsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
@ -216,8 +218,8 @@ bin/env_parallel.ksh macosx copy macosx bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh redhat copy redhat bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh netbsd copy netbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openbsd copy openbsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
@ -242,8 +244,8 @@ bin/env_parallel.mksh macosx copy macosx bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh redhat copy redhat bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh netbsd copy netbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openbsd copy openbsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
@ -268,8 +270,8 @@ bin/env_parallel.pdksh macosx copy macosx bin/env_parallel.pdksh env_parallel.pd
bin/env_parallel.pdksh redhat copy redhat bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh netbsd copy netbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh openbsd copy openbsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
@ -294,8 +296,8 @@ bin/env_parallel.sh macosx copy macosx bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh redhat copy redhat bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh netbsd copy netbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openbsd copy openbsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
@ -320,8 +322,8 @@ bin/env_parallel.tcsh macosx copy macosx bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh redhat copy redhat bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh netbsd copy netbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openbsd copy openbsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
@ -346,8 +348,8 @@ bin/env_parallel.zsh macosx copy macosx bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh redhat copy redhat bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh netbsd copy netbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openbsd copy openbsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
bin/parcat qnx copy qnx bin/parcat parcat
@ -372,8 +374,8 @@ bin/parcat macosx copy macosx bin/parcat parcat
bin/parcat redhat copy redhat bin/parcat parcat
bin/parcat netbsd copy netbsd bin/parcat parcat
bin/parcat openbsd copy openbsd bin/parcat parcat
bin/parcat debian copy debian bin/parcat parcat
bin/parcat freebsd copy freebsd bin/parcat parcat
bin/parcat debian copy debian bin/parcat parcat
bin/parcat hurd copy hurd bin/parcat parcat
bin/parcat minix copy minix bin/parcat parcat
Done copying
@ -393,7 +395,7 @@ freebsd Works on freebsd.polarhome.com
hpux Works on hpux64
hpux-ia64 Works on hpux-ia64
hurd Works on hurd
macosx Works on macosx
macosx Works on macosx.polarhome.com
mandriva Works on mandriva.polarhome.com
miros Works on miros.polarhome.com
netbsd Works on netbsd.polarhome.com

View file

@ -845,7 +845,6 @@ PARALLEL_JOBSLOT
PARALLEL_PID
PARALLEL_RSYNC_OPTS
PARALLEL_SEQ
PARALLEL_SSH
PARALLEL_SSHHOST
PARALLEL_SSHLOGIN
PARALLEL_TMP
@ -955,7 +954,7 @@ For details: see man env_parallel
export -f my_func3
parallel -vv --workdir ... --nice 17 --env _ --trc {}.out \
-S $SERVER1 my_func3 {} ::: abc-file
ssh -oLogLevel=quiet -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -e'ssh -oLogLevel=quiet -l parallel' ./abc-file lo:./.TMPWORKDIR;ssh -oLogLevel=quiet -l parallel lo -- exec perl -e "'"'@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;'"'" BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ./.TMPWORKDIR/./.; rsync' -rlDzR -e'ssh -oLogLevel=quiet -l parallel' lo:./abc-file.out ./.;ssh -oLogLevel=quiet -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -oLogLevel=quiet -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file.out; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -oLogLevel=quiet -l parallel lo -- rm -rf .TMPWORKDIR;exit $_EXIT_status;
ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -e'ssh -l parallel' ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e "'"'@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;'"'" BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ./.TMPWORKDIR/./.; rsync' -rlDzR -e'ssh -l parallel' lo:./abc-file.out ./.;ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file.out; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- rm -rf .TMPWORKDIR;exit $_EXIT_status;
parset myvar1,myvar2 echo ::: a b
echo $myvar1
echo $myvar2

View file

@ -42,8 +42,8 @@ def 3
6
6
### Test --table-size --tablesize
81
81
82
82
### Test --debug
dburl mysql://tange:tange@localhost:3306/tange
databasedriver mysql user tange password tange host localhost port 3306 database tange query
@ -55,28 +55,28 @@ Yes it does
### Test -r
dburl pg://nongood@127.0.0.3:2227/
databasedriver pg user nongood password host 127.0.0.3 port 2227 database nongood query
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
### Test --retries=s
dburl pg://nongood@127.0.0.3:2227/
databasedriver pg user nongood password host 127.0.0.3 port 2227 database nongood query
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
psql: error: could not connect to server: could not connect to server: Connection refused
psql: error: could not connect to server: Connection refused
Is the server running on host "127.0.0.3" and accepting
TCP/IP connections on port 2227?
### Test --help -h