Released as 20150122 (' (((:~{> Je Suis Charlie').

This commit is contained in:
Ole Tange 2015-01-21 22:24:23 +01:00
parent e4c97e4bd1
commit 259820f48c
16 changed files with 362 additions and 100 deletions

View file

@ -3,4 +3,60 @@ SUBDIRS = src
test: test:
cd testsuite; make 1 cd testsuite; make 1
upload:
eval `gpg-agent --daemon`
# make sure $YYYYMMDD is set
echo $(YYYYMMDD) | grep 20
cp parallel-$(YYYYMMDD).tar.bz2 parallel-latest.tar.bz2
cp doc/parallel.directive parallel-$(YYYYMMDD).tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$(YYYYMMDD)/" parallel-*.tar.*directive
gpg --clearsign --yes parallel-$(YYYYMMDD).tar.bz2.directive
cp doc/parallel.latest.directive parallel-latest.tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$(YYYYMMDD)/" parallel-latest.tar.*directive
gpg --clearsign --yes parallel-latest.tar.bz2.directive
(echo '#!/bin/bash'; \
echo; \
echo "# To check the signature run:"; \
echo "# echo | gpg"; \
echo "# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$(YYYYMMDD).tar.bz2.sig"; \
echo; \
echo "echo | gpg 2>/dev/null"; \
echo 'gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $$0'; \
echo 'exit $$?' ; \
echo; \
gpg -ab -o - parallel-$(YYYYMMDD).tar.bz2; \
) > parallel-$(YYYYMMDD).tar.bz2.sig
(echo '#!/bin/bash'; \
echo; \
echo "# To check the signature run:"; \
echo "# echo | gpg"; \
echo "# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig"; \
echo; \
echo "echo | gpg 2>/dev/null"; \
echo 'gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $$0'; \
echo 'exit $$?' ; \
echo; \
gpg -ab -o - parallel-$(YYYYMMDD).tar.bz2; \
) > parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$(YYYYMMDD).tar.bz2.sig
../ftpsync/src/ftpsync parallel-$(YYYYMMDD).tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
../ftpsync/src/ftpsync parallel-latest.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
# This can take 7 minutes
pushd /tmp; \
rm -rf /tmp/parallel-$(YYYYMMDD)*; \
while ! wget http://ftp.gnu.org/gnu/parallel/parallel-$(YYYYMMDD).tar.bz2 ; do sleep 2; done; \
tar xjvf parallel-$(YYYYMMDD).tar.bz2; \
cd parallel-$(YYYYMMDD); \
./configure; \
make -j && sudo make -j install; \
pushd; \
sudo cp /usr/local/bin/parallel /usr/local/bin/parallel-$(YYYYMMDD)
EXTRA_DIST = CITATION EXTRA_DIST = CITATION

View file

@ -738,6 +738,62 @@ uninstall-am:
test: test:
cd testsuite; make 1 cd testsuite; make 1
upload:
eval `gpg-agent --daemon`
# make sure $YYYYMMDD is set
echo $(YYYYMMDD) | grep 20
cp parallel-$(YYYYMMDD).tar.bz2 parallel-latest.tar.bz2
cp doc/parallel.directive parallel-$(YYYYMMDD).tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$(YYYYMMDD)/" parallel-*.tar.*directive
gpg --clearsign --yes parallel-$(YYYYMMDD).tar.bz2.directive
cp doc/parallel.latest.directive parallel-latest.tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$(YYYYMMDD)/" parallel-latest.tar.*directive
gpg --clearsign --yes parallel-latest.tar.bz2.directive
(echo '#!/bin/bash'; \
echo; \
echo "# To check the signature run:"; \
echo "# echo | gpg"; \
echo "# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$(YYYYMMDD).tar.bz2.sig"; \
echo; \
echo "echo | gpg 2>/dev/null"; \
echo 'gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $$0'; \
echo 'exit $$?' ; \
echo; \
gpg -ab -o - parallel-$(YYYYMMDD).tar.bz2; \
) > parallel-$(YYYYMMDD).tar.bz2.sig
(echo '#!/bin/bash'; \
echo; \
echo "# To check the signature run:"; \
echo "# echo | gpg"; \
echo "# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig"; \
echo; \
echo "echo | gpg 2>/dev/null"; \
echo 'gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $$0'; \
echo 'exit $$?' ; \
echo; \
gpg -ab -o - parallel-$(YYYYMMDD).tar.bz2; \
) > parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$(YYYYMMDD).tar.bz2.sig
../ftpsync/src/ftpsync parallel-$(YYYYMMDD).tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
../ftpsync/src/ftpsync parallel-latest.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
# This can take 7 minutes
pushd /tmp; \
rm -rf /tmp/parallel-$(YYYYMMDD)*; \
while ! wget http://ftp.gnu.org/gnu/parallel/parallel-$(YYYYMMDD).tar.bz2 ; do sleep 2; done; \
tar xjvf parallel-$(YYYYMMDD).tar.bz2; \
cd parallel-$(YYYYMMDD); \
./configure; \
make -j && sudo make -j install; \
pushd; \
sudo cp /usr/local/bin/parallel /usr/local/bin/parallel-$(YYYYMMDD)
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: .NOEXPORT:

