Released as 20161122 ('Trump')

This commit is contained in:
Ole Tange 2016-11-21 22:35:25 +01:00
parent f905690898
commit ca9b3ac100
14 changed files with 107 additions and 39 deletions

13
NEWS
View file

@ -1,3 +1,16 @@
20161122
* --record-env can now be used with env_parallel for bash, ksh, pdksh, and zsh.
* GNU Parallel was cited in: An improved implementation of Conditional Reciprocal Best Hits with LAST and Python https://pypi.python.org/pypi/shmlast/1.0.3
* GNU Parallel was cited in: miRPathDB: a new dictionary on microRNAs and target pathways http://nar.oxfordjournals.org/content/early/2016/10/13/nar.gkw926.full
* GNU/Parallel Run multiple commands simultaneously https://vinusumi.wordpress.com/2016/11/08/gnuparallel-run-multiple-commands-simultaneously/
* Tutorial: Parallel web scraping with CasperJS and GNU Parallel http://g-liu.com/blog/2016/10/tutorial-parallel-web-scraping-with-casperjs-and-gnu-parallel/
20161022 20161022
* First command no longer gets stdin as it causes unpredictable issues. * First command no longer gets stdin as it causes unpredictable issues.

16
README
View file

@ -26,6 +26,10 @@ possible to use output from GNU Parallel as input for other programs.
= 10 seconds installation = = 10 seconds installation =
For security reasons it is recommended you use your package manager to
install. But if you cannot do that then you can use this 10 seconds
installation.
The 10 seconds installation will try do to a full installation; if The 10 seconds installation will try do to a full installation; if
that fails, a personal installation; if that fails, a minimal that fails, a personal installation; if that fails, a minimal
installation. installation.
@ -40,9 +44,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-20161022.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20161122.tar.bz2
bzip2 -dc parallel-20161022.tar.bz2 | tar xvf - bzip2 -dc parallel-20161122.tar.bz2 | tar xvf -
cd parallel-20161022 cd parallel-20161122
./configure && make && sudo make install ./configure && make && sudo make install
@ -51,9 +55,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-20161022.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20161122.tar.bz2
bzip2 -dc parallel-20161022.tar.bz2 | tar xvf - bzip2 -dc parallel-20161122.tar.bz2 | tar xvf -
cd parallel-20161022 cd parallel-20161122
./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 20161022. # Generated by GNU Autoconf 2.69 for parallel 20161122.
# #
# 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='20161022' PACKAGE_VERSION='20161122'
PACKAGE_STRING='parallel 20161022' PACKAGE_STRING='parallel 20161122'
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 20161022 to adapt to many kinds of systems. \`configure' configures parallel 20161122 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 20161022:";; short | recursive ) echo "Configuration of parallel 20161122:";;
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 20161022 parallel configure 20161122
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 20161022, which was It was created by parallel $as_me 20161122, 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='20161022' VERSION='20161122'
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 20161022, which was This file was extended by parallel $as_me 20161122, 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 20161022 parallel config.status 20161122
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], [20161022], [bug-parallel@gnu.org]) AC_INIT([parallel], [20161122], [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

@ -219,22 +219,27 @@ cc:Tim Cuthbertson <tim3d.junk@gmail.com>,
Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>, Ryoichiro Suzuki <ryoichiro.suzuki@gmail.com>,
Jesse Alama <jesse.alama@gmail.com> Jesse Alama <jesse.alama@gmail.com>
Subject: GNU Parallel 20161122 ('Hillary') released <<[stable]>> Subject: GNU Parallel 20161122 ('Trump') released <<[stable]>>
GNU Parallel 20161122 ('Hillary') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ GNU Parallel 20161122 ('Trump') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>> <<No new functionality was introduced so this is a good candidate for a stable release.>>
Haiku of the month: Haiku of the month:
Speed is good for you
Multi speed is better still
Use GNU Parallel
-- Ole Tange -- Ole Tange
New in this release: New in this release:
http://g-liu.com/blog/2016/10/tutorial-parallel-web-scraping-with-casperjs-and-gnu-parallel/ * --record-env can now be used with env_parallel for bash, ksh, pdksh, and zsh.
* GNU Parallel was cited in: An improved implementation of Conditional Reciprocal Best Hits with LAST and Python https://pypi.python.org/pypi/shmlast/1.0.3
* GNU Parallel was cited in: miRPathDB: a new dictionary on microRNAs and target pathways http://nar.oxfordjournals.org/content/early/2016/10/13/nar.gkw926.full
* GNU/Parallel Run multiple commands simultaneously https://vinusumi.wordpress.com/2016/11/08/gnuparallel-run-multiple-commands-simultaneously/
* Tutorial: Parallel web scraping with CasperJS and GNU Parallel http://g-liu.com/blog/2016/10/tutorial-parallel-web-scraping-with-casperjs-and-gnu-parallel/
* <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>> * <<Possibly http://link.springer.com/chapter/10.1007%2F978-3-319-22053-6_46>>

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: 20161022 Version: 20161122
Release: 1.1 Release: 1.1
License: GPL License: GPL
Group: Productivity/File utilities Group: Productivity/File utilities

View file

@ -25,6 +25,33 @@ B<env_parallel> is beta quality and not production ready.
B<env_parallel> is 0.1 sec slower at startup than pure GNU B<env_parallel> is 0.1 sec slower at startup than pure GNU
B<parallel>, and takes up to 15 ms to start a job. B<parallel>, and takes up to 15 ms to start a job.
Due to the problem with environment space (see below) the recommended
usage is:
# Run once to record the "empty" environment
env_parallel --record-env
# Define whatever you want to use
alias myalias=echo
myvar=it
myfunc() { myalias $1 $myvar works.; }
# Use --env _ to only transfer the names not in the "empty" environment
env_parallel --env _ -S localhost myfunc ::: Yay,
In B<csh>:
# Run once to record the "empty" environment
env_parallel --record-env
# Define whatever you want to use
alias myalias 'echo \!* $myvar works.'
set myvar=it
# Use --env _ to only transfer the names not in the "empty" environment
env_parallel --env _ -S localhost myalias ::: Yay,
=head2 Environment space =head2 Environment space
By default B<env_parallel> will export all environment variables, By default B<env_parallel> will export all environment variables,

View file

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

@ -1216,7 +1216,7 @@ sub check_invalid_option_combinations {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20161023; $Global::version = 20161122;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;
@ -3751,7 +3751,7 @@ sub citation_notice {
"This helps funding further development; AND IT WON'T COST YOU A CENT.", "This helps funding further development; AND IT WON'T COST YOU A CENT.",
"If you pay 10000 EUR you should feel free to use GNU Parallel without citing.", "If you pay 10000 EUR you should feel free to use GNU Parallel without citing.",
"", "",
"To silence the citation notice: run 'parallel --citation'.", "To silence this citation notice: run 'parallel --citation'.",
"" ""
); );
} }
@ -9910,13 +9910,28 @@ sub Q {
return $a; return $a;
} }
sub pQ {
# pQ alias for ::perl_quote_scalar
*pQ = \&::perl_quote_scalar;
return pQ(@_);
}
sub total_jobs { sub total_jobs {
return $Global::JobQueue->total_jobs() return $Global::JobQueue->total_jobs()
} }
{ {
my %perleval; my %perleval;
my $job;
sub skip {
# shorthand for $job->skip();
$job->skip();
}
sub slot {
# shorthand for $job->slot();
$job->slot();
}
sub replace { sub replace {
# Calculates the corresponding value for a given perl expression # Calculates the corresponding value for a given perl expression
# Returns: # Returns:
@ -9926,7 +9941,7 @@ sub total_jobs {
my $quote = (shift) ? 1 : 0; # should the string be quoted? my $quote = (shift) ? 1 : 0; # should the string be quoted?
# This is actually a CommandLine-object, # This is actually a CommandLine-object,
# but it looks nice to be able to say {= $job->slot() =} # but it looks nice to be able to say {= $job->slot() =}
my $job = shift; $job = shift;
$perlexpr =~ s/^(-?\d+)? *//; # Positional replace treated as normal replace $perlexpr =~ s/^(-?\d+)? *//; # Positional replace treated as normal replace
if(not $self->{'cache'}{$perlexpr}) { if(not $self->{'cache'}{$perlexpr}) {
# Only compute the value once # Only compute the value once

View file

@ -260,6 +260,10 @@ made:
shell quote a string shell quote a string
=item Z<> B<pQ(>I<string>B<)>
perl quote a string
=item Z<> B<total_jobs()> =item Z<> B<total_jobs()>
number of jobs in total number of jobs in total

View file

@ -17,8 +17,8 @@ To run this tutorial you must have the following:
=item parallel >= version 20160822 =item parallel >= version 20160822
Install the newest version using your package manager or with this Install the newest version using your package manager (recommended for
command: security reasons) or with this command:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash (wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
@ -531,9 +531,9 @@ Output:
*/!#$ shell quoted is \*/\!\#\$ */!#$ shell quoted is \*/\!\#\$
B<$job->>B<skip()> skips the job: B<skip()> skips the job:
parallel echo {= 'if($_==3) { $job->skip() }' =} ::: {1..5} parallel echo {= 'if($_==3) { skip() }' =} ::: {1..5}
Output: Output:
@ -544,7 +544,7 @@ Output:
B<@arg> contains the input source variables: B<@arg> contains the input source variables:
parallel echo {= 'if($arg[1]==$arg[2]) { $job->skip() }' =} ::: {1..3} ::: {1..3} parallel echo {= 'if($arg[1]==$arg[2]) { skip() }' =} ::: {1..3} ::: {1..3}
Output: Output:

View file

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

View file

@ -10,7 +10,7 @@ please cite:
This helps funding further development; AND IT WON'T COST YOU A CENT. This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing. If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence the citation notice: run 'parallel --citation'. To silence this citation notice: run 'parallel --citation'.
echo a echo a
a a
@ -32,7 +32,7 @@ please cite:
This helps funding further development; AND IT WON'T COST YOU A CENT. This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing. If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence the citation notice: run 'parallel --citation'. To silence this citation notice: run 'parallel --citation'.
10 files to edit 10 files to edit
[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on. [?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.

View file

@ -218,12 +218,12 @@ Job 4 of 5
Job 5 of 5 Job 5 of 5
parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$' parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$'
*/!#$ shell quoted is \*/\!\#\$ */!#$ shell quoted is \*/\!\#\$
parallel echo {= 'if($_==3) { $job->skip() }' =} ::: {1..5} parallel echo {= 'if($_==3) { skip() }' =} ::: {1..5}
9 9
9 9
9 9
9 9
parallel echo {= 'if($arg[1]==$arg[2]) { $job->skip() }' =} ::: {1..3} ::: {1..3} parallel echo {= 'if($arg[1]==$arg[2]) { skip() }' =} ::: {1..3} ::: {1..3}
1 2 1 2
1 3 1 3
2 1 2 1