mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-22 20:57:53 +00:00
parallel: Simpler job control flow.
This commit is contained in:
parent
a6ccb85f14
commit
83ffe1af13
|
@ -205,9 +205,9 @@ from:tange@gnu.org
|
|||
to:parallel@gnu.org, bug-parallel@gnu.org
|
||||
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
|
||||
|
||||
Subject: GNU Parallel 20181022 ('peoples vote cumex khashoggi Sulawesi(Palu)') released <<[stable]>>
|
||||
Subject: GNU Parallel 20181122 ('Kilogram/brexitdeal/Stan Lee/Cesar Sayoc/Tree of Life/Iran') released <<[stable]>>
|
||||
|
||||
GNU Parallel 20181022 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
||||
GNU Parallel 20181122 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
|
||||
|
||||
<<No new functionality was introduced so this is a good candidate for a stable release.>>
|
||||
|
||||
|
@ -215,13 +215,9 @@ Quote of the month:
|
|||
|
||||
New in this release:
|
||||
|
||||
* env_parallel.fish: --session support (alpha quality)
|
||||
* https://codeday.me/bug/20181015/298447.html
|
||||
|
||||
* GNU Parallel was cited in: High-throughput sequencing of murine immunoglobulin heavy chain repertoires using single side unique molecular identifiers on an Ion Torrent PGM https://doi.org/10.18632/oncotarget.25493
|
||||
|
||||
* GNU parallel in Japanese Wikipedia https://ja.wikipedia.org/wiki/GNU_parallel
|
||||
|
||||
* Outils de paramétrisation des tâches: lots de tâches, GNU Parallel https://www.eventbrite.ca/e/inscription-outils-de-parametrisation-des-taches-lots-de-taches-gnu-parallel-et-bqtools-midi-conference-de-50271076142
|
||||
* https://qiita.com//grohiro/items/4db3fa951a4778c5c479
|
||||
|
||||
* Bug fixes and man page updates.
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
use strict;
|
||||
use Getopt::Long;
|
||||
$Global::progname="niceload";
|
||||
$Global::version = 20181022;
|
||||
$Global::version = 20181024;
|
||||
Getopt::Long::Configure("bundling","require_order");
|
||||
get_options_from_array(\@ARGV) || die_usage();
|
||||
if($opt::version) {
|
||||
|
@ -1147,7 +1147,7 @@ sub io_status_linux {
|
|||
# throw away all execpt the last Device:-section
|
||||
my @iostat;
|
||||
for(reverse @iostat_out) {
|
||||
/Device:/ and last;
|
||||
/Device/ and last;
|
||||
push @iostat, (split(/\s+/,$_))[13];
|
||||
}
|
||||
my $io = ::max(@iostat);
|
||||
|
|
181
src/parallel
181
src/parallel
|
@ -120,7 +120,7 @@ if($Global::semaphore) {
|
|||
$sem = acquire_semaphore();
|
||||
}
|
||||
$SIG{TERM} = \&start_no_new_jobs;
|
||||
start_more_jobs();
|
||||
while(start_more_jobs()) {}
|
||||
if($opt::tee) {
|
||||
# All jobs must be running in parallel for --tee
|
||||
$Global::start_no_new_jobs = 1;
|
||||
|
@ -620,6 +620,7 @@ sub spreadstdin {
|
|||
my $sleep =1;
|
||||
while($Global::total_running > 0) {
|
||||
$sleep = ::reap_usleep($sleep);
|
||||
start_more_jobs();
|
||||
}
|
||||
}
|
||||
$Global::start_no_new_jobs ||= 1;
|
||||
|
@ -1554,7 +1555,7 @@ sub check_invalid_option_combinations {
|
|||
|
||||
sub init_globals {
|
||||
# Defaults:
|
||||
$Global::version = 20181022;
|
||||
$Global::version = 20181024;
|
||||
$Global::progname = 'parallel';
|
||||
$Global::infinity = 2**31;
|
||||
$Global::debug = 0;
|
||||
|
@ -2668,7 +2669,6 @@ sub init_run_jobs {
|
|||
# Returns:
|
||||
# $jobs_started = number of jobs started
|
||||
my $jobs_started = 0;
|
||||
my $jobs_started_this_round = 0;
|
||||
if($Global::start_no_new_jobs) {
|
||||
return $jobs_started;
|
||||
}
|
||||
|
@ -2678,65 +2678,61 @@ sub init_run_jobs {
|
|||
changed_procs_file();
|
||||
changed_sshloginfile();
|
||||
}
|
||||
do {
|
||||
$jobs_started_this_round = 0;
|
||||
# This will start 1 job on each --sshlogin (if possible)
|
||||
# thus distribute the jobs on the --sshlogins round robin
|
||||
for my $sshlogin (values %Global::host) {
|
||||
if($Global::JobQueue->empty() and not $opt::pipe) {
|
||||
# No more jobs in the queue
|
||||
last;
|
||||
}
|
||||
debug("run", "Running jobs before on ", $sshlogin->string(), ": ",
|
||||
$sshlogin->jobs_running(), "\n");
|
||||
if ($sshlogin->jobs_running() < $sshlogin->max_jobs_running()) {
|
||||
if($opt::delay
|
||||
and
|
||||
$opt::delay > ::now() - $Global::newest_starttime) {
|
||||
# It has been too short since last start
|
||||
next;
|
||||
}
|
||||
if($opt::load and $sshlogin->loadavg_too_high()) {
|
||||
# The load is too high or unknown
|
||||
next;
|
||||
}
|
||||
if($opt::noswap and $sshlogin->swapping()) {
|
||||
# The server is swapping
|
||||
next;
|
||||
}
|
||||
if($opt::limit and $sshlogin->limit()) {
|
||||
# Over limit
|
||||
next;
|
||||
}
|
||||
if($opt::memfree and $sshlogin->memfree() < $opt::memfree) {
|
||||
# The server has not enough mem free
|
||||
::debug("mem", "Not starting job: not enough mem\n");
|
||||
next;
|
||||
}
|
||||
if($sshlogin->too_fast_remote_login()) {
|
||||
# It has been too short since
|
||||
next;
|
||||
}
|
||||
debug("run", $sshlogin->string(),
|
||||
" has ", $sshlogin->jobs_running(),
|
||||
" out of ", $sshlogin->max_jobs_running(),
|
||||
" jobs running. Start another.\n");
|
||||
if(start_another_job($sshlogin) == 0) {
|
||||
# No more jobs to start on this $sshlogin
|
||||
debug("run","No jobs started on ",
|
||||
$sshlogin->string(), "\n");
|
||||
next;
|
||||
}
|
||||
$sshlogin->inc_jobs_running();
|
||||
$sshlogin->set_last_login_at(::now());
|
||||
$jobs_started++;
|
||||
$jobs_started_this_round++;
|
||||
}
|
||||
debug("run","Running jobs after on ", $sshlogin->string(), ": ",
|
||||
$sshlogin->jobs_running(), " of ",
|
||||
$sshlogin->max_jobs_running(), "\n");
|
||||
# This will start 1 job on each --sshlogin (if possible)
|
||||
# thus distribute the jobs on the --sshlogins round robin
|
||||
for my $sshlogin (values %Global::host) {
|
||||
if($Global::JobQueue->empty() and not $opt::pipe) {
|
||||
# No more jobs in the queue
|
||||
last;
|
||||
}
|
||||
} while($jobs_started_this_round);
|
||||
debug("run", "Running jobs before on ", $sshlogin->string(), ": ",
|
||||
$sshlogin->jobs_running(), "\n");
|
||||
if ($sshlogin->jobs_running() < $sshlogin->max_jobs_running()) {
|
||||
if($opt::delay
|
||||
and
|
||||
$opt::delay > ::now() - $Global::newest_starttime) {
|
||||
# It has been too short since last start
|
||||
next;
|
||||
}
|
||||
if($opt::load and $sshlogin->loadavg_too_high()) {
|
||||
# The load is too high or unknown
|
||||
next;
|
||||
}
|
||||
if($opt::noswap and $sshlogin->swapping()) {
|
||||
# The server is swapping
|
||||
next;
|
||||
}
|
||||
if($opt::limit and $sshlogin->limit()) {
|
||||
# Over limit
|
||||
next;
|
||||
}
|
||||
if($opt::memfree and $sshlogin->memfree() < $opt::memfree) {
|
||||
# The server has not enough mem free
|
||||
::debug("mem", "Not starting job: not enough mem\n");
|
||||
next;
|
||||
}
|
||||
if($sshlogin->too_fast_remote_login()) {
|
||||
# It has been too short since
|
||||
next;
|
||||
}
|
||||
debug("run", $sshlogin->string(),
|
||||
" has ", $sshlogin->jobs_running(),
|
||||
" out of ", $sshlogin->max_jobs_running(),
|
||||
" jobs running. Start another.\n");
|
||||
if(start_another_job($sshlogin) == 0) {
|
||||
# No more jobs to start on this $sshlogin
|
||||
debug("run","No jobs started on ",
|
||||
$sshlogin->string(), "\n");
|
||||
next;
|
||||
}
|
||||
$sshlogin->inc_jobs_running();
|
||||
$sshlogin->set_last_login_at(::now());
|
||||
$jobs_started++;
|
||||
}
|
||||
debug("run","Running jobs after on ", $sshlogin->string(), ": ",
|
||||
$sshlogin->jobs_running(), " of ",
|
||||
$sshlogin->max_jobs_running(), "\n");
|
||||
}
|
||||
|
||||
return $jobs_started;
|
||||
}
|
||||
|
@ -2912,8 +2908,8 @@ sub drain_job_queue {
|
|||
}
|
||||
# * because of loadavg
|
||||
# * because of too little time between each ssh login.
|
||||
start_more_jobs();
|
||||
$sleep = ::reap_usleep($sleep);
|
||||
start_more_jobs();
|
||||
if($Global::max_jobs_running == 0) {
|
||||
::warning("There are no job slots available. Increase --jobs.");
|
||||
}
|
||||
|
@ -2921,6 +2917,7 @@ sub drain_job_queue {
|
|||
while($opt::sqlmaster and not $Global::sql->finished()) {
|
||||
# SQL master
|
||||
$sleep = ::reap_usleep($sleep);
|
||||
start_more_jobs();
|
||||
if($Global::start_sqlworker) {
|
||||
# Start an SQL worker as we are now sure there is work to do
|
||||
$Global::start_sqlworker = 0;
|
||||
|
@ -4054,27 +4051,24 @@ sub reaper {
|
|||
# @pids_reaped = PIDs of children finished
|
||||
my $stiff;
|
||||
my @pids_reaped;
|
||||
my $children_reaped = 0;
|
||||
my $total_reaped;
|
||||
debug("run", "Reaper ");
|
||||
# For efficiency surround with BEGIN/COMMIT when using $opt::sqlmaster
|
||||
$opt::sqlmaster and $Global::sql->run("BEGIN;");
|
||||
while (($stiff = waitpid(-1, &WNOHANG)) > 0) {
|
||||
if (($stiff = waitpid(-1, &WNOHANG)) > 0) {
|
||||
# $stiff = pid of dead process
|
||||
if(wantarray) {
|
||||
push(@pids_reaped,$stiff);
|
||||
} else {
|
||||
$children_reaped++;
|
||||
}
|
||||
if($Global::sshmaster{$stiff}) {
|
||||
# This is one of the ssh -M: ignore
|
||||
next;
|
||||
}
|
||||
my $job = $Global::running{$stiff};
|
||||
$total_reaped++;
|
||||
if($Global::sshmaster{$stiff}) {
|
||||
# This is one of the ssh -M: ignore
|
||||
next;
|
||||
}
|
||||
my $job = $Global::running{$stiff};
|
||||
|
||||
# '-a <(seq 10)' will give us a pid not in %Global::running
|
||||
$job or next;
|
||||
delete $Global::running{$stiff};
|
||||
$Global::total_running--;
|
||||
$job or return 0;
|
||||
delete $Global::running{$stiff};
|
||||
$Global::total_running--;
|
||||
if($job->{'commandline'}{'skip'}) {
|
||||
# $job->skip() was called
|
||||
$job->set_exitstatus(-2);
|
||||
|
@ -4084,11 +4078,12 @@ sub reaper {
|
|||
$job->set_exitsignal($? & 127);
|
||||
}
|
||||
|
||||
debug("run", "seq ",$job->seq()," died (", $job->exitstatus(), ")");
|
||||
$job->set_endtime(::now());
|
||||
my $sshlogin = $job->sshlogin();
|
||||
$sshlogin->dec_jobs_running();
|
||||
if($job->should_be_retried()) {
|
||||
debug("run", "seq ",$job->seq()," died (", $job->exitstatus(), ")");
|
||||
$job->set_endtime(::now());
|
||||
my $sshlogin = $job->sshlogin();
|
||||
$sshlogin->dec_jobs_running();
|
||||
if($job->should_be_retried()) {
|
||||
# Free up file handles
|
||||
$job->free_ressources();
|
||||
} else {
|
||||
# The job is done
|
||||
|
@ -4109,18 +4104,17 @@ sub reaper {
|
|||
::kill_sleep_seq($job->pid());
|
||||
::killall();
|
||||
::wait_and_exit($Global::halt_exitstatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$job->cleanup();
|
||||
start_more_jobs();
|
||||
|
||||
if($opt::progress) {
|
||||
my %progress = progress();
|
||||
::status_no_nl("\r",$progress{'status'});
|
||||
}
|
||||
}
|
||||
$opt::sqlmaster and $Global::sql->run("COMMIT;");
|
||||
debug("run", "done ");
|
||||
return wantarray ? @pids_reaped : $children_reaped;
|
||||
return wantarray ? @pids_reaped : $total_reaped;
|
||||
}
|
||||
|
||||
|
||||
|
@ -5102,6 +5096,7 @@ sub reap_usleep {
|
|||
# $ms*1.1 if no children reaped
|
||||
my $ms = shift;
|
||||
if(reaper()) {
|
||||
while(reaper()) {}
|
||||
if(not $Global::total_completed % 100) {
|
||||
if($opt::timeout) {
|
||||
# Force cleaning the timeout queue for every 1000 jobs
|
||||
|
@ -7947,7 +7942,7 @@ sub wrapped {
|
|||
$command =
|
||||
'cat > $PARALLEL_TMP;'.
|
||||
$command.";". postpone_exit_and_cleanup().
|
||||
'$PARALLEL_TMP';
|
||||
'$PARALLEL_TMP';
|
||||
} elsif($opt::fifo) {
|
||||
# Prepend fifo-wrapper. In essence:
|
||||
# mkfifo {}
|
||||
|
@ -8280,7 +8275,7 @@ sub sshlogin_wrap {
|
|||
my $self = shift;
|
||||
my $command = shift;
|
||||
# TODO test that *sh -c 'parallel --env' use *sh
|
||||
if(not defined $self->{'sshlogin_wrap'}) {
|
||||
if(not defined $self->{'sshlogin_wrap'}{$command}) {
|
||||
my $sshlogin = $self->sshlogin();
|
||||
my $serverlogin = $sshlogin->serverlogin();
|
||||
my $quoted_remote_command;
|
||||
|
@ -8310,12 +8305,12 @@ sub sshlogin_wrap {
|
|||
$command =~ /\n/) {
|
||||
# csh does not deal well with > 1000 chars in one word
|
||||
# csh does not deal well with $ENV with \n
|
||||
$self->{'sshlogin_wrap'} = base64_wrap($perl_code);
|
||||
$self->{'sshlogin_wrap'}{$command} = base64_wrap($perl_code);
|
||||
} else {
|
||||
$self->{'sshlogin_wrap'} = "perl -e ".::Q($perl_code);
|
||||
$self->{'sshlogin_wrap'}{$command} = "perl -e ".::Q($perl_code);
|
||||
}
|
||||
} else {
|
||||
$self->{'sshlogin_wrap'} = $command;
|
||||
$self->{'sshlogin_wrap'}{$command} = $command;
|
||||
}
|
||||
} else {
|
||||
my $pwd = "";
|
||||
|
@ -8357,7 +8352,7 @@ sub sshlogin_wrap {
|
|||
# We need to save the exit status of the job
|
||||
$post = '_EXIT_status=$?; ' . $post . ' exit $_EXIT_status;';
|
||||
}
|
||||
$self->{'sshlogin_wrap'} =
|
||||
$self->{'sshlogin_wrap'}{$command} =
|
||||
($pre
|
||||
. "$sshcmd $serverlogin -- exec "
|
||||
. $quoted_remote_command
|
||||
|
@ -8365,7 +8360,7 @@ sub sshlogin_wrap {
|
|||
. $post);
|
||||
}
|
||||
}
|
||||
return $self->{'sshlogin_wrap'};
|
||||
return $self->{'sshlogin_wrap'}{$command};
|
||||
}
|
||||
|
||||
sub transfer {
|
||||
|
|
|
@ -1716,12 +1716,19 @@ dependency graph described in a file, so this is similar to B<make>.
|
|||
|
||||
https://github.com/cetra3/lorikeet (Last checked: 2018-10)
|
||||
|
||||
=head2 DIFFERENCES BETWEEN spp AND GNU Parallel
|
||||
|
||||
B<spp> can run jobs in parallel. B<spp> does not use a command
|
||||
template to generate the jobs, but requires jobs to be in a
|
||||
file. Output from the jobs mix.
|
||||
|
||||
https://github.com/john01dav/spp
|
||||
|
||||
=head2 Todo
|
||||
|
||||
Url for spread
|
||||
|
||||
https://github.com/john01dav/spp
|
||||
|
||||
|
||||
https://github.com/amritb/with-this.git
|
||||
|
||||
|
|
2
src/sql
2
src/sql
|
@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
|||
exit ($err);
|
||||
|
||||
sub parse_options {
|
||||
$Global::version = 20181022;
|
||||
$Global::version = 20181024;
|
||||
$Global::progname = 'sql';
|
||||
|
||||
# This must be done first as this may exec myself
|
||||
|
|
|
@ -787,6 +787,7 @@ _EOF
|
|||
par_fish_underscore() {
|
||||
echo '### fish'
|
||||
myscript=$(cat <<'_EOF'
|
||||
echo "Fish is broken"
|
||||
echo "### Testing of --env _"
|
||||
|
||||
# . `which env_parallel.fish`;
|
||||
|
@ -1212,6 +1213,7 @@ _EOF
|
|||
|
||||
par_fish_funky() {
|
||||
myscript=$(cat <<'_EOF'
|
||||
echo "Fish is broken"
|
||||
env_parallel --session
|
||||
set myvar "myvar works"
|
||||
setenv myenvvar "myenvvar works"
|
||||
|
@ -1509,6 +1511,7 @@ _EOF
|
|||
|
||||
par_fish_env_parallel() {
|
||||
myscript=$(cat <<'_EOF'
|
||||
echo "Fish is broken"
|
||||
echo 'bug #50435: Remote fifo broke in 20150522'
|
||||
# Due to $PARALLEL_TMP being transferred
|
||||
set OK OK
|
||||
|
|
|
@ -16,9 +16,9 @@ MAXINNERPROC=${maxinnerproc:-3}
|
|||
|
||||
export PARALLEL_SSH="ssh -oLogLevel=quiet"
|
||||
|
||||
# select a running master (suse, ubuntu, or debian)
|
||||
# select a running master (debian-ppc, suse, ubuntu, or debian)
|
||||
MASTER=$(parallel -j0 --delay 0.1 --halt now,success=1 $PARALLEL_SSH {} echo {} \
|
||||
::: {ubuntu,suse,debian}.polarhome.com)
|
||||
::: {debian-ppc,ubuntu,debian,suse}.polarhome.com)
|
||||
|
||||
parallel -j0 --delay 0.1 --retries $RETRIES \
|
||||
rsync -L /usr/local/bin/{parallel,env_parallel,env_parallel.*[^~],parcat,stdout} \
|
||||
|
|
|
@ -372,6 +372,30 @@ par_test_build_and_install test -d "parallel-00000000" || mkdir "parallel-000000
|
|||
par_test_build_and_install (cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
|
||||
par_test_build_and_install am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
|
||||
par_test_build_and_install make[0]: Entering directory '~/privat/parallel/src'
|
||||
par_test_build_and_install pod2man --release='00000000' --center='parallel' \
|
||||
par_test_build_and_install --section=1 ./sql > ./sql.1n \
|
||||
par_test_build_and_install && mv ./sql.1n ./sql.1 \
|
||||
par_test_build_and_install || echo "Warning: pod2man not found. Using old sql.1"
|
||||
par_test_build_and_install pod2html --title "GNU SQL" ./sql > ./sql.htmln \
|
||||
par_test_build_and_install && mv ./sql.htmln ./sql.html \
|
||||
par_test_build_and_install || echo "Warning: pod2html not found. Using old sql.html"
|
||||
par_test_build_and_install rm -f ./pod2htm*
|
||||
par_test_build_and_install pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
|
||||
par_test_build_and_install && mv ./niceload.htmln ./niceload.html \
|
||||
par_test_build_and_install || echo "Warning: pod2html not found. Using old niceload.html"
|
||||
par_test_build_and_install rm -f ./pod2htm*
|
||||
par_test_build_and_install pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
|
||||
par_test_build_and_install && mv ./parcat.htmln ./parcat.html \
|
||||
par_test_build_and_install || echo "Warning: pod2html not found. Using old parcat.html"
|
||||
par_test_build_and_install rm -f ./pod2htm*
|
||||
par_test_build_and_install pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
|
||||
par_test_build_and_install && mv ./parset.htmln ./parset.html \
|
||||
par_test_build_and_install || echo "Warning: pod2html not found. Using old parset.html"
|
||||
par_test_build_and_install rm -f ./pod2htm*
|
||||
par_test_build_and_install pod2texi --output=./sql.texi ./sql \
|
||||
par_test_build_and_install || echo "Warning: pod2texi not found. Using old sql.texi"
|
||||
par_test_build_and_install pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
|
||||
par_test_build_and_install || echo "Warning: pod2pdf not found. Using old sql.pdf"
|
||||
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel/src'
|
||||
par_test_build_and_install test -n "" \
|
||||
par_test_build_and_install || find "parallel-00000000" -type d ! -perm -755 \
|
||||
|
@ -380,7 +404,7 @@ par_test_build_and_install ! -type d ! -perm -444 -links 1 -exec chmod a+r {}
|
|||
par_test_build_and_install ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
par_test_build_and_install ! -type d ! -perm -444 -exec /bin/bash ~/privat/parallel/install-sh -c -m a+r {} {} \; \
|
||||
par_test_build_and_install || chmod -R a+r "parallel-00000000"
|
||||
par_test_build_and_install tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | GZIP=--best gzip -c >parallel-00000000.tar.gz
|
||||
par_test_build_and_install tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | eval GZIP= gzip --best -c >parallel-00000000.tar.gz
|
||||
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
|
||||
par_test_build_and_install 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
|
||||
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
|
||||
|
|
|
@ -1011,36 +1011,41 @@ par_ksh_env_parallel env_parallel: Warning: See BUGS in "man env_parallel".
|
|||
par_ksh_env_parallel env_parallel: Warning: See BUGS in "man env_parallel".
|
||||
par_ksh_env_parallel env_parallel: Warning: See BUGS in "man env_parallel".
|
||||
par_fish_underscore ### fish
|
||||
par_fish_underscore Fish is broken
|
||||
par_fish_underscore ### Testing of --env _
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore variables in aliases and arrays in functions work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore not_copied_alias 'error=OK'
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore not_copied_func 'error=OK'
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore error=OK
|
||||
par_fish_underscore error=OK
|
||||
par_fish_underscore aliases and arrays in functions work
|
||||
par_fish_underscore aliases and arrays in functions work
|
||||
par_fish_underscore aliases functions work
|
||||
par_fish_underscore aliases functions work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore in function 'myfunc'
|
||||
par_fish_underscore called on standard input
|
||||
par_fish_underscore with parameter list 'work'
|
||||
par_fish_underscore
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore in function 'myfunc'
|
||||
par_fish_underscore called on standard input
|
||||
par_fish_underscore with parameter list 'work'
|
||||
par_fish_underscore
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myfunc
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore myfunc work
|
||||
par_fish_underscore ^
|
||||
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myfunc
|
||||
par_fish_parset Not implemented
|
||||
par_fish_man ### fish
|
||||
|
@ -1089,6 +1094,8 @@ par_fish_man env_parallel
|
|||
par_fish_man exit value 2 should be 2
|
||||
par_fish_man Unknown option: no-such-option
|
||||
par_fish_man exit value 255 should be 255 `sleep 1`
|
||||
par_fish_funky Fish is broken
|
||||
par_fish_funky setenv: Too many arguments
|
||||
par_fish_funky env_parallel: Warning: ASCII value 1 in variables is not supported
|
||||
par_fish_funky 3 arg alias_works
|
||||
par_fish_funky env_parallel: Warning: ASCII value 1 in variables is not supported
|
||||
|
@ -1100,7 +1107,7 @@ par_fish_funky
|
|||
par_fish_funky
|
||||
par_fish_funky
|
||||
par_fish_funky Funky-
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
|
||||
par_fish_funky Funkyenv-
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
|
||||
par_fish_funky Funkyenv--funkyenv
|
||||
par_fish_funky
|
||||
par_fish_funky
|
||||
par_fish_funky
|
||||
|
@ -1115,7 +1122,7 @@ par_fish_funky
|
|||
par_fish_funky
|
||||
par_fish_funky
|
||||
par_fish_funky Funky-
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
|
||||
par_fish_funky Funkyenv-
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funkyenv
|
||||
par_fish_funky Funkyenv--funkyenv
|
||||
par_fish_funky
|
||||
par_fish_funky
|
||||
par_fish_funky
|
||||
|
@ -1123,16 +1130,11 @@ par_fish_funky
|
|||
par_fish_funky '
!"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>'
|
||||
par_fish_environment_too_big Not implemented
|
||||
par_fish_env_parallel_session Not implemented
|
||||
par_fish_env_parallel Fish is broken
|
||||
par_fish_env_parallel bug #50435: Remote fifo broke in 20150522
|
||||
par_fish_env_parallel TODO fix env_parallel --fifo
|
||||
par_fish_env_parallel 'end' outside of a block
|
||||
par_fish_env_parallel fish: end
|
||||
par_fish_env_parallel ^
|
||||
par_fish_env_parallel data from stdin
|
||||
par_fish_env_parallel OK
|
||||
par_fish_env_parallel $? is not the exit status. In fish, please use $status.
|
||||
par_fish_env_parallel fish: cat $PARALLEL_TMP; and echo $OK;perl -e '$bash=shift;$csh=shift;for(@ARGV){unlink;rmdir;}if($bash=~s/h//){exit$bash;}exit$csh;' "$?h" "$status" $PARALLEL_TMP
|
||||
par_fish_env_parallel ^
|
||||
par_fish_env_parallel parallel: Error: Command line too long (XXX >= XXX) at input 0: $PARALLEL_TMP
|
||||
par_fish_env_parallel parallel: Error: Command line too long (XXX >= XXX) at input 0: $PARALLEL_TMP
|
||||
par_dash_underscore ### dash
|
||||
par_dash_underscore ### Testing of --env _
|
||||
par_dash_underscore variables in aliases work
|
||||
|
|
|
@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
|
|||
echo '### --version must have higher priority than retired options'
|
||||
### --version must have higher priority than retired options
|
||||
$NICEPAR --version -g -Y -U -W -T | tail
|
||||
GNU parallel 20180923
|
||||
GNU parallel 20181024
|
||||
Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc.
|
||||
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
|
||||
This is free software: you are free to change and redistribute it.
|
||||
|
|
|
@ -43,7 +43,6 @@ bin/parallel freebsd copy freebsd bin/parallel parallel
|
|||
bin/parallel debian copy debian bin/parallel parallel
|
||||
bin/parallel hurd copy hurd bin/parallel parallel
|
||||
bin/parallel minix copy minix bin/parallel parallel
|
||||
bin/parallel minix cat: stdout: no space left on device
|
||||
bin/env_parallel qnx copy qnx bin/env_parallel env_parallel
|
||||
bin/env_parallel pidora copy pidora bin/env_parallel env_parallel
|
||||
bin/env_parallel tru64 copy tru64 bin/env_parallel env_parallel
|
||||
|
@ -69,7 +68,6 @@ bin/env_parallel freebsd copy freebsd bin/env_parallel env_parallel
|
|||
bin/env_parallel debian copy debian bin/env_parallel env_parallel
|
||||
bin/env_parallel hurd copy hurd bin/env_parallel env_parallel
|
||||
bin/env_parallel minix copy minix bin/env_parallel env_parallel
|
||||
bin/env_parallel minix cat: stdout: no space left on device
|
||||
bin/env_parallel.ash qnx copy qnx bin/env_parallel.ash env_parallel.ash
|
||||
bin/env_parallel.ash pidora copy pidora bin/env_parallel.ash env_parallel.ash
|
||||
bin/env_parallel.ash tru64 copy tru64 bin/env_parallel.ash env_parallel.ash
|
||||
|
@ -95,7 +93,6 @@ bin/env_parallel.ash freebsd copy freebsd bin/env_parallel.ash env_parallel.ash
|
|||
bin/env_parallel.ash debian copy debian bin/env_parallel.ash env_parallel.ash
|
||||
bin/env_parallel.ash hurd copy hurd bin/env_parallel.ash env_parallel.ash
|
||||
bin/env_parallel.ash minix copy minix bin/env_parallel.ash env_parallel.ash
|
||||
bin/env_parallel.ash minix cat: stdout: no space left on device
|
||||
bin/env_parallel.bash qnx copy qnx bin/env_parallel.bash env_parallel.bash
|
||||
bin/env_parallel.bash pidora copy pidora bin/env_parallel.bash env_parallel.bash
|
||||
bin/env_parallel.bash tru64 copy tru64 bin/env_parallel.bash env_parallel.bash
|
||||
|
@ -147,7 +144,6 @@ bin/env_parallel.csh freebsd copy freebsd bin/env_parallel.csh env_parallel.csh
|
|||
bin/env_parallel.csh debian copy debian bin/env_parallel.csh env_parallel.csh
|
||||
bin/env_parallel.csh hurd copy hurd bin/env_parallel.csh env_parallel.csh
|
||||
bin/env_parallel.csh minix copy minix bin/env_parallel.csh env_parallel.csh
|
||||
bin/env_parallel.csh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.dash qnx copy qnx bin/env_parallel.dash env_parallel.dash
|
||||
bin/env_parallel.dash pidora copy pidora bin/env_parallel.dash env_parallel.dash
|
||||
bin/env_parallel.dash tru64 copy tru64 bin/env_parallel.dash env_parallel.dash
|
||||
|
@ -173,7 +169,6 @@ bin/env_parallel.dash freebsd copy freebsd bin/env_parallel.dash env_parallel.da
|
|||
bin/env_parallel.dash debian copy debian bin/env_parallel.dash env_parallel.dash
|
||||
bin/env_parallel.dash hurd copy hurd bin/env_parallel.dash env_parallel.dash
|
||||
bin/env_parallel.dash minix copy minix bin/env_parallel.dash env_parallel.dash
|
||||
bin/env_parallel.dash minix cat: stdout: no space left on device
|
||||
bin/env_parallel.fish qnx copy qnx bin/env_parallel.fish env_parallel.fish
|
||||
bin/env_parallel.fish pidora copy pidora bin/env_parallel.fish env_parallel.fish
|
||||
bin/env_parallel.fish tru64 copy tru64 bin/env_parallel.fish env_parallel.fish
|
||||
|
@ -199,7 +194,6 @@ bin/env_parallel.fish freebsd copy freebsd bin/env_parallel.fish env_parallel.fi
|
|||
bin/env_parallel.fish debian copy debian bin/env_parallel.fish env_parallel.fish
|
||||
bin/env_parallel.fish hurd copy hurd bin/env_parallel.fish env_parallel.fish
|
||||
bin/env_parallel.fish minix copy minix bin/env_parallel.fish env_parallel.fish
|
||||
bin/env_parallel.fish minix cat: stdout: no space left on device
|
||||
bin/env_parallel.ksh qnx copy qnx bin/env_parallel.ksh env_parallel.ksh
|
||||
bin/env_parallel.ksh pidora copy pidora bin/env_parallel.ksh env_parallel.ksh
|
||||
bin/env_parallel.ksh tru64 copy tru64 bin/env_parallel.ksh env_parallel.ksh
|
||||
|
@ -225,7 +219,6 @@ bin/env_parallel.ksh freebsd copy freebsd bin/env_parallel.ksh env_parallel.ksh
|
|||
bin/env_parallel.ksh debian copy debian bin/env_parallel.ksh env_parallel.ksh
|
||||
bin/env_parallel.ksh hurd copy hurd bin/env_parallel.ksh env_parallel.ksh
|
||||
bin/env_parallel.ksh minix copy minix bin/env_parallel.ksh env_parallel.ksh
|
||||
bin/env_parallel.ksh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.mksh qnx copy qnx bin/env_parallel.mksh env_parallel.mksh
|
||||
bin/env_parallel.mksh pidora copy pidora bin/env_parallel.mksh env_parallel.mksh
|
||||
bin/env_parallel.mksh tru64 copy tru64 bin/env_parallel.mksh env_parallel.mksh
|
||||
|
@ -251,7 +244,6 @@ bin/env_parallel.mksh freebsd copy freebsd bin/env_parallel.mksh env_parallel.mk
|
|||
bin/env_parallel.mksh debian copy debian bin/env_parallel.mksh env_parallel.mksh
|
||||
bin/env_parallel.mksh hurd copy hurd bin/env_parallel.mksh env_parallel.mksh
|
||||
bin/env_parallel.mksh minix copy minix bin/env_parallel.mksh env_parallel.mksh
|
||||
bin/env_parallel.mksh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.pdksh qnx copy qnx bin/env_parallel.pdksh env_parallel.pdksh
|
||||
bin/env_parallel.pdksh pidora copy pidora bin/env_parallel.pdksh env_parallel.pdksh
|
||||
bin/env_parallel.pdksh tru64 copy tru64 bin/env_parallel.pdksh env_parallel.pdksh
|
||||
|
@ -277,7 +269,6 @@ bin/env_parallel.pdksh freebsd copy freebsd bin/env_parallel.pdksh env_parallel.
|
|||
bin/env_parallel.pdksh debian copy debian bin/env_parallel.pdksh env_parallel.pdksh
|
||||
bin/env_parallel.pdksh hurd copy hurd bin/env_parallel.pdksh env_parallel.pdksh
|
||||
bin/env_parallel.pdksh minix copy minix bin/env_parallel.pdksh env_parallel.pdksh
|
||||
bin/env_parallel.pdksh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.sh qnx copy qnx bin/env_parallel.sh env_parallel.sh
|
||||
bin/env_parallel.sh pidora copy pidora bin/env_parallel.sh env_parallel.sh
|
||||
bin/env_parallel.sh tru64 copy tru64 bin/env_parallel.sh env_parallel.sh
|
||||
|
@ -303,7 +294,6 @@ bin/env_parallel.sh freebsd copy freebsd bin/env_parallel.sh env_parallel.sh
|
|||
bin/env_parallel.sh debian copy debian bin/env_parallel.sh env_parallel.sh
|
||||
bin/env_parallel.sh hurd copy hurd bin/env_parallel.sh env_parallel.sh
|
||||
bin/env_parallel.sh minix copy minix bin/env_parallel.sh env_parallel.sh
|
||||
bin/env_parallel.sh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.tcsh qnx copy qnx bin/env_parallel.tcsh env_parallel.tcsh
|
||||
bin/env_parallel.tcsh pidora copy pidora bin/env_parallel.tcsh env_parallel.tcsh
|
||||
bin/env_parallel.tcsh tru64 copy tru64 bin/env_parallel.tcsh env_parallel.tcsh
|
||||
|
@ -329,7 +319,6 @@ bin/env_parallel.tcsh freebsd copy freebsd bin/env_parallel.tcsh env_parallel.tc
|
|||
bin/env_parallel.tcsh debian copy debian bin/env_parallel.tcsh env_parallel.tcsh
|
||||
bin/env_parallel.tcsh hurd copy hurd bin/env_parallel.tcsh env_parallel.tcsh
|
||||
bin/env_parallel.tcsh minix copy minix bin/env_parallel.tcsh env_parallel.tcsh
|
||||
bin/env_parallel.tcsh minix cat: stdout: no space left on device
|
||||
bin/env_parallel.zsh qnx copy qnx bin/env_parallel.zsh env_parallel.zsh
|
||||
bin/env_parallel.zsh pidora copy pidora bin/env_parallel.zsh env_parallel.zsh
|
||||
bin/env_parallel.zsh tru64 copy tru64 bin/env_parallel.zsh env_parallel.zsh
|
||||
|
@ -355,7 +344,6 @@ bin/env_parallel.zsh freebsd copy freebsd bin/env_parallel.zsh env_parallel.zsh
|
|||
bin/env_parallel.zsh debian copy debian bin/env_parallel.zsh env_parallel.zsh
|
||||
bin/env_parallel.zsh hurd copy hurd bin/env_parallel.zsh env_parallel.zsh
|
||||
bin/env_parallel.zsh minix copy minix bin/env_parallel.zsh env_parallel.zsh
|
||||
bin/env_parallel.zsh minix cat: stdout: no space left on device
|
||||
bin/parcat qnx copy qnx bin/parcat parcat
|
||||
bin/parcat pidora copy pidora bin/parcat parcat
|
||||
bin/parcat tru64 copy tru64 bin/parcat parcat
|
||||
|
@ -381,7 +369,6 @@ bin/parcat freebsd copy freebsd bin/parcat parcat
|
|||
bin/parcat debian copy debian bin/parcat parcat
|
||||
bin/parcat hurd copy hurd bin/parcat parcat
|
||||
bin/parcat minix copy minix bin/parcat parcat
|
||||
bin/parcat minix cat: stdout: no space left on device
|
||||
bin/stdout qnx copy qnx bin/stdout stdout
|
||||
bin/stdout pidora copy pidora bin/stdout stdout
|
||||
bin/stdout tru64 copy tru64 bin/stdout stdout
|
||||
|
|
Loading…
Reference in a new issue