Released as 20151022 ('LiquidWater')

This commit is contained in:
Ole Tange 2015-10-21 23:55:31 +02:00
parent b244ddf7ca
commit 5be0293a96
11 changed files with 129 additions and 54 deletions

37
NEWS
View file

@ -1,3 +1,40 @@
20151022
* --plus makes it possible to use {##} as a short had for {=
$_=$Global::JobQueue->total_jobs() =} which gives the the number of
jobs to run.
* {= $_=$Global::JobQueue->total_jobs() =} is incompatible with -X,
-m, and --xargs.
* GNU Parallel is now mostly compatible with lsh
(http://www.lysator.liu.se/~nisse/lsh/) and somewhat compatible with
autossh (http://www.harding.motd.ca/autossh/).
* --workdir ... now also works when run locally.
* GNU Parallel was cited in: There is no (75, 32, 10, 16) strongly
regular graph http://arxiv.org/pdf/1509.05933.pdf
* GNU Parallel was cited in: Roary: rapid large-scale prokaryote pan
genome analysis
http://bioinformatics.oxfordjournals.org/content/early/2015/08/05/bioinformatics.btv421.full.pdf+html
* GNU Parallel is used in TraitAR:
https://testpypi.python.org/pypi/traitar/0.1.4
* GNU Parallel is used in youtube-dl-parallel:
https://github.com/dlh/youtube-dl-parallel
* A parallel and fast way to download multiple files
http://onetipperday.blogspot.com/2015/10/a-parallel-and-fast-way-to-download.html
* Usar GNU Parallel para aumentar el rendimiento de tus scripts
http://adrianarroyocalle.github.io/blog/2015/10/20/usar-gnu-parallel/
* Bug fixes and man page updates.
20150922 20150922
* GNU Parallel was cited in: Flexible Modeling of Epidemics with an Empirical Bayes Framework http://journals.plos.org/ploscompbiol/article?id=10.1371%2Fjournal.pcbi.1004382 * GNU Parallel was cited in: Flexible Modeling of Epidemics with an Empirical Bayes Framework http://journals.plos.org/ploscompbiol/article?id=10.1371%2Fjournal.pcbi.1004382

12
README
View file

@ -40,9 +40,9 @@ document.
Full installation of GNU Parallel is as simple as: Full installation of GNU Parallel is as simple as:
wget http://ftpmirror.gnu.org/parallel/parallel-20150922.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20151022.tar.bz2
bzip2 -dc parallel-20150922.tar.bz2 | tar xvf - bzip2 -dc parallel-20151022.tar.bz2 | tar xvf -
cd parallel-20150922 cd parallel-20151022
./configure && make && sudo make install ./configure && make && sudo make install
@ -51,9 +51,9 @@ 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 http://ftpmirror.gnu.org/parallel/parallel-20150922.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20151022.tar.bz2
bzip2 -dc parallel-20150922.tar.bz2 | tar xvf - bzip2 -dc parallel-20151022.tar.bz2 | tar xvf -
cd parallel-20150922 cd parallel-20151022
./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

20
configure vendored
View file

@ -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 20150922. # Generated by GNU Autoconf 2.69 for parallel 20151022.
# #
# 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='20150922' PACKAGE_VERSION='20151022'
PACKAGE_STRING='parallel 20150922' PACKAGE_STRING='parallel 20151022'
PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL='' PACKAGE_URL=''
@ -1203,7 +1203,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 20150922 to adapt to many kinds of systems. \`configure' configures parallel 20151022 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1269,7 +1269,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 20150922:";; short | recursive ) echo "Configuration of parallel 20151022:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1345,7 +1345,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 20150922 parallel configure 20151022
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.
@ -1362,7 +1362,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 20150922, which was It was created by parallel $as_me 20151022, which was
generated by GNU Autoconf 2.69. Invocation command line was generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@ $ $0 $@
@ -2225,7 +2225,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='parallel' PACKAGE='parallel'
VERSION='20150922' VERSION='20151022'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -2867,7 +2867,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 20150922, which was This file was extended by parallel $as_me 20151022, 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
@ -2929,7 +2929,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 20150922 parallel config.status 20151022
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\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20150922], [bug-parallel@gnu.org]) AC_INIT([parallel], [20151022], [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([

View file

@ -220,7 +220,9 @@ GNU Parallel 20151022 ('Liquid Water') <<[stable]>> has been released. It is ava
Haiku of the month: Haiku of the month:
<<>> In parallel land
everything is quick and fast
Use GNU Parallel.
-- Ole Tange -- Ole Tange
New in this release: New in this release:
@ -234,6 +236,14 @@ New in this release:
* <<kontaktet 2015-06-22 Afventer svar fra journal>> GNU Parallel was used (unfortunately with wrong citation) in: TADSim: Discrete Event-Based Performance Prediction for Temperature-Accelerated Dynamics http://vruehle.de/publications/2015c.pdf * <<kontaktet 2015-06-22 Afventer svar fra journal>> GNU Parallel was used (unfortunately with wrong citation) in: TADSim: Discrete Event-Based Performance Prediction for Temperature-Accelerated Dynamics http://vruehle.de/publications/2015c.pdf
http://www.researchgate.net/profile/Christoph_Junghans/publication/276178326_TADSim_Discrete_Event-Based_Performance_Prediction_for_Temperature-Accelerated_Dynamics/links/55562b6708ae980ca60c8369.pdf http://www.researchgate.net/profile/Christoph_Junghans/publication/276178326_TADSim_Discrete_Event-Based_Performance_Prediction_for_Temperature-Accelerated_Dynamics/links/55562b6708ae980ca60c8369.pdf
* --plus makes it possible to use {##} as a short had for {= $_=$Global::JobQueue->total_jobs() =} which gives the the number of jobs to run.
* {= $_=$Global::JobQueue->total_jobs() =} is incompatible with -X, -m, and --xargs.
* GNU Parallel is now mostly compatible with lsh (http://www.lysator.liu.se/~nisse/lsh/) and somewhat compatible with autossh (http://www.harding.motd.ca/autossh/).
* --workdir ... now also works when run locally.
* GNU Parallel was cited in: There is no (75, 32, 10, 16) strongly regular graph http://arxiv.org/pdf/1509.05933.pdf * GNU Parallel was cited in: There is no (75, 32, 10, 16) strongly regular graph http://arxiv.org/pdf/1509.05933.pdf
* GNU Parallel was cited in: Roary: rapid large-scale prokaryote pan genome analysis http://bioinformatics.oxfordjournals.org/content/early/2015/08/05/bioinformatics.btv421.full.pdf+html * GNU Parallel was cited in: Roary: rapid large-scale prokaryote pan genome analysis http://bioinformatics.oxfordjournals.org/content/early/2015/08/05/bioinformatics.btv421.full.pdf+html
@ -244,6 +254,8 @@ http://www.researchgate.net/profile/Christoph_Junghans/publication/276178326_TAD
* A parallel and fast way to download multiple files http://onetipperday.blogspot.com/2015/10/a-parallel-and-fast-way-to-download.html * A parallel and fast way to download multiple files http://onetipperday.blogspot.com/2015/10/a-parallel-and-fast-way-to-download.html
* Usar GNU Parallel para aumentar el rendimiento de tus scripts http://adrianarroyocalle.github.io/blog/2015/10/20/usar-gnu-parallel/
* Bug fixes and man page updates. * Bug fixes and man page updates.
GNU Parallel - For people who live life in the parallel lane. GNU Parallel - For people who live life in the parallel lane.

View file

@ -1,6 +1,6 @@
Summary: Shell tool for executing jobs in parallel Summary: Shell tool for executing jobs in parallel
Name: parallel Name: parallel
Version: 20150922 Version: 20151022
Release: 1 Release: 1
License: GPL License: GPL
Group: Productivity/File utilities Group: Productivity/File utilities

View file

@ -24,7 +24,7 @@
use strict; use strict;
use Getopt::Long; use Getopt::Long;
$Global::progname="niceload"; $Global::progname="niceload";
$Global::version = 20150922; $Global::version = 20151022;
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) {

View file

@ -1100,7 +1100,7 @@ sub parse_options {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20151001; $Global::version = 20151022;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;

View file

@ -426,7 +426,7 @@ string that is not in the command line.
See also: B<:::>. See also: B<:::>.
=item B<--bar> =item B<--bar> (alpha testing)
Show progress as a progress bar. In the bar is shown: % of jobs Show progress as a progress bar. In the bar is shown: % of jobs
completed, estimated seconds left, and number of jobs started. completed, estimated seconds left, and number of jobs started.
@ -513,7 +513,7 @@ I<size> defaults to 1M.
See B<--pipe> and B<--pipepart> for use of this. See B<--pipe> and B<--pipepart> for use of this.
=item B<--cat> =item B<--cat> (alpha testing)
Create a temporary file with content. Normally B<--pipe>/B<--pipepart> Create a temporary file with content. Normally B<--pipe>/B<--pipepart>
will give data to the program on stdin (standard input). With B<--cat> will give data to the program on stdin (standard input). With B<--cat>
@ -613,7 +613,7 @@ I<secs> seconds after starting each job. I<secs> can be less than 1
second. second.
=item B<--dry-run> =item B<--dry-run> (alpha testing)
Print the job to run on stdout (standard output), but do not run the Print the job to run on stdout (standard output), but do not run the
job. Use B<-v -v> to include the wrapping that GNU Parallel generates job. Use B<-v -v> to include the wrapping that GNU Parallel generates
@ -672,7 +672,7 @@ and functions) use env_parallel as described under the option I<command>.
See also: B<--record-env>. See also: B<--record-env>.
=item B<--eta> =item B<--eta> (alpha testing)
Show the estimated number of seconds before finishing. This forces GNU Show the estimated number of seconds before finishing. This forces GNU
B<parallel> to read all jobs before starting to find the number of B<parallel> to read all jobs before starting to find the number of
@ -693,7 +693,7 @@ Implies B<--semaphore>.
See also B<--bg>, B<man sem>. See also B<--bg>, B<man sem>.
=item B<--fifo> =item B<--fifo> (alpha testing)
Create a temporary fifo with content. Normally B<--pipe> and Create a temporary fifo with content. Normally B<--pipe> and
B<--pipepart> will give data to the program on stdin (standard B<--pipepart> will give data to the program on stdin (standard
@ -725,7 +725,7 @@ over B<--tollef>. The B<--tollef> option is now retired, and therefore
may not be used. B<--gnu> is kept for compatibility. may not be used. B<--gnu> is kept for compatibility.
=item B<--group> =item B<--group> (alpha testing)
Group output. Output from each jobs is grouped together and is only Group output. Output from each jobs is grouped together and is only
printed when the command is finished. stderr (standard error) first printed when the command is finished. stderr (standard error) first
@ -747,9 +747,9 @@ See also: B<--line-buffer> B<--ungroup>
Print a summary of the options to GNU B<parallel> and exit. Print a summary of the options to GNU B<parallel> and exit.
=item B<--halt-on-error> I<val> =item B<--halt-on-error> I<val> (alpha testing)
=item B<--halt> I<val> =item B<--halt> I<val> (alpha testing)
When should GNU B<parallel> terminate? In some situations it makes no When should GNU B<parallel> terminate? In some situations it makes no
sense to run all jobs. GNU B<parallel> should simply give up as soon sense to run all jobs. GNU B<parallel> should simply give up as soon
@ -1172,7 +1172,7 @@ performance is important use B<--pipepart>.
See also: B<--recstart>, B<--recend>, B<--fifo>, B<--cat>, B<--pipepart>. See also: B<--recstart>, B<--recend>, B<--fifo>, B<--cat>, B<--pipepart>.
=item B<--pipepart> =item B<--pipepart> (alpha testing)
Pipe parts of a physical file. B<--pipepart> works similar to Pipe parts of a physical file. B<--pipepart> works similar to
B<--pipe>, but is much faster. It has a few limitations: B<--pipe>, but is much faster. It has a few limitations:
@ -1288,7 +1288,7 @@ Overrides an earlier B<--keep-order> (e.g. if set in
B<~/.parallel/config>). B<~/.parallel/config>).
=item B<--nice> I<niceness> =item B<--nice> I<niceness> (alpha testing)
Run the command at this niceness. For simple commands you can just add Run the command at this niceness. For simple commands you can just add
B<nice> in front of the command. But if the command consists of more B<nice> in front of the command. But if the command consists of more
@ -1737,7 +1737,7 @@ Does not run the command but quotes it. Useful for making quoted
composed commands for GNU B<parallel>. composed commands for GNU B<parallel>.
=item B<--shuf> =item B<--shuf> (alpha testing)
Shuffle jobs. When having multiple input sources it is hard to Shuffle jobs. When having multiple input sources it is hard to
randomize jobs. --shuf will generate all jobs, and shuffle them before randomize jobs. --shuf will generate all jobs, and shuffle them before
@ -1765,13 +1765,13 @@ I<secs> seconds after starting each ssh. I<secs> can be less than 1
seconds. seconds.
=item B<-S> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> =item B<-S> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> (alpha testing)
=item B<-S> I<@hostgroup> =item B<-S> I<@hostgroup> (alpha testing)
=item B<--sshlogin> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> =item B<--sshlogin> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> (alpha testing)
=item B<--sshlogin> I<@hostgroup> =item B<--sshlogin> I<@hostgroup> (alpha testing)
Distribute jobs to remote computers. The jobs will be run on a list of Distribute jobs to remote computers. The jobs will be run on a list of
remote computers. remote computers.
@ -2088,9 +2088,9 @@ Use B<-v> B<-v> to print the wrapping ssh command when running remotely.
Print the version GNU B<parallel> and exit. Print the version GNU B<parallel> and exit.
=item B<--workdir> I<mydir> =item B<--workdir> I<mydir> (alpha testing)
=item B<--wd> I<mydir> =item B<--wd> I<mydir> (alpha testing)
Files transferred using B<--transfer> and B<--return> will be relative Files transferred using B<--transfer> and B<--return> will be relative
to I<mydir> on remote computers, and the command will be executed in to I<mydir> on remote computers, and the command will be executed in

View file

@ -129,11 +129,9 @@ echo I<shell double quoted input>
=item --nice I<pri> =item --nice I<pri>
\nice -n I<pri> I<shell> -c I<shell quoted input> Remote: See B<The remote system wrapper>.
The \ is needed to avoid using the builtin nice command, which does not Local: B<setpriority(0,0,$nice)>
support -n in B<tcsh>. B<I<shell> -c> is needed to nice composed commands
command.
=item --cat =item --cat
@ -374,7 +372,12 @@ the %%-version, and the function definition works on both pre- and
post-shellshock versions of B<bash>. post-shellshock versions of B<bash>.
=head2 Remote Ctrl-C and standard error (stderr) =head2 The remote system wrapper
The remote system wrapper does some initialization before starting the
command on the remote system.
=head3 Ctrl-C and standard error (stderr)
If the user presses Ctrl-C the user expects jobs to stop. This works If the user presses Ctrl-C the user expects jobs to stop. This works
out of the box if the jobs are run locally. Unfortunately it is not so out of the box if the jobs are run locally. Unfortunately it is not so
@ -394,14 +397,38 @@ propagate the hang-up signal from B<sshd>. But when B<sshd> dies, the
parent of the login shell becomes B<init> (process id 1). So by parent of the login shell becomes B<init> (process id 1). So by
exec'ing a Perl wrapper to monitor the parent pid and kill the child exec'ing a Perl wrapper to monitor the parent pid and kill the child
if the parent pid becomes 1, then Ctrl-C works and stderr is kept on if the parent pid becomes 1, then Ctrl-C works and stderr is kept on
stderr. The wrapper looks like this: stderr.
=head3 --nice
B<nice>ing the remote process is done by B<setpriority(0,0,$nice)>. A
few old systems do not implement this and is thus unsupported.
=head3 Setting $PARALLEL_TMP
B<$PARALLEL_TMP> is used by B<--fifo> and B<--cat> and must point to a
non-exitent file in B<$TMPDIR>. This file name is computed on the
remote system.
=head3 The wrapper
The wrapper looks like this:
$shell = $PARALLEL_SHELL || $SHELL;
$tmpdir = $TMPDIR;
$nice = $opt::nice;
# Set $PARALLEL_TMP to a non-existent file name in $TMPDIR
do {
$ENV{PARALLEL_TMP} = $tmpdir."/par".
join"", map { (0..9,"a".."z","A".."Z")[rand(62)] } (1..5);
} while(-e $ENV{PARALLEL_TMP});
$SIG{CHLD} = sub { $done = 1; }; $SIG{CHLD} = sub { $done = 1; };
$pid = fork; $pid = fork;
unless($pid) { unless($pid) {
# Make own process group to be able to kill HUP it later # Make own process group to be able to kill HUP it later
setpgrp; setpgrp;
exec $ENV{SHELL}, "-c", ($bashfunc."@ARGV"); eval { setpriority(0,0,$nice) };
exec $shell, "-c", ($bashfunc."@ARGV");
die "exec: $!\n"; die "exec: $!\n";
} }
do { do {
@ -415,7 +442,6 @@ stderr. The wrapper looks like this:
wait; wait;
exit ($?&127 ? 128+($?&127) : 1+$?>>8) exit ($?&127 ? 128+($?&127) : 1+$?>>8)
=head2 Transferring of variables and functions =head2 Transferring of variables and functions
Transferring of variables and functions given by B<--env> is done by Transferring of variables and functions given by B<--env> is done by

View file

@ -566,7 +566,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err); exit ($err);
sub parse_options { sub parse_options {
$Global::version = 20150922; $Global::version = 20151022;
$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