parallel: --return /./ fixed.

This commit is contained in:
Ole Tange 2014-07-21 17:07:48 +02:00
parent 627d2808d0
commit 546f5aea03
17 changed files with 292 additions and 265 deletions

View file

@ -2353,8 +2353,10 @@ sub save_original_signal_handler {
# Remember the original signal handler # Remember the original signal handler
# Returns: N/A # Returns: N/A
$SIG{TERM} ||= sub { exit 0; }; # $SIG{TERM} is not set on Mac OS X $SIG{TERM} ||= sub { exit 0; }; # $SIG{TERM} is not set on Mac OS X
$SIG{INT} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; } exit -1 }; $SIG{INT} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; }
$SIG{TERM} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; } exit -1 }; unlink keys %Global::unlink; exit -1 };
$SIG{TERM} = sub { if($opt::tmux) { qx { tmux kill-session -t p$$ }; }
unlink keys %Global::unlink; exit -1 };
%Global::original_sig = %SIG; %Global::original_sig = %SIG;
$SIG{TERM} = sub {}; # Dummy until jobs really start $SIG{TERM} = sub {}; # Dummy until jobs really start
} }
@ -3070,6 +3072,9 @@ sub swap_activity {
return $self->{'swap_activity'}; return $self->{'swap_activity'};
} }
{
my $script;
sub swapactivityscript { sub swapactivityscript {
# Returns: # Returns:
# shellscript for detecting swap activity # shellscript for detecting swap activity
@ -3077,6 +3082,7 @@ sub swapactivityscript {
# arguments for vmstat are OS dependant # arguments for vmstat are OS dependant
# swap_in and swap_out are in different columns depending on OS # swap_in and swap_out are in different columns depending on OS
# #
if(not $script) {
my %vmstat = ( my %vmstat = (
# linux: $7*$8 # linux: $7*$8
# $ vmstat 1 2 # $ vmstat 1 2
@ -3191,7 +3197,10 @@ sub swapactivityscript {
$vmstat{$os}[1] . '}"` }'; $vmstat{$os}[1] . '}"` }';
} }
$perlscript = "perl -e " . ::shell_quote_scalar($perlscript); $perlscript = "perl -e " . ::shell_quote_scalar($perlscript);
return $Global::envvar. " " .$perlscript; $script = $Global::envvar. " " .$perlscript;
}
return $script;
}
} }
sub too_fast_remote_login { sub too_fast_remote_login {
@ -4804,14 +4813,16 @@ sub kill {
@pidtable = `$pid_parentpid_cmd{$^O}`; @pidtable = `$pid_parentpid_cmd{$^O}`;
for (@pidtable) { for (@pidtable) {
/(\S+)\s+(\S+)/ or ::die_bug("pidtable format"); /(\S+)\s+(\S+)/ or ::die_bug("pidtable format");
push(@{$children_of{$2}},$1); push @{$children_of{$2}}, $1;
} }
my @more = ($pid); my @more = ($pid);
# While more (grand)*children
while(@more) { while(@more) {
my @m; my @m;
push @pids, @more; push @pids, @more;
for my $parent (@more) { for my $parent (@more) {
if($children_of{$parent}) { if($children_of{$parent}) {
# add the children of this parent
push @m, @{$children_of{$parent}}; push @m, @{$children_of{$parent}};
} }
} }
@ -5057,7 +5068,6 @@ sub sshreturn {
my $rsync_opt = "-rlDzR -e".::shell_quote_scalar($sshcmd); my $rsync_opt = "-rlDzR -e".::shell_quote_scalar($sshcmd);
my $pre = ""; my $pre = "";
for my $file ($self->return()) { for my $file ($self->return()) {
$file =~ s:/\./:/:g; # Rsync treats /./ special. We dont want that
$file =~ s:^\./::g; # Remove ./ if any $file =~ s:^\./::g; # Remove ./ if any
my $relpath = ($file !~ m:^/:); # Is the path relative? my $relpath = ($file !~ m:^/:); # Is the path relative?
my $cd = ""; my $cd = "";
@ -5070,15 +5080,20 @@ sub sshreturn {
} }
# Only load File::Basename if actually needed # Only load File::Basename if actually needed
$Global::use{"File::Basename"} ||= eval "use File::Basename; 1;"; $Global::use{"File::Basename"} ||= eval "use File::Basename; 1;";
$cd = ::shell_quote_file(::dirname($file)); # dir/./file means relative to dir, so remove dir on remote
$file =~ m:(.*)/\./:;
my $basedir = $1 ? ::shell_quote_file($1."/") : "";
my $nobasedir = $file;
$nobasedir =~ s:.*/\./::;
$cd = ::shell_quote_file(::dirname($nobasedir));
my $rsync_cd = '--rsync-path='.::shell_quote_scalar("cd $wd$cd; rsync"); my $rsync_cd = '--rsync-path='.::shell_quote_scalar("cd $wd$cd; rsync");
my $basename = ::shell_quote_scalar(::shell_quote_file(basename($file))); my $basename = ::shell_quote_scalar(::shell_quote_file(basename($file)));
# --return # --return
# mkdir -p /home/tange/dir/subdir/; # mkdir -p /home/tange/dir/subdir/;
# rsync -rlDzR --rsync-path="cd /home/tange/dir/subdir/; rsync" # rsync -rlDzR --rsync-path="cd /home/tange/dir/subdir/; rsync"
# server:file.gz /home/tange/dir/subdir/ # server:file.gz /home/tange/dir/subdir/
$pre .= "mkdir -p $cd; rsync $rsync_cd $rsync_opt $serverlogin:". $pre .= "mkdir -p $basedir$cd; rsync $rsync_cd $rsync_opt $serverlogin:".
$basename . " ".$cd.";"; $basename . " ".$basedir.$cd.";";
} }
return $pre; return $pre;
} }

View file

@ -768,9 +768,9 @@ status will be the exit status from the failing job.
@item 1-99% @item 1-99%
@anchor{1-99%} @anchor{1-99%}
If @emph{val}% of the jobs fail: Do not start new jobs, but complete the If @emph{val}% of the jobs fail and minimum 3: Do not start new jobs, but
running jobs including cleanup. The exit status will be the exit complete the running jobs including cleanup. The exit status will be
status from the last failing job. the exit status from the last failing job.
@end table @end table
@ -975,11 +975,11 @@ processes on the computer is less than @emph{max-load}. @emph{max-load} uses
the same syntax as @strong{--jobs}, so @emph{100%} for one per CPU is a valid the same syntax as @strong{--jobs}, so @emph{100%} for one per CPU is a valid
setting. Only difference is 0 which is interpreted as 0.01. setting. Only difference is 0 which is interpreted as 0.01.
@item @strong{--controlmaster} (experimental) @item @strong{--controlmaster}
@anchor{@strong{--controlmaster} (experimental)} @anchor{@strong{--controlmaster}}
@item @strong{-M} (experimental) @item @strong{-M}
@anchor{@strong{-M} (experimental)} @anchor{@strong{-M}}
Use ssh's ControlMaster to make ssh connections faster. Useful if jobs Use ssh's ControlMaster to make ssh connections faster. Useful if jobs
run remote and are very fast to run. This is disabled for sshlogins run remote and are very fast to run. This is disabled for sshlogins

View file

@ -124,7 +124,7 @@
.\" ======================================================================== .\" ========================================================================
.\" .\"
.IX Title "PARALLEL_TUTORIAL 1" .IX Title "PARALLEL_TUTORIAL 1"
.TH PARALLEL_TUTORIAL 1 "2014-07-18" "20140711" "parallel" .TH PARALLEL_TUTORIAL 1 "2014-07-20" "20140711" "parallel"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents. .\" way too many mistakes in technical documents.
.if n .ad l .if n .ad l
@ -1631,6 +1631,29 @@ Output:
\& echo 1; exit 1 \& echo 1; exit 1
.Ve .Ve
.PP .PP
If \-\-halt is given a percentage this percentage of the jobs must fail
(though minimum 3) before \s-1GNU\s0 Parallel stops spawning more jobs:
.PP
.Vb 1
\& parallel \-j2 \-\-halt 20% echo {}\e; exit {} ::: 0 0 1 2 3 4 5 6 7
.Ve
.PP
Output:
.PP
.Vb 11
\& 0
\& 0
\& 1
\& 2
\& 3
\& 4
\& parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
\& echo 4; exit 4
\& 5
\& parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
\& echo 5; exit 5
.Ve
.PP
\&\s-1GNU\s0 Parallel can retry the command with \-\-retries. This is useful if a \&\s-1GNU\s0 Parallel can retry the command with \-\-retries. This is useful if a
command fails for unkown reasons now and then. command fails for unkown reasons now and then.
.PP .PP

View file

@ -1116,6 +1116,23 @@ with --halt 1:</p>
1 1
parallel: This job failed: parallel: This job failed:
echo 1; exit 1</pre> echo 1; exit 1</pre>
<p>If --halt is given a percentage this percentage of the jobs must fail
(though minimum 3) before GNU Parallel stops spawning more jobs:</p>
<pre>
parallel -j2 --halt 20% echo {}\; exit {} ::: 0 0 1 2 3 4 5 6 7</pre>
<p>Output:</p>
<pre>
0
0
1
2
3
4
parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
echo 4; exit 4
5
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
echo 5; exit 5</pre>
<p>GNU Parallel can retry the command with --retries. This is useful if a <p>GNU Parallel can retry the command with --retries. This is useful if a
command fails for unkown reasons now and then.</p> command fails for unkown reasons now and then.</p>
<pre> <pre>

Binary file not shown.

View file

@ -14,7 +14,6 @@ perl -e '$|=1;while($t++<3){sleep(1);print "."}' &
stdout /usr/bin/time -f %e niceload -l 8 -p $! | perl -ne '$_ >= 5 and print "OK\n"' stdout /usr/bin/time -f %e niceload -l 8 -p $! | perl -ne '$_ >= 5 and print "OK\n"'
echo "### Test --sensor -l negative" echo "### Test --sensor -l negative"
# The test does not currently work on my laptop timeout 10 nice nice dd iflag=fullblock if=/dev/zero of=/dev/null bs=11G &
#timeout 10 nice nice dd iflag=fullblock if=/dev/zero of=/dev/null bs=11G & niceload -t 1 --sensor 'free | field 3 | head -3|tail -1' -l -10000000 "free -g|egrep -q /.*1[0-9]. && echo more than 6 GB used"
#niceload -t 1 --sensor 'free | field 3 | head -3|tail -1' -l -10000000 "free -g|egrep -q /.*1[0-9]. && echo more than 6 GB used"

View file

@ -5,13 +5,13 @@ echo '### Test installation missing pod2*'
parallel which ::: pod2html pod2man pod2texi pod2pdf | sudo parallel mv {} {}.hidden parallel which ::: pod2html pod2man pod2texi pod2pdf | sudo parallel mv {} {}.hidden
cd ~/privat/parallel cd ~/privat/parallel
stdout make dist | perl -pe 's/\d{8}/00000000/g' stdout make dist | perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
LAST=$(ls *tar.gz | tail -n1) LAST=$(ls *tar.gz | tail -n1)
cd /tmp cd /tmp
rm -rf parallel-20??????/ rm -rf parallel-20??????/
tar xf ~/privat/parallel/$LAST tar xf ~/privat/parallel/$LAST
cd parallel-20??????/ cd parallel-20??????/
touch src/*pod src/sql touch src/*pod src/sql
./configure && sudo stdout make install | perl -pe 's/\d{8}/00000000/g' ./configure && sudo stdout make install | perl -pe 's/make\[\d\]/make[0]/g;s/\d{8}/00000000/g'
parallel which {}.hidden ::: pod2html pod2man pod2texi pod2pdf | sudo parallel mv {} {.} parallel which {}.hidden ::: pod2html pod2man pod2texi pod2pdf | sudo parallel mv {} {.}

View file

@ -75,50 +75,42 @@ echo "### Test --wd \"'\""
cat ~/"'"/uNiQuE_sTrInG.9; cat ~/"'"/uNiQuE_sTrInG.9;
stdout rm ~/"'"/uNiQuE_sTrInG.9 stdout rm ~/"'"/uNiQuE_sTrInG.9
echo '### Test --trc --/--foo1' echo '### Test --trc ./--/--foo1'
mkdir -p ./--; echo 'Content --/--foo1' > ./--/--foo1; mkdir -p ./--; echo 'Content --/--foo1' > ./--/--foo1;
stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./--/--foo1; cat ./--/--foo1.1; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./--/--foo1; cat ./--/--foo1.1;
stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: --/--foo1; cat ./--/--foo1.2 stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: --/--foo1; cat ./--/--foo1.2
echo '### Test --trc :dir/:foo2' echo '### Test --trc ./:dir/:foo2'
mkdir -p ./:dir; echo 'Content :dir/:foo2' > ./:dir/:foo2; mkdir -p ./:dir; echo 'Content :dir/:foo2' > ./:dir/:foo2;
stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./:dir/:foo2; cat ./:dir/:foo2.1; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./:dir/:foo2; cat ./:dir/:foo2.1;
stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: :dir/:foo2; cat ./:dir/:foo2.2 stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: :dir/:foo2; cat ./:dir/:foo2.2
echo '### Test --trc " "/" "foo3' echo '### Test --trc ./" "/" "foo3'
mkdir -p ./" "; echo 'Content _/_foo3' > ./" "/" "foo3; mkdir -p ./" "; echo 'Content _/_foo3' > ./" "/" "foo3;
stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1;
stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: " "/" "foo3; cat ./" "/" "foo3.2 stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: " "/" "foo3; cat ./" "/" "foo3.2
#echo '### Test --trc --/./--foo4' echo '### Test --trc ./--/./--foo4'
# mkdir -p ./--; echo 'Content --/./--foo4' > ./--/./--foo4; mkdir -p ./--; echo 'Content --/./--foo4' > ./--/./--foo4;
# stdout parallel --trc {}.1 -S lo '(cat ./--foo4; echo remote{}) > --foo4.1' ::: --/./--foo4; cat ./--/./--foo4.1 stdout parallel --trc {}.1 -S lo '(cat ./--foo4; echo remote{}) > --foo4.1' ::: --/./--foo4; cat ./--/./--foo4.1
#
#echo '### Test --trc :/:foo2'
# mkdir -p ./:; echo 'Content :/:foo2' > ./:/:foo2;
# stdout parallel --trc {}.1 -S lo '(cat {}; echo remote) > {}.1' ::: ./:/:foo2; cat ./:/:foo2.1
#
#echo '### Test --trc " "/" "foo3'
# mkdir -p ./" "; echo 'Content _/_foo2' > ./" "/" "foo3;
# stdout parallel --trc {}.1 -S lo '(cat {}; echo remote) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1
#
#
#
#
#
#
#echo '### Test --trc --/./--foo4 :/./:foo5 " "/./" "foo6 ./foo10/./foo10'
# mkdir ./--; echo 'Content --/--foo4' > ./--/--foo4;
# mkdir ./:; echo 'Content :/:foo5' > ./:/:foo5;
# mkdir ./" "; echo 'Content _/_foo2' > ./" "/" "foo3;
### echo '### Test --trc --basefile --/./--foo7 :/./:foo8 " "/./" "foo9 ./foo11/./foo11' echo '### Test --trc ./:/./:foo5'
### echo missing mkdir -p ./:; echo 'Content :/./:foo5' > ./:/./:foo5;
### echo '### Test --trc "-- "' stdout parallel --trc {}.1 -S lo '(cat ./:foo5; echo remote{}) > ./:foo5.1' ::: ./:/./:foo5; cat ./:/./:foo5.1
### echo missing
### echo '### Test --trc " --"' echo '### Test --trc ./" "/./" "foo6'
### echo missing mkdir -p ./" "; echo 'Content _/./_foo6' > ./" "/./" "foo6;
### stdout parallel --trc {}.1 -S lo '(cat ./" "foo6; echo remote{}) > ./" "foo6.1' ::: ./" "/./" "foo6; cat ./" "/./" "foo6.1
echo TODO
## echo '### Test --trc --basefile --/./--foo7 :/./:foo8 " "/./" "foo9 ./foo11/./foo11'
## echo missing
## echo '### Test --trc "-- "'
## echo missing
## echo '### Test --trc " --"'
## echo missing
##
EOF EOF
rm -rf tmp rm -rf tmp

View file

@ -33,29 +33,21 @@ echo 'bug #41613: --compress --line-buffer with --tagstring';
echo 'bug #41613: --compress --line-buffer - no newline'; echo 'bug #41613: --compress --line-buffer - no newline';
echo 'pipe compress tagstring' echo 'pipe compress tagstring'
perl -e 'print "O"'| parallel --compress --tagstring {#} --pipe --line-buffer cat perl -e 'print "O"'| parallel --compress --tagstring {#} --pipe --line-buffer cat; echo "K"
echo "K"
echo 'pipe compress notagstring' echo 'pipe compress notagstring'
perl -e 'print "O"'| parallel --compress --pipe --line-buffer cat perl -e 'print "O"'| parallel --compress --pipe --line-buffer cat; echo "K"
echo "K"
echo 'pipe nocompress tagstring' echo 'pipe nocompress tagstring'
perl -e 'print "O"'| parallel --tagstring {#} --pipe --line-buffer cat perl -e 'print "O"'| parallel --tagstring {#} --pipe --line-buffer cat; echo "K"
echo "K"
echo 'pipe nocompress notagstring' echo 'pipe nocompress notagstring'
perl -e 'print "O"'| parallel --pipe --line-buffer cat perl -e 'print "O"'| parallel --pipe --line-buffer cat; echo "K"
echo "K"
echo 'nopipe compress tagstring' echo 'nopipe compress tagstring'
parallel --compress --tagstring {#} --line-buffer echo {} O ::: -n parallel --compress --tagstring {#} --line-buffer echo {} O ::: -n; echo "K"
echo "K"
echo 'nopipe compress notagstring' echo 'nopipe compress notagstring'
parallel --compress --line-buffer echo {} O ::: -n parallel --compress --line-buffer echo {} O ::: -n; echo "K"
echo "K"
echo 'nopipe nocompress tagstring' echo 'nopipe nocompress tagstring'
parallel --tagstring {#} --line-buffer echo {} O ::: -n parallel --tagstring {#} --line-buffer echo {} O ::: -n; echo "K"
echo "K"
echo 'nopipe nocompress notagstring' echo 'nopipe nocompress notagstring'
parallel --line-buffer echo {} O ::: -n parallel --line-buffer echo {} O ::: -n; echo "K"
echo "K"
echo 'bug #41412: --timeout + --delay causes deadlock'; echo 'bug #41412: --timeout + --delay causes deadlock';
seq 10 | parallel -j10 --timeout 1 --delay .3 echo; seq 10 | parallel -j10 --timeout 1 --delay .3 echo;

View file

@ -35,9 +35,9 @@ _EOF
echo echo
cat <<'EOF' | parallel -vj0 -k -L1 cat <<'EOF' | parallel -vj0 -k -L1
echo '### Test killing children with --timeout and exit value (failed if timed out)' echo '### Test killing children with --timeout and exit value (failed if timed out)'
pstree | grep sleep | grep -v anacron | grep -v screensave | wc; pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc;
parallel --timeout 3 'true {} ; for i in `seq 100 120`; do bash -c "(sleep $i)" & sleep $i & done; wait; echo No good' ::: 1000000000 1000000001 ; parallel --timeout 3 'true {} ; for i in `seq 100 120`; do bash -c "(sleep $i)" & sleep $i & done; wait; echo No good' ::: 1000000000 1000000001 ;
echo $?; sleep 7; pstree | grep sleep | grep -v anacron | grep -v screensave | wc echo $?; sleep 2; pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc
echo '### Test -L -l and --max-lines' echo '### Test -L -l and --max-lines'
(echo a_b;echo c) | parallel -km -L2 echo (echo a_b;echo c) | parallel -km -L2 echo

View file

@ -4,3 +4,4 @@
### Test -p ### Test -p
...OK ...OK
### Test --sensor -l negative ### Test --sensor -l negative
more than 6 GB used

View file

@ -1,11 +1,11 @@
### Test installation missing pod2* ### Test installation missing pod2*
make[1]: Entering directory `/home/tange/privat/parallel' make[0]: Entering directory `/home/tange/privat/parallel'
if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
test -d "parallel-00000000" || mkdir "parallel-00000000" test -d "parallel-00000000" || mkdir "parallel-00000000"
(cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \ (cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir) am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[2]: Entering directory `/home/tange/privat/parallel/src' make[0]: Entering directory `/home/tange/privat/parallel/src'
make[2]: Leaving directory `/home/tange/privat/parallel/src' make[0]: Leaving directory `/home/tange/privat/parallel/src'
test -n "" \ test -n "" \
|| find "parallel-00000000" -type d ! -perm -755 \ || find "parallel-00000000" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \ -exec chmod u+rwx,go+rx {} \; -o \
@ -15,7 +15,7 @@ test -n "" \
|| chmod -R a+r "parallel-00000000" || chmod -R a+r "parallel-00000000"
tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | GZIP=--best gzip -c >parallel-00000000.tar.gz tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | GZIP=--best gzip -c >parallel-00000000.tar.gz
if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
make[1]: Leaving directory `/home/tange/privat/parallel' make[0]: Leaving directory `/home/tange/privat/parallel'
checking for a BSD-compatible install... /usr/bin/install -c checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p checking for a thread-safe mkdir -p... /bin/mkdir -p
@ -26,7 +26,7 @@ config.status: creating Makefile
config.status: creating src/Makefile config.status: creating src/Makefile
config.status: creating config.h config.status: creating config.h
Making install in src Making install in src
make[1]: Entering directory `/tmp/parallel-00000000/src' make[0]: Entering directory `/tmp/parallel-00000000/src'
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 \
@ -127,7 +127,7 @@ 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
make[2]: 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 sem sql niceload '/usr/local/bin' /usr/bin/install -c parallel sem sql niceload '/usr/local/bin'
pod2html ./parallel.pod > ./parallel.htmln \ pod2html ./parallel.pod > ./parallel.htmln \
@ -234,11 +234,11 @@ pod2man --release='00000000' --center='parallel' \
Warning: pod2man not found. Using old parallel_tutorial.1 Warning: pod2man not found. Using old parallel_tutorial.1
/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 parallel_tutorial.1 '/usr/local/share/man/man1'
make[2]: Leaving directory `/tmp/parallel-00000000/src' make[0]: Leaving directory `/tmp/parallel-00000000/src'
make[1]: Leaving directory `/tmp/parallel-00000000/src' make[0]: Leaving directory `/tmp/parallel-00000000/src'
make[1]: Entering directory `/tmp/parallel-00000000' make[0]: Entering directory `/tmp/parallel-00000000'
make[2]: Entering directory `/tmp/parallel-00000000' make[0]: Entering directory `/tmp/parallel-00000000'
make[2]: Nothing to be done for `install-exec-am'. make[0]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'. make[0]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/tmp/parallel-00000000' make[0]: Leaving directory `/tmp/parallel-00000000'
make[1]: Leaving directory `/tmp/parallel-00000000' make[0]: Leaving directory `/tmp/parallel-00000000'

View file

@ -98,46 +98,48 @@ echo "### Test --wd \"'\""
### Test --wd "'" ### Test --wd "'"
stdout parallel --wd "'" -S lo echo OK ">"{}.9 ::: uNiQuE_sTrInG; cat ~/"'"/uNiQuE_sTrInG.9; stdout rm ~/"'"/uNiQuE_sTrInG.9 stdout parallel --wd "'" -S lo echo OK ">"{}.9 ::: uNiQuE_sTrInG; cat ~/"'"/uNiQuE_sTrInG.9; stdout rm ~/"'"/uNiQuE_sTrInG.9
OK OK
echo '### Test --trc --/--foo1' echo '### Test --trc ./--/--foo1'
### Test --trc --/--foo1 ### Test --trc ./--/--foo1
mkdir -p ./--; echo 'Content --/--foo1' > ./--/--foo1; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./--/--foo1; cat ./--/--foo1.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: --/--foo1; cat ./--/--foo1.2 mkdir -p ./--; echo 'Content --/--foo1' > ./--/--foo1; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./--/--foo1; cat ./--/--foo1.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: --/--foo1; cat ./--/--foo1.2
Content --/--foo1 Content --/--foo1
remote1 remote1
Content --/--foo1 Content --/--foo1
remote2 remote2
echo '### Test --trc :dir/:foo2' echo '### Test --trc ./:dir/:foo2'
### Test --trc :dir/:foo2 ### Test --trc ./:dir/:foo2
mkdir -p ./:dir; echo 'Content :dir/:foo2' > ./:dir/:foo2; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./:dir/:foo2; cat ./:dir/:foo2.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: :dir/:foo2; cat ./:dir/:foo2.2 mkdir -p ./:dir; echo 'Content :dir/:foo2' > ./:dir/:foo2; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./:dir/:foo2; cat ./:dir/:foo2.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: :dir/:foo2; cat ./:dir/:foo2.2
Content :dir/:foo2 Content :dir/:foo2
remote1 remote1
Content :dir/:foo2 Content :dir/:foo2
remote2 remote2
echo '### Test --trc " "/" "foo3' echo '### Test --trc ./" "/" "foo3'
### Test --trc " "/" "foo3 ### Test --trc ./" "/" "foo3
mkdir -p ./" "; echo 'Content _/_foo3' > ./" "/" "foo3; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: " "/" "foo3; cat ./" "/" "foo3.2 mkdir -p ./" "; echo 'Content _/_foo3' > ./" "/" "foo3; stdout parallel --trc {}.1 -S lo '(cat {}; echo remote1) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1; stdout parallel --trc {}.2 -S lo '(cat ./{}; echo remote2) > {}.2' ::: " "/" "foo3; cat ./" "/" "foo3.2
Content _/_foo3 Content _/_foo3
remote1 remote1
Content _/_foo3 Content _/_foo3
remote2 remote2
#echo '### Test --trc --/./--foo4' echo '### Test --trc ./--/./--foo4'
# mkdir -p ./--; echo 'Content --/./--foo4' > ./--/./--foo4; # stdout parallel --trc {}.1 -S lo '(cat ./--foo4; echo remote{}) > --foo4.1' ::: --/./--foo4; cat ./--/./--foo4.1 ### Test --trc ./--/./--foo4
# mkdir -p ./--; echo 'Content --/./--foo4' > ./--/./--foo4; stdout parallel --trc {}.1 -S lo '(cat ./--foo4; echo remote{}) > --foo4.1' ::: --/./--foo4; cat ./--/./--foo4.1
#echo '### Test --trc :/:foo2' Content --/./--foo4
# mkdir -p ./:; echo 'Content :/:foo2' > ./:/:foo2; # stdout parallel --trc {}.1 -S lo '(cat {}; echo remote) > {}.1' ::: ./:/:foo2; cat ./:/:foo2.1 remote--/./--foo4
# echo '### Test --trc ./:/./:foo5'
#echo '### Test --trc " "/" "foo3' ### Test --trc ./:/./:foo5
# mkdir -p ./" "; echo 'Content _/_foo2' > ./" "/" "foo3; # stdout parallel --trc {}.1 -S lo '(cat {}; echo remote) > {}.1' ::: ./" "/" "foo3; cat ./" "/" "foo3.1 mkdir -p ./:; echo 'Content :/./:foo5' > ./:/./:foo5; stdout parallel --trc {}.1 -S lo '(cat ./:foo5; echo remote{}) > ./:foo5.1' ::: ./:/./:foo5; cat ./:/./:foo5.1
# Content :/./:foo5
# remote./:/./:foo5
# echo '### Test --trc ./" "/./" "foo6'
# ### Test --trc ./" "/./" "foo6
# mkdir -p ./" "; echo 'Content _/./_foo6' > ./" "/./" "foo6; stdout parallel --trc {}.1 -S lo '(cat ./" "foo6; echo remote{}) > ./" "foo6.1' ::: ./" "/./" "foo6; cat ./" "/./" "foo6.1
# Content _/./_foo6
#echo '### Test --trc --/./--foo4 :/./:foo5 " "/./" "foo6 ./foo10/./foo10' remote./ /./ foo6
# mkdir ./--; echo 'Content --/--foo4' > ./--/--foo4; # mkdir ./:; echo 'Content :/:foo5' > ./:/:foo5; # mkdir ./" "; echo 'Content _/_foo2' > ./" "/" "foo3; ### echo '### Test --trc --basefile --/./--foo7 :/./:foo8 " "/./" "foo9 ./foo11/./foo11' echo TODO
### echo missing TODO
### echo '### Test --trc "-- "' ## echo '### Test --trc --basefile --/./--foo7 :/./:foo8 " "/./" "foo9 ./foo11/./foo11'
### echo missing ## echo missing
### echo '### Test --trc " --"' ## echo '### Test --trc "-- "'
### echo missing ## echo missing
### ## echo '### Test --trc " --"'
## echo missing
##

View file

@ -30,9 +30,6 @@ a' * ? >o <i*? ][\!#¤%=( ) | }b 5
### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails ### Test --env for \n and \\ - single and double (*csh only) - no output is good but csh fails
2 2\ \92V2=\ \92 2 2\ \92V2=\ \92
2 2\\ \92V2=\\ \92 2 2\\ \92V2=\\ \92
16 : Command not found.
8 Unmatched ".
16 \ : Command not found.
### Test --env for \n and \\ - single and double --onall (bash only) - no output is good ### Test --env for \n and \\ - single and double --onall (bash only) - no output is good
2 1 2 1
2 10 2 10
@ -41,8 +38,5 @@ a' * ? >o <i*? ][\!#¤%=( ) | }b 5
### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails
1 2\ \92V2=\ \92 1 2\ \92V2=\ \92
1 2\\ \92V2=\\ \92 1 2\\ \92V2=\\ \92
8 : Command not found.
4 Unmatched ".
8 \ : Command not found.
### Test --env for \160 - which kills csh - single and double - no output is good ### Test --env for \160 - which kills csh - single and double - no output is good
### Test --env for \160 - which kills csh - single and double --onall - no output is good ### Test --env for \160 - which kills csh - single and double --onall - no output is good

View file

@ -14,44 +14,36 @@ echo 'bug #41613: --compress --line-buffer - no newline';
bug #41613: --compress --line-buffer - no newline bug #41613: --compress --line-buffer - no newline
echo 'pipe compress tagstring' echo 'pipe compress tagstring'
pipe compress tagstring pipe compress tagstring
perl -e 'print "O"'| parallel --compress --tagstring {#} --pipe --line-buffer cat perl -e 'print "O"'| parallel --compress --tagstring {#} --pipe --line-buffer cat; echo "K"
1 O echo "K" 1 OK
K
echo 'pipe compress notagstring' echo 'pipe compress notagstring'
pipe compress notagstring pipe compress notagstring
perl -e 'print "O"'| parallel --compress --pipe --line-buffer cat perl -e 'print "O"'| parallel --compress --pipe --line-buffer cat; echo "K"
O echo "K" OK
K
echo 'pipe nocompress tagstring' echo 'pipe nocompress tagstring'
pipe nocompress tagstring pipe nocompress tagstring
perl -e 'print "O"'| parallel --tagstring {#} --pipe --line-buffer cat perl -e 'print "O"'| parallel --tagstring {#} --pipe --line-buffer cat; echo "K"
1 O echo "K" 1 OK
K
echo 'pipe nocompress notagstring' echo 'pipe nocompress notagstring'
pipe nocompress notagstring pipe nocompress notagstring
perl -e 'print "O"'| parallel --pipe --line-buffer cat perl -e 'print "O"'| parallel --pipe --line-buffer cat; echo "K"
O echo "K" OK
K
echo 'nopipe compress tagstring' echo 'nopipe compress tagstring'
nopipe compress tagstring nopipe compress tagstring
parallel --compress --tagstring {#} --line-buffer echo {} O ::: -n parallel --compress --tagstring {#} --line-buffer echo {} O ::: -n; echo "K"
1 O echo "K" 1 OK
K
echo 'nopipe compress notagstring' echo 'nopipe compress notagstring'
nopipe compress notagstring nopipe compress notagstring
parallel --compress --line-buffer echo {} O ::: -n parallel --compress --line-buffer echo {} O ::: -n; echo "K"
O echo "K" OK
K
echo 'nopipe nocompress tagstring' echo 'nopipe nocompress tagstring'
nopipe nocompress tagstring nopipe nocompress tagstring
parallel --tagstring {#} --line-buffer echo {} O ::: -n parallel --tagstring {#} --line-buffer echo {} O ::: -n; echo "K"
1 O echo "K" 1 OK
K
echo 'nopipe nocompress notagstring' echo 'nopipe nocompress notagstring'
nopipe nocompress notagstring nopipe nocompress notagstring
parallel --line-buffer echo {} O ::: -n parallel --line-buffer echo {} O ::: -n; echo "K"
O echo "K" OK
K
echo 'bug #41412: --timeout + --delay causes deadlock'; echo 'bug #41412: --timeout + --delay causes deadlock';
bug #41412: --timeout + --delay causes deadlock bug #41412: --timeout + --delay causes deadlock
seq 10 | parallel -j10 --timeout 1 --delay .3 echo; seq 10 | parallel -j10 --timeout 1 --delay .3 echo;

View file

@ -31,7 +31,7 @@ opt--interactive 3
echo '### Test killing children with --timeout and exit value (failed if timed out)' echo '### Test killing children with --timeout and exit value (failed if timed out)'
### Test killing children with --timeout and exit value (failed if timed out) ### Test killing children with --timeout and exit value (failed if timed out)
pstree | grep sleep | grep -v anacron | grep -v screensave | wc; parallel --timeout 3 'true {} ; for i in `seq 100 120`; do bash -c "(sleep $i)" & sleep $i & done; wait; echo No good' ::: 1000000000 1000000001 ; echo $?; sleep 7; pstree | grep sleep | grep -v anacron | grep -v screensave | wc pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc; parallel --timeout 3 'true {} ; for i in `seq 100 120`; do bash -c "(sleep $i)" & sleep $i & done; wait; echo No good' ::: 1000000000 1000000001 ; echo $?; sleep 2; pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc
0 0 0 0 0 0
2 2
0 0 0 0 0 0