129
NEWS
View file

@ -1,3 +1,132 @@
20150122
* Remote jobs now send stderr (standard error) to stderr (standard
error) instead of stdout (standard output).
* Remote execution command is now packed using base64 encoded
bzip2. This means that big environments (app. 100 KB) can be
transferred. This change makes remote execution alpha quality.
* --semaphoretimeout now takes a negative value. This means give up if
the semaphore is not gotten within the timeout.
* --halt -1 and -2 now means halt if a job succeeds (so the opposite
of 1 and 2).
* Bash's second fix of shellshock caused --env to break again when
exporting functions. This has been fixed again.
* A semibig refactoring of big functions. All non-trivial functions
are now less than 100 lines. The refactoring makes this release beta
quality.
* A description of the design decisions for GNU Parallel can be found
in 'man parallel_design'.
* A bug fix in replacement strings cause rewrite of the replacement
function. This makes use of replacement strings alpha quality.
* GNU Parallel was cited in: SlideToolkit: An Assistive Toolset for
the Histological Quantification of Whole Slide Images
http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0110289
* GNU Parallel was cited in: Improving Energy and Performance with
Spintronics Caches in Multicore Systems
http://link.springer.com/chapter/10.1007/978-3-319-14313-2_24
* GNU Parallel was cited in: Parallel post-processing with MPI-Bash
http://dl.acm.org/citation.cfm?id=2691137
* GNU Parallel was cited in: Distinguishing cause from effect using
observational data: methods and benchmarks
http://arxiv-web3.library.cornell.edu/pdf/1412.3773.pdf
* GNU Parallel was cited in: Data Science at the Command Line
http://cdn.oreillystatic.com/oreilly/booksamplers/9781491947852_sampler.pdf
* GNU Parallel was cited in: Resolution of Genetic Map Expansion
Caused by Excess Heterozygosity in Plant Recombinant Inbred
Populations http://www.g3journal.org/content/4/10/1963.full.pdf
* GNU Parallel was cited in: Bayesian Inference of Protein Structure
from Chemical Shift Data https://peerj.com/preprints/692v1.pdf
* GNU Parallel was cited in: Clonal interference and Mullerʼs ratchet
in spatial habitats http://iopscience.iop.org/1478-3975/11/5/056003
* GNU Parallel was cited in: Web-scale content reuse detection
ftp://info.isi.edu/isi-pubs/tr-692.pdf
* GNU Parallel was cited in: Computação Verde na Camada de Aplicação
https://linux.ime.usp.br/~tpaiva/mac0499/files/monografia.pdf
* GNU Parallel was cited in: Frameshift alignment: statistics and
post-genomic applications
http://bioinformatics.oxfordjournals.org/content/30/24/3575.full.pdf+html
* GNU Parallel was cited in: Towards Recommender Engineering Tools and
Experiments for Identifying Recommender Differences
http://elehack.net/research/thesis/mde-thesis.pdf
* GNU Parallel was cited in: Speaker Environment Classification Using
Rhythm Metrics in Levantine Arabic Dialect
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6923918
* GNU Parallel was cited in: A Formal Proof Of The Kepler Conjecture
http://arxiv.org/pdf/1501.02155.pdf
* GNU Parallel was cited in: Allocation Policy Analysis for Cache
Coherence Protocols for STT-MRAM-based caches
http://conservancy.umn.edu/bitstream/handle/11299/169362/Nandkar_umn_0130M_15551.pdf
* GNU Parallel was cited in: Using Trusted Platform Module for
securing virtual environment access in Cloud
http://dar.aucegypt.edu:8080/bitstream/handle/10526/4237/Using%20Trusted%20Platform%20Module%20for%20Securing%20Virtual%20Environment%20Access%20in%20Cloud.pdf
* GNU Parallel was cited in: Weakly Supervised Learning for
Compositional Sentiment Recognition
http://computerlinguist.org/static/downloads/ma-thesis/Master_Thesis-Michael_Haas-Weakly_Supervised_Learning_for_Compositional_Sentiment_Recognition.pdf
* GNU Parallel was cited in: Agility and Performance in Elastic
Distributed Storage http://dl.acm.org/citation.cfm?id=2668129
* GNU Parallel was used (unfortunately without citation) in: Large
Scale Author Name Disambiguation in Digital Libraries
http://semanticommunity.info/@api/deki/files/31523/P227_3546.pdf
* GNU Parallel is used in BEDOPS:
https://media.readthedocs.org/pdf/bedops/v2p5p0/bedops.pdf
* Job ad asking for GNU Parallel skills:
http://www.aplitrak.com/?adid=dXMzMTYxMjQuMzg0MTkuMTU1MEBtYW5wb3dlcmZveG5hLmFwbGl0cmFrLmNvbQ#sthash.kYCIhhty.KcoT6HnJ.dpbs
* GNU Parallel: Open Source For You (OSFY) magazine, October 2013
edition
http://www.shakthimaan.com/posts/2014/11/27/gnu-parallel/news.html
* Multithreaded Encryption and Compression
http://www.krazyworks.com/multithreaded-encryption-and-compression/
* GNU Parallel on OSX and Linux
https://darknightelf.wordpress.com/2015/01/01/gnu-parallel-on-osx/
* How to build gnu parallel from source on Ubuntu PC?
http://blog.ovidiuparvu.com/build-gnu-parallel-source-ubuntu-pc/
* GNU parallel for openaddr-process-one
https://nelsonslog.wordpress.com/2015/01/09/gnu-parallel-for-openaddr-process-one/
* From SRA Project to FastQ http://danielecook.com/sra-project-fastq/
* Software Development Tooling
http://www.computer.org/csdl/mags/so/2014/06/mso2014060021.pdf
* コマンドを並列に実行するGNU parallelがとても便利
http://bicycle1885.hatenablog.com/entry/2014/08/10/143612
* Bug fixes and man page updates.
20141122 20141122
* Remote systems can be divided into hostgroups (e.g. web and db) by * Remote systems can be divided into hostgroups (e.g. web and db) by

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-20150109.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20150122.tar.bz2
bzip2 -dc parallel-20150109.tar.bz2 | tar xvf - bzip2 -dc parallel-20150122.tar.bz2 | tar xvf -
cd parallel-20150109 cd parallel-20150122
./configure && make && make install ./configure && make && 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-20150109.tar.bz2 wget http://ftpmirror.gnu.org/parallel/parallel-20150122.tar.bz2
bzip2 -dc parallel-20150109.tar.bz2 | tar xvf - bzip2 -dc parallel-20150122.tar.bz2 | tar xvf -
cd parallel-20150109 cd parallel-20150122
./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 20150109. # Generated by GNU Autoconf 2.69 for parallel 20150122.
# #
# 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='20150109' PACKAGE_VERSION='20150122'
PACKAGE_STRING='parallel 20150109' PACKAGE_STRING='parallel 20150122'
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 20150109 to adapt to many kinds of systems. \`configure' configures parallel 20150122 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 20150109:";; short | recursive ) echo "Configuration of parallel 20150122:";;
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 20150109 parallel configure 20150122
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 20150109, which was It was created by parallel $as_me 20150122, 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='20150109' VERSION='20150122'
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 20150109, which was This file was extended by parallel $as_me 20150122, 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 20150109 parallel config.status 20150122
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], [20150109], [bug-parallel@gnu.org]) AC_INIT([parallel], [20150122], [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

@ -57,18 +57,15 @@ pushd
== Upload == == Upload ==
eval `gpg-agent --daemon` export YYYYMMDD=`yyyymmdd`
make upload
YYYYMMDD=`yyyymmdd` # Only needed for alpha:
cp parallel-$YYYYMMDD.tar.bz2 parallel-latest.tar.bz2 eval `gpg-agent --daemon`
cp doc/parallel.directive parallel-$YYYYMMDD.tar.bz2.directive cp doc/parallel.directive parallel-$YYYYMMDD.tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$YYYYMMDD/" parallel-*.tar.*directive perl -i -pe "s/20\d\d\d\d\d\d/$YYYYMMDD/" parallel-*.tar.*directive
gpg --clearsign --yes parallel-$YYYYMMDD.tar.bz2.directive gpg --clearsign --yes parallel-$YYYYMMDD.tar.bz2.directive
cp doc/parallel.latest.directive parallel-latest.tar.bz2.directive
perl -i -pe "s/20\d\d\d\d\d\d/$YYYYMMDD/" parallel-latest.tar.*directive
gpg --clearsign --yes parallel-latest.tar.bz2.directive
(echo '#!/bin/bash'; (echo '#!/bin/bash';
echo; echo;
echo "# To check the signature run:" echo "# To check the signature run:"
@ -82,30 +79,9 @@ gpg --clearsign --yes parallel-latest.tar.bz2.directive
gpg -ab -o - parallel-$YYYYMMDD.tar.bz2 gpg -ab -o - parallel-$YYYYMMDD.tar.bz2
) > parallel-$YYYYMMDD.tar.bz2.sig ) > parallel-$YYYYMMDD.tar.bz2.sig
(echo '#!/bin/bash';
echo;
echo "# To check the signature run:"
echo "# echo | gpg"
echo "# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig"
echo
echo "echo | gpg 2>/dev/null"
echo 'gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $0'
echo 'exit $?'
echo
gpg -ab -o - parallel-$YYYYMMDD.tar.bz2
) > parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-latest.tar.bz2.sig
gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$YYYYMMDD.tar.bz2.sig gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-$YYYYMMDD.tar.bz2.sig
#../ftpsync/src/ftpsync parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/alpha/ ../ftpsync/src/ftpsync parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/alpha/
../ftpsync/src/ftpsync parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
../ftpsync/src/ftpsync parallel-latest.tar.bz2{,.sig,*asc} ftp://ftp-upload.gnu.org/incoming/ftp/
#echo put parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} | ncftp ftp://ftp-upload.gnu.org/incoming/ftp/
#echo put parallel-latest.tar.bz2{,.sig,*asc} | ncftp ftp://ftp-upload.gnu.org/incoming/ftp/
#echo put parallel-$YYYYMMDD.tar.bz2{,.sig,*asc} | ncftp ftp://ftp-upload.gnu.org/incoming/alpha/
== Update OpenSUSE build system == == Update OpenSUSE build system ==
@ -118,19 +94,20 @@ find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc r
# This should not create new files # This should not create new files
osc up home:tange/parallel/ osc up home:tange/parallel/
make make
# Update versionsnummeret from 20110422-2 to YYYYMMDD-1
# Reload build-status: # Reload build-status:
https://build.opensuse.org/package/show?package=parallel&project=home%3Atange https://build.opensuse.org/package/show?package=parallel&project=home%3Atange
# Check that one .deb (Debian 5.0) and one .rpm (CentOS) end with 'succeeded' # Check that one .deb (Debian 5.0) and one .rpm (CentOS) end with 'succeeded'
== Download and test == == Download and test ==
# Only needed for alpha
YYYYMMDD=`yyyymmdd` YYYYMMDD=`yyyymmdd`
pushd /tmp pushd /tmp
rm -rf parallel-${YYYYMMDD}* rm -rf parallel-${YYYYMMDD}*
# This can take 7 minutes # This can take 7 minutes
while ! wget http://ftp.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done #while ! wget http://ftp.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done
#while ! wget http://alpha.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done while ! wget http://alpha.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done
tar xjvf parallel-$YYYYMMDD.tar.bz2 tar xjvf parallel-$YYYYMMDD.tar.bz2
cd parallel-$YYYYMMDD cd parallel-$YYYYMMDD
./configure ./configure
@ -228,19 +205,22 @@ 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 20150122 (' (((:~{> Hebdo Manila QZ8501') released Subject: GNU Parallel 20150122 (' (((:~{> Je Suis Charlie') released
GNU Parallel 20150122 ('Hebdo Manila QZ8501') has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/ GNU Parallel 20150122 (' (((:~{> Je Suis Charlie') has been released. It is available for download at: http://ftp.gnu.org/gnu/parallel/
Haiku of the month: Haiku of the month:
<<>> If not enough time:
Run jobs using Parallel.
Keeps CPUs warm.
-- Ole Tange
New in this release: New in this release:
* Remote jobs now send stderr (standard error) to stderr (standard error) instead of stdout (standard output). * Remote jobs now send stderr (standard error) to stderr (standard error) instead of stdout (standard output).
* Remote execution command is now packed using base64 encoded bzip2. This means that big environments (app. 250 KB) can be transferred. This change makes remote execution alpha quality. * Remote execution command is now packed using base64 encoded bzip2. This means that big environments (app. 100 KB) can be transferred. This change makes remote execution alpha quality.
* --semaphoretimeout now takes a negative value. This means give up if the semaphore is not gotten within the timeout. * --semaphoretimeout now takes a negative value. This means give up if the semaphore is not gotten within the timeout.
@ -252,6 +232,8 @@ New in this release:
* A description of the design decisions for GNU Parallel can be found in 'man parallel_design'. * A description of the design decisions for GNU Parallel can be found in 'man parallel_design'.
* A bug fix in replacement strings cause rewrite of the replacement function. This makes use of replacement strings alpha quality.
* GNU Parallel was cited in: SlideToolkit: An Assistive Toolset for the Histological Quantification of Whole Slide Images http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0110289 * GNU Parallel was cited in: SlideToolkit: An Assistive Toolset for the Histological Quantification of Whole Slide Images http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0110289
* GNU Parallel was cited in: Improving Energy and Performance with Spintronics Caches in Multicore Systems http://link.springer.com/chapter/10.1007/978-3-319-14313-2_24 * GNU Parallel was cited in: Improving Energy and Performance with Spintronics Caches in Multicore Systems http://link.springer.com/chapter/10.1007/978-3-319-14313-2_24

View file

@ -2,7 +2,7 @@ all:
cd ../debian/ && make cd ../debian/ && make
osc rm home\:tange/parallel/parallel_*.dsc || true osc rm home\:tange/parallel/parallel_*.dsc || true
cp ../debian/parallel_*.dsc ../debian/parallel_*.tar.gz home\:tange/parallel/ cp ../debian/parallel_*.dsc ../debian/parallel_*.tar.gz home\:tange/parallel/
cp `ls ../../parallel-2*.tar.bz2|tail -n1` home\:tange/parallel/ cp `ls ../../parallel-2*.tar.bz2|grep -v latest|tail -n1` home\:tange/parallel/
cd home\:tange/parallel/ && osc up cd home\:tange/parallel/ && osc up
cd home\:tange/parallel/ && parallel osc add ::: *.spec *.dsc *.tar.gz *.tar.bz2 && echo Src added OK || true cd home\:tange/parallel/ && parallel osc add ::: *.spec *.dsc *.tar.gz *.tar.bz2 && echo Src added OK || true
cd home\:tange/parallel/ && osc ci -m "New release" cd home\:tange/parallel/ && osc ci -m "New release"

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: 20141122 Version: 20150122
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 = 20150109; $Global::version = 20150122;
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

@ -953,7 +953,7 @@ sub parse_options {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20150115; $Global::version = 20150122;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;
@ -2933,7 +2933,8 @@ sub citation_notice {
} else { } else {
::status ::status
("Academic tradition requires you to cite works you base your article on.\n", ("Academic tradition requires you to cite works you base your article on.\n",
"When using programs that use GNU Parallel to process data for publication please cite:\n", "When using programs that use GNU Parallel to process data for publication\n",
"please cite:\n",
"\n", "\n",
" O. Tange (2011): GNU Parallel - The Command-Line Power Tool,\n", " O. Tange (2011): GNU Parallel - The Command-Line Power Tool,\n",
" ;login: The USENIX Magazine, February 2011:42-47.\n", " ;login: The USENIX Magazine, February 2011:42-47.\n",
@ -2941,7 +2942,7 @@ sub citation_notice {
"This helps funding further development; and it won't cost you a cent.\n", "This helps funding further development; and it won't cost you a cent.\n",
"If you pay 10000 EUR you should feel free to use GNU Parallel without citing.\n", "If you pay 10000 EUR you should feel free to use GNU Parallel without citing.\n",
"\n", "\n",
"To silence this citation notice run 'parallel --bibtex' once or use '--will-cite'.\n\n", "Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.\n\n",
); );
} }
} }
@ -3996,7 +3997,7 @@ sub loadavg {
$self->{'loadavg'} = $load - 1; $self->{'loadavg'} = $load - 1;
::debug("load", "New loadavg: ", $self->{'loadavg'},"\n"); ::debug("load", "New loadavg: ", $self->{'loadavg'},"\n");
} elsif ($load_out=~/average: (\d+.\d+)/) { } elsif ($load_out=~/average: (\d+.\d+)/) {
# Aix does not support instant load average # AIX does not support instant load average
# 04:11AM up 21 days, 12:55, 1 user, load average: 1.85, 1.57, 1.55 # 04:11AM up 21 days, 12:55, 1 user, load average: 1.85, 1.57, 1.55
$self->{'loadavg'} = $1; $self->{'loadavg'} = $1;
} else { } else {
@ -7926,8 +7927,8 @@ sub new {
my $fhs = shift; my $fhs = shift;
for my $fh (@$fhs) { for my $fh (@$fhs) {
if(-t $fh) { if(-t $fh) {
::warning("Input is read from the terminal. ". ::warning("Input is read from the terminal.\n");
"Only experts do this on purpose. ". ::warning("Only experts do this on purpose. ".
"Press CTRL-D to exit.\n"); "Press CTRL-D to exit.\n");
} }
} }

View file

@ -100,7 +100,7 @@ B<--env> and use B<env_parallel> instead of B<parallel>.
The command cannot contain the character \257 (macron: ¯). The command cannot contain the character \257 (macron: ¯).
=item B<{}> =item B<{}> (alpha testing)
Input line. This replacement string will be replaced by a full line Input line. This replacement string will be replaced by a full line
read from the input source. The input source is normally stdin read from the input source. The input source is normally stdin
@ -113,7 +113,7 @@ If the command line contains no replacement strings then B<{}> will be
appended to the command line. appended to the command line.
=item B<{.}> =item B<{.}> (alpha testing)
Input line without extension. This replacement string will be replaced Input line without extension. This replacement string will be replaced
by the input with the extension removed. If the input line contains by the input with the extension removed. If the input line contains
@ -129,7 +129,7 @@ The replacement string B<{.}> can be changed with B<--er>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{/}> =item B<{/}> (alpha testing)
Basename of input line. This replacement string will be replaced by Basename of input line. This replacement string will be replaced by
the input with the directory part removed. the input with the directory part removed.
@ -140,7 +140,7 @@ B<--basenamereplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{//}> =item B<{//}> (alpha testing)
Dirname of input line. This replacement string will be replaced by the Dirname of input line. This replacement string will be replaced by the
dir of the input line. See B<dirname>(1). dir of the input line. See B<dirname>(1).
@ -151,7 +151,7 @@ B<--dirnamereplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{/.}> =item B<{/.}> (alpha testing)
Basename of input line without extension. This replacement string will Basename of input line without extension. This replacement string will
be replaced by the input with the directory and extension part be replaced by the input with the directory and extension part
@ -163,7 +163,7 @@ B<--basenameextensionreplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{#}> =item B<{#}> (alpha testing)
Sequence number of the job to run. This replacement string will be Sequence number of the job to run. This replacement string will be
replaced by the sequence number of the job being run. It contains the replaced by the sequence number of the job being run. It contains the
@ -174,7 +174,7 @@ The replacement string B<{#}> can be changed with B<--seqreplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{%}> =item B<{%}> (alpha testing)
Job slot number. This replacement string will be replaced by the job's Job slot number. This replacement string will be replaced by the job's
slot number between 1 and number of jobs to run in parallel. There slot number between 1 and number of jobs to run in parallel. There
@ -186,7 +186,7 @@ The replacement string B<{%}> can be changed with B<--slotreplace>.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{>I<n>B<}> =item B<{>I<n>B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument. This Argument from input source I<n> or the I<n>'th argument. This
positional replacement string will be replaced by the input from input positional replacement string will be replaced by the input from input
@ -197,7 +197,7 @@ I<n>'th last argument.
To understand replacement strings see B<{}>. To understand replacement strings see B<{}>.
=item B<{>I<n>.B<}> =item B<{>I<n>.B<}> (alpha testing)
Argument from input source I<n> or the I<n>'th argument without Argument from input source I<n> or the I<n>'th argument without
extension. It is a combination of B<{>I<n>B<}> and B<{.}>. extension. It is a combination of B<{>I<n>B<}> and B<{.}>.
@ -210,7 +210,7 @@ extension removed.
To understand positional replacement strings see B<{>I<n>B<}>. To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>/B<}> =item B<{>I<n>/B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument. Basename of argument from input source I<n> or the I<n>'th argument.
It is a combination of B<{>I<n>B<}> and B<{/}>. It is a combination of B<{>I<n>B<}> and B<{/}>.
@ -223,7 +223,7 @@ directory (if any) removed.
To understand positional replacement strings see B<{>I<n>B<}>. To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>//B<}> =item B<{>I<n>//B<}> (alpha testing)
Dirname of argument from input source I<n> or the I<n>'th argument. Dirname of argument from input source I<n> or the I<n>'th argument.
It is a combination of B<{>I<n>B<}> and B<{//}>. It is a combination of B<{>I<n>B<}> and B<{//}>.
@ -235,7 +235,7 @@ the I<n>'th argument (when used with B<-N>). See B<dirname>(1).
To understand positional replacement strings see B<{>I<n>B<}>. To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{>I<n>/.B<}> =item B<{>I<n>/.B<}> (alpha testing)
Basename of argument from input source I<n> or the I<n>'th argument Basename of argument from input source I<n> or the I<n>'th argument
without extension. It is a combination of B<{>I<n>B<}>, B<{/}>, and without extension. It is a combination of B<{>I<n>B<}>, B<{/}>, and
@ -249,7 +249,7 @@ directory (if any) and extension removed.
To understand positional replacement strings see B<{>I<n>B<}>. To understand positional replacement strings see B<{>I<n>B<}>.
=item B<{=>I<perl expression>B<=}> =item B<{=>I<perl expression>B<=}> (alpha testing)
Replace with calculated I<perl expression>. B<$_> will contain the Replace with calculated I<perl expression>. B<$_> will contain the
same as B<{}>. After evaluating I<perl expression> B<$_> will be used same as B<{}>. After evaluating I<perl expression> B<$_> will be used
@ -262,7 +262,7 @@ The B<{=>I<perl expression>B<=}> must be given as a single string.
See also: B<--rpl> B<--parens> See also: B<--rpl> B<--parens>
=item B<{=>I<n> I<perl expression>B<=}> =item B<{=>I<n> I<perl expression>B<=}> (alpha testing)
Positional equivalent to B<{= perl expression =}>. To understand Positional equivalent to B<{= perl expression =}>. To understand
positional replacement strings see B<{>I<n>B<}>. positional replacement strings see B<{>I<n>B<}>.
@ -426,7 +426,7 @@ notice.
=item B<--block-size> I<size> =item B<--block-size> I<size>
Size of block in bytes. The size can be postfixed with K, M, G, T, P, Size of block in bytes. The I<size> can be postfixed with K, M, G, T, P,
k, m, g, t, or p which would multiply the size with 1024, 1048576, k, m, g, t, or p which would multiply the size with 1024, 1048576,
1073741824, 1099511627776, 1125899906842624, 1000, 1000000, 1073741824, 1099511627776, 1125899906842624, 1000, 1000000,
1000000000, 1000000000000, or 1000000000000000 respectively. 1000000000, 1000000000000, or 1000000000000000 respectively.
@ -440,7 +440,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>
@ -450,7 +450,7 @@ you can do: B<parallel --pipe --cat wc {}>.
See also B<--fifo>. See also B<--fifo>.
=item B<--cleanup> =item B<--cleanup> (alpha testing)
Remove transferred files. B<--cleanup> will remove the transferred files Remove transferred files. B<--cleanup> will remove the transferred files
on the remote computer after processing is done. on the remote computer after processing is done.
@ -564,7 +564,7 @@ If I<eof-str> is omitted, there is no end of file string. If neither
B<-E> nor B<-e> is used, no end of file string is used. B<-E> nor B<-e> is used, no end of file string is used.
=item B<--env> I<var> =item B<--env> I<var> (alpha testing)
Copy environment variable I<var>. This will copy I<var> to the Copy environment variable I<var>. This will copy I<var> to the
environment that the command is run in. This is especially useful for environment that the command is run in. This is especially useful for
@ -631,7 +631,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
@ -921,7 +921,7 @@ limiting factor.
See also: B<--group> B<--ungroup> See also: B<--group> B<--ungroup>
=item B<--load> I<max-load> =item B<--load> I<max-load> (alpha testing)
Do not start new jobs on a given computer unless the number of running Do not start new jobs on a given computer unless the number of running
processes on the computer is less than I<max-load>. I<max-load> uses processes on the computer is less than I<max-load>. I<max-load> uses
@ -969,6 +969,21 @@ See also B<-X> for context replace. If in doubt use B<-X> as that will
most likely do what is needed. most likely do what is needed.
=item B<--memfree> I<size> (alpha testing)
Minimum memory free when starting another job. The I<size> can be
postfixed with K, M, G, T, P, k, m, g, t, or p which would multiply
the size with 1024, 1048576, 1073741824, 1099511627776,
1125899906842624, 1000, 1000000, 1000000000, 1000000000000, or
1000000000000000 respectively.
If the jobs take up very different amount of RAM, GNU B<parallel> will
only start as many as there is memory for. If less than I<size> bytes
are free, no more jobs will be started. If less than 50% I<size> bytes
are free, the youngest job will be killed, and put back on the queue
to be run later.
=item B<--minversion> I<version> =item B<--minversion> I<version>
Print the version GNU B<parallel> and exit. If the current version of Print the version GNU B<parallel> and exit. If the current version of
@ -1150,6 +1165,12 @@ Print the number of CPU cores and exit (used by GNU B<parallel> itself
to determine the number of CPU cores on remote computers). to determine the number of CPU cores on remote computers).
=item B<--no-keep-order> (alpha testing)
Overrides an earlier B<--keep-order> (e.g. if set in
B<~/.parallel/config>).
=item B<--no-notice> =item B<--no-notice>
Do not display citation notice. A citation notice is printed on stderr Do not display citation notice. A citation notice is printed on stderr
@ -1367,7 +1388,7 @@ useful if some jobs fail for no apparent reason (such as network
failure). failure).
=item B<--return> I<filename> =item B<--return> I<filename> (alpha testing)
Transfer files from remote computers. B<--return> is used with Transfer files from remote computers. B<--return> is used with
B<--sshlogin> when the arguments are files on the remote computers. When B<--sshlogin> when the arguments are files on the remote computers. When
@ -1603,9 +1624,9 @@ 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<--sshlogin> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> =item B<--sshlogin> I<[@hostgroups/][ncpu/]sshlogin[,[@hostgroups/][ncpu/]sshlogin[,...]]> (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.
@ -1786,7 +1807,7 @@ Print the job to be run on stderr (standard error).
See also B<-v>, B<-p>. See also B<-v>, B<-p>.
=item B<--transfer> =item B<--transfer> (alpha testing)
Transfer files to remote computers. B<--transfer> is used with Transfer files to remote computers. B<--transfer> is used with
B<--sshlogin> when the arguments are files and should be transferred B<--sshlogin> when the arguments are files and should be transferred
@ -1813,7 +1834,7 @@ B<--transfer> is often used with B<--return> and B<--cleanup>.
B<--transfer> is ignored when used with B<--sshlogin :> or when not used with B<--sshlogin>. B<--transfer> is ignored when used with B<--sshlogin :> or when not used with B<--sshlogin>.
=item B<--trc> I<filename> =item B<--trc> I<filename> (alpha testing)
Transfer, Return, Cleanup. Short hand for: Transfer, Return, Cleanup. Short hand for:

View file

@ -521,6 +521,17 @@ What can be done about it?
Unfortunately it is not always possible to predict the root cause of the error. Unfortunately it is not always possible to predict the root cause of the error.
=head2 Computation of load
Contrary to the obvious --load does not use load average. This is due
to load average rising too slowly. Instead it uses B<ps> to list the
number of jobs in running or blocked state (state D, O or R). This
gives an instat load.
As remote calculation of load can be slow, a process is spawned to run
B<ps> and put the result in a file, which is then used next time.
=head1 Ideas for new design =head1 Ideas for new design
=head2 Multiple processes working together =head2 Multiple processes working together

View file

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

@ -1,6 +1,7 @@
### Test stdin goes to first command only ("-" as argument) ### Test stdin goes to first command only ("-" as argument)
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -8,7 +9,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
cat - cat -
via first cat via first cat
@ -16,7 +17,8 @@ cat -
via pseudotty via pseudotty
### Test stdin goes to first command only ("cat" as argument) ### Test stdin goes to first command only ("cat" as argument)
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -24,7 +26,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
echo a echo a
a a

View file

@ -1,7 +1,8 @@
### Test -p --interactive ### Test -p --interactive
spawn /tmp/parallel-script-for-expect spawn /tmp/parallel-script-for-expect
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -9,7 +10,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
sleep 0.1; echo opt-p 1 ?...y sleep 0.1; echo opt-p 1 ?...y
sleep 0.1; echo opt-p 2 ?...n sleep 0.1; echo opt-p 2 ?...n
@ -17,7 +18,8 @@ sleep 0.1; echo opt-p 3 ?...y
opt-p 1 opt-p 1
opt-p 3 opt-p 3
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -25,7 +27,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
sleep 0.1; echo opt--interactive 1 ?...y sleep 0.1; echo opt--interactive 1 ?...y
sleep 0.1; echo opt--interactive 2 ?...n sleep 0.1; echo opt--interactive 2 ?...n
@ -259,7 +261,8 @@ xargs Expect: 3 1 2
2 2
parallel Expect: 3 1 via psedotty 2 parallel Expect: 3 1 via psedotty 2
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -267,7 +270,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
3 3
1 1
@ -279,7 +282,8 @@ xargs Expect: 1 3 2
2 2
parallel Expect: 1 3 2 via pseudotty parallel Expect: 1 3 2 via pseudotty
Academic tradition requires you to cite works you base your article on. Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool, O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47. ;login: The USENIX Magazine, February 2011:42-47.
@ -287,7 +291,7 @@ When using programs that use GNU Parallel to process data for publication please
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 this citation notice run 'parallel --bibtex' once or use '--will-cite'. Silence the citation notice: run 'parallel --bibtex' once or use '--will-cite'.
1 1
3 3