mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-23 22:47:55 +00:00
Released as 20220622 ('Bongbong')
This commit is contained in:
parent
a91ba03bac
commit
42cc048154
|
@ -167,8 +167,11 @@ pack_unpack_and_test_build:
|
||||||
cd parallel-$(YYYYMMDD) && \
|
cd parallel-$(YYYYMMDD) && \
|
||||||
./configure && make -j && sudo make -j install
|
./configure && make -j && sudo make -j install
|
||||||
|
|
||||||
zshcompletion=${datarootdir}/zsh/site-functions/_parallel
|
zshcompletiondir=${datarootdir}/zsh/site-functions
|
||||||
|
zshcompletion=${zshcompletiondir}/_parallel
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
|
mkdir -p ${datarootdir}/bash-completion/completions
|
||||||
|
mkdir -p ${zshcompletiondir}
|
||||||
parallel --shell-completion bash > ${datarootdir}/bash-completion/completions/parallel
|
parallel --shell-completion bash > ${datarootdir}/bash-completion/completions/parallel
|
||||||
echo '#compdef parallel' > ${zshcompletion}
|
echo '#compdef parallel' > ${zshcompletion}
|
||||||
echo '(( $$+functions[_comp_parallel] )) ||' >> ${zshcompletion}
|
echo '(( $$+functions[_comp_parallel] )) ||' >> ${zshcompletion}
|
||||||
|
|
|
@ -281,7 +281,8 @@ top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
SUBDIRS = src
|
SUBDIRS = src
|
||||||
zshcompletion = ${datarootdir}/zsh/site-functions/_parallel
|
zshcompletiondir = ${datarootdir}/zsh/site-functions
|
||||||
|
zshcompletion = ${zshcompletiondir}/_parallel
|
||||||
EXTRA_DIST = CITATION CITATION.cff CREDITS LICENSES/CC-BY-SA-4.0.txt LICENSES/GFDL-1.3-or-later.txt LICENSES/GPL-3.0-or-later.txt
|
EXTRA_DIST = CITATION CITATION.cff CREDITS LICENSES/CC-BY-SA-4.0.txt LICENSES/GFDL-1.3-or-later.txt LICENSES/GPL-3.0-or-later.txt
|
||||||
all: config.h
|
all: config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
@ -928,6 +929,8 @@ pack_unpack_and_test_build:
|
||||||
cd parallel-$(YYYYMMDD) && \
|
cd parallel-$(YYYYMMDD) && \
|
||||||
./configure && make -j && sudo make -j install
|
./configure && make -j && sudo make -j install
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
|
mkdir -p ${datarootdir}/bash-completion/completions
|
||||||
|
mkdir -p ${zshcompletiondir}
|
||||||
parallel --shell-completion bash > ${datarootdir}/bash-completion/completions/parallel
|
parallel --shell-completion bash > ${datarootdir}/bash-completion/completions/parallel
|
||||||
echo '#compdef parallel' > ${zshcompletion}
|
echo '#compdef parallel' > ${zshcompletion}
|
||||||
echo '(( $$+functions[_comp_parallel] )) ||' >> ${zshcompletion}
|
echo '(( $$+functions[_comp_parallel] )) ||' >> ${zshcompletion}
|
||||||
|
|
17
NEWS
17
NEWS
|
@ -1,3 +1,20 @@
|
||||||
|
20220622
|
||||||
|
|
||||||
|
New in this release:
|
||||||
|
|
||||||
|
* , can be used in --sshlogin if quoted as \, or ,,
|
||||||
|
|
||||||
|
* --plus {/#regexp/str} replace ^regexp with str.
|
||||||
|
|
||||||
|
* --plus {/%regexp/str} replace regexp$ with str.
|
||||||
|
|
||||||
|
* --plus {//regexp/str} replace every regexp with str.
|
||||||
|
|
||||||
|
* 'make install' installs bash+zsh completion files.
|
||||||
|
|
||||||
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
|
|
||||||
20220522
|
20220522
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
24
README
24
README
|
@ -57,11 +57,11 @@ document.
|
||||||
|
|
||||||
Full installation of GNU Parallel is as simple as:
|
Full installation of GNU Parallel is as simple as:
|
||||||
|
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20220522.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220622.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20220522.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220622.tar.bz2.sig
|
||||||
gpg parallel-20220522.tar.bz2.sig
|
gpg parallel-20220622.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20220522.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20220622.tar.bz2 | tar xvf -
|
||||||
cd parallel-20220522
|
cd parallel-20220622
|
||||||
./configure && make && sudo make install
|
./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
|
If you are not root you can add ~/bin to your path and install in
|
||||||
~/bin and ~/share:
|
~/bin and ~/share:
|
||||||
|
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20220522.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220622.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20220522.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20220622.tar.bz2.sig
|
||||||
gpg parallel-20220522.tar.bz2.sig
|
gpg parallel-20220622.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20220522.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20220622.tar.bz2 | tar xvf -
|
||||||
cd parallel-20220522
|
cd parallel-20220622
|
||||||
./configure --prefix=$HOME && make && make install
|
./configure --prefix=$HOME && make && make install
|
||||||
|
|
||||||
Or if your system lacks 'make' you can simply copy src/parallel
|
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
|
When using programs that use GNU Parallel to process data for
|
||||||
publication please cite:
|
publication please cite:
|
||||||
|
|
||||||
Tange, O. (2022, May 22). GNU Parallel 20220522 ('NATO').
|
Tange, O. (2022, June 22). GNU Parallel 20220622 ('Bongbong').
|
||||||
Zenodo. https://doi.org/10.5281/zenodo.6570228
|
Zenodo. https://doi.org/10.5281/zenodo.6682930
|
||||||
|
|
||||||
Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
|
Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free
|
||||||
Software Foundation, Inc.
|
Software Foundation, Inc.
|
||||||
|
|
20
configure
vendored
20
configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.71 for parallel 20220522.
|
# Generated by GNU Autoconf 2.71 for parallel 20220622.
|
||||||
#
|
#
|
||||||
# Report bugs to <bug-parallel@gnu.org>.
|
# Report bugs to <bug-parallel@gnu.org>.
|
||||||
#
|
#
|
||||||
|
@ -610,8 +610,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='parallel'
|
PACKAGE_NAME='parallel'
|
||||||
PACKAGE_TARNAME='parallel'
|
PACKAGE_TARNAME='parallel'
|
||||||
PACKAGE_VERSION='20220522'
|
PACKAGE_VERSION='20220622'
|
||||||
PACKAGE_STRING='parallel 20220522'
|
PACKAGE_STRING='parallel 20220622'
|
||||||
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
|
@ -1246,7 +1246,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# 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.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures parallel 20220522 to adapt to many kinds of systems.
|
\`configure' configures parallel 20220622 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1313,7 +1313,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of parallel 20220522:";;
|
short | recursive ) echo "Configuration of parallel 20220622:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1390,7 +1390,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
parallel configure 20220522
|
parallel configure 20220622
|
||||||
generated by GNU Autoconf 2.71
|
generated by GNU Autoconf 2.71
|
||||||
|
|
||||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||||
|
@ -1427,7 +1427,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by parallel $as_me 20220522, which was
|
It was created by parallel $as_me 20220622, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
$ $0$ac_configure_args_raw
|
$ $0$ac_configure_args_raw
|
||||||
|
@ -2379,7 +2379,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='parallel'
|
PACKAGE='parallel'
|
||||||
VERSION='20220522'
|
VERSION='20220622'
|
||||||
|
|
||||||
|
|
||||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||||
|
@ -3026,7 +3026,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by parallel $as_me 20220522, which was
|
This file was extended by parallel $as_me 20220622, which was
|
||||||
generated by GNU Autoconf 2.71. Invocation command line was
|
generated by GNU Autoconf 2.71. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -3090,7 +3090,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config='$ac_cs_config_escaped'
|
ac_cs_config='$ac_cs_config_escaped'
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
parallel config.status 20220522
|
parallel config.status 20220622
|
||||||
configured by $0, generated by GNU Autoconf 2.71,
|
configured by $0, generated by GNU Autoconf 2.71,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AC_INIT([parallel],[20220522],[bug-parallel@gnu.org])
|
AC_INIT([parallel],[20220622],[bug-parallel@gnu.org])
|
||||||
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
|
|
|
@ -13,9 +13,6 @@ Quote of the month:
|
||||||
I used GNU Parallel to run a script locally that did what a big distributed system did, quicker and more reliably. It got to the point where people would just ask me to "run the thing" on my laptop instead of waiting for the cron.
|
I used GNU Parallel to run a script locally that did what a big distributed system did, quicker and more reliably. It got to the point where people would just ask me to "run the thing" on my laptop instead of waiting for the cron.
|
||||||
-- winrid@ycombinator
|
-- winrid@ycombinator
|
||||||
|
|
||||||
Parallel has been (and still is) super useful and simple tool for speeding up all kinds of shell tasks during my career.
|
|
||||||
-- ValtteriL@ycombinator
|
|
||||||
|
|
||||||
parallel is so useful and i use it multiple times daily.
|
parallel is so useful and i use it multiple times daily.
|
||||||
-- arrakeen@ycombinator
|
-- arrakeen@ycombinator
|
||||||
|
|
||||||
|
@ -189,6 +186,9 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html
|
||||||
|
|
||||||
=== Used ===
|
=== Used ===
|
||||||
|
|
||||||
|
Parallel has been (and still is) super useful and simple tool for speeding up all kinds of shell tasks during my career.
|
||||||
|
-- ValtteriL@ycombinator
|
||||||
|
|
||||||
It's amazing how fast you can get with bash pipelines and GNU Parallel.
|
It's amazing how fast you can get with bash pipelines and GNU Parallel.
|
||||||
-- Eric Pauley @EricPauley_
|
-- Eric Pauley @EricPauley_
|
||||||
|
|
||||||
|
|
|
@ -260,30 +260,23 @@ GNU Parallel 20220522 ('NATO') has been released. It is available for download a
|
||||||
|
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
It's amazing how fast you can get with bash pipelines and GNU Parallel.
|
Parallel has been (and still is) super useful and simple tool for speeding up all kinds of shell tasks during my career.
|
||||||
-- Eric Pauley @EricPauley_
|
-- ValtteriL@ycombinator
|
||||||
|
|
||||||
New in this release:
|
New in this release:
|
||||||
|
|
||||||
* --latest-line shows only the latest line of running jobs.
|
* , can be used in --sshlogin if quoted as \, or ,,
|
||||||
|
|
||||||
* --color colors output in different colors per job (this obsoletes --ctag).
|
* --plus {/#regexp/str} replace ^regexp with str.
|
||||||
|
|
||||||
* xargs compatibility: --process-slot-var foo sets $foo to jobslot-1.
|
* --plus {/%regexp/str} replace regexp$ with str.
|
||||||
|
|
||||||
* xargs compatibility: --open-tty opens the terminal on stdin (standard input).
|
* --plus {//regexp/str} replace every regexp with str.
|
||||||
|
|
||||||
|
* 'make install' installs bash+zsh completion files.
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
||||||
News about GNU Parallel:
|
|
||||||
|
|
||||||
* Building a fault-tolerant work queue for command-line executions with GNU Parallel https://www.jvt.me/posts/2022/04/28/shell-queue/
|
|
||||||
|
|
||||||
* Make your code do more, with less https://www.blopig.com/blog/2022/05/make-your-code-do-more-with-less/
|
|
||||||
|
|
||||||
* W09 B IntroHPC II 20220513 gnu parallel https://www.youtube.com/watch?v=2udvC90rIa4
|
|
||||||
|
|
||||||
Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
|
|
||||||
|
|
||||||
GNU Parallel - For people who live life in the parallel lane.
|
GNU Parallel - For people who live life in the parallel lane.
|
||||||
|
|
||||||
|
|
157
install-sh
157
install-sh
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2018-03-11.20; # UTC
|
scriptversion=2020-11-14.01; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
@ -69,6 +69,11 @@ posix_mkdir=
|
||||||
# Desired mode of installed file.
|
# Desired mode of installed file.
|
||||||
mode=0755
|
mode=0755
|
||||||
|
|
||||||
|
# Create dirs (including intermediate dirs) using mode 755.
|
||||||
|
# This is like GNU 'install' as of coreutils 8.32 (2020).
|
||||||
|
mkdir_umask=22
|
||||||
|
|
||||||
|
backupsuffix=
|
||||||
chgrpcmd=
|
chgrpcmd=
|
||||||
chmodcmd=$chmodprog
|
chmodcmd=$chmodprog
|
||||||
chowncmd=
|
chowncmd=
|
||||||
|
@ -99,18 +104,28 @@ Options:
|
||||||
--version display version info and exit.
|
--version display version info and exit.
|
||||||
|
|
||||||
-c (ignored)
|
-c (ignored)
|
||||||
-C install only if different (preserve the last data modification time)
|
-C install only if different (preserve data modification time)
|
||||||
-d create directories instead of installing files.
|
-d create directories instead of installing files.
|
||||||
-g GROUP $chgrpprog installed files to GROUP.
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
-m MODE $chmodprog installed files to MODE.
|
-m MODE $chmodprog installed files to MODE.
|
||||||
-o USER $chownprog installed files to USER.
|
-o USER $chownprog installed files to USER.
|
||||||
|
-p pass -p to $cpprog.
|
||||||
-s $stripprog installed files.
|
-s $stripprog installed files.
|
||||||
|
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
|
||||||
-t DIRECTORY install into DIRECTORY.
|
-t DIRECTORY install into DIRECTORY.
|
||||||
-T report an error if DSTFILE is a directory.
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
Environment variables override the default commands:
|
Environment variables override the default commands:
|
||||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
RMPROG STRIPPROG
|
RMPROG STRIPPROG
|
||||||
|
|
||||||
|
By default, rm is invoked with -f; when overridden with RMPROG,
|
||||||
|
it's up to you to specify -f if you want it.
|
||||||
|
|
||||||
|
If -S is not specified, no backups are attempted.
|
||||||
|
|
||||||
|
Email bug reports to bug-automake@gnu.org.
|
||||||
|
Automake home page: https://www.gnu.org/software/automake/
|
||||||
"
|
"
|
||||||
|
|
||||||
while test $# -ne 0; do
|
while test $# -ne 0; do
|
||||||
|
@ -137,8 +152,13 @@ while test $# -ne 0; do
|
||||||
-o) chowncmd="$chownprog $2"
|
-o) chowncmd="$chownprog $2"
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
|
-p) cpprog="$cpprog -p";;
|
||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-S) backupsuffix="$2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
-t)
|
-t)
|
||||||
is_target_a_directory=always
|
is_target_a_directory=always
|
||||||
dst_arg=$2
|
dst_arg=$2
|
||||||
|
@ -255,6 +275,10 @@ do
|
||||||
dstdir=$dst
|
dstdir=$dst
|
||||||
test -d "$dstdir"
|
test -d "$dstdir"
|
||||||
dstdir_status=$?
|
dstdir_status=$?
|
||||||
|
# Don't chown directories that already exist.
|
||||||
|
if test $dstdir_status = 0; then
|
||||||
|
chowncmd=""
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
|
|
||||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
@ -301,22 +325,6 @@ do
|
||||||
if test $dstdir_status != 0; then
|
if test $dstdir_status != 0; then
|
||||||
case $posix_mkdir in
|
case $posix_mkdir in
|
||||||
'')
|
'')
|
||||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
|
||||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
|
||||||
umask=`umask`
|
|
||||||
case $stripcmd.$umask in
|
|
||||||
# Optimize common cases.
|
|
||||||
*[2367][2367]) mkdir_umask=$umask;;
|
|
||||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
|
||||||
|
|
||||||
*[0-7])
|
|
||||||
mkdir_umask=`expr $umask + 22 \
|
|
||||||
- $umask % 100 % 40 + $umask % 20 \
|
|
||||||
- $umask % 10 % 4 + $umask % 2
|
|
||||||
`;;
|
|
||||||
*) mkdir_umask=$umask,go-w;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# With -d, create the new directory with the user-specified mode.
|
# With -d, create the new directory with the user-specified mode.
|
||||||
# Otherwise, rely on $mkdir_umask.
|
# Otherwise, rely on $mkdir_umask.
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
|
@ -326,52 +334,49 @@ do
|
||||||
fi
|
fi
|
||||||
|
|
||||||
posix_mkdir=false
|
posix_mkdir=false
|
||||||
case $umask in
|
# The $RANDOM variable is not portable (e.g., dash). Use it
|
||||||
*[123567][0-7][0-7])
|
# here however when possible just to lower collision chance.
|
||||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
|
||||||
# here however when possible just to lower collision chance.
|
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
|
||||||
|
|
||||||
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
trap '
|
||||||
|
ret=$?
|
||||||
|
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
|
||||||
|
exit $ret
|
||||||
|
' 0
|
||||||
|
|
||||||
# Because "mkdir -p" follows existing symlinks and we likely work
|
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||||
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||||
# directory is successfully created first before we actually test
|
# directory is successfully created first before we actually test
|
||||||
# 'mkdir -p' feature.
|
# 'mkdir -p'.
|
||||||
if (umask $mkdir_umask &&
|
if (umask $mkdir_umask &&
|
||||||
$mkdirprog $mkdir_mode "$tmpdir" &&
|
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
if test -z "$dir_arg" || {
|
if test -z "$dir_arg" || {
|
||||||
# Check for POSIX incompatibilities with -m.
|
# Check for POSIX incompatibilities with -m.
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
# other-writable bit of parent directory when it shouldn't.
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
test_tmpdir="$tmpdir/a"
|
test_tmpdir="$tmpdir/a"
|
||||||
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||||
case $ls_ld_tmpdir in
|
case $ls_ld_tmpdir in
|
||||||
d????-?r-*) different_mode=700;;
|
d????-?r-*) different_mode=700;;
|
||||||
d????-?--*) different_mode=755;;
|
d????-?--*) different_mode=755;;
|
||||||
*) false;;
|
*) false;;
|
||||||
esac &&
|
esac &&
|
||||||
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||||
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
then posix_mkdir=:
|
then posix_mkdir=:
|
||||||
fi
|
fi
|
||||||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||||
else
|
else
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||||
fi
|
fi
|
||||||
trap '' 0;;
|
trap '' 0;;
|
||||||
esac;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if
|
if
|
||||||
|
@ -382,7 +387,7 @@ do
|
||||||
then :
|
then :
|
||||||
else
|
else
|
||||||
|
|
||||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
# mkdir does not conform to POSIX,
|
||||||
# or it failed possibly due to a race condition. Create the
|
# or it failed possibly due to a race condition. Create the
|
||||||
# directory the slow way, step by step, checking for races as we go.
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
@ -411,7 +416,7 @@ do
|
||||||
prefixes=
|
prefixes=
|
||||||
else
|
else
|
||||||
if $posix_mkdir; then
|
if $posix_mkdir; then
|
||||||
(umask=$mkdir_umask &&
|
(umask $mkdir_umask &&
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
# Don't fail if two instances are running concurrently.
|
# Don't fail if two instances are running concurrently.
|
||||||
test -d "$prefix" || exit 1
|
test -d "$prefix" || exit 1
|
||||||
|
@ -451,7 +456,18 @@ do
|
||||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
# Copy the file name to the temp name.
|
# Copy the file name to the temp name.
|
||||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
(umask $cp_umask &&
|
||||||
|
{ test -z "$stripcmd" || {
|
||||||
|
# Create $dsttmp read-write so that cp doesn't create it read-only,
|
||||||
|
# which would cause strip to fail.
|
||||||
|
if test -z "$doit"; then
|
||||||
|
: >"$dsttmp" # No need to fork-exec 'touch'.
|
||||||
|
else
|
||||||
|
$doit touch "$dsttmp"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
$doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits.
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
#
|
#
|
||||||
|
@ -477,6 +493,13 @@ do
|
||||||
then
|
then
|
||||||
rm -f "$dsttmp"
|
rm -f "$dsttmp"
|
||||||
else
|
else
|
||||||
|
# If $backupsuffix is set, and the file being installed
|
||||||
|
# already exists, attempt a backup. Don't worry if it fails,
|
||||||
|
# e.g., if mv doesn't support -f.
|
||||||
|
if test -n "$backupsuffix" && test -f "$dst"; then
|
||||||
|
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
# Rename the file to the real destination.
|
# Rename the file to the real destination.
|
||||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
@ -491,9 +514,9 @@ do
|
||||||
# file should still install successfully.
|
# file should still install successfully.
|
||||||
{
|
{
|
||||||
test ! -f "$dst" ||
|
test ! -f "$dst" ||
|
||||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
$doit $rmcmd "$dst" 2>/dev/null ||
|
||||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
|
||||||
} ||
|
} ||
|
||||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
(exit 1); exit 1
|
(exit 1); exit 1
|
||||||
|
|
2
missing
2
missing
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
scriptversion=2018-03-07.03; # UTC
|
scriptversion=2018-03-07.03; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2021 Free Software Foundation, Inc.
|
||||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
<directory name="parallel" rev="326" vrev="2" srcmd5="2ff455f868b451b0acf2559d65b7616c">
|
<directory name="parallel" rev="328" vrev="2" srcmd5="4bc4f3b4485f9caf2e4fb4f339917564">
|
||||||
<entry name="PKGBUILD" md5="e4fef9aeac03dd91b231bd23876dbdaf" size="936" mtime="1653333334" />
|
<entry name="PKGBUILD" md5="22c1acdb651034b1d1636e9f78faded9" size="1070" mtime="1655879579" />
|
||||||
<entry name="parallel-20220522.tar.bz2" md5="ce4e3055e5bc318bd4df1fcd74e399bc" size="2372683" mtime="1653333335" />
|
<entry name="parallel-20220622.tar.bz2" md5="6b189242185b5b550ce98c9cf88bdd27" size="2378286" mtime="1655879584" />
|
||||||
<entry name="parallel.spec" md5="dfa4b6691d57f32d68d5fe022d0e1801" size="5713" mtime="1653216428" />
|
<entry name="parallel.spec" md5="1ffb17b2aeda963562da6e6461e83c1d" size="5713" mtime="1655878836" />
|
||||||
<entry name="parallel_20220422.tar.gz" md5="4ece6ee823ae7b492081af3991b4ae86" size="2638371" mtime="1653216428" />
|
<entry name="parallel_20220522.dsc" md5="eaa20305eb8b4af2b004225b3a93cdd4" size="556" mtime="1655878837" />
|
||||||
<entry name="parallel_20220522.dsc" md5="924717a2e509cc1868b8d0ce0e7621ec" size="556" mtime="1653333335" />
|
<entry name="parallel_20220522.tar.gz" md5="49ce83ed2b11c54d17d7b25e12267101" size="2629819" mtime="1655878845" />
|
||||||
<entry name="parallel_20220522.tar.gz" md5="b2641b739cbf2cdb17fc9b7db9a18913" size="2629816" mtime="1653333335" />
|
|
||||||
</directory>
|
</directory>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Summary: Shell tool for executing jobs in parallel
|
Summary: Shell tool for executing jobs in parallel
|
||||||
Name: parallel
|
Name: parallel
|
||||||
Version: 20220522
|
Version: 20220622
|
||||||
Release: 1.3
|
Release: 1.3
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
Group: Productivity/File utilities
|
Group: Productivity/File utilities
|
||||||
|
|
|
@ -15,7 +15,7 @@ updater() {
|
||||||
export MON=`date +%b`
|
export MON=`date +%b`
|
||||||
export MONTH=`date +%B`
|
export MONTH=`date +%B`
|
||||||
TAG=$(echo $SPCTAG | perl -pe 's/ //g')
|
TAG=$(echo $SPCTAG | perl -pe 's/ //g')
|
||||||
echo Tag=$TAG = "$SPCTAG" Date:$YYYYMMDD Year:$YYYY Mon:$MON Month:$MONTH DOI:$DOI
|
echo Tag=$TAG=\"$SPCTAG\" Date:$YYYYMMDD Year:$YYYY Mon:$MON Month:$MONTH DOI:$DOI
|
||||||
export TITLE="GNU Parallel $YYYYMMDD ('$SPCTAG')"
|
export TITLE="GNU Parallel $YYYYMMDD ('$SPCTAG')"
|
||||||
|
|
||||||
if [ -z "$DOINO" ] ; then
|
if [ -z "$DOINO" ] ; then
|
||||||
|
|
|
@ -395,7 +395,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -397,7 +397,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -395,7 +395,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -378,7 +378,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -380,7 +380,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -395,7 +395,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -370,7 +370,7 @@ _parset_main() {
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
# shellcheck disable=SC2006
|
# shellcheck disable=SC2006
|
||||||
echo "parset 20220522 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20220622 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2022 Ole Tange, http://ole.tange.dk and Free Software"
|
||||||
echo "Foundation, Inc."
|
echo "Foundation, Inc."
|
||||||
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
echo "License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20220522;
|
$Global::version = 20220622;
|
||||||
Getopt::Long::Configure("bundling","require_order");
|
Getopt::Long::Configure("bundling","require_order");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
if($opt::version) {
|
if($opt::version) {
|
||||||
|
|
22
src/parallel
22
src/parallel
|
@ -2654,7 +2654,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20220607;
|
$Global::version = 20220622;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -5525,8 +5525,8 @@ sub usage() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2022, May 22). GNU Parallel 20220522 ('NATO').",
|
" Tange, O. (2022, June 22). GNU Parallel 20220622 ('Bongbong').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.6570228",
|
" Zenodo. https://doi.org/10.5281/zenodo.6682930",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice
|
||||||
|
@ -5558,8 +5558,8 @@ sub citation_notice() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
" Tange, O. (2022, May 22). GNU Parallel 20220522 ('NATO').",
|
" Tange, O. (2022, June 22). GNU Parallel 20220622 ('Bongbong').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.6570228",
|
" Zenodo. https://doi.org/10.5281/zenodo.6682930",
|
||||||
"",
|
"",
|
||||||
# Before changing these line, please read
|
# Before changing these line, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
||||||
|
@ -5686,20 +5686,20 @@ sub citation() {
|
||||||
"If you use programs that use GNU Parallel to process data for an article in a",
|
"If you use programs that use GNU Parallel to process data for an article in a",
|
||||||
"scientific publication, please cite:",
|
"scientific publication, please cite:",
|
||||||
"",
|
"",
|
||||||
"\@software{tange_2022_6570228,",
|
"\@software{tange_2022_6682930,",
|
||||||
" author = {Tange, Ole},",
|
" author = {Tange, Ole},",
|
||||||
" title = {GNU Parallel 20220522 ('NATO')},",
|
" title = {GNU Parallel 20220622 ('Bongbong')},",
|
||||||
" month = May,",
|
" month = Jun,",
|
||||||
" year = 2022,",
|
" year = 2022,",
|
||||||
" note = {{GNU Parallel is a general parallelizer to run",
|
" note = {{GNU Parallel is a general parallelizer to run",
|
||||||
" multiple serial command line programs in parallel",
|
" multiple serial command line programs in parallel",
|
||||||
" without changing them.}},",
|
" without changing them.}},",
|
||||||
" publisher = {Zenodo},",
|
" publisher = {Zenodo},",
|
||||||
" doi = {10.5281/zenodo.6570228},",
|
" doi = {10.5281/zenodo.6682930},",
|
||||||
" url = {https://doi.org/10.5281/zenodo.6570228}",
|
" url = {https://doi.org/10.5281/zenodo.6682930}",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
"(Feel free to use \\nocite{tange_2022_6570228})",
|
"(Feel free to use \\nocite{tange_2022_6682930})",
|
||||||
"",
|
"",
|
||||||
# Before changing these lines, please read
|
# Before changing these lines, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
# https://www.gnu.org/software/parallel/parallel_design.html#citation-notice and
|
||||||
|
|
|
@ -748,7 +748,7 @@ B<--transfer>, B<--transferfile> or B<--return>.
|
||||||
See also: B<--basefile> B<--transfer> B<--transferfile> B<--sshlogin>
|
See also: B<--basefile> B<--transfer> B<--transferfile> B<--sshlogin>
|
||||||
B<--return>
|
B<--return>
|
||||||
|
|
||||||
=item B<--color> (alpha testing)
|
=item B<--color> (beta testing)
|
||||||
|
|
||||||
Colour output.
|
Colour output.
|
||||||
|
|
||||||
|
@ -1569,9 +1569,9 @@ Example:
|
||||||
See also: B<--line-buffer>
|
See also: B<--line-buffer>
|
||||||
|
|
||||||
|
|
||||||
=item B<--line-buffer> (alpha testing)
|
=item B<--line-buffer> (beta testing)
|
||||||
|
|
||||||
=item B<--lb> (alpha testing)
|
=item B<--lb> (beta testing)
|
||||||
|
|
||||||
Buffer output on line basis.
|
Buffer output on line basis.
|
||||||
|
|
||||||
|
@ -1811,9 +1811,9 @@ there will be several job sequence 1.
|
||||||
See also: B<--nonall> B<--sshlogin>
|
See also: B<--nonall> B<--sshlogin>
|
||||||
|
|
||||||
|
|
||||||
=item B<--open-tty> (alpha testing)
|
=item B<--open-tty> (beta testing)
|
||||||
|
|
||||||
=item B<-o> (alpha testing)
|
=item B<-o> (beta testing)
|
||||||
|
|
||||||
Open terminal tty.
|
Open terminal tty.
|
||||||
|
|
||||||
|
@ -1912,7 +1912,7 @@ called with B<--sshlogin>).
|
||||||
See also: B<--profile>
|
See also: B<--profile>
|
||||||
|
|
||||||
|
|
||||||
=item B<--plus>
|
=item B<--plus> (alpha testing)
|
||||||
|
|
||||||
Add more replacement strings.
|
Add more replacement strings.
|
||||||
|
|
||||||
|
@ -1963,7 +1963,7 @@ inspired by bash's parameter expansion:
|
||||||
See also: B<--rpl> B<{}>
|
See also: B<--rpl> B<{}>
|
||||||
|
|
||||||
|
|
||||||
=item B<--process-slot-var> I<varname> (alpha testing)
|
=item B<--process-slot-var> I<varname> (beta testing)
|
||||||
|
|
||||||
Set the environment variable I<varname> to the jobslot number-1.
|
Set the environment variable I<varname> to the jobslot number-1.
|
||||||
|
|
||||||
|
@ -2846,7 +2846,7 @@ B<--shebang-wrap> must be set as the first option.
|
||||||
See also: B<--shebang>
|
See also: B<--shebang>
|
||||||
|
|
||||||
|
|
||||||
=item B<--shell-completion> I<shell> (alpha testing)
|
=item B<--shell-completion> I<shell> (beta testing)
|
||||||
|
|
||||||
Generate shell completion code for interactive shells.
|
Generate shell completion code for interactive shells.
|
||||||
|
|
||||||
|
@ -2995,13 +2995,13 @@ I<duration> is in seconds, but can be postfixed with s, m, h, or d.
|
||||||
See also: TIME POSTFIXES B<--sshlogin> B<--delay>
|
See also: TIME POSTFIXES B<--sshlogin> B<--delay>
|
||||||
|
|
||||||
|
|
||||||
=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
|
=item B<--sshlogin> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (alpha testing)
|
||||||
|
|
||||||
=item B<--sshlogin> I<@hostgroup>
|
=item B<--sshlogin> I<@hostgroup> (alpha testing)
|
||||||
|
|
||||||
=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]>
|
=item B<-S> I<[@hostgroups/][ncpus/]sshlogin[,[@hostgroups/][ncpus/]sshlogin[,...]]> (alpha testing)
|
||||||
|
|
||||||
=item B<-S> I<@hostgroup>
|
=item B<-S> I<@hostgroup> (alpha testing)
|
||||||
|
|
||||||
Distribute jobs to remote computers.
|
Distribute jobs to remote computers.
|
||||||
|
|
||||||
|
|
|
@ -3436,6 +3436,81 @@ https://github.com/rudymatela/evenmoreutils/blob/master/man/p.1.adoc
|
||||||
(Last checked: 2022-04)
|
(Last checked: 2022-04)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN senechal AND GNU Parallel
|
||||||
|
|
||||||
|
Summary (see legend above):
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item I1 - - - - - -
|
||||||
|
|
||||||
|
=item M1 - M3 - - M6
|
||||||
|
|
||||||
|
=item O1 - O3 O4 - - - x x -
|
||||||
|
|
||||||
|
=item E1 - - - - - -
|
||||||
|
|
||||||
|
=item - - - - - - - - -
|
||||||
|
|
||||||
|
=item - -
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
B<seneschal> only starts the first job after reading the last job, and
|
||||||
|
output from the first job is only printed after the last job finishes.
|
||||||
|
|
||||||
|
1 byte of output requites 3.5 bytes of RAM.
|
||||||
|
|
||||||
|
This makes it impossible to have a total output bigger than the
|
||||||
|
virtual memory.
|
||||||
|
|
||||||
|
Even though output is kept in RAM outputing is quite slow: 30 MB/s.
|
||||||
|
|
||||||
|
Output larger than 4 GB causes random problems - it looks like a race
|
||||||
|
condition.
|
||||||
|
|
||||||
|
This:
|
||||||
|
|
||||||
|
echo 1 | seneschal --prefix='yes `seq 1000`|head -c 1G' >/dev/null
|
||||||
|
|
||||||
|
takes 4100(!) CPU seconds to run on a 64C64T server, but only 140 CPU
|
||||||
|
seconds on a 4C8T laptop. So it looks like B<seneschal> wastes a lot
|
||||||
|
of CPU time coordinating the CPUs.
|
||||||
|
|
||||||
|
Compare this to:
|
||||||
|
|
||||||
|
echo 1 | time -v parallel -N0 'yes `seq 1000`|head -c 1G' >/dev/null
|
||||||
|
|
||||||
|
which takes 3-8 CPU seconds.
|
||||||
|
|
||||||
|
=head3 EXAMPLES FROM seneschal README.md
|
||||||
|
|
||||||
|
1$ echo $REPOS | seneschal --prefix="cd {} && git pull"
|
||||||
|
|
||||||
|
# If $REPOS is newline separated
|
||||||
|
1$ echo "$REPOS" | parallel -k "cd {} && git pull"
|
||||||
|
# If $REPOS is space separated
|
||||||
|
1$ echo -n "$REPOS" | parallel -d' ' -k "cd {} && git pull"
|
||||||
|
|
||||||
|
COMMANDS="pwd
|
||||||
|
sleep 5 && echo boom
|
||||||
|
echo Howdy
|
||||||
|
whoami"
|
||||||
|
|
||||||
|
2$ echo "$COMMANDS" | seneschal --debug
|
||||||
|
|
||||||
|
2$ echo "$COMMANDS" | parallel -k -v
|
||||||
|
|
||||||
|
3$ ls -1 | seneschal --prefix="pushd {}; git pull; popd;"
|
||||||
|
|
||||||
|
3$ ls -1 | parallel -k "pushd {}; git pull; popd;"
|
||||||
|
# Or if current dir also contains files:
|
||||||
|
3$ parallel -k "pushd {}; git pull; popd;" ::: */
|
||||||
|
|
||||||
|
https://github.com/TheWizardTower/seneschal
|
||||||
|
(Last checked: 2022-06)
|
||||||
|
|
||||||
|
|
||||||
=head2 Todo
|
=head2 Todo
|
||||||
|
|
||||||
http://code.google.com/p/push/ (cannot compile)
|
http://code.google.com/p/push/ (cannot compile)
|
||||||
|
@ -3467,6 +3542,7 @@ https://vicerveza.homeunix.net/~viric/soft/ts/
|
||||||
https://github.com/chapmanjacobd/que
|
https://github.com/chapmanjacobd/que
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=head1 TESTING OTHER TOOLS
|
=head1 TESTING OTHER TOOLS
|
||||||
|
|
||||||
There are certain issues that are very common on parallelizing
|
There are certain issues that are very common on parallelizing
|
||||||
|
|
|
@ -122,7 +122,7 @@ GetOptions(
|
||||||
"help" => \$opt::dummy,
|
"help" => \$opt::dummy,
|
||||||
) || exit(255);
|
) || exit(255);
|
||||||
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
||||||
$Global::version = 20220522;
|
$Global::version = 20220622;
|
||||||
if($opt::version) { version(); exit 0; }
|
if($opt::version) { version(); exit 0; }
|
||||||
@Global::sortoptions = grep { ! /^-D$/ }
|
@Global::sortoptions = grep { ! /^-D$/ }
|
||||||
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
shell_quote(@ARGV_before[0..($#ARGV_before-$#ARGV-1)]);
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -600,7 +600,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20220522;
|
$Global::version = 20220622;
|
||||||
$Global::progname = 'sql';
|
$Global::progname = 'sql';
|
||||||
|
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
|
|
|
@ -35,7 +35,7 @@ install_packages() {
|
||||||
# Shells
|
# Shells
|
||||||
# (csh = bsd-csh that is broken)
|
# (csh = bsd-csh that is broken)
|
||||||
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93u+m ksh93 mksh posh rc rush sash"
|
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93u+m ksh93 mksh posh rc rush sash"
|
||||||
shell_pkgs="$shell_pkgs tcsh yash zsh"
|
shell_pkgs="$shell_pkgs tcsh yash zsh busybox-static"
|
||||||
|
|
||||||
# Databases
|
# Databases
|
||||||
database_pkgs="postgresql mysql-server sqlite"
|
database_pkgs="postgresql mysql-server sqlite"
|
||||||
|
@ -187,7 +187,7 @@ create_shell_logins() {
|
||||||
|
|
||||||
echo '# (Re-)create user'
|
echo '# (Re-)create user'
|
||||||
# Racecondition: if multiple adds a group it will the same group ID
|
# Racecondition: if multiple adds a group it will the same group ID
|
||||||
shellsplus |
|
(shellsplus; echo withpassword) |
|
||||||
parallel --lb --halt soon,fail=1 --timeout 1000% --retries 5 --tag -j1 del_add_user ||
|
parallel --lb --halt soon,fail=1 --timeout 1000% --retries 5 --tag -j1 del_add_user ||
|
||||||
(echo Creation failed: $?; false)
|
(echo Creation failed: $?; false)
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,7 +234,16 @@ par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/sr
|
||||||
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
|
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
|
||||||
par_test_build_and_install make[0]: Nothing to be done for 'install-data-am'.
|
par_test_build_and_install make install-data-hook
|
||||||
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
|
par_test_build_and_install mkdir -p /tmp/parallel-install/share/bash-completion/completions
|
||||||
|
par_test_build_and_install mkdir -p /tmp/parallel-install/share/zsh/site-functions
|
||||||
|
par_test_build_and_install parallel --shell-completion bash > /tmp/parallel-install/share/bash-completion/completions/parallel
|
||||||
|
par_test_build_and_install echo '#compdef parallel' > /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo '(( $+functions[_comp_parallel] )) ||' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo ' eval "$(parallel --shell-completion auto)" &&' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo ' _comp_parallel' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
|
@ -715,7 +724,16 @@ par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000/sr
|
||||||
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
|
par_test_build_and_install make[0]: Nothing to be done for 'install-exec-am'.
|
||||||
par_test_build_and_install make[0]: Nothing to be done for 'install-data-am'.
|
par_test_build_and_install make install-data-hook
|
||||||
|
par_test_build_and_install make[0]: Entering directory '/tmp/parallel-00000000'
|
||||||
|
par_test_build_and_install mkdir -p /tmp/parallel-install/share/bash-completion/completions
|
||||||
|
par_test_build_and_install mkdir -p /tmp/parallel-install/share/zsh/site-functions
|
||||||
|
par_test_build_and_install parallel --shell-completion bash > /tmp/parallel-install/share/bash-completion/completions/parallel
|
||||||
|
par_test_build_and_install echo '#compdef parallel' > /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo '(( $+functions[_comp_parallel] )) ||' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo ' eval "$(parallel --shell-completion auto)" &&' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install echo ' _comp_parallel' >> /tmp/parallel-install/share/zsh/site-functions/_parallel
|
||||||
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
par_test_build_and_install make[0]: Leaving directory '/tmp/parallel-00000000'
|
||||||
|
|
Loading…
Reference in a new issue