mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-22 05:57:54 +00:00
Released as 20201222 ('Vaccine')
This commit is contained in:
parent
2a600a97be
commit
ff7f7c918b
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-20201122.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20201222.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20201222.tar.bz2.sig
|
||||||
gpg parallel-20201122.tar.bz2.sig
|
gpg parallel-20201222.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20201122.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20201222.tar.bz2 | tar xvf -
|
||||||
cd parallel-20201122
|
cd parallel-20201222
|
||||||
./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-20201122.tar.bz2
|
wget https://ftpmirror.gnu.org/parallel/parallel-20201222.tar.bz2
|
||||||
wget https://ftpmirror.gnu.org/parallel/parallel-20201122.tar.bz2.sig
|
wget https://ftpmirror.gnu.org/parallel/parallel-20201222.tar.bz2.sig
|
||||||
gpg parallel-20201122.tar.bz2.sig
|
gpg parallel-20201222.tar.bz2.sig
|
||||||
bzip2 -dc parallel-20201122.tar.bz2 | tar xvf -
|
bzip2 -dc parallel-20201222.tar.bz2 | tar xvf -
|
||||||
cd parallel-20201122
|
cd parallel-20201222
|
||||||
./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. (2020, November 22). GNU Parallel 20201122 ('Biden').
|
Tange, O. (2020, December 22). GNU Parallel 20201222 ('Vaccine').
|
||||||
Zenodo. https://doi.org/10.5281/zenodo.4284075
|
Zenodo. https://doi.org/10.5281/zenodo.4381888
|
||||||
|
|
||||||
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
|
Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
|
||||||
2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free
|
2016, 2017, 2018, 2019, 2020 Ole Tange, http://ole.tange.dk and Free
|
||||||
|
|
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.69 for parallel 20201122.
|
# Generated by GNU Autoconf 2.69 for parallel 20201222.
|
||||||
#
|
#
|
||||||
# Report bugs to <bug-parallel@gnu.org>.
|
# Report bugs to <bug-parallel@gnu.org>.
|
||||||
#
|
#
|
||||||
|
@ -579,8 +579,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='parallel'
|
PACKAGE_NAME='parallel'
|
||||||
PACKAGE_TARNAME='parallel'
|
PACKAGE_TARNAME='parallel'
|
||||||
PACKAGE_VERSION='20201122'
|
PACKAGE_VERSION='20201222'
|
||||||
PACKAGE_STRING='parallel 20201122'
|
PACKAGE_STRING='parallel 20201222'
|
||||||
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
|
||||||
PACKAGE_URL=''
|
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.
|
# 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 20201122 to adapt to many kinds of systems.
|
\`configure' configures parallel 20201222 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1281,7 +1281,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 20201122:";;
|
short | recursive ) echo "Configuration of parallel 20201222:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1357,7 +1357,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 20201122
|
parallel configure 20201222
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
@ -1374,7 +1374,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 20201122, which was
|
It was created by parallel $as_me 20201222, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2237,7 +2237,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='parallel'
|
PACKAGE='parallel'
|
||||||
VERSION='20201122'
|
VERSION='20201222'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
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
|
# 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 20201122, which was
|
This file was extended by parallel $as_me 20201222, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -2942,7 +2942,7 @@ _ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
parallel config.status 20201122
|
parallel config.status 20201222
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AC_INIT([parallel], [20201122], [bug-parallel@gnu.org])
|
AC_INIT([parallel], [20201222], [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([
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
Quote of the month:
|
Quote of the month:
|
||||||
|
|
||||||
GNU Parallel is my single favourite tool for batch processing data
|
|
||||||
from the command line.
|
|
||||||
-- Jeff Wintersinger @jwintersinger
|
|
||||||
|
|
||||||
Today I'm grateful for GNU parallel, especially with the --colsep and
|
Today I'm grateful for GNU parallel, especially with the --colsep and
|
||||||
--jobs parameters #GiveThanks
|
--jobs parameters #GiveThanks
|
||||||
-- Erin Young @ErinYoun
|
-- Erin Young @ErinYoun
|
||||||
|
@ -79,6 +75,10 @@ https://negfeedback.blogspot.com/2020/05/indispensable-command-line-tools.html
|
||||||
|
|
||||||
=== Used ===
|
=== Used ===
|
||||||
|
|
||||||
|
GNU Parallel is my single favourite tool for batch processing data
|
||||||
|
from the command line.
|
||||||
|
-- Jeff Wintersinger @jwintersinger
|
||||||
|
|
||||||
GNU parallel should be taught in class, it is one of the best tools
|
GNU parallel should be taught in class, it is one of the best tools
|
||||||
to run grids of experiments
|
to run grids of experiments
|
||||||
-- no love deep learning @tetraduzione@twitter
|
-- no love deep learning @tetraduzione@twitter
|
||||||
|
|
|
@ -16,8 +16,8 @@ all:
|
||||||
# wait for "building" state
|
# wait for "building" state
|
||||||
cd home\:tange/parallel/ && yes building | parallel -j1 --delay 10 --halt now,success=1 'osc results|G -E {}'
|
cd home\:tange/parallel/ && yes building | parallel -j1 --delay 10 --halt now,success=1 'osc results|G -E {}'
|
||||||
# wait for "building" state to end
|
# wait for "building" state to end
|
||||||
# Ignore Mageia and Raspbian_9.0 that are broken
|
# Ignore RedHat_RHEL-6 and Univention_3.2 that are broken
|
||||||
cd home\:tange/parallel/ && yes building | parallel -j1 --delay 10 --halt now,fail=1 'osc results|G -v Mageia -v Raspbian_9.0 -E {}' || true
|
cd home\:tange/parallel/ && yes building | parallel -j1 --delay 10 --halt now,fail=1 'osc results|G -v RedHat_RHEL-6 -v Univention_3.2 -E {}' || true
|
||||||
# wait for "finished" state of .deb
|
# wait for "finished" state of .deb
|
||||||
cd home\:tange/parallel/ && echo succeeded | parallel -j1 --retries 30 --delay 10 --halt now,success=1 'osc results|G -E "(Debian|Ubuntu).*{}"'
|
cd home\:tange/parallel/ && echo succeeded | parallel -j1 --retries 30 --delay 10 --halt now,success=1 'osc results|G -E "(Debian|Ubuntu).*{}"'
|
||||||
# wait for "finished" state of .rpm
|
# wait for "finished" state of .rpm
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<directory name="parallel" rev="293" vrev="1" srcmd5="2fd7888e80721fcad2b9692458b3e5c8">
|
<directory name="parallel" rev="294" vrev="1" srcmd5="dfdf794f7ba13a4411521b55c133131b">
|
||||||
<entry name="PKGBUILD" md5="dd337c604bfb2ba77c590dca2cee50da" size="936" mtime="1606058238" />
|
<entry name="PKGBUILD" md5="17b8210106cf6e27530746de13848c6a" size="936" mtime="1608555894" />
|
||||||
<entry name="parallel.spec" md5="bfbbaf786288a0ed998ea625c1f070fe" size="4876" mtime="1606058238" />
|
<entry name="parallel-20201222.tar.bz2" md5="e959152aaecf2eed217fee96a939f073" size="2115063" mtime="1608555895" />
|
||||||
<entry name="parallel_20201122.dsc" md5="137b1ed3415b1aecb885e46f19b6815c" size="556" mtime="1606058239" />
|
<entry name="parallel.spec" md5="03891ffdf3417d97649b974131c1cb28" size="4876" mtime="1608555895" />
|
||||||
<entry name="parallel_20201122.tar.gz" md5="f0ba17fbe13f09fd61fc371d3aa4bc19" size="2305081" mtime="1606058239" />
|
<entry name="parallel_20201222.dsc" md5="9ef49ddb84177a25a7a5b2134f5119ca" size="556" mtime="1608555895" />
|
||||||
|
<entry name="parallel_20201222.tar.gz" md5="19b2939db032b974d84703f166cf69c8" size="2309827" mtime="1608555896" />
|
||||||
</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: 20201122
|
Version: 20201222
|
||||||
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
|
||||||
|
|
|
@ -382,7 +382,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -384,7 +384,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -382,7 +382,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -365,7 +365,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -368,7 +368,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -382,7 +382,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -359,7 +359,7 @@ _parset_main() {
|
||||||
return 255
|
return 255
|
||||||
fi
|
fi
|
||||||
if [ "$_parset_NAME" = "--version" ] ; then
|
if [ "$_parset_NAME" = "--version" ] ; then
|
||||||
echo "parset 20201122 (GNU parallel `parallel --minversion 1`)"
|
echo "parset 20201222 (GNU parallel `parallel --minversion 1`)"
|
||||||
echo "Copyright (C) 2007-2020 Ole Tange, http://ole.tange.dk and Free Software"
|
echo "Copyright (C) 2007-2020 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>"
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20201122;
|
$Global::version = 20201222;
|
||||||
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
|
@ -2144,7 +2144,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20201212;
|
$Global::version = 20201222;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$::name = "GNU Parallel";
|
$::name = "GNU Parallel";
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
|
@ -4911,8 +4911,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. (2020, November 22). GNU Parallel 20201122 ('Biden').",
|
" Tange, O. (2020, December 22). GNU Parallel 20201222 ('Vaccine').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.4284075",
|
" Zenodo. https://doi.org/10.5281/zenodo.4381888",
|
||||||
"",
|
"",
|
||||||
# Before changing this line, please read
|
# Before changing this line, please read
|
||||||
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
# https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
|
||||||
|
@ -4942,8 +4942,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. (2020, November 22). GNU Parallel 20201122 ('Biden').",
|
" Tange, O. (2020, December 22). GNU Parallel 20201222 ('Vaccine').",
|
||||||
" Zenodo. https://doi.org/10.5281/zenodo.4284075",
|
" Zenodo. https://doi.org/10.5281/zenodo.4381888",
|
||||||
"",
|
"",
|
||||||
# Before changing this line, please read
|
# Before changing this 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
|
||||||
|
@ -5056,20 +5056,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_2020_4284075,",
|
"\@software{tange_2020_4381888,",
|
||||||
" author = {Tange, Ole},",
|
" author = {Tange, Ole},",
|
||||||
" title = {GNU Parallel 20201122 ('Biden')},",
|
" title = {GNU Parallel 20201222 ('Vaccine')},",
|
||||||
" month = Nov,",
|
" month = Dec,",
|
||||||
" year = 2020,",
|
" year = 2020,",
|
||||||
" 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.4284075},",
|
" doi = {10.5281/zenodo.4381888},",
|
||||||
" url = {https://doi.org/10.5281/zenodo.4284075}",
|
" url = {https://doi.org/10.5281/zenodo.4381888}",
|
||||||
"}",
|
"}",
|
||||||
"",
|
"",
|
||||||
"(Feel free to use \\nocite{tange_2020_4284075})",
|
"(Feel free to use \\nocite{tange_2020_4381888})",
|
||||||
"",
|
"",
|
||||||
# Before changing this line, please read
|
# Before changing this 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
|
||||||
|
|
|
@ -883,7 +883,7 @@ B<--group> is the default. Can be reversed with B<-u>.
|
||||||
See also: B<--line-buffer> B<--ungroup>
|
See also: B<--line-buffer> B<--ungroup>
|
||||||
|
|
||||||
|
|
||||||
=item B<--group-by> I<val> (beta testing)
|
=item B<--group-by> I<val> (alpha testing)
|
||||||
|
|
||||||
Group input by value. Combined with B<--pipe>/B<--pipepart>
|
Group input by value. Combined with B<--pipe>/B<--pipepart>
|
||||||
B<--group-by> groups lines with the same value into a record.
|
B<--group-by> groups lines with the same value into a record.
|
||||||
|
|
|
@ -118,7 +118,7 @@ GetOptions(
|
||||||
"help" => \$opt::dummy,
|
"help" => \$opt::dummy,
|
||||||
) || exit(255);
|
) || exit(255);
|
||||||
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
$Global::progname = ($0 =~ m:(^|/)([^/]+)$:)[1];
|
||||||
$Global::version = 20201122;
|
$Global::version = 20201222;
|
||||||
if($opt::version) { version(); exit 0; }
|
if($opt::version) { version(); exit 0; }
|
||||||
@Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)];
|
@Global::sortoptions = @ARGV_before[0..($#ARGV_before-$#ARGV-1)];
|
||||||
#if($opt::zero_terminated) { $/ = "\0"; }
|
#if($opt::zero_terminated) { $/ = "\0"; }
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20201122;
|
$Global::version = 20201222;
|
||||||
$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
|
||||||
|
|
|
@ -21,61 +21,6 @@ par_dryrun_timeout_ungroup() {
|
||||||
seq 1000 | stdout parallel --dry-run --timeout 1.4m -u --jobs 10 echo | wc
|
seq 1000 | stdout parallel --dry-run --timeout 1.4m -u --jobs 10 echo | wc
|
||||||
}
|
}
|
||||||
|
|
||||||
par_shard() {
|
|
||||||
echo '### --shard'
|
|
||||||
# Each of the 5 lines should match:
|
|
||||||
# ##### ##### ######
|
|
||||||
seq 100000 | parallel --pipe --shard 1 -j5 wc |
|
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
|
||||||
# Data should be sharded to all processes
|
|
||||||
shard_on_col() {
|
|
||||||
col=$1
|
|
||||||
seq 10 99 | shuf | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --pipe --shard $col -j2 --colsep "\t" sort -k$col |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col 1
|
|
||||||
shard_on_col 2
|
|
||||||
|
|
||||||
shard_on_col_name() {
|
|
||||||
colname=$1
|
|
||||||
col=$2
|
|
||||||
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --header : --pipe --shard $colname -j2 --colsep "\t" sort -k$col |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_name A 1
|
|
||||||
shard_on_col_name B 2
|
|
||||||
|
|
||||||
shard_on_col_expr() {
|
|
||||||
colexpr="$1"
|
|
||||||
col=$2
|
|
||||||
(seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_expr '1 $_%=3' 1
|
|
||||||
shard_on_col_expr '2 $_%=3' 2
|
|
||||||
|
|
||||||
shard_on_col_name_expr() {
|
|
||||||
colexpr="$1"
|
|
||||||
col=$2
|
|
||||||
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
|
||||||
parallel --header : --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
|
||||||
field $col | sort | uniq -c
|
|
||||||
}
|
|
||||||
shard_on_col_name_expr 'A $_%=3' 1
|
|
||||||
shard_on_col_name_expr 'B $_%=3' 2
|
|
||||||
|
|
||||||
echo '*** broken'
|
|
||||||
# Shorthand for --pipe -j+0
|
|
||||||
seq 100000 | parallel --shard 1 wc |
|
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
|
||||||
# Combine with arguments
|
|
||||||
seq 100000 | parallel --shard 1 echo {}\;wc ::: {1..5} ::: a b |
|
|
||||||
perl -pe 's/(.*\d{5,}){3}/OK/'
|
|
||||||
}
|
|
||||||
|
|
||||||
par_opt_arg_eaten() {
|
par_opt_arg_eaten() {
|
||||||
echo 'bug #31716: Options with optional arguments may eat next argument'
|
echo 'bug #31716: Options with optional arguments may eat next argument'
|
||||||
echo '### Test https://savannah.gnu.org/bugs/index.php?31716'
|
echo '### Test https://savannah.gnu.org/bugs/index.php?31716'
|
||||||
|
|
|
@ -4,6 +4,61 @@
|
||||||
# Each should be taking 30-100s and be possible to run in parallel
|
# Each should be taking 30-100s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
|
par_shard() {
|
||||||
|
echo '### --shard'
|
||||||
|
# Each of the 5 lines should match:
|
||||||
|
# ##### ##### ######
|
||||||
|
seq 100000 | parallel --pipe --shard 1 -j5 wc |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
# Data should be sharded to all processes
|
||||||
|
shard_on_col() {
|
||||||
|
col=$1
|
||||||
|
seq 10 99 | shuf | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --pipe --shard $col -j2 --colsep "\t" sort -k$col |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col 1
|
||||||
|
shard_on_col 2
|
||||||
|
|
||||||
|
shard_on_col_name() {
|
||||||
|
colname=$1
|
||||||
|
col=$2
|
||||||
|
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --header : --pipe --shard $colname -j2 --colsep "\t" sort -k$col |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_name A 1
|
||||||
|
shard_on_col_name B 2
|
||||||
|
|
||||||
|
shard_on_col_expr() {
|
||||||
|
colexpr="$1"
|
||||||
|
col=$2
|
||||||
|
(seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_expr '1 $_%=3' 1
|
||||||
|
shard_on_col_expr '2 $_%=3' 2
|
||||||
|
|
||||||
|
shard_on_col_name_expr() {
|
||||||
|
colexpr="$1"
|
||||||
|
col=$2
|
||||||
|
(echo AB; seq 10 99 | shuf) | perl -pe 's/(.)/$1\t/g' |
|
||||||
|
parallel --header : --pipe --shard "$colexpr" -j2 --colsep "\t" "sort -k$col; echo c1 c2" |
|
||||||
|
field $col | sort | uniq -c
|
||||||
|
}
|
||||||
|
shard_on_col_name_expr 'A $_%=3' 1
|
||||||
|
shard_on_col_name_expr 'B $_%=3' 2
|
||||||
|
|
||||||
|
echo '*** broken'
|
||||||
|
# Shorthand for --pipe -j+0
|
||||||
|
seq 100000 | parallel --shard 1 wc |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
# Combine with arguments
|
||||||
|
seq 100000 | parallel --shard 1 echo {}\;wc ::: {1..5} ::: a b |
|
||||||
|
perl -pe 's/(.*\d{5,}){3}/OK/'
|
||||||
|
}
|
||||||
|
|
||||||
par_bin() {
|
par_bin() {
|
||||||
echo '### Test --bin'
|
echo '### Test --bin'
|
||||||
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
||||||
|
|
|
@ -911,97 +911,6 @@ par_semaphore job3a 4
|
||||||
par_semaphore job2b 5
|
par_semaphore job2b 5
|
||||||
par_semaphore job3b 6
|
par_semaphore job3b 6
|
||||||
par_semaphore done
|
par_semaphore done
|
||||||
par_shard ### --shard
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard OK
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 2 c1
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 2 c2
|
|
||||||
par_shard 10 1
|
|
||||||
par_shard 10 2
|
|
||||||
par_shard 10 3
|
|
||||||
par_shard 10 4
|
|
||||||
par_shard 10 5
|
|
||||||
par_shard 10 6
|
|
||||||
par_shard 10 7
|
|
||||||
par_shard 10 8
|
|
||||||
par_shard 10 9
|
|
||||||
par_shard 2 c1
|
|
||||||
par_shard 9 0
|
|
||||||
par_shard 9 1
|
|
||||||
par_shard 9 2
|
|
||||||
par_shard 9 3
|
|
||||||
par_shard 9 4
|
|
||||||
par_shard 9 5
|
|
||||||
par_shard 9 6
|
|
||||||
par_shard 9 7
|
|
||||||
par_shard 9 8
|
|
||||||
par_shard 9 9
|
|
||||||
par_shard 2 c2
|
|
||||||
par_shard *** broken
|
|
||||||
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
|
||||||
par_shard parallel: Error: arguments. Increase --jobs.
|
|
||||||
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
|
||||||
par_shard parallel: Error: arguments. Increase --jobs.
|
|
||||||
par_shellquote ### Test --shellquote in all shells
|
par_shellquote ### Test --shellquote in all shells
|
||||||
par_shellquote ash '
|
par_shellquote ash '
|
||||||
par_shellquote ash
par_shellquote ash !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'
|
par_shellquote ash
par_shellquote ash !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'
|
||||||
|
|
|
@ -1656,6 +1656,97 @@ par_race_condition1 9
|
||||||
par_race_condition1 10
|
par_race_condition1 10
|
||||||
par_round_robin_blocks bug #49664: --round-robin does not complete
|
par_round_robin_blocks bug #49664: --round-robin does not complete
|
||||||
par_round_robin_blocks 8
|
par_round_robin_blocks 8
|
||||||
|
par_shard ### --shard
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard OK
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 2 c1
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 2 c2
|
||||||
|
par_shard 10 1
|
||||||
|
par_shard 10 2
|
||||||
|
par_shard 10 3
|
||||||
|
par_shard 10 4
|
||||||
|
par_shard 10 5
|
||||||
|
par_shard 10 6
|
||||||
|
par_shard 10 7
|
||||||
|
par_shard 10 8
|
||||||
|
par_shard 10 9
|
||||||
|
par_shard 2 c1
|
||||||
|
par_shard 9 0
|
||||||
|
par_shard 9 1
|
||||||
|
par_shard 9 2
|
||||||
|
par_shard 9 3
|
||||||
|
par_shard 9 4
|
||||||
|
par_shard 9 5
|
||||||
|
par_shard 9 6
|
||||||
|
par_shard 9 7
|
||||||
|
par_shard 9 8
|
||||||
|
par_shard 9 9
|
||||||
|
par_shard 2 c2
|
||||||
|
par_shard *** broken
|
||||||
|
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
||||||
|
par_shard parallel: Error: arguments. Increase --jobs.
|
||||||
|
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
||||||
|
par_shard parallel: Error: arguments. Increase --jobs.
|
||||||
par_sighup ### Test SIGHUP
|
par_sighup ### Test SIGHUP
|
||||||
par_sighup 1
|
par_sighup 1
|
||||||
par_sighup 10
|
par_sighup 10
|
||||||
|
|
Loading…
Reference in a new issue