mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-25 15:37:56 +00:00
parallel.pod: Added graph over related options.
This commit is contained in:
parent
961ad63bdc
commit
2ebb75eb17
|
@ -31,7 +31,7 @@ doc_DATA = parallel.html env_parallel.html sem.html sql.html \
|
||||||
parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf \
|
parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf \
|
||||||
parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf \
|
parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf \
|
||||||
parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf \
|
parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf \
|
||||||
parallel_cheat_bw.pdf
|
parallel_cheat_bw.pdf parallel_options_map.pdf
|
||||||
endif
|
endif
|
||||||
|
|
||||||
web: sphinx
|
web: sphinx
|
||||||
|
@ -345,6 +345,10 @@ parallel_cheat_bw.pdf: parallel_cheat_bw.fodt
|
||||||
libreoffice --headless --convert-to pdf parallel_cheat_bw.fodt \
|
libreoffice --headless --convert-to pdf parallel_cheat_bw.fodt \
|
||||||
|| echo "Warning: libreoffice failed. Using old parallel_cheat_bw.pdf"
|
|| echo "Warning: libreoffice failed. Using old parallel_cheat_bw.pdf"
|
||||||
|
|
||||||
|
parallel_options_map.pdf: parallel.pod
|
||||||
|
./pod2graph parallel.pod > parallel_options_map.pdf \
|
||||||
|
|| echo "Warning: pod2graph failed. Using old parallel_options_map.pdf"
|
||||||
|
|
||||||
sem: parallel
|
sem: parallel
|
||||||
ln -fs parallel sem
|
ln -fs parallel sem
|
||||||
|
|
||||||
|
@ -365,7 +369,7 @@ DISTCLEANFILES = parallel.1 env_parallel.1 sem.1 sql.1 niceload.1 \
|
||||||
parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf \
|
parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf \
|
||||||
parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf \
|
parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf \
|
||||||
parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf \
|
parallel_alternatives.pdf parcat.pdf parset.pdf parsort.pdf \
|
||||||
parallel_cheat_bw.pdf
|
parallel_cheat_bw.pdf parallel_options_map.pdf
|
||||||
|
|
||||||
EXTRA_DIST = parallel sem sql niceload parcat parset parsort \
|
EXTRA_DIST = parallel sem sql niceload parcat parset parsort \
|
||||||
env_parallel env_parallel.ash env_parallel.bash \
|
env_parallel env_parallel.ash env_parallel.bash \
|
||||||
|
|
543
src/parallel.pod
543
src/parallel.pod
File diff suppressed because it is too large
Load diff
101
src/pod2graph
Executable file
101
src/pod2graph
Executable file
|
@ -0,0 +1,101 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Convert .pod file containing:
|
||||||
|
#
|
||||||
|
# =item --option
|
||||||
|
#
|
||||||
|
# See also: --other-option
|
||||||
|
#
|
||||||
|
# to a graph.pdf with link between --option and --other-option
|
||||||
|
|
||||||
|
$pod=join("",<>);
|
||||||
|
$pod=~s/^.*=head1 OPTIONS//s;
|
||||||
|
$pod=~s/=head1 EXAMPLES.*//s;
|
||||||
|
$pod=~s/^.*?=over//s;
|
||||||
|
$pod=~s/=back\s*$//s;
|
||||||
|
$pod=~s/=over.*?=back//sg;
|
||||||
|
|
||||||
|
$in_text = 0;
|
||||||
|
$in_item = 0;
|
||||||
|
$in_see_also = 0;
|
||||||
|
|
||||||
|
|
||||||
|
for(split(/\n\n+/,$pod)) {
|
||||||
|
if(/^See also:\s+(\S.*)/s) {
|
||||||
|
$lex = "seealso";
|
||||||
|
$in_text = 0;
|
||||||
|
$in_item = 0;
|
||||||
|
$in_see_only = 1;
|
||||||
|
} elsif(/^=item\s+(B<[{]=.*?perl expression.*?=[}]>|[IB]<.*?>)(\s|$)/s) {
|
||||||
|
$lex = "item";
|
||||||
|
$in_text = 0;
|
||||||
|
$in_item = 1;
|
||||||
|
$in_see_only = 0;
|
||||||
|
} elsif(/\S/) {
|
||||||
|
$lex = "text";
|
||||||
|
$in_text = 1;
|
||||||
|
$in_item = 0;
|
||||||
|
$in_see_only = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if($lex eq "seealso") {
|
||||||
|
if($lastlex eq "item") {
|
||||||
|
@saveditems = @items;
|
||||||
|
@items = ();
|
||||||
|
}
|
||||||
|
my $to = $1;
|
||||||
|
my $from = (join "/",
|
||||||
|
map {
|
||||||
|
s/I<(.*?)>/$1/g;
|
||||||
|
s/B<(.*?)>/$1/g;
|
||||||
|
$_ }
|
||||||
|
@saveditems[0]);
|
||||||
|
my @to;
|
||||||
|
while($to =~ s/(B<[{]=.*?perl expression.*?=[}]>|[BI]<.*?>)(\s|$)//) {
|
||||||
|
my $v = $1;
|
||||||
|
push @to, map {
|
||||||
|
s/I<(.*?)>/$1/g;
|
||||||
|
s/B<(.*?)>/$1/g;
|
||||||
|
$_;
|
||||||
|
} $v;
|
||||||
|
}
|
||||||
|
map {
|
||||||
|
if(not $seen{$from,$_}++
|
||||||
|
and
|
||||||
|
not $seen{$_,$from}++) {
|
||||||
|
push @nodelines, "\"$from\" -- \"$_\"\n"
|
||||||
|
}
|
||||||
|
} @to;
|
||||||
|
|
||||||
|
} elsif($lex eq "text") {
|
||||||
|
if($lastlex eq "item") {
|
||||||
|
@saveditems = @items;
|
||||||
|
@items = ();
|
||||||
|
}
|
||||||
|
} elsif($lex eq "item") {
|
||||||
|
push(@items,$1);
|
||||||
|
}
|
||||||
|
$lastlex=$lex;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub header() {
|
||||||
|
return q[
|
||||||
|
graph test123 {
|
||||||
|
graph [splines=true overlap=false;nodesep=2;
|
||||||
|
];
|
||||||
|
labelloc="t";
|
||||||
|
label="Related map for options for GNU Parallel\nFind which options relate to which";fontsize=33;
|
||||||
|
|
||||||
|
"{}"[margin=0.3;]
|
||||||
|
"--sshlogin"[margin=0.3]
|
||||||
|
"--pipe"[margin=0.3;]
|
||||||
|
":::"[margin=0.3;]
|
||||||
|
"-N"[margin=0.3]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
open(GRAPHVIZ,"|-","sfdp -Tpdf") || die;
|
||||||
|
print GRAPHVIZ header(), (sort { rand()*3 -1 } @nodelines), "}";
|
||||||
|
close GRAPHVIZ;
|
||||||
|
|
|
@ -8,21 +8,6 @@
|
||||||
# Each should be taking 10-30s and be possible to run in parallel
|
# Each should be taking 10-30s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
par_bin() {
|
|
||||||
echo '### Test --bin'
|
|
||||||
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
|
|
||||||
echo '### Test --bin with expression that gives 1..n'
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
|
|
||||||
echo '### Test --bin with expression that gives 0..n-1'
|
|
||||||
paste <(seq 10) <(seq 10 -1 1) |
|
|
||||||
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
|
|
||||||
# Fails - blocks!
|
|
||||||
# paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
|
|
||||||
}
|
|
||||||
|
|
||||||
par_load_blocks() {
|
par_load_blocks() {
|
||||||
echo "### Test if --load blocks. Bug.";
|
echo "### Test if --load blocks. Bug.";
|
||||||
export PARALLEL="--load 300%"
|
export PARALLEL="--load 300%"
|
||||||
|
|
|
@ -8,6 +8,22 @@
|
||||||
# Each should be taking 30-100s and be possible to run in parallel
|
# Each should be taking 30-100s and be possible to run in parallel
|
||||||
# I.e.: No race conditions, no logins
|
# I.e.: No race conditions, no logins
|
||||||
|
|
||||||
|
par_bin() {
|
||||||
|
echo '### Test --bin'
|
||||||
|
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
|
||||||
|
echo '### Test --bin with expression that gives 1..n'
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
|
||||||
|
echo '### Test --bin with expression that gives 0..n-1'
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) |
|
||||||
|
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
|
||||||
|
echo '### Blocks in version 20220122'
|
||||||
|
echo 10 | ppar --pipe --bin 1 -j100% wc
|
||||||
|
paste <(seq 10) <(seq 10 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
|
||||||
|
}
|
||||||
|
|
||||||
par_shard_a() {
|
par_shard_a() {
|
||||||
echo '### --shard'
|
echo '### --shard'
|
||||||
# Each of the 5 lines should match:
|
# Each of the 5 lines should match:
|
||||||
|
|
|
@ -24,25 +24,6 @@ par__pipepart_spawn 1:local / 2+ / 2+
|
||||||
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
|
par__pipepart_tee bug #45479: --pipe/--pipepart --tee
|
||||||
par__pipepart_tee --pipepart --tee
|
par__pipepart_tee --pipepart --tee
|
||||||
par__pipepart_tee 314572800
|
par__pipepart_tee 314572800
|
||||||
par_bin ### Test --bin
|
|
||||||
par_bin 2 2 4
|
|
||||||
par_bin 2 2 4
|
|
||||||
par_bin 3 3 6
|
|
||||||
par_bin 3 3 7
|
|
||||||
par_bin 2 4 8
|
|
||||||
par_bin 2 4 8
|
|
||||||
par_bin 3 6 13
|
|
||||||
par_bin 3 6 13
|
|
||||||
par_bin ### Test --bin with expression that gives 1..n
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin ### Test --bin with expression that gives 0..n-1
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 0 0 0
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_bin 5 10 21
|
|
||||||
par_colsep ### Test of --colsep
|
par_colsep ### Test of --colsep
|
||||||
par_colsep a b c
|
par_colsep a b c
|
||||||
par_colsep a b c
|
par_colsep a b c
|
||||||
|
|
|
@ -1,3 +1,39 @@
|
||||||
|
par_bin ### Test --bin
|
||||||
|
par_bin 2 2 4
|
||||||
|
par_bin 2 2 4
|
||||||
|
par_bin 3 3 6
|
||||||
|
par_bin 3 3 7
|
||||||
|
par_bin 2 4 8
|
||||||
|
par_bin 2 4 8
|
||||||
|
par_bin 3 6 13
|
||||||
|
par_bin 3 6 13
|
||||||
|
par_bin ### Test --bin with expression that gives 1..n
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin ### Test --bin with expression that gives 0..n-1
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin 5 10 21
|
||||||
|
par_bin ### Blocks in version 20220122
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 1 1 3
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 0 0 0
|
||||||
|
par_bin 1 2 4
|
||||||
|
par_bin 1 2 4
|
||||||
|
par_bin 1 2 4
|
||||||
|
par_bin 2 4 9
|
||||||
|
par_bin 1 2 4
|
||||||
|
par_bin 2 4 9
|
||||||
|
par_bin 1 2 4
|
||||||
|
par_bin 1 2 4
|
||||||
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
|
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
|
||||||
par_exit_code # Ideally the command should return the same
|
par_exit_code # Ideally the command should return the same
|
||||||
par_exit_code # with or without parallel
|
par_exit_code # with or without parallel
|
||||||
|
@ -1640,95 +1676,97 @@ par_race_condition1 9
|
||||||
par_race_condition1 10
|
par_race_condition1 10
|
||||||
par_round_robin_blocks bug #49664: --round-robin does not complete
|
par_round_robin_blocks bug #49664: --round-robin does not complete
|
||||||
par_round_robin_blocks 8
|
par_round_robin_blocks 8
|
||||||
par_shard ### --shard
|
par_shard_a ### --shard
|
||||||
par_shard OK
|
par_shard_a OK
|
||||||
par_shard OK
|
par_shard_a OK
|
||||||
par_shard OK
|
par_shard_a OK
|
||||||
par_shard OK
|
par_shard_a OK
|
||||||
par_shard OK
|
par_shard_a OK
|
||||||
par_shard 10 1
|
par_shard_a 10 1
|
||||||
par_shard 10 2
|
par_shard_a 10 2
|
||||||
par_shard 10 3
|
par_shard_a 10 3
|
||||||
par_shard 10 4
|
par_shard_a 10 4
|
||||||
par_shard 10 5
|
par_shard_a 10 5
|
||||||
par_shard 10 6
|
par_shard_a 10 6
|
||||||
par_shard 10 7
|
par_shard_a 10 7
|
||||||
par_shard 10 8
|
par_shard_a 10 8
|
||||||
par_shard 10 9
|
par_shard_a 10 9
|
||||||
par_shard 9 0
|
par_shard_a 9 0
|
||||||
par_shard 9 1
|
par_shard_a 9 1
|
||||||
par_shard 9 2
|
par_shard_a 9 2
|
||||||
par_shard 9 3
|
par_shard_a 9 3
|
||||||
par_shard 9 4
|
par_shard_a 9 4
|
||||||
par_shard 9 5
|
par_shard_a 9 5
|
||||||
par_shard 9 6
|
par_shard_a 9 6
|
||||||
par_shard 9 7
|
par_shard_a 9 7
|
||||||
par_shard 9 8
|
par_shard_a 9 8
|
||||||
par_shard 9 9
|
par_shard_a 9 9
|
||||||
par_shard 10 1
|
par_shard_b ### --shard
|
||||||
par_shard 10 2
|
par_shard_b 10 1
|
||||||
par_shard 10 3
|
par_shard_b 10 2
|
||||||
par_shard 10 4
|
par_shard_b 10 3
|
||||||
par_shard 10 5
|
par_shard_b 10 4
|
||||||
par_shard 10 6
|
par_shard_b 10 5
|
||||||
par_shard 10 7
|
par_shard_b 10 6
|
||||||
par_shard 10 8
|
par_shard_b 10 7
|
||||||
par_shard 10 9
|
par_shard_b 10 8
|
||||||
par_shard 9 0
|
par_shard_b 10 9
|
||||||
par_shard 9 1
|
par_shard_b 9 0
|
||||||
par_shard 9 2
|
par_shard_b 9 1
|
||||||
par_shard 9 3
|
par_shard_b 9 2
|
||||||
par_shard 9 4
|
par_shard_b 9 3
|
||||||
par_shard 9 5
|
par_shard_b 9 4
|
||||||
par_shard 9 6
|
par_shard_b 9 5
|
||||||
par_shard 9 7
|
par_shard_b 9 6
|
||||||
par_shard 9 8
|
par_shard_b 9 7
|
||||||
par_shard 9 9
|
par_shard_b 9 8
|
||||||
par_shard 10 1
|
par_shard_b 9 9
|
||||||
par_shard 10 2
|
par_shard_c ### --shard
|
||||||
par_shard 10 3
|
par_shard_c 10 1
|
||||||
par_shard 10 4
|
par_shard_c 10 2
|
||||||
par_shard 10 5
|
par_shard_c 10 3
|
||||||
par_shard 10 6
|
par_shard_c 10 4
|
||||||
par_shard 10 7
|
par_shard_c 10 5
|
||||||
par_shard 10 8
|
par_shard_c 10 6
|
||||||
par_shard 10 9
|
par_shard_c 10 7
|
||||||
par_shard 2 c1
|
par_shard_c 10 8
|
||||||
par_shard 9 0
|
par_shard_c 10 9
|
||||||
par_shard 9 1
|
par_shard_c 2 c1
|
||||||
par_shard 9 2
|
par_shard_c 9 0
|
||||||
par_shard 9 3
|
par_shard_c 9 1
|
||||||
par_shard 9 4
|
par_shard_c 9 2
|
||||||
par_shard 9 5
|
par_shard_c 9 3
|
||||||
par_shard 9 6
|
par_shard_c 9 4
|
||||||
par_shard 9 7
|
par_shard_c 9 5
|
||||||
par_shard 9 8
|
par_shard_c 9 6
|
||||||
par_shard 9 9
|
par_shard_c 9 7
|
||||||
par_shard 2 c2
|
par_shard_c 9 8
|
||||||
par_shard 10 1
|
par_shard_c 9 9
|
||||||
par_shard 10 2
|
par_shard_c 2 c2
|
||||||
par_shard 10 3
|
par_shard_d 10 1
|
||||||
par_shard 10 4
|
par_shard_d 10 2
|
||||||
par_shard 10 5
|
par_shard_d 10 3
|
||||||
par_shard 10 6
|
par_shard_d 10 4
|
||||||
par_shard 10 7
|
par_shard_d 10 5
|
||||||
par_shard 10 8
|
par_shard_d 10 6
|
||||||
par_shard 10 9
|
par_shard_d 10 7
|
||||||
par_shard 2 c1
|
par_shard_d 10 8
|
||||||
par_shard 9 0
|
par_shard_d 10 9
|
||||||
par_shard 9 1
|
par_shard_d 2 c1
|
||||||
par_shard 9 2
|
par_shard_d 9 0
|
||||||
par_shard 9 3
|
par_shard_d 9 1
|
||||||
par_shard 9 4
|
par_shard_d 9 2
|
||||||
par_shard 9 5
|
par_shard_d 9 3
|
||||||
par_shard 9 6
|
par_shard_d 9 4
|
||||||
par_shard 9 7
|
par_shard_d 9 5
|
||||||
par_shard 9 8
|
par_shard_d 9 6
|
||||||
par_shard 9 9
|
par_shard_d 9 7
|
||||||
par_shard 2 c2
|
par_shard_d 9 8
|
||||||
par_shard *** broken
|
par_shard_d 9 9
|
||||||
par_shard parallel: Error: --shard requires --jobs to be higher than the number of
|
par_shard_d 2 c2
|
||||||
par_shard parallel: Error: arguments. Increase --jobs.
|
par_shard_d *** broken
|
||||||
|
par_shard_d parallel: Error: --shard requires --jobs to be higher than the number of
|
||||||
|
par_shard_d parallel: Error: arguments. Increase --jobs.
|
||||||
par_sighup ### Test SIGHUP
|
par_sighup ### Test SIGHUP
|
||||||
par_sighup 1
|
par_sighup 1
|
||||||
par_sighup 10
|
par_sighup 10
|
||||||
|
|
Loading…
Reference in a new issue