From 1ba05d3bb766eb6d4bd25bbb31e41ce91669a9c0 Mon Sep 17 00:00:00 2001 From: Ole Tange Date: Mon, 21 Oct 2019 21:18:32 +0200 Subject: [PATCH] Released as 20191022 ('DrivingIT') --- NEWS | 35 ++++++++++++++++++++++ README | 20 ++++++------- configure | 20 ++++++------- configure.ac | 2 +- doc/citation-notice-faq.txt | 8 ++--- doc/haikus | 3 ++ doc/release_new_version | 20 +++++++++---- packager/obs/home:tange/parallel/.osc/_files | 12 ++++---- .../obs/home:tange/parallel/.osc/parallel.spec | 2 +- packager/obs/home:tange/parallel/parallel.spec | 2 +- src/niceload | 2 +- src/parallel | 15 ++++++---- src/parallel.pod | 27 ++++++++--------- src/parallel_alternatives.pod | 23 ++++++++++++++ src/sql | 2 +- testsuite/tests-to-run/parallel-local-1s.sh | 8 +++++ testsuite/tests-to-run/parallel-local-30s.sh | 5 ++-- testsuite/tests-to-run/parallel-local-ssh9.sh | 13 ++++---- testsuite/wanted-results/parallel-local-1s | 2 ++ testsuite/wanted-results/parallel-local22 | 2 +- testsuite/wanted-results/parallel-polarhome | 22 +++++++------- 21 files changed, 167 insertions(+), 78 deletions(-) rewrite packager/obs/home:tange/parallel/.osc/_files (97%) diff --git a/NEWS b/NEWS index a73ac0f3..0f829bfc 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,38 @@ +20191022 + +* --tee will use --output-error=warn-nopipe if supported by tee. + +* GNU Parallel will be presented at Driving IT 2019: + https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools + +* UMN Duluth: Job parallelization with task arrays and GNU parallel + https://www.msi.umn.edu/tutorials/umn-duluth-job-parallelization-task-arrays-and-gnu-parallel + +* Genome updater uses GNU Parallel + https://github.com/pirovc/genome_updater + +* Using GNU-Parallel for bioinformatics + https://www.danielecook.com/using-gnu-parallel-for-bioinformatics/ + +* Speeding up PostgreSQL ETL pipeline with the help of GODS + https://cfengine.com/company/blog-detail/speeding-up-postgresql-etl-pipeline-with-the-help-of-gods/ + +* Runing linux commands in parallel + https://dev.to/voyeg3r/runing-linux-commands-in-parallel-4ff8 + +* Research Computing University of Colorado Boulder contains an intro + to GNU Parallel + https://readthedocs.org/projects/curc/downloads/pdf/latest/ + +* 如何使用Parallel在Shell中并行执行命令 + https://www.myfreax.com/gnu-parallel/ + +* 如何测试 Amazon Elastic File System + https://aws.amazon.com/cn/blogs/china/how-to-test-drive-amazon-elastic-file-system/ + +* Bug fixes and man page updates. + + 20190922 * --nice is now inherited by the nice level that GNU Parallel is diff --git a/README b/README index bd7e0d1e..570b9a68 100644 --- a/README +++ b/README @@ -54,11 +54,11 @@ document. Full installation of GNU Parallel is as simple as: - wget https://ftpmirror.gnu.org/parallel/parallel-20190922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20190922.tar.bz2.sig - gpg parallel-20190922.tar.bz2.sig - bzip2 -dc parallel-20190922.tar.bz2 | tar xvf - - cd parallel-20190922 + wget https://ftpmirror.gnu.org/parallel/parallel-20191022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20191022.tar.bz2.sig + gpg parallel-20191022.tar.bz2.sig + bzip2 -dc parallel-20191022.tar.bz2 | tar xvf - + cd parallel-20191022 ./configure && make && sudo make install @@ -67,11 +67,11 @@ Full installation of GNU Parallel is as simple as: If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget https://ftpmirror.gnu.org/parallel/parallel-20190922.tar.bz2 - wget https://ftpmirror.gnu.org/parallel/parallel-20190922.tar.bz2.sig - gpg parallel-20190922.tar.bz2.sig - bzip2 -dc parallel-20190922.tar.bz2 | tar xvf - - cd parallel-20190922 + wget https://ftpmirror.gnu.org/parallel/parallel-20191022.tar.bz2 + wget https://ftpmirror.gnu.org/parallel/parallel-20191022.tar.bz2.sig + gpg parallel-20191022.tar.bz2.sig + bzip2 -dc parallel-20191022.tar.bz2 | tar xvf - + cd parallel-20191022 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff --git a/configure b/configure index 28e8d67f..7fce856f 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20190922. +# Generated by GNU Autoconf 2.69 for parallel 20191022. # # Report bugs to . # @@ -579,8 +579,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20190922' -PACKAGE_STRING='parallel 20190922' +PACKAGE_VERSION='20191022' +PACKAGE_STRING='parallel 20191022' PACKAGE_BUGREPORT='bug-parallel@gnu.org' PACKAGE_URL='' @@ -1214,7 +1214,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures parallel 20190922 to adapt to many kinds of systems. +\`configure' configures parallel 20191022 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1281,7 +1281,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20190922:";; + short | recursive ) echo "Configuration of parallel 20191022:";; esac cat <<\_ACEOF @@ -1357,7 +1357,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20190922 +parallel configure 20191022 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1374,7 +1374,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by parallel $as_me 20190922, which was +It was created by parallel $as_me 20191022, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2237,7 +2237,7 @@ fi # Define the identity of the package. PACKAGE='parallel' - VERSION='20190922' + VERSION='20191022' cat >>confdefs.h <<_ACEOF @@ -2880,7 +2880,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by parallel $as_me 20190922, which was +This file was extended by parallel $as_me 20191022, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2942,7 +2942,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -parallel config.status 20190922 +parallel config.status 20191022 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 280e10ec..985e6f85 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20190922], [bug-parallel@gnu.org]) +AC_INIT([parallel], [20191022], [bug-parallel@gnu.org]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/doc/citation-notice-faq.txt b/doc/citation-notice-faq.txt index 6c1139ac..59317262 100644 --- a/doc/citation-notice-faq.txt +++ b/doc/citation-notice-faq.txt @@ -1,4 +1,4 @@ -== Citation notice FAQ == +== Citation FAQ == > Why does GNU Parallel show a citation notice? @@ -9,7 +9,7 @@ maintaining GNU Parallel. This is much easier to get if GNU Parallel is cited in scientific journals, and history has shown that researchers forget to do this if they are not reminded explicitly. -It is therefore important for the long term survival of GNU Parallel +It is therefore important for the long-term survival of GNU Parallel that it is cited. The citation notice makes users aware of this. See also: https://lists.gnu.org/archive/html/parallel/2013-11/msg00006.html @@ -139,8 +139,8 @@ should cite, over having many users, who do not know they should cite. If the goal had been to get more users, then the license would have been public domain. -This is because a long term survival with funding is more important -than short term gains in popularity that can be achieved by being +This is because a long-term survival with funding is more important +than short-term gains in popularity that can be achieved by being distributed as part of a distribution. diff --git a/doc/haikus b/doc/haikus index 372441b2..0c8011d7 100644 --- a/doc/haikus +++ b/doc/haikus @@ -58,6 +58,9 @@ GNU parallel has helped me kill a Hadoop cluster before. === Used === + I've said it before: The command line program GNU Parallel is a godsend. + -- Jo Chr. Oterhals @oterhals + IMHO, SQLite and GNU Parallel are among the world's great software. -- singe@reddit diff --git a/doc/release_new_version b/doc/release_new_version index 893adeec..76ecd710 100644 --- a/doc/release_new_version +++ b/doc/release_new_version @@ -221,21 +221,31 @@ See https://www.gnu.org/software/parallel/10-years-anniversary.html Quote of the month: - <<>> + I've said it before: The command line program GNU Parallel is a godsend. + -- Jo Chr. Oterhals @oterhals@twitter New in this release: -Uses GNU Parallel https://github.com/pirovc/genome_updater +* --tee will use --output-error=warn-nopipe if supported by tee. -Using GNU-Parallel for bioinformatics https://www.danielecook.com/using-gnu-parallel-for-bioinformatics/ +* GNU Parallel will be presented at Driving IT 2019: https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools -Speeding up PostgreSQL ETL pipeline with the help of GODS https://cfengine.com/company/blog-detail/speeding-up-postgresql-etl-pipeline-with-the-help-of-gods/ +* UMN Duluth: Job parallelization with task arrays and GNU parallel https://www.msi.umn.edu/tutorials/umn-duluth-job-parallelization-task-arrays-and-gnu-parallel +* Genome updater uses GNU Parallel https://github.com/pirovc/genome_updater -https://readthedocs.org/projects/curc/downloads/pdf/latest/ +* Using GNU-Parallel for bioinformatics https://www.danielecook.com/using-gnu-parallel-for-bioinformatics/ + +* Speeding up PostgreSQL ETL pipeline with the help of GODS https://cfengine.com/company/blog-detail/speeding-up-postgresql-etl-pipeline-with-the-help-of-gods/ + +* Runing linux commands in parallel https://dev.to/voyeg3r/runing-linux-commands-in-parallel-4ff8 + +* Research Computing University of Colorado Boulder contains an intro to GNU Parallel https://readthedocs.org/projects/curc/downloads/pdf/latest/ * 如何使用Parallel在Shell中并行执行命令https://www.myfreax.com/gnu-parallel/ +* 如何测试 Amazon Elastic File System https://aws.amazon.com/cn/blogs/china/how-to-test-drive-amazon-elastic-file-system/ + * Bug fixes and man page updates. Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html diff --git a/packager/obs/home:tange/parallel/.osc/_files b/packager/obs/home:tange/parallel/.osc/_files dissimilarity index 97% index ecc06cef..063cf2b4 100644 --- a/packager/obs/home:tange/parallel/.osc/_files +++ b/packager/obs/home:tange/parallel/.osc/_files @@ -1,6 +1,6 @@ - - - - - - + + + + + + diff --git a/packager/obs/home:tange/parallel/.osc/parallel.spec b/packager/obs/home:tange/parallel/.osc/parallel.spec index 17645abd..99d86258 100644 --- a/packager/obs/home:tange/parallel/.osc/parallel.spec +++ b/packager/obs/home:tange/parallel/.osc/parallel.spec @@ -1,7 +1,7 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20190922 +Version: 20191022 Release: 1.3 License: GPL-3.0-or-later Group: Productivity/File utilities diff --git a/packager/obs/home:tange/parallel/parallel.spec b/packager/obs/home:tange/parallel/parallel.spec index 17645abd..99d86258 100644 --- a/packager/obs/home:tange/parallel/parallel.spec +++ b/packager/obs/home:tange/parallel/parallel.spec @@ -1,7 +1,7 @@ Summary: Shell tool for executing jobs in parallel Name: parallel -Version: 20190922 +Version: 20191022 Release: 1.3 License: GPL-3.0-or-later Group: Productivity/File utilities diff --git a/src/niceload b/src/niceload index 383ad545..474d5ee6 100755 --- a/src/niceload +++ b/src/niceload @@ -23,7 +23,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20190922; +$Global::version = 20191022; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff --git a/src/parallel b/src/parallel index 0587c366..e1e9d3f4 100755 --- a/src/parallel +++ b/src/parallel @@ -161,7 +161,8 @@ sub pipepart_setup() { # Set --blocksize = size / no of proc / (- $blocksize) $Global::dummy_jobs = 1; $Global::blocksize = 1 + - int($size / max_jobs_running() / -$opt::blocksize); + int($size / max_jobs_running() / + -multiply_binary_prefix($opt::blocksize)); } @Global::cat_prepends = map { pipe_part_files($_) } @opt::a; # Unget the empty arg as many times as there are parts @@ -188,6 +189,7 @@ sub pipe_tee_setup() { # Test if tee supports --output-error=warn-nopipe `echo | tee --output-error=warn-nopipe /dev/null >/dev/null 2>/dev/null`; my $opt = $? ? "" : "--output-error=warn-nopipe"; + ::debug("init","tee $opt"); # Let tee inherit our stdin # and redirect stdout to null open STDOUT, ">","/dev/null"; @@ -502,7 +504,7 @@ sub pipe_shard_setup() { } else { $script = sharder_script(); } - + # cat foo | sharder sep col fifo1 fifo2 fifo3 ... fifoN if($shardbin =~ /^[a-z_][a-z_0-9]*(\s|$)/i) { @@ -635,7 +637,10 @@ sub find_split_positions($$$) { push(@pos,$pos); } else { # Seek the the block start - seek($fh, $pos, 0) || die; + if(not seek($fh, $pos, 0)) { + ::error("Cannot seek to $pos in $file"); + edit(255); + } while(read($fh,substr($buf,length $buf,0),$dd_block_size)) { if($opt::regexp) { # If match /$recend$recstart/ => Record position @@ -2066,7 +2071,7 @@ sub check_invalid_option_combinations() { sub init_globals() { # Defaults: - $Global::version = 20190922; + $Global::version = 20191022; $Global::progname = 'parallel'; $::name = "GNU Parallel"; $Global::infinity = 2**31; @@ -10383,7 +10388,7 @@ sub push($) { push @{$self->{'arg_list'}}, $record; # Make @arg available for {= =} *Arg::arg = $self->{'arg_list_flat_orig'}; - + my $quote_arg = ($Global::quote_replace and not $Global::quoting); for my $perlexpr (keys %{$self->{'replacecount'}}) { if($perlexpr =~ /^(\d+) /) { diff --git a/src/parallel.pod b/src/parallel.pod index ca5729b2..d2e382f7 100644 --- a/src/parallel.pod +++ b/src/parallel.pod @@ -105,7 +105,7 @@ B: Use B. B: Use B. -=item B<{}> (beta testing) +=item B<{}> Input line. This replacement string will be replaced by a full line read from the input source. The input source is normally stdin @@ -279,7 +279,6 @@ perl quote a string =item Z<> B (or B) -(beta testing) do not quote current replacement string =item Z<> B @@ -1244,9 +1243,9 @@ Similar to B<--memfree>. =back -=item B<--line-buffer> (beta testing) +=item B<--line-buffer> -=item B<--lb> (beta testing) +=item B<--lb> Buffer output on line basis. B<--group> will keep the output together for a whole job. B<--ungroup> allows output to mixup with half a line @@ -1574,20 +1573,20 @@ on remote computers). Print the number of physical CPU cores and exit. -=item B<--number-of-cores> (beta testing) +=item B<--number-of-cores> Print the number of physical CPU cores and exit (used by GNU B itself to determine the number of physical CPU cores on remote computers). -=item B<--number-of-sockets> (beta testing) +=item B<--number-of-sockets> Print the number of filled CPU sockets and exit (used by GNU B itself to determine the number of filled CPU sockets on remote computers). -=item B<--number-of-threads> (beta testing) +=item B<--number-of-threads> Print the number of hyperthreaded CPU cores and exit (used by GNU B itself to determine the number of hyperthreaded CPU cores @@ -1600,7 +1599,7 @@ Overrides an earlier B<--keep-order> (e.g. if set in B<~/.parallel/config>). -=item B<--nice> I (alpha testing) +=item B<--nice> I (beta testing) Run the command at this niceness. @@ -1638,9 +1637,9 @@ B<,,>: See also: B<--rpl> B<{= perl expression =}> -=item B<--profile> I (beta testing) +=item B<--profile> I -=item B<-J> I (beta testing) +=item B<-J> I Use profile I for options. This is useful if you want to have multiple profiles. You could have one profile for running jobs in @@ -2192,7 +2191,7 @@ Only supported in B. See also B<--env>, B<--record-env>. -=item B<--shard> I (alpha testing) +=item B<--shard> I (beta testing) Use I as shard key and shard input to the jobs. @@ -2518,7 +2517,7 @@ to GNU B giving each child its own process group, which is then killed. Process groups are dependant on the tty. -=item B<--tag> (beta testing) +=item B<--tag> Tag lines with arguments. Each output line will be prepended with the arguments and TAB (\t). When combined with B<--onall> or B<--nonall> @@ -2527,7 +2526,7 @@ the lines will be prepended with the sshlogin instead. B<--tag> is ignored when using B<-u>. -=item B<--tagstring> I (beta testing) +=item B<--tagstring> I Tag lines with a string. Each output line will be prepended with I and TAB (\t). I can contain replacement strings such as @@ -4781,7 +4780,7 @@ B<--ssh>. It can also be set on a per server basis (see B<--sshlogin>). -=item $PARALLEL_SSHLOGIN (beta testing) +=item $PARALLEL_SSHLOGIN The environment variable $PARALLEL_SSHLOGIN is set by GNU B and is visible to the jobs started from GNU B. The value is diff --git a/src/parallel_alternatives.pod b/src/parallel_alternatives.pod index d6ee0764..ec7c5dea 100644 --- a/src/parallel_alternatives.pod +++ b/src/parallel_alternatives.pod @@ -2307,6 +2307,29 @@ https://github.com/flesler/parallel https://github.com/Julian/Verge +https://github.com/ExpectationMax/simple_gpu_scheduler + simple_gpu_scheduler --gpus 0 1 2 < gpu_commands.txt + parallel -j3 --shuf CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =} {=uq;=}' < gpu_commands.txt + + simple_hypersearch "python3 train_dnn.py --lr {lr} --batch_size {bs}" -p lr 0.001 0.0005 0.0001 -p bs 32 64 128 | simple_gpu_scheduler --gpus 0,1,2 + parallel --header : --shuf -j3 -v CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =}' python3 train_dnn.py --lr {lr} --batch_size {bs} ::: lr 0.001 0.0005 0.0001 ::: bs 32 64 128 + + simple_hypersearch "python3 train_dnn.py --lr {lr} --batch_size {bs}" --n-samples 5 -p lr 0.001 0.0005 0.0001 -p bs 32 64 128 | simple_gpu_scheduler --gpus 0,1,2 + parallel --header : --shuf CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1; seq() > 5 and skip() =}' python3 train_dnn.py --lr {lr} --batch_size {bs} ::: lr 0.001 0.0005 0.0001 ::: bs 32 64 128 + + touch gpu.queue + tail -f -n 0 gpu.queue | simple_gpu_scheduler --gpus 0,1,2 & + echo "my_command_with | and stuff > logfile" >> gpu.queue + + touch gpu.queue + tail -f -n 0 gpu.queue | parallel -j3 CUDA_VISIBLE_DEVICES='{=1 $_=slot()-1 =} {=uq;=}' & + # Needed to fill job slots once + seq 3 | parallel echo true >> gpu.queue + # Add jobs + echo "my_command_with | and stuff > logfile" >> gpu.queue + # Needed to flush output from completed jobs + seq 3 | parallel echo true >> gpu.queue + =head1 TESTING OTHER TOOLS diff --git a/src/sql b/src/sql index 12f87d41..4bcdd555 100755 --- a/src/sql +++ b/src/sql @@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile; exit ($err); sub parse_options { - $Global::version = 20190922; + $Global::version = 20191022; $Global::progname = 'sql'; # This must be done first as this may exec myself diff --git a/testsuite/tests-to-run/parallel-local-1s.sh b/testsuite/tests-to-run/parallel-local-1s.sh index b4c6bc71..7c9ce8dc 100644 --- a/testsuite/tests-to-run/parallel-local-1s.sh +++ b/testsuite/tests-to-run/parallel-local-1s.sh @@ -2165,6 +2165,14 @@ par_null_resume() { rm "$log" } +par_block_negative_prefix() { + tmp=`mktemp` + seq 100000 > $tmp + echo '### This should generate 10*2 jobs' + parallel -j2 -a $tmp --pipepart --block -0.01k -k md5sum | wc + rm $tmp +} + export -f $(compgen -A function | grep par_) compgen -A function | grep par_ | LC_ALL=C sort | parallel -j6 --tag -k --joblog /tmp/jl-`basename $0` '{} 2>&1' diff --git a/testsuite/tests-to-run/parallel-local-30s.sh b/testsuite/tests-to-run/parallel-local-30s.sh index 1cf99138..7e4fd02d 100755 --- a/testsuite/tests-to-run/parallel-local-30s.sh +++ b/testsuite/tests-to-run/parallel-local-30s.sh @@ -31,8 +31,8 @@ par_memory_leak() { export -f a_run echo "### Test for memory leaks" echo "Of 100 runs of 1 job none should be bigger than a 3000 job run" - small_max=$(seq 100 | parallel a_run 1 | jq -s max) - big=$(a_run 3000) + . `which env_parallel.bash` + parset small_max,big ::: 'seq 100 | parallel a_run 1 | jq -s max' 'a_run 3000' if [ $small_max -lt $big ] ; then echo "Bad: Memleak likely." else @@ -181,6 +181,7 @@ par_linebuffer_files() { rm -rf "/tmp/par48658-$compress" } export -f doit + # lrz complains 'Warning, unable to set nice value on thread' parallel -j1 --tag -k doit ::: zstd pzstd clzip lz4 lzop pigz pxz gzip plzip pbzip2 lzma xz lzip bzip2 lbzip2 lrz } diff --git a/testsuite/tests-to-run/parallel-local-ssh9.sh b/testsuite/tests-to-run/parallel-local-ssh9.sh index d6a1512b..e5b9cfb3 100644 --- a/testsuite/tests-to-run/parallel-local-ssh9.sh +++ b/testsuite/tests-to-run/parallel-local-ssh9.sh @@ -181,11 +181,14 @@ par_no_route_to_host() { ( # Cache a list of hosts that fail fast with 'No route' - # Filter the list 4 times to make sure to get good hosts - renice 10 -p $$ >/dev/null - findhosts | filterhosts | filterhosts | filterhosts | - filterhosts | filterhosts | head > /tmp/filtered.$$ - mv /tmp/filtered.$$ /tmp/filtered.hosts + # Filter the list 5 times to make sure to get good hosts + export -f findhosts + export -f filterhosts + nice bash -c ' + findhosts | filterhosts | filterhosts | filterhosts | + filterhosts | filterhosts | head > /tmp/filtered.$$ + mv /tmp/filtered.$$ /tmp/filtered.hosts + ' ) & ( # We just need one of each to complete diff --git a/testsuite/wanted-results/parallel-local-1s b/testsuite/wanted-results/parallel-local-1s index f19f8841..249031a3 100644 --- a/testsuite/wanted-results/parallel-local-1s +++ b/testsuite/wanted-results/parallel-local-1s @@ -1,3 +1,5 @@ +par_block_negative_prefix ### This should generate 10*2 jobs +par_block_negative_prefix 20 40 720 par_compress_prg_fails ### bug #44546: If --compress-program fails: fail par_compress_prg_fails 1 par_compress_prg_fails parallel: Error: false failed. diff --git a/testsuite/wanted-results/parallel-local22 b/testsuite/wanted-results/parallel-local22 index ed306544..4f65788a 100644 --- a/testsuite/wanted-results/parallel-local22 +++ b/testsuite/wanted-results/parallel-local22 @@ -83,7 +83,7 @@ echo '### bug #42893: --block should not cause decimals in cat_partial' echo '### bug #42892: parallel -a nonexiting --pipepart' ### bug #42892: parallel -a nonexiting --pipepart parallel --pipepart -a nonexisting wc -parallel: Error: nonexisting is neither a file nor a block device +parallel: Error: File not found: nonexisting echo '### added transfersize/returnsize to local jobs' ### added transfersize/returnsize to local jobs echo '### normal' diff --git a/testsuite/wanted-results/parallel-polarhome b/testsuite/wanted-results/parallel-polarhome index 138043ae..6ecee29e 100644 --- a/testsuite/wanted-results/parallel-polarhome +++ b/testsuite/wanted-results/parallel-polarhome @@ -788,6 +788,17 @@ freebsd ~/.profile freebsd ~/.cshrc freebsd ~/.tcshrc freebsd install-OK +hpux Installed env_parallel in: +hpux ~/.bashrc +hpux ~/.shrc +hpux ~/.zshenv +hpux ~/.config/fish/config.fish +hpux ~/.kshrc +hpux ~/.mkshrc +hpux ~/.profile +hpux ~/.cshrc +hpux ~/.tcshrc +hpux install-OK hpux-ia64 Installed env_parallel in: hpux-ia64 ~/.bashrc hpux-ia64 ~/.shrc @@ -811,17 +822,6 @@ hurd ~/.profile hurd ~/.cshrc hurd ~/.tcshrc hurd install-OK -hpux Installed env_parallel in: -hpux ~/.bashrc -hpux ~/.shrc -hpux ~/.zshenv -hpux ~/.config/fish/config.fish -hpux ~/.kshrc -hpux ~/.mkshrc -hpux ~/.profile -hpux ~/.cshrc -hpux ~/.tcshrc -hpux install-OK hpux-ia64 Installed env_parallel in: hpux-ia64 /home/t/tange/.bashrc hpux-ia64 /home/t/tange/.shrc -- 2.11.4.GIT