Hello community, here is the log from the commit of package gnu_parallel for openSUSE:Factory checked in at 2016-02-25 22:07:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gnu_parallel (Old) and /work/SRC/openSUSE:Factory/.gnu_parallel.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnu_parallel" Changes: -------- --- /work/SRC/openSUSE:Factory/gnu_parallel/gnu_parallel.changes 2016-01-28 17:22:55.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/gnu_parallel.changes 2016-02-26 00:31:29.000000000 +0100 @@ -1,0 +2,6 @@ +Mon Feb 22 16:52:11 UTC 2016 - [email protected] + +- Update to 20160222 + * Bug fixes and man page updates. + +------------------------------------------------------------------- Old: ---- parallel-20160122.tar.bz2 parallel-20160122.tar.bz2.sig New: ---- parallel-20160222.tar.bz2 parallel-20160222.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gnu_parallel.spec ++++++ --- /var/tmp/diff_new_pack.166C3G/_old 2016-02-26 00:31:32.000000000 +0100 +++ /var/tmp/diff_new_pack.166C3G/_new 2016-02-26 00:31:32.000000000 +0100 @@ -17,7 +17,7 @@ Name: gnu_parallel -Version: 20160122 +Version: 20160222 Release: 0 Summary: Shell tool for executing jobs in parallel License: GPL-3.0+ ++++++ parallel-20160122.tar.bz2 -> parallel-20160222.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/NEWS new/parallel-20160222/NEWS --- old/parallel-20160122/NEWS 2016-01-23 10:05:12.000000000 +0100 +++ new/parallel-20160222/NEWS 2016-02-21 22:27:54.000000000 +0100 @@ -1,3 +1,34 @@ +20160222 + +* Vote for new community on Superuser, Ask Ubuntu, Unix&Linux + http://meta.superuser.com/questions/11127/community-promotion-ads-2016/11225#11225 + http://meta.askubuntu.com/questions/14925/community-promotion-ads-2016/15046#15046 + http://meta.unix.stackexchange.com/questions/3854/community-promotion-ads-2016/3893#3893 + +* Daily Quick Tip: parallel + https://medium.com/@jacaetevha/daily-quick-tip-parallel-8772435f6582 + +* Downloading a list of URLs + http://blog.gypsydave5.com/2016/02/04/xargs-and-curl/ + +* Using GNU Parallel and ImageMagick for Conversions + http://blog.fractalcomic.com/tutorials/using-gnu-parallel-and-imagemagick-for-conversions/ + +* Running bash commands in parallel + http://linuxcommando.blogspot.dk/2016/01/running-bash-commands-in-parallel.html + +* parallel processing in PDAL + https://smathermather.wordpress.com/2016/01/28/parallel-processing-in-pdal/ + +* A Million Text Files And A Single Laptop + http://randyzwitch.com/gnu-parallel-medium-data/ + +* 「今日から使い切る」ための GNU Parallelによる並列処理入門 + http://www.slideshare.net/koji_matsuda/gnu-parallel + +* Bug fixes and man page updates. + + 20160122 * --sql DBURL uses DBURL as storage for jobs and output. It does not @@ -52,21 +83,35 @@ * --transfer is now an alias for --transferfile {}. -* --transferfile works like --transfer, but takes an argument like --return. This makes it possible to combine transferring files with multiple input sources: parallel -S server --tf {1} wc {2} {1} ::: * ::: -l -w -c - -* total_jobs() can now be used in {= =}: parallel echo job {#} of '{= $_=total_jobs() =}' ::: {1..50} - -* GNU Parallel was cited in: Evolution and Learning in Heterogeneous Environments http://research.gold.ac.uk/15078/1/COM_thesis_JonesD_2015.pdf - -* GNU Parallel was cited in: Contrasting genetic architectures of schizophrenia and other complex diseases using fast variance-components analysis http://www.nature.com/ng/journal/v47/n12/full/ng.3431.html - -* GNU Parallel was cited in: Efficient Retrieval of Key Material for Inspecting Potentially Malicious Traffic in the Cloud http://www.cs.bham.ac.uk/~bxb/Papres/2015.1.pdf - -* GNU Parallel was cited in: Achieving Consistent Doppler Measurements from SDO/HMI Vector Field Inversions http://arxiv.org/pdf/1511.06500.pdf +* --transferfile works like --transfer, but takes an argument like + --return. This makes it possible to combine transferring files + with multiple input sources: parallel -S server --tf {1} wc {2} + {1} ::: * ::: -l -w -c + +* total_jobs() can now be used in {= =}: parallel echo job {#} of '{= + $_=total_jobs() =}' ::: {1..50} + +* GNU Parallel was cited in: Evolution and Learning in Heterogeneous + Environments + http://research.gold.ac.uk/15078/1/COM_thesis_JonesD_2015.pdf + +* GNU Parallel was cited in: Contrasting genetic architectures of + schizophrenia and other complex diseases using fast + variance-components analysis + http://www.nature.com/ng/journal/v47/n12/full/ng.3431.html + +* GNU Parallel was cited in: Efficient Retrieval of Key Material for + Inspecting Potentially Malicious Traffic in the Cloud + http://www.cs.bham.ac.uk/~bxb/Papres/2015.1.pdf + +* GNU Parallel was cited in: Achieving Consistent Doppler Measurements + from SDO/HMI Vector Field Inversions + http://arxiv.org/pdf/1511.06500.pdf * Flo uses GNU Parallel: https://github.com/wurmlab/flo -* 使用 GNU parallel 來平行運算http://mutolisp.logdown.com/posts/316959-using-gnu-parallel-to-parallel-computing +* 使用 GNU parallel 來平行運算 + http://mutolisp.logdown.com/posts/316959-using-gnu-parallel-to-parallel-computing * Bug fixes and man page updates. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/README new/parallel-20160222/README --- old/parallel-20160122/README 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/README 2016-02-21 22:24:57.000000000 +0100 @@ -40,9 +40,9 @@ Full installation of GNU Parallel is as simple as: - wget http://ftpmirror.gnu.org/parallel/parallel-20160122.tar.bz2 - bzip2 -dc parallel-20160122.tar.bz2 | tar xvf - - cd parallel-20160122 + wget http://ftpmirror.gnu.org/parallel/parallel-20160222.tar.bz2 + bzip2 -dc parallel-20160222.tar.bz2 | tar xvf - + cd parallel-20160222 ./configure && make && sudo make install @@ -51,9 +51,9 @@ If you are not root you can add ~/bin to your path and install in ~/bin and ~/share: - wget http://ftpmirror.gnu.org/parallel/parallel-20160122.tar.bz2 - bzip2 -dc parallel-20160122.tar.bz2 | tar xvf - - cd parallel-20160122 + wget http://ftpmirror.gnu.org/parallel/parallel-20160222.tar.bz2 + bzip2 -dc parallel-20160222.tar.bz2 | tar xvf - + cd parallel-20160222 ./configure --prefix=$HOME && make && make install Or if your system lacks 'make' you can simply copy src/parallel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/configure new/parallel-20160222/configure --- old/parallel-20160122/configure 2016-01-23 09:53:32.000000000 +0100 +++ new/parallel-20160222/configure 2016-02-21 22:25:07.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for parallel 20160122. +# Generated by GNU Autoconf 2.69 for parallel 20160222. # # Report bugs to <[email protected]>. # @@ -579,8 +579,8 @@ # Identity of this package. PACKAGE_NAME='parallel' PACKAGE_TARNAME='parallel' -PACKAGE_VERSION='20160122' -PACKAGE_STRING='parallel 20160122' +PACKAGE_VERSION='20160222' +PACKAGE_STRING='parallel 20160222' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1203,7 +1203,7 @@ # 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 20160122 to adapt to many kinds of systems. +\`configure' configures parallel 20160222 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1269,7 +1269,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of parallel 20160122:";; + short | recursive ) echo "Configuration of parallel 20160222:";; esac cat <<\_ACEOF @@ -1345,7 +1345,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -parallel configure 20160122 +parallel configure 20160222 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1362,7 +1362,7 @@ 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 20160122, which was +It was created by parallel $as_me 20160222, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2225,7 +2225,7 @@ # Define the identity of the package. PACKAGE='parallel' - VERSION='20160122' + VERSION='20160222' cat >>confdefs.h <<_ACEOF @@ -2867,7 +2867,7 @@ # 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 20160122, which was +This file was extended by parallel $as_me 20160222, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2929,7 +2929,7 @@ 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 20160122 +parallel config.status 20160222 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/configure.ac new/parallel-20160222/configure.ac --- old/parallel-20160122/configure.ac 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/configure.ac 2016-02-21 22:24:56.000000000 +0100 @@ -1,4 +1,4 @@ -AC_INIT([parallel], [20160122], [[email protected]]) +AC_INIT([parallel], [20160222], [[email protected]]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/niceload new/parallel-20160222/src/niceload --- old/parallel-20160122/src/niceload 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/src/niceload 2016-02-21 22:24:56.000000000 +0100 @@ -24,7 +24,7 @@ use strict; use Getopt::Long; $Global::progname="niceload"; -$Global::version = 20160122; +$Global::version = 20160222; Getopt::Long::Configure("bundling","require_order"); get_options_from_array(\@ARGV) || die_usage(); if($opt::version) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel new/parallel-20160222/src/parallel --- old/parallel-20160122/src/parallel 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/src/parallel 2016-02-21 22:24:56.000000000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/env perl -# Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015 Ole Tange -# and Free Software Foundation, Inc. +# Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 +# Ole Tange and Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1176,12 +1176,13 @@ sub init_globals { # Defaults: - $Global::version = 20160122; + $Global::version = 20160222; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; $Global::verbose = 0; $Global::quoting = 0; + $Global::total_completed = 0; # Read only table with default --rpl values %Global::replace = ( @@ -1460,6 +1461,7 @@ if(/$joblog_regexp/o) { # This is 30% faster than set_job_already_run($1); vec($Global::job_already_run,($1||0),1) = 1; + $Global::total_completed++; $group[$1-1] = "true"; } elsif(/(\d+)\s+\S+(\s+[-0-9.]+){6}\s+(.*)$/) { $group[$1-1] = $3 @@ -1495,6 +1497,7 @@ if(/$joblog_regexp/o) { # This is 30% faster than set_job_already_run($1); vec($Global::job_already_run,($1||0),1) = 1; + $Global::total_completed++; } elsif(not /\d+\s+[^\s]+\s+([-0-9.]+\s+){6}/) { ::error("Format of '$opt::joblog' is wrong: $_"); ::wait_and_exit(255); @@ -2026,7 +2029,6 @@ # Returns: N/A $Global::total_running = 0; $Global::total_started = 0; - $Global::total_completed = 0; $Global::tty_taken = 0; $SIG{USR1} = \&list_running_jobs; $SIG{USR2} = \&toggle_progress; @@ -3601,8 +3603,8 @@ # Returns: N/A print join("\n", "GNU $Global::progname $Global::version", - "Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015 Ole Tange", - "and Free Software Foundation, Inc.", + "Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016", + "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.", "GNU $Global::progname comes with no warranty.", @@ -4713,10 +4715,12 @@ # svr5 => sysv # ultrix => ps -ax | awk '{print $3,$5}' # unixware => ps -el|awk '{print $2,$14,$15}' - my $ps = q{ + my $ps = ::spacefree(1,q{ $sysv="ps -ef -o s -o comm"; $sysv2="ps -ef -o state -o comm"; $bsd="ps ax -o state,command"; + # Treat threads as processes + $bsd2="ps axH -o state,command"; $psel="ps -el|awk '{ print \$2,\$14,\$15 }'"; $cygwin=q{ perl -ne 'close STDERR; /Name/ and print"\n"; /(Name|Pid|Ppid|State):\s+(\S+)/ and print "$2\t";' /proc/*/status | @@ -4728,11 +4732,11 @@ 'darwin' => $bsd, 'dec_osf' => $sysv2, 'dragonfly' => $bsd, - 'freebsd' => $bsd, + 'freebsd' => $bsd2, 'gnu' => $bsd, 'hpux' => $psel, 'irix' => $sysv2, - 'linux' => $bsd, + 'linux' => $bsd2, 'minix' => "ps el|awk '{print \$1,\$11}'", 'mirbsd' => $bsd, 'msys' => $sysv, @@ -4745,8 +4749,7 @@ 'ultrix' => "ps -ax | awk '{print \$3,\$5}'", ); print `$ps{$^O}`; - }; - $ps =~ s/[ \t\n]+/ /g; + }); $cmd = "perl -e ".::shell_quote_scalar($ps); } return $cmd; @@ -7917,6 +7920,7 @@ my $self = shift; my ($fdno,$in_fh,$out_fd) = @_; my $buf; + local $/ = "\n"; close $self->fh($fdno,"w"); if($? and $opt::compress) { ::error($opt::compress_program." failed."); @@ -9288,7 +9292,7 @@ my $class = shift; my $fhs = shift; for my $fh (@$fhs) { - if(-t $fh) { + if(-t $fh and -t ($Global::status_fd || *STDERR)) { ::warning("Input is read from the terminal.", "Only experts do this on purpose. ". "Press CTRL-D to exit."); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel.1 new/parallel-20160222/src/parallel.1 --- old/parallel-20160122/src/parallel.1 2016-01-19 16:05:05.000000000 +0100 +++ new/parallel-20160222/src/parallel.1 2016-02-21 22:25:15.000000000 +0100 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PARALLEL 1" -.TH PARALLEL 1 "2016-01-19" "20160101" "parallel" +.TH PARALLEL 1 "2016-02-21" "20160222" "parallel" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -434,7 +434,7 @@ shell quote a string .IP " \fB\f(BItotal_jobs()\fB\fR" 15 .IX Item " total_jobs()" -number of jobs in total (beta testing) +number of jobs in total .RE .RS 9 .Sp @@ -559,11 +559,11 @@ \& seq 1000 | parallel \-j30 \-\-bar \*(Aq(echo {};sleep 0.1)\*(Aq \e \& 2> >(zenity \-\-progress \-\-auto\-kill) | wc .Ve -.IP "\fB\-\-basefile\fR \fIfile\fR (beta testing)" 9 -.IX Item "--basefile file (beta testing)" +.IP "\fB\-\-basefile\fR \fIfile\fR" 9 +.IX Item "--basefile file" .PD 0 -.IP "\fB\-\-bf\fR \fIfile\fR (beta testing)" 9 -.IX Item "--bf file (beta testing)" +.IP "\fB\-\-bf\fR \fIfile\fR" 9 +.IX Item "--bf file" .PD \&\fIfile\fR will be transferred to each sshlogin before a jobs is started. It will be removed if \fB\-\-cleanup\fR is active. The file may be @@ -643,8 +643,8 @@ Implies \fB\-\-pipe\fR unless \fB\-\-pipepart\fR is used. .Sp See also \fB\-\-fifo\fR. -.IP "\fB\-\-cleanup\fR (beta testing)" 9 -.IX Item "--cleanup (beta testing)" +.IP "\fB\-\-cleanup\fR" 9 +.IX Item "--cleanup" Remove transferred files. \fB\-\-cleanup\fR will remove the transferred files on the remote computer after processing is done. .Sp @@ -1124,11 +1124,11 @@ processes on the computer is less than \fImax-load\fR. \fImax-load\fR uses the same syntax as \fB\-\-jobs\fR, so \fI100%\fR for one per \s-1CPU\s0 is a valid setting. Only difference is 0 which is interpreted as 0.01. -.IP "\fB\-\-controlmaster\fR (beta testing)" 9 -.IX Item "--controlmaster (beta testing)" +.IP "\fB\-\-controlmaster\fR" 9 +.IX Item "--controlmaster" .PD 0 -.IP "\fB\-M\fR (beta testing)" 9 -.IX Item "-M (beta testing)" +.IP "\fB\-M\fR" 9 +.IX Item "-M" .PD 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 @@ -1190,8 +1190,8 @@ .Sp This is useful for running the same command (e.g. uptime) on a list of servers. -.IP "\fB\-\-onall\fR (alpha testing)" 9 -.IX Item "--onall (alpha testing)" +.IP "\fB\-\-onall\fR (beta testing)" 9 +.IX Item "--onall (beta testing)" Run all the jobs on all computers given with \fB\-\-sshlogin\fR. \s-1GNU \&\s0\fBparallel\fR will log into \fB\-\-jobs\fR number of computers in parallel and run one job at a time on the computer. The order of the jobs will @@ -1214,11 +1214,11 @@ of each job is saved in a file and the filename is then printed. .Sp See also: \fB\-\-results\fR -.IP "\fB\-\-pipe\fR (beta testing)" 9 -.IX Item "--pipe (beta testing)" +.IP "\fB\-\-pipe\fR" 9 +.IX Item "--pipe" .PD 0 -.IP "\fB\-\-spreadstdin\fR (beta testing)" 9 -.IX Item "--spreadstdin (beta testing)" +.IP "\fB\-\-spreadstdin\fR" 9 +.IX Item "--spreadstdin" .PD Spread input to jobs on stdin (standard input). Read a block of data from stdin (standard input) and give one block of data as input to one @@ -1553,15 +1553,15 @@ the joblog. .Sp See also \fB\-\-joblog\fR, \fB\-\-resume\fR, \fB\-\-resume\-failed\fR. -.IP "\fB\-\-retries\fR \fIn\fR (beta testing)" 9 -.IX Item "--retries n (beta testing)" +.IP "\fB\-\-retries\fR \fIn\fR" 9 +.IX Item "--retries n" If a job fails, retry it on another computer on which it has not failed. Do this \fIn\fR times. If there are fewer than \fIn\fR computers in \&\fB\-\-sshlogin\fR \s-1GNU \s0\fBparallel\fR will re-use all the computers. This is useful if some jobs fail for no apparent reason (such as network failure). -.IP "\fB\-\-return\fR \fIfilename\fR (beta testing)" 9 -.IX Item "--return filename (beta testing)" +.IP "\fB\-\-return\fR \fIfilename\fR" 9 +.IX Item "--return filename" Transfer files from remote computers. \fB\-\-return\fR is used with \&\fB\-\-sshlogin\fR when the arguments are files on the remote computers. When processing is done the file \fIfilename\fR will be transferred @@ -1829,8 +1829,8 @@ .IX Item "--skip-first-line" Do not use the first line of input (used by \s-1GNU \s0\fBparallel\fR itself when called with \fB\-\-shebang\fR). -.IP "\fB\-\-sql\fR \fI\s-1DBURL\s0\fR (alpha testing)" 9 -.IX Item "--sql DBURL (alpha testing)" +.IP "\fB\-\-sql\fR \fI\s-1DBURL\s0\fR (beta testing)" 9 +.IX Item "--sql DBURL (beta testing)" Submit jobs via \s-1SQL\s0 server. \fI\s-1DBURL\s0\fR must point to a table, which will contain the same information as \fB\-\-joblog\fR, the values from the input sources (stored in columns V1 .. Vn), and the output (stored in @@ -1865,11 +1865,11 @@ .Vb 1 \& :myalias mysql:///mydb/paralleljobs .Ve -.IP "\fB\-\-sqlandworker\fR \fI\s-1DBURL\s0\fR (alpha testing)" 9 -.IX Item "--sqlandworker DBURL (alpha testing)" +.IP "\fB\-\-sqlandworker\fR \fI\s-1DBURL\s0\fR (beta testing)" 9 +.IX Item "--sqlandworker DBURL (beta testing)" Shorthand for: \fB\-\-sql\fR \fI\s-1DBURL\s0\fR \fB\-\-sqlworker\fR \fI\s-1DBURL\s0\fR. -.IP "\fB\-\-sqlworker\fR \fI\s-1DBURL\s0\fR (alpha testing)" 9 -.IX Item "--sqlworker DBURL (alpha testing)" +.IP "\fB\-\-sqlworker\fR \fI\s-1DBURL\s0\fR (beta testing)" 9 +.IX Item "--sqlworker DBURL (beta testing)" Execute jobs via \s-1SQL\s0 server. Read the input sources variables from the table pointed to by \fI\s-1DBURL\s0\fR. The \fIcommand\fR on the command line should be the same as given by \fB\-\-sql\fR. @@ -2076,14 +2076,14 @@ Print the job to be run on stderr (standard error). .Sp See also \fB\-v\fR, \fB\-p\fR. -.IP "\fB\-\-transfer\fR (beta testing)" 9 -.IX Item "--transfer (beta testing)" +.IP "\fB\-\-transfer\fR" 9 +.IX Item "--transfer" Transfer files to remote computers. Shorthand for: \fB\-\-transferfile {}\fR. -.IP "\fB\-\-transferfile\fR \fIfilename\fR (beta testing)" 9 -.IX Item "--transferfile filename (beta testing)" +.IP "\fB\-\-transferfile\fR \fIfilename\fR" 9 +.IX Item "--transferfile filename" .PD 0 -.IP "\fB\-\-tf\fR \fIfilename\fR (beta testing)" 9 -.IX Item "--tf filename (beta testing)" +.IP "\fB\-\-tf\fR \fIfilename\fR" 9 +.IX Item "--tf filename" .PD \&\fB\-\-transferfile\fR is used with \fB\-\-sshlogin\fR to transfer files to the remote computers. The files will be transferred using \fBrsync\fR and @@ -2211,11 +2211,11 @@ .IX Item "-V" .PD Print the version \s-1GNU \s0\fBparallel\fR and exit. -.IP "\fB\-\-workdir\fR \fImydir\fR (alpha testing)" 9 -.IX Item "--workdir mydir (alpha testing)" +.IP "\fB\-\-workdir\fR \fImydir\fR (beta testing)" 9 +.IX Item "--workdir mydir (beta testing)" .PD 0 -.IP "\fB\-\-wd\fR \fImydir\fR (alpha testing)" 9 -.IX Item "--wd mydir (alpha testing)" +.IP "\fB\-\-wd\fR \fImydir\fR (beta testing)" 9 +.IX Item "--wd mydir (beta testing)" .PD Files transferred using \fB\-\-transferfile\fR and \fB\-\-return\fR will be relative to \fImydir\fR on remote computers, and the command will be @@ -2473,6 +2473,14 @@ .Vb 1 \& cat file_list | parallel \*(Aqif [ ! \-e {} ] ; then echo {}; fi\*(Aq .Ve +.SH "EXAMPLE: Composed command with multiple input sources" +.IX Header "EXAMPLE: Composed command with multiple input sources" +You have a dir with files named as 24 hours in 5 minute intervals: +00:00, 00:05, 00:10 .. 23:55. You want to find the files missing: +.PP +.Vb 1 +\& parallel [ \-f {1}:{2} ] "||" echo {1}:{2} does not exist ::: {00..23} ::: {00..55..5} +.Ve .SH "EXAMPLE: Calling Bash functions" .IX Header "EXAMPLE: Calling Bash functions" If the composed command is longer than a line, it becomes hard to @@ -4238,15 +4246,17 @@ .IX Subsection "DIFFERENCES BETWEEN xargs AND GNU Parallel" \&\fBxargs\fR offers some of the same possibilities as \s-1GNU \s0\fBparallel\fR. .PP -\&\fBxargs\fR deals badly with special characters (such as space, ' and +\&\fBxargs\fR deals badly with special characters (such as space, \e, ' and "). To see the problem try this: .PP -.Vb 5 +.Vb 7 \& touch important_file \& touch \*(Aqnot important_file\*(Aq \& ls not* | xargs rm \& mkdir \-p "My brother\*(Aqs 12\e" records" \& ls | xargs rmdir +\& touch \*(Aqc:\ewindows\esystem32\eclfs.sys\*(Aq +\& echo \*(Aqc:\ewindows\esystem32\eclfs.sys\*(Aq | xargs ls \-l .Ve .PP You can specify \fB\-0\fR, but many input generators are not @@ -4256,7 +4266,7 @@ (requires using \fB\-0\fR), \fBfind\fR (requires using \fB\-print0\fR), \fBgrep\fR (requires user to use \fB\-z\fR or \fB\-Z\fR), \fBsort\fR (requires using \fB\-z\fR). .PP -So \s-1GNU \s0\fBparallel\fR's newline separation can be emulated with: +\&\s-1GNU \s0\fBparallel\fR's newline separation can be emulated with: .PP \&\fBcat | xargs \-d \*(L"\en\*(R" \-n1 \f(BIcommand\fB\fR .PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel.html new/parallel-20160222/src/parallel.html --- old/parallel-20160122/src/parallel.html 2016-01-19 16:05:04.000000000 +0100 +++ new/parallel-20160222/src/parallel.html 2016-02-21 22:25:14.000000000 +0100 @@ -27,6 +27,7 @@ <li><a href="#EXAMPLE:-Compute-intensive-jobs-and-substitution">EXAMPLE: Compute intensive jobs and substitution</a></li> <li><a href="#EXAMPLE:-Substitution-and-redirection">EXAMPLE: Substitution and redirection</a></li> <li><a href="#EXAMPLE:-Composed-commands">EXAMPLE: Composed commands</a></li> + <li><a href="#EXAMPLE:-Composed-command-with-multiple-input-sources">EXAMPLE: Composed command with multiple input sources</a></li> <li><a href="#EXAMPLE:-Calling-Bash-functions">EXAMPLE: Calling Bash functions</a></li> <li><a href="#EXAMPLE:-Function-tester">EXAMPLE: Function tester</a></li> <li><a href="#EXAMPLE:-Log-rotate">EXAMPLE: Log rotate</a></li> @@ -399,7 +400,7 @@ <dt id="total_jobs"> <b>total_jobs()</b></dt> <dd> -<p>number of jobs in total (beta testing)</p> +<p>number of jobs in total</p> </dd> </dl> @@ -519,11 +520,11 @@ 2> >(zenity --progress --auto-kill) | wc</code></pre> </dd> -<dt id="basefile-file-beta-testing"><b>--basefile</b> <i>file</i> (beta testing)</dt> +<dt id="basefile-file"><b>--basefile</b> <i>file</i></dt> <dd> </dd> -<dt id="bf-file-beta-testing"><b>--bf</b> <i>file</i> (beta testing)</dt> +<dt id="bf-file"><b>--bf</b> <i>file</i></dt> <dd> <p><i>file</i> will be transferred to each sshlogin before a jobs is started. It will be removed if <b>--cleanup</b> is active. The file may be a script to run or some common base data needed for the jobs. Multiple <b>--bf</b> can be specified to transfer more basefiles. The <i>file</i> will be transferred the same way as <b>--transferfile</b>.</p> @@ -601,7 +602,7 @@ <p>See also <b>--fifo</b>.</p> </dd> -<dt id="cleanup-beta-testing"><b>--cleanup</b> (beta testing)</dt> +<dt id="cleanup"><b>--cleanup</b></dt> <dd> <p>Remove transferred files. <b>--cleanup</b> will remove the transferred files on the remote computer after processing is done.</p> @@ -1119,11 +1120,11 @@ <p>Do not start new jobs on a given computer unless the number of running processes on the computer is less than <i>max-load</i>. <i>max-load</i> uses the same syntax as <b>--jobs</b>, so <i>100%</i> for one per CPU is a valid setting. Only difference is 0 which is interpreted as 0.01.</p> </dd> -<dt id="controlmaster-beta-testing"><b>--controlmaster</b> (beta testing)</dt> +<dt id="controlmaster"><b>--controlmaster</b></dt> <dd> </dd> -<dt id="M-beta-testing"><b>-M</b> (beta testing)</dt> +<dt id="M"><b>-M</b></dt> <dd> <p>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 that specify their own ssh command.</p> @@ -1177,7 +1178,7 @@ <p>This is useful for running the same command (e.g. uptime) on a list of servers.</p> </dd> -<dt id="onall-alpha-testing"><b>--onall</b> (alpha testing)</dt> +<dt id="onall-beta-testing"><b>--onall</b> (beta testing)</dt> <dd> <p>Run all the jobs on all computers given with <b>--sshlogin</b>. GNU <b>parallel</b> will log into <b>--jobs</b> number of computers in parallel and run one job at a time on the computer. The order of the jobs will not be changed, but some computers may finish before others.</p> @@ -1203,11 +1204,11 @@ <p>See also: <b>--results</b></p> </dd> -<dt id="pipe-beta-testing"><b>--pipe</b> (beta testing)</dt> +<dt id="pipe"><b>--pipe</b></dt> <dd> </dd> -<dt id="spreadstdin-beta-testing"><b>--spreadstdin</b> (beta testing)</dt> +<dt id="spreadstdin"><b>--spreadstdin</b></dt> <dd> <p>Spread input to jobs on stdin (standard input). Read a block of data from stdin (standard input) and give one block of data as input to one job.</p> @@ -1532,13 +1533,13 @@ <p>See also <b>--joblog</b>, <b>--resume</b>, <b>--resume-failed</b>.</p> </dd> -<dt id="retries-n-beta-testing"><b>--retries</b> <i>n</i> (beta testing)</dt> +<dt id="retries-n"><b>--retries</b> <i>n</i></dt> <dd> <p>If a job fails, retry it on another computer on which it has not failed. Do this <i>n</i> times. If there are fewer than <i>n</i> computers in <b>--sshlogin</b> GNU <b>parallel</b> will re-use all the computers. This is useful if some jobs fail for no apparent reason (such as network failure).</p> </dd> -<dt id="return-filename-beta-testing"><b>--return</b> <i>filename</i> (beta testing)</dt> +<dt id="return-filename"><b>--return</b> <i>filename</i></dt> <dd> <p>Transfer files from remote computers. <b>--return</b> is used with <b>--sshlogin</b> when the arguments are files on the remote computers. When processing is done the file <i>filename</i> will be transferred from the remote computer using <b>rsync</b> and will be put relative to the default login dir. E.g.</p> @@ -1775,7 +1776,7 @@ <p>Do not use the first line of input (used by GNU <b>parallel</b> itself when called with <b>--shebang</b>).</p> </dd> -<dt id="sql-DBURL-alpha-testing"><b>--sql</b> <i>DBURL</i> (alpha testing)</dt> +<dt id="sql-DBURL-beta-testing"><b>--sql</b> <i>DBURL</i> (beta testing)</dt> <dd> <p>Submit jobs via SQL server. <i>DBURL</i> must point to a table, which will contain the same information as <b>--joblog</b>, the values from the input sources (stored in columns V1 .. Vn), and the output (stored in columns Stdout and Stderr).</p> @@ -1802,13 +1803,13 @@ <pre><code> :myalias mysql:///mydb/paralleljobs</code></pre> </dd> -<dt id="sqlandworker-DBURL-alpha-testing"><b>--sqlandworker</b> <i>DBURL</i> (alpha testing)</dt> +<dt id="sqlandworker-DBURL-beta-testing"><b>--sqlandworker</b> <i>DBURL</i> (beta testing)</dt> <dd> <p>Shorthand for: <b>--sql</b> <i>DBURL</i> <b>--sqlworker</b> <i>DBURL</i>.</p> </dd> -<dt id="sqlworker-DBURL-alpha-testing"><b>--sqlworker</b> <i>DBURL</i> (alpha testing)</dt> +<dt id="sqlworker-DBURL-beta-testing"><b>--sqlworker</b> <i>DBURL</i> (beta testing)</dt> <dd> <p>Execute jobs via SQL server. Read the input sources variables from the table pointed to by <i>DBURL</i>. The <i>command</i> on the command line should be the same as given by <b>--sql</b>.</p> @@ -2007,17 +2008,17 @@ <p>See also <b>-v</b>, <b>-p</b>.</p> </dd> -<dt id="transfer-beta-testing"><b>--transfer</b> (beta testing)</dt> +<dt id="transfer"><b>--transfer</b></dt> <dd> <p>Transfer files to remote computers. Shorthand for: <b>--transferfile {}</b>.</p> </dd> -<dt id="transferfile-filename-beta-testing"><b>--transferfile</b> <i>filename</i> (beta testing)</dt> +<dt id="transferfile-filename"><b>--transferfile</b> <i>filename</i></dt> <dd> </dd> -<dt id="tf-filename-beta-testing"><b>--tf</b> <i>filename</i> (beta testing)</dt> +<dt id="tf-filename"><b>--tf</b> <i>filename</i></dt> <dd> <p><b>--transferfile</b> is used with <b>--sshlogin</b> to transfer files to the remote computers. The files will be transferred using <b>rsync</b> and will be put relative to the default work dir. If the path contains /./ the remaining path will be relative to the work dir. E.g.</p> @@ -2147,11 +2148,11 @@ <p>Print the version GNU <b>parallel</b> and exit.</p> </dd> -<dt id="workdir-mydir-alpha-testing"><b>--workdir</b> <i>mydir</i> (alpha testing)</dt> +<dt id="workdir-mydir-beta-testing"><b>--workdir</b> <i>mydir</i> (beta testing)</dt> <dd> </dd> -<dt id="wd-mydir-alpha-testing"><b>--wd</b> <i>mydir</i> (alpha testing)</dt> +<dt id="wd-mydir-beta-testing"><b>--wd</b> <i>mydir</i> (beta testing)</dt> <dd> <p>Files transferred using <b>--transferfile</b> and <b>--return</b> will be relative to <i>mydir</i> on remote computers, and the command will be executed in the dir <i>mydir</i>.</p> @@ -2342,6 +2343,12 @@ <pre><code> cat file_list | parallel 'if [ ! -e {} ] ; then echo {}; fi'</code></pre> +<h1 id="EXAMPLE:-Composed-command-with-multiple-input-sources">EXAMPLE: Composed command with multiple input sources</h1> + +<p>You have a dir with files named as 24 hours in 5 minute intervals: 00:00, 00:05, 00:10 .. 23:55. You want to find the files missing:</p> + +<pre><code> parallel [ -f {1}:{2} ] "||" echo {1}:{2} does not exist ::: {00..23} ::: {00..55..5}</code></pre> + <h1 id="EXAMPLE:-Calling-Bash-functions">EXAMPLE: Calling Bash functions</h1> <p>If the composed command is longer than a line, it becomes hard to read. In Bash you can use functions. Just remember to <b>export -f</b> the function.</p> @@ -3579,17 +3586,19 @@ <p><b>xargs</b> offers some of the same possibilities as GNU <b>parallel</b>.</p> -<p><b>xargs</b> deals badly with special characters (such as space, ' and "). To see the problem try this:</p> +<p><b>xargs</b> deals badly with special characters (such as space, \, ' and "). To see the problem try this:</p> <pre><code> touch important_file touch 'not important_file' ls not* | xargs rm mkdir -p "My brother's 12\" records" - ls | xargs rmdir</code></pre> + ls | xargs rmdir + touch 'c:\windows\system32\clfs.sys' + echo 'c:\windows\system32\clfs.sys' | xargs ls -l</code></pre> <p>You can specify <b>-0</b>, but many input generators are not optimized for using <b>NUL</b> as separator but are optimized for <b>newline</b> as separator. E.g <b>head</b>, <b>tail</b>, <b>awk</b>, <b>ls</b>, <b>echo</b>, <b>sed</b>, <b>tar -v</b>, <b>perl</b> (<b>-0</b> and \0 instead of \n), <b>locate</b> (requires using <b>-0</b>), <b>find</b> (requires using <b>-print0</b>), <b>grep</b> (requires user to use <b>-z</b> or <b>-Z</b>), <b>sort</b> (requires using <b>-z</b>).</p> -<p>So GNU <b>parallel</b>'s newline separation can be emulated with:</p> +<p>GNU <b>parallel</b>'s newline separation can be emulated with:</p> <p><b>cat | xargs -d "\n" -n1 <i>command</i></b></p> Files old/parallel-20160122/src/parallel.pdf and new/parallel-20160222/src/parallel.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel.pod new/parallel-20160222/src/parallel.pod --- old/parallel-20160122/src/parallel.pod 2016-01-19 16:01:43.000000000 +0100 +++ new/parallel-20160222/src/parallel.pod 2016-02-21 22:24:24.000000000 +0100 @@ -322,7 +322,7 @@ =item Z<> B<total_jobs()> -number of jobs in total (beta testing) +number of jobs in total =back @@ -452,9 +452,9 @@ 2> >(zenity --progress --auto-kill) | wc -=item B<--basefile> I<file> (beta testing) +=item B<--basefile> I<file> -=item B<--bf> I<file> (beta testing) +=item B<--bf> I<file> I<file> will be transferred to each sshlogin before a jobs is started. It will be removed if B<--cleanup> is active. The file may be @@ -540,7 +540,7 @@ See also B<--fifo>. -=item B<--cleanup> (beta testing) +=item B<--cleanup> Remove transferred files. B<--cleanup> will remove the transferred files on the remote computer after processing is done. @@ -1060,9 +1060,9 @@ setting. Only difference is 0 which is interpreted as 0.01. -=item B<--controlmaster> (beta testing) +=item B<--controlmaster> -=item B<-M> (beta testing) +=item B<-M> 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 @@ -1136,7 +1136,7 @@ servers. -=item B<--onall> (alpha testing) +=item B<--onall> (beta testing) Run all the jobs on all computers given with B<--sshlogin>. GNU B<parallel> will log into B<--jobs> number of computers in parallel @@ -1161,9 +1161,9 @@ See also: B<--results> -=item B<--pipe> (beta testing) +=item B<--pipe> -=item B<--spreadstdin> (beta testing) +=item B<--spreadstdin> Spread input to jobs on stdin (standard input). Read a block of data from stdin (standard input) and give one block of data as input to one @@ -1524,7 +1524,7 @@ See also B<--joblog>, B<--resume>, B<--resume-failed>. -=item B<--retries> I<n> (beta testing) +=item B<--retries> I<n> If a job fails, retry it on another computer on which it has not failed. Do this I<n> times. If there are fewer than I<n> computers in @@ -1533,7 +1533,7 @@ failure). -=item B<--return> I<filename> (beta testing) +=item B<--return> I<filename> Transfer files from remote computers. B<--return> is used with B<--sshlogin> when the arguments are files on the remote computers. When @@ -1791,7 +1791,7 @@ when called with B<--shebang>). -=item B<--sql> I<DBURL> (alpha testing) +=item B<--sql> I<DBURL> (beta testing) Submit jobs via SQL server. I<DBURL> must point to a table, which will contain the same information as B<--joblog>, the values from the input @@ -1823,12 +1823,12 @@ :myalias mysql:///mydb/paralleljobs -=item B<--sqlandworker> I<DBURL> (alpha testing) +=item B<--sqlandworker> I<DBURL> (beta testing) Shorthand for: B<--sql> I<DBURL> B<--sqlworker> I<DBURL>. -=item B<--sqlworker> I<DBURL> (alpha testing) +=item B<--sqlworker> I<DBURL> (beta testing) Execute jobs via SQL server. Read the input sources variables from the table pointed to by I<DBURL>. The I<command> on the command line @@ -2050,14 +2050,14 @@ See also B<-v>, B<-p>. -=item B<--transfer> (beta testing) +=item B<--transfer> Transfer files to remote computers. Shorthand for: B<--transferfile {}>. -=item B<--transferfile> I<filename> (beta testing) +=item B<--transferfile> I<filename> -=item B<--tf> I<filename> (beta testing) +=item B<--tf> I<filename> B<--transferfile> is used with B<--sshlogin> to transfer files to the remote computers. The files will be transferred using B<rsync> and @@ -2187,9 +2187,9 @@ Print the version GNU B<parallel> and exit. -=item B<--workdir> I<mydir> (alpha testing) +=item B<--workdir> I<mydir> (beta testing) -=item B<--wd> I<mydir> (alpha testing) +=item B<--wd> I<mydir> (beta testing) Files transferred using B<--transferfile> and B<--return> will be relative to I<mydir> on remote computers, and the command will be @@ -2420,6 +2420,14 @@ cat file_list | parallel 'if [ ! -e {} ] ; then echo {}; fi' +=head1 EXAMPLE: Composed command with multiple input sources + +You have a dir with files named as 24 hours in 5 minute intervals: +00:00, 00:05, 00:10 .. 23:55. You want to find the files missing: + + parallel [ -f {1}:{2} ] "||" echo {1}:{2} does not exist ::: {00..23} ::: {00..55..5} + + =head1 EXAMPLE: Calling Bash functions If the composed command is longer than a line, it becomes hard to @@ -4012,7 +4020,7 @@ B<xargs> offers some of the same possibilities as GNU B<parallel>. -B<xargs> deals badly with special characters (such as space, ' and +B<xargs> deals badly with special characters (such as space, \, ' and "). To see the problem try this: touch important_file @@ -4020,6 +4028,8 @@ ls not* | xargs rm mkdir -p "My brother's 12\" records" ls | xargs rmdir + touch 'c:\windows\system32\clfs.sys' + echo 'c:\windows\system32\clfs.sys' | xargs ls -l You can specify B<-0>, but many input generators are not optimized for using B<NUL> as separator but are optimized for @@ -4028,7 +4038,7 @@ (requires using B<-0>), B<find> (requires using B<-print0>), B<grep> (requires user to use B<-z> or B<-Z>), B<sort> (requires using B<-z>). -So GNU B<parallel>'s newline separation can be emulated with: +GNU B<parallel>'s newline separation can be emulated with: B<cat | xargs -d "\n" -n1 I<command>> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel.texi new/parallel-20160222/src/parallel.texi --- old/parallel-20160122/src/parallel.texi 2016-01-19 16:05:21.000000000 +0100 +++ new/parallel-20160222/src/parallel.texi 2016-02-21 22:25:41.000000000 +0100 @@ -20,6 +20,7 @@ * EXAMPLE@asis{:} Compute intensive jobs and substitution:: * EXAMPLE@asis{:} Substitution and redirection:: * EXAMPLE@asis{:} Composed commands:: +* EXAMPLE@asis{:} Composed command with multiple input sources:: * EXAMPLE@asis{:} Calling Bash functions:: * EXAMPLE@asis{:} Function tester:: * EXAMPLE@asis{:} Log rotate:: @@ -419,7 +420,7 @@ @item @strong{total_jobs()} @anchor{@strong{total_jobs()}} -number of jobs in total (beta testing) +number of jobs in total @end table @@ -558,11 +559,11 @@ 2> >(zenity --progress --auto-kill) | wc @end verbatim -@item @strong{--basefile} @emph{file} (beta testing) -@anchor{@strong{--basefile} @emph{file} (beta testing)} +@item @strong{--basefile} @emph{file} +@anchor{@strong{--basefile} @emph{file}} -@item @strong{--bf} @emph{file} (beta testing) -@anchor{@strong{--bf} @emph{file} (beta testing)} +@item @strong{--bf} @emph{file} +@anchor{@strong{--bf} @emph{file}} @emph{file} will be transferred to each sshlogin before a jobs is started. It will be removed if @strong{--cleanup} is active. The file may be @@ -651,8 +652,8 @@ See also @strong{--fifo}. -@item @strong{--cleanup} (beta testing) -@anchor{@strong{--cleanup} (beta testing)} +@item @strong{--cleanup} +@anchor{@strong{--cleanup}} Remove transferred files. @strong{--cleanup} will remove the transferred files on the remote computer after processing is done. @@ -1218,11 +1219,11 @@ 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. -@item @strong{--controlmaster} (beta testing) -@anchor{@strong{--controlmaster} (beta testing)} +@item @strong{--controlmaster} +@anchor{@strong{--controlmaster}} -@item @strong{-M} (beta testing) -@anchor{@strong{-M} (beta testing)} +@item @strong{-M} +@anchor{@strong{-M}} 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 @@ -1295,8 +1296,8 @@ This is useful for running the same command (e.g. uptime) on a list of servers. -@item @strong{--onall} (alpha testing) -@anchor{@strong{--onall} (alpha testing)} +@item @strong{--onall} (beta testing) +@anchor{@strong{--onall} (beta testing)} Run all the jobs on all computers given with @strong{--sshlogin}. GNU @strong{parallel} will log into @strong{--jobs} number of computers in parallel @@ -1323,11 +1324,11 @@ See also: @strong{--results} -@item @strong{--pipe} (beta testing) -@anchor{@strong{--pipe} (beta testing)} +@item @strong{--pipe} +@anchor{@strong{--pipe}} -@item @strong{--spreadstdin} (beta testing) -@anchor{@strong{--spreadstdin} (beta testing)} +@item @strong{--spreadstdin} +@anchor{@strong{--spreadstdin}} Spread input to jobs on stdin (standard input). Read a block of data from stdin (standard input) and give one block of data as input to one @@ -1710,8 +1711,8 @@ See also @strong{--joblog}, @strong{--resume}, @strong{--resume-failed}. -@item @strong{--retries} @emph{n} (beta testing) -@anchor{@strong{--retries} @emph{n} (beta testing)} +@item @strong{--retries} @emph{n} +@anchor{@strong{--retries} @emph{n}} If a job fails, retry it on another computer on which it has not failed. Do this @emph{n} times. If there are fewer than @emph{n} computers in @@ -1719,8 +1720,8 @@ useful if some jobs fail for no apparent reason (such as network failure). -@item @strong{--return} @emph{filename} (beta testing) -@anchor{@strong{--return} @emph{filename} (beta testing)} +@item @strong{--return} @emph{filename} +@anchor{@strong{--return} @emph{filename}} Transfer files from remote computers. @strong{--return} is used with @strong{--sshlogin} when the arguments are files on the remote computers. When @@ -2011,8 +2012,8 @@ Do not use the first line of input (used by GNU @strong{parallel} itself when called with @strong{--shebang}). -@item @strong{--sql} @emph{DBURL} (alpha testing) -@anchor{@strong{--sql} @emph{DBURL} (alpha testing)} +@item @strong{--sql} @emph{DBURL} (beta testing) +@anchor{@strong{--sql} @emph{DBURL} (beta testing)} Submit jobs via SQL server. @emph{DBURL} must point to a table, which will contain the same information as @strong{--joblog}, the values from the input @@ -2049,13 +2050,13 @@ :myalias mysql:///mydb/paralleljobs @end verbatim -@item @strong{--sqlandworker} @emph{DBURL} (alpha testing) -@anchor{@strong{--sqlandworker} @emph{DBURL} (alpha testing)} +@item @strong{--sqlandworker} @emph{DBURL} (beta testing) +@anchor{@strong{--sqlandworker} @emph{DBURL} (beta testing)} Shorthand for: @strong{--sql} @emph{DBURL} @strong{--sqlworker} @emph{DBURL}. -@item @strong{--sqlworker} @emph{DBURL} (alpha testing) -@anchor{@strong{--sqlworker} @emph{DBURL} (alpha testing)} +@item @strong{--sqlworker} @emph{DBURL} (beta testing) +@anchor{@strong{--sqlworker} @emph{DBURL} (beta testing)} Execute jobs via SQL server. Read the input sources variables from the table pointed to by @emph{DBURL}. The @emph{command} on the command line @@ -2289,16 +2290,16 @@ See also @strong{-v}, @strong{-p}. -@item @strong{--transfer} (beta testing) -@anchor{@strong{--transfer} (beta testing)} +@item @strong{--transfer} +@anchor{@strong{--transfer}} Transfer files to remote computers. Shorthand for: @strong{--transferfile @{@}}. -@item @strong{--transferfile} @emph{filename} (beta testing) -@anchor{@strong{--transferfile} @emph{filename} (beta testing)} +@item @strong{--transferfile} @emph{filename} +@anchor{@strong{--transferfile} @emph{filename}} -@item @strong{--tf} @emph{filename} (beta testing) -@anchor{@strong{--tf} @emph{filename} (beta testing)} +@item @strong{--tf} @emph{filename} +@anchor{@strong{--tf} @emph{filename}} @strong{--transferfile} is used with @strong{--sshlogin} to transfer files to the remote computers. The files will be transferred using @strong{rsync} and @@ -2444,11 +2445,11 @@ Print the version GNU @strong{parallel} and exit. -@item @strong{--workdir} @emph{mydir} (alpha testing) -@anchor{@strong{--workdir} @emph{mydir} (alpha testing)} +@item @strong{--workdir} @emph{mydir} (beta testing) +@anchor{@strong{--workdir} @emph{mydir} (beta testing)} -@item @strong{--wd} @emph{mydir} (alpha testing) -@anchor{@strong{--wd} @emph{mydir} (alpha testing)} +@item @strong{--wd} @emph{mydir} (beta testing) +@anchor{@strong{--wd} @emph{mydir} (beta testing)} Files transferred using @strong{--transferfile} and @strong{--return} will be relative to @emph{mydir} on remote computers, and the command will be @@ -2730,6 +2731,16 @@ cat file_list | parallel 'if [ ! -e {} ] ; then echo {}; fi' @end verbatim +@node EXAMPLE: Composed command with multiple input sources +@chapter EXAMPLE: Composed command with multiple input sources + +You have a dir with files named as 24 hours in 5 minute intervals: +00:00, 00:05, 00:10 .. 23:55. You want to find the files missing: + +@verbatim + parallel [ -f {1}:{2} ] "||" echo {1}:{2} does not exist ::: {00..23} ::: {00..55..5} +@end verbatim + @node EXAMPLE: Calling Bash functions @chapter EXAMPLE: Calling Bash functions @@ -4652,7 +4663,7 @@ @strong{xargs} offers some of the same possibilities as GNU @strong{parallel}. -@strong{xargs} deals badly with special characters (such as space, ' and +@strong{xargs} deals badly with special characters (such as space, \, ' and "). To see the problem try this: @verbatim @@ -4661,6 +4672,8 @@ ls not* | xargs rm mkdir -p "My brother's 12\" records" ls | xargs rmdir + touch 'c:\windows\system32\clfs.sys' + echo 'c:\windows\system32\clfs.sys' | xargs ls -l @end verbatim You can specify @strong{-0}, but many input generators are not @@ -4670,7 +4683,7 @@ (requires using @strong{-0}), @strong{find} (requires using @strong{-print0}), @strong{grep} (requires user to use @strong{-z} or @strong{-Z}), @strong{sort} (requires using @strong{-z}). -So GNU @strong{parallel}'s newline separation can be emulated with: +GNU @strong{parallel}'s newline separation can be emulated with: @strong{cat | xargs -d "\n" -n1 @emph{command}} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_design.7 new/parallel-20160222/src/parallel_design.7 --- old/parallel-20160122/src/parallel_design.7 2016-01-19 16:05:04.000000000 +0100 +++ new/parallel-20160222/src/parallel_design.7 2016-02-18 17:14:45.000000000 +0100 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PARALLEL_DESIGN 7" -.TH PARALLEL_DESIGN 7 "2016-01-19" "20160101" "parallel" +.TH PARALLEL_DESIGN 7 "2016-02-14" "20160122" "parallel" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -820,8 +820,8 @@ .IX Subsection "Computation of load" Contrary to the obvious \fB\-\-load\fR does not use load average. This is due to load average rising too slowly. Instead it uses \fBps\fR to list -the number of jobs in running or blocked state (state D, O or R). This -gives an instant load. +the number of threads in running or blocked state (state D, O or +R). This gives an instant load. .PP As remote calculation of load can be slow, a process is spawned to run \&\fBps\fR and put the result in a file, which is then used next time. @@ -870,6 +870,9 @@ Will that require 2x record size memory? .PP Will that require 2x block size memory? +.SS "Logo" +.IX Subsection "Logo" +The logo is inpired by the Cafe Wall illusion. The font is DejaVu Sans. .SH "Historical decisions" .IX Header "Historical decisions" .SS "\-\-tollef" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_design.html new/parallel-20160222/src/parallel_design.html --- old/parallel-20160122/src/parallel_design.html 2016-01-19 16:05:04.000000000 +0100 +++ new/parallel-20160222/src/parallel_design.html 2016-02-21 22:25:14.000000000 +0100 @@ -55,6 +55,7 @@ <li><a href="#Multiple-processes-working-together">Multiple processes working together</a></li> <li><a href="#Transferring-of-variables-and-functions-from-zsh">Transferring of variables and functions from zsh</a></li> <li><a href="#rrs-on-remote-using-a-perl-wrapper">--rrs on remote using a perl wrapper</a></li> + <li><a href="#Logo">Logo</a></li> </ul> </li> <li><a href="#Historical-decisions">Historical decisions</a> @@ -574,7 +575,7 @@ <h2 id="Computation-of-load">Computation of load</h2> -<p>Contrary to the obvious <b>--load</b> does not use load average. This is due to load average rising too slowly. Instead it uses <b>ps</b> to list the number of jobs in running or blocked state (state D, O or R). This gives an instant load.</p> +<p>Contrary to the obvious <b>--load</b> does not use load average. This is due to load average rising too slowly. Instead it uses <b>ps</b> to list the number of threads in running or blocked state (state D, O or R). This gives an instant load.</p> <p>As remote calculation of load can be slow, a process is spawned to run <b>ps</b> and put the result in a file, which is then used next time.</p> @@ -612,6 +613,10 @@ <p>Will that require 2x block size memory?</p> +<h2 id="Logo">Logo</h2> + +<p>The logo is inpired by the Cafe Wall illusion. The font is DejaVu Sans.</p> + <h1 id="Historical-decisions">Historical decisions</h1> <h2 id="tollef">--tollef</h2> Files old/parallel-20160122/src/parallel_design.pdf and new/parallel-20160222/src/parallel_design.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_design.pod new/parallel-20160222/src/parallel_design.pod --- old/parallel-20160122/src/parallel_design.pod 2016-01-19 16:01:43.000000000 +0100 +++ new/parallel-20160222/src/parallel_design.pod 2016-02-14 20:15:21.000000000 +0100 @@ -754,8 +754,8 @@ Contrary to the obvious B<--load> does not use load average. This is due to load average rising too slowly. Instead it uses B<ps> to list -the number of jobs in running or blocked state (state D, O or R). This -gives an instant load. +the number of threads in running or blocked state (state D, O or +R). This gives an instant load. As remote calculation of load can be slow, a process is spawned to run B<ps> and put the result in a file, which is then used next time. @@ -816,6 +816,10 @@ Will that require 2x block size memory? +=head2 Logo + +The logo is inpired by the Cafe Wall illusion. The font is DejaVu Sans. + =head1 Historical decisions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_design.texi new/parallel-20160222/src/parallel_design.texi --- old/parallel-20160122/src/parallel_design.texi 2016-01-19 16:05:08.000000000 +0100 +++ new/parallel-20160222/src/parallel_design.texi 2016-02-18 17:15:00.000000000 +0100 @@ -823,8 +823,8 @@ Contrary to the obvious @strong{--load} does not use load average. This is due to load average rising too slowly. Instead it uses @strong{ps} to list -the number of jobs in running or blocked state (state D, O or R). This -gives an instant load. +the number of threads in running or blocked state (state D, O or +R). This gives an instant load. As remote calculation of load can be slow, a process is spawned to run @strong{ps} and put the result in a file, which is then used next time. @@ -865,6 +865,7 @@ * Multiple processes working together:: * Transferring of variables and functions from zsh:: * --rrs on remote using a perl wrapper:: +* Logo:: @end menu @node Multiple processes working together @@ -891,6 +892,11 @@ Will that require 2x block size memory? +@node Logo +@section Logo + +The logo is inpired by the Cafe Wall illusion. The font is DejaVu Sans. + @node Historical decisions @chapter Historical decisions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_tutorial.7 new/parallel-20160222/src/parallel_tutorial.7 --- old/parallel-20160122/src/parallel_tutorial.7 2016-01-19 16:05:03.000000000 +0100 +++ new/parallel-20160222/src/parallel_tutorial.7 2016-02-19 21:58:30.000000000 +0100 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "PARALLEL_TUTORIAL 7" -.TH PARALLEL_TUTORIAL 7 "2016-01-19" "20160101" "parallel" +.TH PARALLEL_TUTORIAL 7 "2016-02-19" "20160122" "parallel" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -744,6 +744,12 @@ \& parallel echo {} shell quoted is {= \*(Aq$_=Q($_)\*(Aq =} ::: \*(Aq*/!#$\*(Aq .Ve .PP +Output: +.PP +.Vb 1 +\& */!#$ shell quoted is \e*/\e!\e#\e$ +.Ve +.PP \&\fB\f(CB$job\fB\-\fR>\fB\f(BIskip()\fB\fR skips the job: .PP .Vb 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_tutorial.html new/parallel-20160222/src/parallel_tutorial.html --- old/parallel-20160122/src/parallel_tutorial.html 2016-01-19 16:05:04.000000000 +0100 +++ new/parallel-20160222/src/parallel_tutorial.html 2016-02-21 22:25:14.000000000 +0100 @@ -590,6 +590,10 @@ <pre><code> parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$'</code></pre> +<p>Output:</p> + +<pre><code> */!#$ shell quoted is \*/\!\#\$</code></pre> + <p><b>$job-</b>><b>skip()</b> skips the job:</p> <pre><code> parallel echo {= 'if($_==3) { $job->skip() }' =} ::: {1..5}</code></pre> Files old/parallel-20160122/src/parallel_tutorial.pdf and new/parallel-20160222/src/parallel_tutorial.pdf differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_tutorial.pod new/parallel-20160222/src/parallel_tutorial.pod --- old/parallel-20160122/src/parallel_tutorial.pod 2016-01-19 16:01:43.000000000 +0100 +++ new/parallel-20160222/src/parallel_tutorial.pod 2016-02-19 19:36:06.000000000 +0100 @@ -477,6 +477,10 @@ parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$' +Output: + + */!#$ shell quoted is \*/\!\#\$ + B<$job->>B<skip()> skips the job: parallel echo {= 'if($_==3) { $job->skip() }' =} ::: {1..5} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/parallel_tutorial.texi new/parallel-20160222/src/parallel_tutorial.texi --- old/parallel-20160122/src/parallel_tutorial.texi 2016-01-19 16:05:10.000000000 +0100 +++ new/parallel-20160222/src/parallel_tutorial.texi 2016-02-19 21:58:34.000000000 +0100 @@ -711,6 +711,12 @@ parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$' @end verbatim +Output: + +@verbatim + */!#$ shell quoted is \*/\!\#\$ +@end verbatim + @strong{$job-}>@strong{skip()} skips the job: @verbatim diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/sem new/parallel-20160222/src/sem --- old/parallel-20160122/src/sem 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/src/sem 2016-02-21 22:24:56.000000000 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/env perl -# Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015 Ole Tange -# and Free Software Foundation, Inc. +# Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 +# Ole Tange and Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1176,12 +1176,13 @@ sub init_globals { # Defaults: - $Global::version = 20160122; + $Global::version = 20160222; $Global::progname = 'parallel'; $Global::infinity = 2**31; $Global::debug = 0; $Global::verbose = 0; $Global::quoting = 0; + $Global::total_completed = 0; # Read only table with default --rpl values %Global::replace = ( @@ -1460,6 +1461,7 @@ if(/$joblog_regexp/o) { # This is 30% faster than set_job_already_run($1); vec($Global::job_already_run,($1||0),1) = 1; + $Global::total_completed++; $group[$1-1] = "true"; } elsif(/(\d+)\s+\S+(\s+[-0-9.]+){6}\s+(.*)$/) { $group[$1-1] = $3 @@ -1495,6 +1497,7 @@ if(/$joblog_regexp/o) { # This is 30% faster than set_job_already_run($1); vec($Global::job_already_run,($1||0),1) = 1; + $Global::total_completed++; } elsif(not /\d+\s+[^\s]+\s+([-0-9.]+\s+){6}/) { ::error("Format of '$opt::joblog' is wrong: $_"); ::wait_and_exit(255); @@ -2026,7 +2029,6 @@ # Returns: N/A $Global::total_running = 0; $Global::total_started = 0; - $Global::total_completed = 0; $Global::tty_taken = 0; $SIG{USR1} = \&list_running_jobs; $SIG{USR2} = \&toggle_progress; @@ -3601,8 +3603,8 @@ # Returns: N/A print join("\n", "GNU $Global::progname $Global::version", - "Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015 Ole Tange", - "and Free Software Foundation, Inc.", + "Copyright (C) 2007,2008,2009,2010,2011,2012,2013,2014,2015,2016", + "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.", "GNU $Global::progname comes with no warranty.", @@ -4713,10 +4715,12 @@ # svr5 => sysv # ultrix => ps -ax | awk '{print $3,$5}' # unixware => ps -el|awk '{print $2,$14,$15}' - my $ps = q{ + my $ps = ::spacefree(1,q{ $sysv="ps -ef -o s -o comm"; $sysv2="ps -ef -o state -o comm"; $bsd="ps ax -o state,command"; + # Treat threads as processes + $bsd2="ps axH -o state,command"; $psel="ps -el|awk '{ print \$2,\$14,\$15 }'"; $cygwin=q{ perl -ne 'close STDERR; /Name/ and print"\n"; /(Name|Pid|Ppid|State):\s+(\S+)/ and print "$2\t";' /proc/*/status | @@ -4728,11 +4732,11 @@ 'darwin' => $bsd, 'dec_osf' => $sysv2, 'dragonfly' => $bsd, - 'freebsd' => $bsd, + 'freebsd' => $bsd2, 'gnu' => $bsd, 'hpux' => $psel, 'irix' => $sysv2, - 'linux' => $bsd, + 'linux' => $bsd2, 'minix' => "ps el|awk '{print \$1,\$11}'", 'mirbsd' => $bsd, 'msys' => $sysv, @@ -4745,8 +4749,7 @@ 'ultrix' => "ps -ax | awk '{print \$3,\$5}'", ); print `$ps{$^O}`; - }; - $ps =~ s/[ \t\n]+/ /g; + }); $cmd = "perl -e ".::shell_quote_scalar($ps); } return $cmd; @@ -7917,6 +7920,7 @@ my $self = shift; my ($fdno,$in_fh,$out_fd) = @_; my $buf; + local $/ = "\n"; close $self->fh($fdno,"w"); if($? and $opt::compress) { ::error($opt::compress_program." failed."); @@ -9288,7 +9292,7 @@ my $class = shift; my $fhs = shift; for my $fh (@$fhs) { - if(-t $fh) { + if(-t $fh and -t ($Global::status_fd || *STDERR)) { ::warning("Input is read from the terminal.", "Only experts do this on purpose. ". "Press CTRL-D to exit."); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/sql new/parallel-20160222/src/sql --- old/parallel-20160122/src/sql 2016-01-23 09:52:28.000000000 +0100 +++ new/parallel-20160222/src/sql 2016-02-21 22:24:56.000000000 +0100 @@ -566,7 +566,7 @@ exit ($err); sub parse_options { - $Global::version = 20160122; + $Global::version = 20160222; $Global::progname = 'sql'; # This must be done first as this may exec myself diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/parallel-20160122/src/sql.1 new/parallel-20160222/src/sql.1 --- old/parallel-20160122/src/sql.1 2016-01-23 09:53:35.000000000 +0100 +++ new/parallel-20160222/src/sql.1 2016-02-21 22:25:12.000000000 +0100 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SQL 1" -.TH SQL 1 "2016-01-23" "20160122" "parallel" +.TH SQL 1 "2016-02-21" "20160222" "parallel" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l Files old/parallel-20160122/src/sql.pdf and new/parallel-20160222/src/sql.pdf differ ++++++ parallel-20160122.tar.bz2.sig -> parallel-20160222.tar.bz2.sig ++++++ --- /work/SRC/openSUSE:Factory/gnu_parallel/parallel-20160122.tar.bz2.sig 2016-01-28 17:22:56.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.gnu_parallel.new/parallel-20160222.tar.bz2.sig 2016-02-26 00:31:30.000000000 +0100 @@ -2,7 +2,7 @@ # To check the signature run: # echo | gpg -# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-20160122.tar.bz2.sig +# gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve parallel-20160222.tar.bz2.sig echo | gpg 2>/dev/null gpg --auto-key-locate keyserver --keyserver-options auto-key-retrieve $0 @@ -11,32 +11,32 @@ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 -iQTwBAABCgAGBQJWo0LhAAoJENGrRRaIiIiI7FEmnj2pBNeU+Fg9KhlOHpQp2WhX -upcnCkXHh9qQuUGGxkbQcNUXNfPwi1EzWOBm//A/lhZi7j8B1pDgTHK3t+mn8GVL -WWh0IinYTw80rLqGwV+Zll8DBi/O5WTKRyXqDPExvDxge7Y85mLsPcS8SEslG+cK -pUsLExXijtdjQ+1r8x97+klNIZFQBfhvWB3RHMIZPi+ivFdzVRg0eU7sD22LDPTG -62PRRECfJwlSjL1F4GJzXztSuIalk42yRy5UUrF64Rx5iPWaJQLX0U7hvqeTz8d+ -YBC3clrqil3hLYLG6Dedh93wQgsEPyTirUXxqThw1ikfaagto1r65ht5Hx9bMIf4 -eK/0LVxVI2tJxVwV4W7TyBC/QykBErlfhHRSuceTTNC0yPks1ia4KDcpTISSQuGH -gHPBpnML0sHEW1vL3f4JYkLXRl2+Ji4epzY/PBP2P1KbbWqMD7hu8mzHKJw2NKdb -RnIgPPx7XWUz6MmTm7qqQbHgZtolksAsTs06/M6G+M7TZ9lyopafhLE3Zuj2HJ5r -5WQRy45wJ+n+vbfkZ+VXv6O7dAOhRdCB/pBpT2a76vRMfrK0X5rcxSyywABh4BlO -Xq5CMhKu9bqBJtGzu/VvG2gHZkkEjcYtkVRdR7HTQ4FV8Gbq1pEAQ9QXBnQvy13+ -ZbaixIo5Hz+Vi16TIMC+yMg7qRZu9fif9MqtcO+Hl79et0VFaeMRDzKVhkuHA4j9 -GYWSV0K2EzXwTxcvVuPDuGtvYPQbELt5TxekdXQNKAtWU9cCuQ+5X9rVcszgprcd -faZly4fnd1UPtxsilVfeGm4EAWZxYSBNQiSORhjbcR/jH/Bb3KTL8V2qyVGvgkeo -kwX0YuUnVoHA82nbKL7Sj/Xuf5ygLBE3ogGIU9CPPASbt64qa4IEZu1MMI+Pa5Vw -qtrURGfZohObJQ0jKPnMlLcKLlY4MXBQrYnH+xV/6BC5MnFicjncJmtaQ8t+C64+ -jefqIfEzbUVoS2VcORtSvybU+X8nro6ymhOjlCYOFMpIcxHKPSl6p5i2LlfqT8AA -zYm+il2tcpOI4sSpSurc1XBjImdtEXaBZ33IeOouqiI7KmWI2DV6dvrBHWfNSt8t -30OWWjp9QLDBBbepfYOHYsvoe9yKtadYHbXLXxst0y2j5oEgSINVOUfGERe3bDt0 -lBG6RLlGD8iC4oCHcnmuayGbO9/kIvOB2Gt98XNe8kfagoDh/stS2LWUy6hx/H8z -vogCebQmw+xDHQejisIZXogQ0nTj1RwcHtUpGwDOwSIq5TC/eIvi3mifP7LJF/S9 -uMVFwpcTcQFLc6hKJT/3dFppwhE7sGY9o0C0AXyZzPV10hjs4TFpUDtdDbEpq2uQ -qDfWO+V1cYcVpccU+lQ6u67do2y0qUgrOt53quY+zBRLDUhKnX2SCp+8yvLhkweH -CggO4/YKzBl3/BMl79K4HRuJrvlxS1lcpgD8yHymObtD1fnxD6TP4fQlCRP8yjvo -KR3mMvcLDtGntV1XyLrX6lccvUH8IZvpADPrl4opUOZTyWZY92vUuqnuWzvT2QAL -/fswn6WeUCZJfmRIR2eUMQvLg8F+u8HtenwKKCguxszRaDSIKX4/0B+vkeMuWllZ -s9DbzSDiWUcm6PpEdT1K+eQG+w== -=4Qzi +iQTwBAABCgAGBQJWyjQHAAoJENGrRRaIiIiIdbkmoKS4CkGHn6LJrlpiA5ZZHFZt +ilqSesENZ79xI+fLoVofagqs49e6uiQaWPPydCe+Izzpn0K4gzfeXq0Xtpp+22Z8 +wzQXHyGozZPfXPAtaGTiFdHV8jp/rclCgW8plNUYuawYl0satdvJCHkI0sqqeXoT +rGu3sOgjFaUoshRDkz1WQNao2XOPIcPV3C5mxxxL95LX+q47lhQO7XWAxPuw8063 +xYedef1mTIz27jFUgo58PfT+d0v3g9avpzponBIrQJb7nR4sYn6X3tJEpxBGmrGa +5nTfO314PIRZQlJMVHQN2+NSoPm7852dpBNh9Ym5Yq1A794tU3xbaa9i7gRN+yDC +JXkgjiuRKFln4Ld2udIcGQOBjETBGj7kaD1jA+gBYa4MIp7TnFxwA4AOBaOlgh8R +e5wATI6DWbWkG9Jtme2GSJD5V34StSO2DErQb5LEuVdtH2mGfNAIGB9x+a7w0PlL +HEdJ2iLftPYQrorotO+LZCRaDSMWW6irGqirFiUKERhmGZKttkukd/DjKF0lkmw6 +wAWkYCA5vZKw0jbjRLmrP5CVnBkyfPGyKWWpWU4D8AgsMh7VSt8ANcpztib8Y3wP +MkvxAEv29/ZS09WdEyaNxNEy40cdfw2YLObUvInOixf/SSWkA+Ler/mHUNCNJmYh +H/bTYiu0BneDq3mppgri0M4784SG4+QBbgW339OBXN85OqTWNPYaW/4xeevCp9US +0eplmUZVD4uqBPx/Rz+YdAFBbcACKn+y9TGPE9mf9fTT8pcW3hhiQA++UXWZE9T5 +/5L87kF+TSljwnG6ziP5rnTD4kPJtQDdROe0sxyLvmjFAsg99xMSNF6rvKX9eXDd +l1PQf+LF6pa/b35TO/hwvVSMdaWHf0wMl1Ph2ULUR+0JRXMSfnywLD85e0N/qUNi +syoXasWfIIm963aD8VwBTnh5AIcOP2AaZ9gDe+a4qEXrRlAcAoARASEKTtY5OPY1 +/vk7A9Rb3w39hrElX610I2g8FwmkD7GOPrdaF5alghqz97XsVehlDns3lZyAEL1f +zlXNKNva76xzKNmW+FEozDHYQhNIYJ7/tOfVwqKOpG6qckZanLhkWOAfgTKyIbTW +2BzciywZyAbuHIwD2zDkP/kjOz0JxUnD3qw1ZyffBYqCVynbDCwhpfAiE6imUaOc +xvz2RhCZtS/9IFWNOSQMGtHeUdM+4JOGQBVgsfrDUgT4uazHvTEwitV+8flGwIP3 +nUEgvNo1IX23t1hyvOMbhoQg2EA+qMnlF5jQOAW6uwbaYvLCzgXXPeH/vHoTDkmA +BGQRpg60IpdvihhIK3DY/bG/BFCQ6CyIyogsGBHw76yXALa4C7I9OngtiQA9R2Fl +ovfR93TyqIzDHb3M+HDdAKYQ5go1gxMpP1Sv02Q/K9SjsFzTKnbtSEsuNn/GtThK +0gAnpHQGKN5wCWFA0xoLH/OHaN1dDBwCPm0lYYvtpo3KZvFxTUNwQ5R0zSpQ/4Vv +Sdut46mEsGc18PxY39YBQGT6CRgIURzMKvz+SoYQ4dyW6G46ciDaX7Xs/5C6QtE+ +DHx0MPkPft7WVosAJmQ2QmA3Ph7VH6Sbkf5NnuAdmhh0rXH0/tM0gowVa0pJOrfF +Hbw2JllrQA8tLKBnf0mA2dQJAg== +=yMZD -----END PGP SIGNATURE-----
