mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-26 16:07:54 +00:00
testsuite: Fixup. Passes testsuite.
This commit is contained in:
parent
92e65305df
commit
e4c97e4bd1
|
@ -240,7 +240,7 @@ 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 hex 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. 250 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.
|
||||||
|
|
||||||
|
@ -250,6 +250,8 @@ New in this release:
|
||||||
|
|
||||||
* A semibig refactoring of big functions. All non-trivial functions are now less than 100 lines. The refactoring makes this release beta quality.
|
* 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'.
|
||||||
|
|
||||||
* 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
|
||||||
|
@ -258,12 +260,8 @@ New in this release:
|
||||||
|
|
||||||
* 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: 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: Bayesian Inference of Protein Structure from Chemical Shift Data https://peerj.com/preprints/692.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: Data Science at the Command Line http://cdn.oreillystatic.com/oreilly/booksamplers/9781491947852_sampler.pdf
|
||||||
|
|
||||||
* GNU Parallel was cited in: Speaker environment classification using rhythm metrics in Levantine Arabic dialect http://ieeexplore.ieee.org/xpl/abstractReferences.jsp?tp=&arnumber=6923918
|
|
||||||
|
|
||||||
* 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: 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: Bayesian Inference of Protein Structure from Chemical Shift Data https://peerj.com/preprints/692v1.pdf
|
||||||
|
@ -278,6 +276,24 @@ New in this release:
|
||||||
|
|
||||||
* 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: 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
|
* 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/
|
* Multithreaded Encryption and Compression http://www.krazyworks.com/multithreaded-encryption-and-compression/
|
||||||
|
@ -290,6 +306,8 @@ New in this release:
|
||||||
|
|
||||||
* From SRA Project to FastQ http://danielecook.com/sra-project-fastq/
|
* 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
|
* コマンドを並列に実行するGNU parallelがとても便利 http://bicycle1885.hatenablog.com/entry/2014/08/10/143612
|
||||||
|
|
||||||
* Bug fixes and man page updates.
|
* Bug fixes and man page updates.
|
||||||
|
|
|
@ -147,5 +147,5 @@ DISTCLEANFILES = parallel.1 sem.1 sql.1 niceload.1 parallel_tutorial.7 parallel_
|
||||||
parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_design.pdf
|
parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_design.pdf
|
||||||
|
|
||||||
EXTRA_DIST = parallel sem sql niceload \
|
EXTRA_DIST = parallel sem sql niceload \
|
||||||
sem.pod parallel.pod niceload.pod parallel_tutorial.pod \
|
sem.pod parallel.pod niceload.pod parallel_tutorial.pod parallel_design.pod \
|
||||||
$(DISTCLEANFILES)
|
$(DISTCLEANFILES)
|
||||||
|
|
|
@ -229,7 +229,7 @@ DISTCLEANFILES = parallel.1 sem.1 sql.1 niceload.1 parallel_tutorial.7 parallel_
|
||||||
parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_design.pdf
|
parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_design.pdf
|
||||||
|
|
||||||
EXTRA_DIST = parallel sem sql niceload \
|
EXTRA_DIST = parallel sem sql niceload \
|
||||||
sem.pod parallel.pod niceload.pod parallel_tutorial.pod \
|
sem.pod parallel.pod niceload.pod parallel_tutorial.pod parallel_design.pod \
|
||||||
$(DISTCLEANFILES)
|
$(DISTCLEANFILES)
|
||||||
|
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
|
@ -941,7 +941,7 @@ sub parse_options {
|
||||||
if(remote_hosts() and ($opt::X or $opt::m or $opt::xargs)) {
|
if(remote_hosts() and ($opt::X or $opt::m or $opt::xargs)) {
|
||||||
# As we do not know the max line length on the remote machine
|
# As we do not know the max line length on the remote machine
|
||||||
# long commands generated by xargs may fail
|
# long commands generated by xargs may fail
|
||||||
# If opt_N is set, it is probably safe
|
# If $opt::max_replace_args is set, it is probably safe
|
||||||
::warning("Using -X or -m with --sshlogin may fail.\n");
|
::warning("Using -X or -m with --sshlogin may fail.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5040,7 +5040,7 @@ sub cleanup_cmd {
|
||||||
$dir .= $_."/";
|
$dir .= $_."/";
|
||||||
unshift @rmdir, ::shell_quote_file($dir);
|
unshift @rmdir, ::shell_quote_file($dir);
|
||||||
}
|
}
|
||||||
my $rmdir = @rmdir ? "rmdir @rmdir >&/dev/null;" : "";
|
my $rmdir = @rmdir ? "rmdir @rmdir 2>/dev/null;" : "";
|
||||||
if(defined $opt::workdir and $opt::workdir eq "...") {
|
if(defined $opt::workdir and $opt::workdir eq "...") {
|
||||||
$rmdir .= "rm -rf " . ::shell_quote_file($workdir).';';
|
$rmdir .= "rm -rf " . ::shell_quote_file($workdir).';';
|
||||||
}
|
}
|
||||||
|
@ -6030,6 +6030,7 @@ sub sshlogin_wrap {
|
||||||
my ($pre,$post,$cleanup)=("","","");
|
my ($pre,$post,$cleanup)=("","","");
|
||||||
if($serverlogin eq ":") {
|
if($serverlogin eq ":") {
|
||||||
# No transfer/environment neeeded
|
# No transfer/environment neeeded
|
||||||
|
# TODO Copy env between shells (zsh to bash)
|
||||||
$self->{'sshlogin_wrap'} = $command;
|
$self->{'sshlogin_wrap'} = $command;
|
||||||
} else {
|
} else {
|
||||||
# --transfer
|
# --transfer
|
||||||
|
|
|
@ -94,7 +94,8 @@ B<--env> and use B<env_parallel> instead of B<parallel>.
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
# exportf my_func
|
# exportf my_func
|
||||||
# PARALLEL_SHELL=/bin/bash parallel "my_func {}" ::: 1 2
|
# parallel --env my_func "my_func {}" ::: 1 2
|
||||||
|
# TODO accept --env without -S
|
||||||
=pod
|
=pod
|
||||||
|
|
||||||
The command cannot contain the character \257 (macron: ¯).
|
The command cannot contain the character \257 (macron: ¯).
|
||||||
|
|
|
@ -9,6 +9,47 @@ GNU B<parallel> and the reasoning behind them. It will give an
|
||||||
overview of why some of the code looks like it does, and help new
|
overview of why some of the code looks like it does, and help new
|
||||||
maintainers understand the code better.
|
maintainers understand the code better.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 One file program
|
||||||
|
|
||||||
|
GNU B<parallel> is a Perl script in a single file. It is object
|
||||||
|
oriented, but contrary to normal Perl scripts each class is not in its
|
||||||
|
own file. This is due to user experience: The goal is that in a pinch
|
||||||
|
the user will be able to get GNU B<parallel> working simply by copying
|
||||||
|
a single file: No need messing around with environment variables like
|
||||||
|
PERL5LIB.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Old Perl style
|
||||||
|
|
||||||
|
GNU B<parallel> uses some old, deprecated constructs. This is due to a
|
||||||
|
goal of being able to run on old installations. Currently the target
|
||||||
|
is CentOS 3.9 and Perl 5.8.0.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Exponentially back off
|
||||||
|
|
||||||
|
GNU B<parallel> busy waits. This is because the reason why a job is
|
||||||
|
not started may be due to load average, and thus it will not make
|
||||||
|
sense to wait for a job to finish. Instead the load average must be
|
||||||
|
checked again. Load average is not the only reason.
|
||||||
|
|
||||||
|
To not burn up too up too much CPU GNU B<parallel> sleeps
|
||||||
|
exponentially longer and longer if nothing happens, maxing out at 1
|
||||||
|
second.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Shell compatibility
|
||||||
|
|
||||||
|
It is a goal to have GNU B<parallel> work equally well in any
|
||||||
|
shell. However, in practice GNU B<parallel> is being developed in
|
||||||
|
B<bash> and thus testing in other shells is limited to reported bugs.
|
||||||
|
|
||||||
|
When an incompatibility is found there is often not an easy fix:
|
||||||
|
Fixing the problem in B<csh> often breaks it in B<bash>. In these
|
||||||
|
cases the fix is often to use a small Perl script and call that.
|
||||||
|
|
||||||
|
|
||||||
=head2 Job slots
|
=head2 Job slots
|
||||||
|
|
||||||
The easiest way to explain what GNU B<parallel> does is to assume that
|
The easiest way to explain what GNU B<parallel> does is to assume that
|
||||||
|
@ -29,6 +70,7 @@ cannot assume that a given job slot will remain on the same remote
|
||||||
server. This goes double since number of job slots can be adjusted on
|
server. This goes double since number of job slots can be adjusted on
|
||||||
the fly (by giving B<--jobs> a file name).
|
the fly (by giving B<--jobs> a file name).
|
||||||
|
|
||||||
|
|
||||||
=head2 Rsync protocol version
|
=head2 Rsync protocol version
|
||||||
|
|
||||||
B<rsync> 3.1.x uses protocol 31 which is unsupported by version
|
B<rsync> 3.1.x uses protocol 31 which is unsupported by version
|
||||||
|
@ -365,6 +407,19 @@ commands (that cannot be parallelized) on each server, but run the
|
||||||
same sequence on multiple servers.
|
same sequence on multiple servers.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Buffering on disk
|
||||||
|
|
||||||
|
GNU B<parallel> buffers on disk in $TMPDIR using files, that are
|
||||||
|
removed as soon as they are created, but which are kept open. So even
|
||||||
|
if GNU B<parallel> is killed by a power outage, there will be no files
|
||||||
|
to clean up afterwards. Another advantage is that the file system is
|
||||||
|
aware that these files will be lost in case of a crash, so it does
|
||||||
|
not need to sync them to disk.
|
||||||
|
|
||||||
|
It gives the odd situation that a disk can be fully used, but there
|
||||||
|
are no visible files on it.
|
||||||
|
|
||||||
|
|
||||||
=head2 Disk full
|
=head2 Disk full
|
||||||
|
|
||||||
GNU B<parallel> buffers on disk. If the disk is full data may be
|
GNU B<parallel> buffers on disk. If the disk is full data may be
|
||||||
|
@ -375,6 +430,7 @@ full. The size 8193 was chosen because 8192 gave wrong result on some
|
||||||
file systems, whereas 8193 did the correct thing on all tested
|
file systems, whereas 8193 did the correct thing on all tested
|
||||||
filesystems.
|
filesystems.
|
||||||
|
|
||||||
|
|
||||||
=head2 Perl replacement strings, {= =}, and --rpl
|
=head2 Perl replacement strings, {= =}, and --rpl
|
||||||
|
|
||||||
The shorthands for replacement strings makes a command look more
|
The shorthands for replacement strings makes a command look more
|
||||||
|
@ -400,8 +456,8 @@ still use ,, and ,, if they like: B<--parens ,,,,>
|
||||||
|
|
||||||
Internally, however, the {= and =} are replaced by \257< and
|
Internally, however, the {= and =} are replaced by \257< and
|
||||||
\257>. This is to make it simple to make regular expressions: \257 is
|
\257>. This is to make it simple to make regular expressions: \257 is
|
||||||
disallowed on the command line, so when that is matched, it is known
|
disallowed on the command line, so when that is matched in a regular
|
||||||
that this is a replacement string.
|
expression, it is known that this is a replacement string.
|
||||||
|
|
||||||
|
|
||||||
=head2 Test suite
|
=head2 Test suite
|
||||||
|
@ -424,9 +480,45 @@ these tests break when run on a different hardware than what the test
|
||||||
was written for.
|
was written for.
|
||||||
|
|
||||||
When most bugs are fixed a test is added, so this bug will not
|
When most bugs are fixed a test is added, so this bug will not
|
||||||
reappear. That is, however, sometimes hard to create the environment
|
reappear. It is, however, sometimes hard to create the environment in
|
||||||
in which the bug shows up. One of the harder problems is to make a
|
which the bug shows up - especially if the bug only shows up
|
||||||
machine start swapping without forcing it to its knees.
|
sometimes. One of the harder problems was to make a machine start
|
||||||
|
swapping without forcing it to its knees.
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Median runtime
|
||||||
|
|
||||||
|
Using a percentage for B<--timeout> causes GNU B<parallel> to compute
|
||||||
|
the median run time of a job. The median is a better indicator of the
|
||||||
|
expected run time than average, because there will often be outliers
|
||||||
|
taking way longer than the normal run time.
|
||||||
|
|
||||||
|
To avoid keeping all run times in memory, an implementation of
|
||||||
|
remedian was made (Rousseeuw et al).
|
||||||
|
|
||||||
|
|
||||||
|
=head2 Error messages and warnings
|
||||||
|
|
||||||
|
Error messages like: ERROR, Not found, and 42 are not very
|
||||||
|
helpful. GNU B<parallel> strives to inform the user:
|
||||||
|
|
||||||
|
=over 2
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
What went wrong?
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
Why did it go wrong?
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
|
What can be done about it?
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
Unfortunately it is not always possible to predict the root cause of the error.
|
||||||
|
|
||||||
|
|
||||||
=head1 Ideas for new design
|
=head1 Ideas for new design
|
||||||
|
|
|
@ -123,6 +123,6 @@ stdout ssh $SSHLOGIN1 ls 'tmp/parallel.file*' || echo OK
|
||||||
stdout ssh $SSHLOGIN2 ls 'tmp/parallel.file*' || echo OK
|
stdout ssh $SSHLOGIN2 ls 'tmp/parallel.file*' || echo OK
|
||||||
echo 'Input for ssh'
|
echo 'Input for ssh'
|
||||||
cat /tmp/myssh1-run /tmp/myssh2-run | perl -pe 's/(PID.)\d+/${1}00000/g;s/(SEQ[ =]|line)\d/$1X/g;' |
|
cat /tmp/myssh1-run /tmp/myssh2-run | perl -pe 's/(PID.)\d+/${1}00000/g;s/(SEQ[ =]|line)\d/$1X/g;' |
|
||||||
perl -pe 's/\S*parallel-server\S*/one-server/;s/[a-f0-9]{500,}/hex/;'
|
perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-zA-Z0-9/+=]{500,}:base64:;'
|
||||||
rm /tmp/myssh1-run /tmp/myssh2-run
|
rm /tmp/myssh1-run /tmp/myssh2-run
|
||||||
|
|
||||||
|
|
|
@ -58,22 +58,28 @@ pod2man --release='00000000' --center='parallel' \
|
||||||
/bin/bash: pod2man: command not found
|
/bin/bash: pod2man: command not found
|
||||||
Warning: pod2man not found. Using old niceload.1
|
Warning: pod2man not found. Using old niceload.1
|
||||||
pod2man --release='00000000' --center='parallel' \
|
pod2man --release='00000000' --center='parallel' \
|
||||||
--section=1 ./parallel_tutorial.pod > ./parallel_tutorial.1n \
|
--section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
|
||||||
&& mv ./parallel_tutorial.1n ./parallel_tutorial.1 \
|
&& mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
|
||||||
|| echo "Warning: pod2man not found. Using old parallel_tutorial.1"
|
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
|
||||||
/bin/bash: pod2man: command not found
|
/bin/bash: pod2man: command not found
|
||||||
Warning: pod2man not found. Using old parallel_tutorial.1
|
Warning: pod2man not found. Using old parallel_tutorial.7
|
||||||
|
pod2man --release='00000000' --center='parallel' \
|
||||||
|
--section=7 ./parallel_design.pod > ./parallel_design.7n \
|
||||||
|
&& mv ./parallel_design.7n ./parallel_design.7 \
|
||||||
|
|| echo "Warning: pod2man not found. Using old parallel_design.7"
|
||||||
|
/bin/bash: pod2man: command not found
|
||||||
|
Warning: pod2man not found. Using old parallel_design.7
|
||||||
pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
|
pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
|
||||||
&& mv ./parallel.htmln ./parallel.html \
|
&& mv ./parallel.htmln ./parallel.html \
|
||||||
|| echo "Warning: pod2html not found. Using old parallel.html"
|
|| echo "Warning: pod2html not found. Using old parallel.html"
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old parallel.html
|
Warning: pod2html not found. Using old parallel.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
|
pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
|
||||||
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|
&& mv ./parallel_design.htmln ./parallel_design.html \
|
||||||
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
|
|| echo "Warning: pod2html not found. Using old parallel_design.html"
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old parallel_tutorial.html
|
Warning: pod2html not found. Using old parallel_design.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
|
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
|
||||||
&& mv ./sem.htmln ./sem.html \
|
&& mv ./sem.htmln ./sem.html \
|
||||||
|
@ -93,6 +99,12 @@ pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old niceload.html
|
Warning: pod2html not found. Using old niceload.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
|
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
|
||||||
|
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|
||||||
|
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
|
||||||
|
/bin/bash: pod2html: command not found
|
||||||
|
Warning: pod2html not found. Using old parallel_tutorial.html
|
||||||
|
rm -f ./pod2htm*
|
||||||
pod2texi --output=./parallel.texi ./parallel.pod \
|
pod2texi --output=./parallel.texi ./parallel.pod \
|
||||||
|| echo "Warning: pod2texi not found. Using old parallel.texi"
|
|| echo "Warning: pod2texi not found. Using old parallel.texi"
|
||||||
/bin/bash: pod2texi: command not found
|
/bin/bash: pod2texi: command not found
|
||||||
|
@ -113,6 +125,10 @@ pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
|
||||||
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
|
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
|
||||||
/bin/bash: pod2texi: command not found
|
/bin/bash: pod2texi: command not found
|
||||||
Warning: pod2texi not found. Using old parallel_tutorial.texi
|
Warning: pod2texi not found. Using old parallel_tutorial.texi
|
||||||
|
pod2texi --output=./parallel_design.texi ./parallel_design.pod \
|
||||||
|
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
|
||||||
|
/bin/bash: pod2texi: command not found
|
||||||
|
Warning: pod2texi not found. Using old parallel_design.texi
|
||||||
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|
||||||
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
|
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
|
||||||
/bin/bash: pod2pdf: command not found
|
/bin/bash: pod2pdf: command not found
|
||||||
|
@ -133,6 +149,10 @@ pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "G
|
||||||
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
|
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
|
||||||
/bin/bash: pod2pdf: command not found
|
/bin/bash: pod2pdf: command not found
|
||||||
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
|
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
|
||||||
|
pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
|
||||||
|
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
|
||||||
|
/bin/bash: pod2pdf: command not found
|
||||||
|
Warning: pod2pdf not found. Using old parallel_design.pdf
|
||||||
make[0]: Entering directory `/tmp/parallel-00000000/src'
|
make[0]: Entering directory `/tmp/parallel-00000000/src'
|
||||||
/bin/mkdir -p '/usr/local/bin'
|
/bin/mkdir -p '/usr/local/bin'
|
||||||
/usr/bin/install -c parallel sql niceload '/usr/local/bin'
|
/usr/bin/install -c parallel sql niceload '/usr/local/bin'
|
||||||
|
@ -147,11 +167,11 @@ pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old parallel.html
|
Warning: pod2html not found. Using old parallel.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
|
pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
|
||||||
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|
&& mv ./parallel_design.htmln ./parallel_design.html \
|
||||||
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
|
|| echo "Warning: pod2html not found. Using old parallel_design.html"
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old parallel_tutorial.html
|
Warning: pod2html not found. Using old parallel_design.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
|
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
|
||||||
&& mv ./sem.htmln ./sem.html \
|
&& mv ./sem.htmln ./sem.html \
|
||||||
|
@ -171,6 +191,12 @@ pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
|
||||||
/bin/bash: pod2html: command not found
|
/bin/bash: pod2html: command not found
|
||||||
Warning: pod2html not found. Using old niceload.html
|
Warning: pod2html not found. Using old niceload.html
|
||||||
rm -f ./pod2htm*
|
rm -f ./pod2htm*
|
||||||
|
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
|
||||||
|
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|
||||||
|
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
|
||||||
|
/bin/bash: pod2html: command not found
|
||||||
|
Warning: pod2html not found. Using old parallel_tutorial.html
|
||||||
|
rm -f ./pod2htm*
|
||||||
pod2texi --output=./parallel.texi ./parallel.pod \
|
pod2texi --output=./parallel.texi ./parallel.pod \
|
||||||
|| echo "Warning: pod2texi not found. Using old parallel.texi"
|
|| echo "Warning: pod2texi not found. Using old parallel.texi"
|
||||||
/bin/bash: pod2texi: command not found
|
/bin/bash: pod2texi: command not found
|
||||||
|
@ -191,6 +217,10 @@ pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
|
||||||
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
|
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
|
||||||
/bin/bash: pod2texi: command not found
|
/bin/bash: pod2texi: command not found
|
||||||
Warning: pod2texi not found. Using old parallel_tutorial.texi
|
Warning: pod2texi not found. Using old parallel_tutorial.texi
|
||||||
|
pod2texi --output=./parallel_design.texi ./parallel_design.pod \
|
||||||
|
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
|
||||||
|
/bin/bash: pod2texi: command not found
|
||||||
|
Warning: pod2texi not found. Using old parallel_design.texi
|
||||||
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|
||||||
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
|
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
|
||||||
/bin/bash: pod2pdf: command not found
|
/bin/bash: pod2pdf: command not found
|
||||||
|
@ -211,8 +241,12 @@ pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "G
|
||||||
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
|
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
|
||||||
/bin/bash: pod2pdf: command not found
|
/bin/bash: pod2pdf: command not found
|
||||||
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
|
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
|
||||||
|
pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
|
||||||
|
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
|
||||||
|
/bin/bash: pod2pdf: command not found
|
||||||
|
Warning: pod2pdf not found. Using old parallel_design.pdf
|
||||||
/bin/mkdir -p '/usr/local/share/doc/parallel'
|
/bin/mkdir -p '/usr/local/share/doc/parallel'
|
||||||
/usr/bin/install -c -m 644 parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf '/usr/local/share/doc/parallel'
|
/usr/bin/install -c -m 644 parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_design.html parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_design.texi parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_design.pdf '/usr/local/share/doc/parallel'
|
||||||
pod2man --release='00000000' --center='parallel' \
|
pod2man --release='00000000' --center='parallel' \
|
||||||
--section=1 ./parallel.pod > ./parallel.1n \
|
--section=1 ./parallel.pod > ./parallel.1n \
|
||||||
&& mv ./parallel.1n ./parallel.1 \
|
&& mv ./parallel.1n ./parallel.1 \
|
||||||
|
@ -238,13 +272,21 @@ pod2man --release='00000000' --center='parallel' \
|
||||||
/bin/bash: pod2man: command not found
|
/bin/bash: pod2man: command not found
|
||||||
Warning: pod2man not found. Using old niceload.1
|
Warning: pod2man not found. Using old niceload.1
|
||||||
pod2man --release='00000000' --center='parallel' \
|
pod2man --release='00000000' --center='parallel' \
|
||||||
--section=1 ./parallel_tutorial.pod > ./parallel_tutorial.1n \
|
--section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
|
||||||
&& mv ./parallel_tutorial.1n ./parallel_tutorial.1 \
|
&& mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
|
||||||
|| echo "Warning: pod2man not found. Using old parallel_tutorial.1"
|
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
|
||||||
/bin/bash: pod2man: command not found
|
/bin/bash: pod2man: command not found
|
||||||
Warning: pod2man not found. Using old parallel_tutorial.1
|
Warning: pod2man not found. Using old parallel_tutorial.7
|
||||||
|
pod2man --release='00000000' --center='parallel' \
|
||||||
|
--section=7 ./parallel_design.pod > ./parallel_design.7n \
|
||||||
|
&& mv ./parallel_design.7n ./parallel_design.7 \
|
||||||
|
|| echo "Warning: pod2man not found. Using old parallel_design.7"
|
||||||
|
/bin/bash: pod2man: command not found
|
||||||
|
Warning: pod2man not found. Using old parallel_design.7
|
||||||
/bin/mkdir -p '/usr/local/share/man/man1'
|
/bin/mkdir -p '/usr/local/share/man/man1'
|
||||||
/usr/bin/install -c -m 644 parallel.1 sem.1 sql.1 niceload.1 parallel_tutorial.1 '/usr/local/share/man/man1'
|
/usr/bin/install -c -m 644 parallel.1 sem.1 sql.1 niceload.1 '/usr/local/share/man/man1'
|
||||||
|
/bin/mkdir -p '/usr/local/share/man/man7'
|
||||||
|
/usr/bin/install -c -m 644 parallel_tutorial.7 parallel_design.7 '/usr/local/share/man/man7'
|
||||||
make[0]: Leaving directory `/tmp/parallel-00000000/src'
|
make[0]: Leaving directory `/tmp/parallel-00000000/src'
|
||||||
make[0]: Leaving directory `/tmp/parallel-00000000/src'
|
make[0]: Leaving directory `/tmp/parallel-00000000/src'
|
||||||
make[0]: Entering directory `/tmp/parallel-00000000'
|
make[0]: Entering directory `/tmp/parallel-00000000'
|
||||||
|
|
|
@ -93,6 +93,6 @@ echo '### trailing space in sshlogin'
|
||||||
sshlogin trailing space
|
sshlogin trailing space
|
||||||
echo '### Special char file and dir transfer return and cleanup'
|
echo '### Special char file and dir transfer return and cleanup'
|
||||||
### Special char file and dir transfer return and cleanup
|
### Special char file and dir transfer return and cleanup
|
||||||
cd /tmp; mkdir -p d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; echo local > d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; ssh parallel@lo rm -rf d'*'/; mytouch() { cat d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`" > d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; echo remote OK >> d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; }; export -f mytouch; parallel --env mytouch -Sparallel@lo --transfer --return d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`" mytouch ::: d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; cat d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; # Should be changed to --return '{=s:/f:/g:=}'
|
cd /tmp; mkdir -p d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; echo local > d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; ssh parallel@lo rm -rf d'*'/; mytouch() { cat d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`" > d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; echo remote OK >> d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; }; export -f mytouch; parallel --env mytouch -Sparallel@lo --transfer --return d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`" mytouch ::: d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/f"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; cat d"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"/g"`perl -e 'print pack("c*",1..9,11..46,48..255)'`"; # Should be changed to --return '{=s:/f:/g:=}' and tested with csh
|
||||||
local
|
local
|
||||||
remote OK
|
remote OK
|
||||||
|
|
|
@ -77,7 +77,7 @@ OK
|
||||||
Input for ssh
|
Input for ssh
|
||||||
one-server mkdir -p ./.
|
one-server mkdir -p ./.
|
||||||
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
||||||
one-server exec perl -e @GNU_Parallel=\(\"use\",\"IPC::Open3\;\"\)\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}=\"IGNORE\"\;my\$zip=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;my\(\$in,\$out,\$eval\)\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid=fork\)\{close\$in\;\$eval=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(pack\(\"H\*\",join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; hex
|
one-server exec perl -e @GNU_Parallel=\(\"use\",\"IPC::Open3\;\",\"use\",\"MIME::Base64\"\)\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}=\"IGNORE\"\;my\$zip=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;my\(\$in,\$out,\$eval\)\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid=fork\)\{close\$in\;\$eval=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; base64
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
'newlineX.out
|
'newlineX.out
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
|
@ -90,7 +90,7 @@ one-server (rm -f ./tmp/parallel.file.'
|
||||||
'newlineX.out2; rmdir ./tmp/ ./ 2>/dev/null;)
|
'newlineX.out2; rmdir ./tmp/ ./ 2>/dev/null;)
|
||||||
one-server mkdir -p ./.
|
one-server mkdir -p ./.
|
||||||
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
-l parallel one-server rsync --server -lDrRze.iLsfx . ./.
|
||||||
one-server exec perl -e @GNU_Parallel=\(\"use\",\"IPC::Open3\;\"\)\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}=\"IGNORE\"\;my\$zip=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;my\(\$in,\$out,\$eval\)\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid=fork\)\{close\$in\;\$eval=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(pack\(\"H\*\",join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; hex
|
one-server exec perl -e @GNU_Parallel=\(\"use\",\"IPC::Open3\;\",\"use\",\"MIME::Base64\"\)\;eval\"@GNU_Parallel\"\;\$SIG\{CHLD\}=\"IGNORE\"\;my\$zip=\(grep\{-x\$_\}\"/usr/local/bin/bzip2\"\)\[0\]\|\|\"bzip2\"\;my\(\$in,\$out,\$eval\)\;open3\(\$in,\$out,\"\>\&STDERR\",\$zip,\"-dc\"\)\;if\(my\$perlpid=fork\)\{close\$in\;\$eval=join\"\",\<\$out\>\;close\$out\;\}else\{close\$out\;print\$in\(decode_base64\(join\"\",@ARGV\)\)\;close\$in\;exit\;\}wait\;eval\$eval\; base64
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
'newlineX.out
|
'newlineX.out
|
||||||
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . ./parallel.file.'
|
||||||
|
|
Loading…
Reference in a new issue