Hello community, here is the log from the commit of package perl-IPC-Run for openSUSE:Factory checked in at 2018-03-30 12:07:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-IPC-Run (Old) and /work/SRC/openSUSE:Factory/.perl-IPC-Run.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-IPC-Run" Fri Mar 30 12:07:43 2018 rev:34 rq:592070 version:0.97 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-IPC-Run/perl-IPC-Run.changes 2018-01-06 18:51:01.954063893 +0100 +++ /work/SRC/openSUSE:Factory/.perl-IPC-Run.new/perl-IPC-Run.changes 2018-03-30 12:07:45.325012306 +0200 @@ -1,0 +2,18 @@ +Wed Mar 28 14:35:32 UTC 2018 - pmonrealgonza...@suse.com + +- Fixed build on ppc and ppc64 architectures. +- Refreshed spec file with spec-clean. + +------------------------------------------------------------------- +Tue Mar 27 05:27:33 UTC 2018 - co...@suse.com + +- updated to 0.97 + see /usr/share/doc/packages/perl-IPC-Run/Changes + + 0.97 Mon Mar 26 2018 + - Update meta and POD to point to GitHub issues not RT. + - Update README with pod changes. + - Fix variable name in synopsis - [Github #47] + - Fix t/run.t to work on "perl in space" - [Github #100] + +------------------------------------------------------------------- Old: ---- IPC-Run-0.96.tar.gz New: ---- IPC-Run-0.97.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-IPC-Run.spec ++++++ --- /var/tmp/diff_new_pack.hc6iSG/_old 2018-03-30 12:07:45.868992638 +0200 +++ /var/tmp/diff_new_pack.hc6iSG/_new 2018-03-30 12:07:45.872992494 +0200 @@ -1,7 +1,7 @@ # # spec file for package perl-IPC-Run # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,13 +18,13 @@ %define cpan_name IPC-Run Name: perl-IPC-Run -Version: 0.96 +Version: 0.97 Release: 0 Summary: System() and Background Procs W/ Piping, Redirs, Ptys (Unix, Win32) -License: Artistic-1.0 OR GPL-1.0+ +License: Artistic-1.0 OR GPL-1.0-or-later Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/IPC-Run/ -Source0: http://www.cpan.org/authors/id/T/TO/TODDR/%{cpan_name}-%{version}.tar.gz +Source0: https://cpan.metacpan.org/authors/id/T/TO/TODDR/%{cpan_name}-%{version}.tar.gz Source1: cpanspec.yml Patch0: IPC-Run-0.89-path.diff BuildRequires: perl @@ -68,6 +68,8 @@ %perl_gen_filelist %files -f %{name}.files -%doc Changes LICENSE README TODO +%defattr(-,root,root,755) +%doc Changes README TODO +%license LICENSE %changelog ++++++ IPC-Run-0.96.tar.gz -> IPC-Run-0.97.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPC-Run-0.96/META.json new/IPC-Run-0.97/META.json --- old/IPC-Run-0.96/META.json 2017-05-12 15:47:24.000000000 +0200 +++ new/IPC-Run-0.97/META.json 2018-03-26 23:41:45.000000000 +0200 @@ -4,7 +4,7 @@ "Barrie Slaymaker <barr...@slaysys.com>" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter version 2.150005", + "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], @@ -53,6 +53,6 @@ "url" : "https://github.com/toddr/IPC-Run" } }, - "version" : "0.96", - "x_serialization_backend" : "JSON::PP version 2.27300_01" + "version" : "0.97", + "x_serialization_backend" : "JSON::PP version 2.27400_02" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPC-Run-0.96/META.yml new/IPC-Run-0.97/META.yml --- old/IPC-Run-0.96/META.yml 2017-05-12 15:47:24.000000000 +0200 +++ new/IPC-Run-0.97/META.yml 2018-03-26 23:41:44.000000000 +0200 @@ -8,7 +8,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter version 2.150005' +generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -27,5 +27,5 @@ bugtracker: https://github.com/toddr/IPC-Run/issues license: http://dev.perl.org/licenses/ repository: https://github.com/toddr/IPC-Run -version: '0.96' +version: '0.97' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPC-Run-0.96/README new/IPC-Run-0.97/README --- old/IPC-Run-0.96/README 2017-05-12 15:35:53.000000000 +0200 +++ new/IPC-Run-0.97/README 2018-03-26 23:39:54.000000000 +0200 @@ -9,10 +9,10 @@ ## Using run() instead of system(): use IPC::Run qw( run timeout ); - run \@cmd, \$in, \$out, \$err, timeout( 10 ) or die "cat: $?" + run \@cat, \$in, \$out, \$err, timeout( 10 ) or die "cat: $?" # Can do I/O to sub refs and filenames, too: - run \@cmd, '<', "in.txt", \&out, \&err or die "cat: $?" + run \@cat, '<', "in.txt", \&out, \&err or die "cat: $?" run \@cat, '<', "in.txt", '>>', "out.txt", '2>>', "err.txt"; @@ -106,10 +106,10 @@ run io( \*HANDLE, 'r', \$recv ); DESCRIPTION - IPC::Run allows you run and interact with child processes using files, - pipes, and pseudo-ttys. Both system()-style and scripted usages are - supported and may be mixed. Likewise, functional and OO API styles are - both supported and may be mixed. + IPC::Run allows you to run and interact with child processes using + files, pipes, and pseudo-ttys. Both system()-style and scripted usages + are supported and may be mixed. Likewise, functional and OO API styles + are both supported and may be mixed. Various redirection operators reminiscent of those seen on common Unix and DOS command lines are provided. @@ -524,9 +524,9 @@ that stdin, stdout, or stderr are not connected to a tty, assuming that they are being run in batch mode. Whether this helps or hurts depends on which optimizations change. And there's often no way of telling what a - program does in these areas other than trial and error and, - occasionally, reading the source. This includes different versions and - implementations of the same program. + program does in these areas other than trial and error and occasionally, + reading the source. This includes different versions and implementations + of the same program. All hope is not lost, however. Most programs behave in reasonably tractable manners, once you figure out what it's trying to do. @@ -940,303 +940,313 @@ their exit codes. ROUTINES - run Run takes a harness or harness specification and runs it, pumping - all input to the child(ren), closing the input pipes when no more - input is available, collecting all output that arrives, until the - pipes delivering output are closed, then waiting for the children to - exit and reaping their result codes. + run Run takes a harness or harness specification and runs it, + pumping all input to the child(ren), closing the input pipes + when no more input is available, collecting all output that + arrives, until the pipes delivering output are closed, then + waiting for the children to exit and reaping their result codes. - You may think of "run( ... )" as being like + You may think of "run( ... )" as being like - start( ... )->finish(); + start( ... )->finish(); - , though there is one subtle difference: run() does not set - \$input_scalars to '' like finish() does. If an exception is thrown - from run(), all children will be killed off "gently", and then - "annihilated" if they do not go gently (in to that dark night. - sorry). + , though there is one subtle difference: run() does not set + \$input_scalars to '' like finish() does. If an exception is + thrown from run(), all children will be killed off "gently", and + then "annihilated" if they do not go gently (in to that dark + night. sorry). - If any exceptions are thrown, this does a "kill_kill" before - propagating them. + If any exceptions are thrown, this does a "kill_kill" before + propagating them. - signal - ## To send it a specific signal by name ("USR1"): - signal $h, "USR1"; - $h->signal ( "USR1" ); + signal + ## To send it a specific signal by name ("USR1"): + signal $h, "USR1"; + $h->signal ( "USR1" ); - If $signal is provided and defined, sends a signal to all child - processes. Try not to send numeric signals, use "KILL" instead of 9, - for instance. Numeric signals aren't portable. + If $signal is provided and defined, sends a signal to all child + processes. Try not to send numeric signals, use "KILL" instead + of 9, for instance. Numeric signals aren't portable. - Throws an exception if $signal is undef. + Throws an exception if $signal is undef. - This will *not* clean up the harness, "finish" it if you kill it. + This will *not* clean up the harness, "finish" it if you kill + it. - Normally TERM kills a process gracefully (this is what the command - line utility "kill" does by default), INT is sent by one of the keys - "^C", "Backspace" or "<Del>", and "QUIT" is used to kill a process - and make it coredump. + Normally TERM kills a process gracefully (this is what the + command line utility "kill" does by default), INT is sent by one + of the keys "^C", "Backspace" or "<Del>", and "QUIT" is used to + kill a process and make it coredump. - The "HUP" signal is often used to get a process to "restart", - rereading config files, and "USR1" and "USR2" for really - application-specific things. + The "HUP" signal is often used to get a process to "restart", + rereading config files, and "USR1" and "USR2" for really + application-specific things. - Often, running "kill -l" (that's a lower case "L") on the command - line will list the signals present on your operating system. + Often, running "kill -l" (that's a lower case "L") on the + command line will list the signals present on your operating + system. - WARNING: The signal subsystem is not at all portable. We *may* offer - to simulate "TERM" and "KILL" on some operating systems, submit code - to me if you want this. + WARNING: The signal subsystem is not at all portable. We *may* + offer to simulate "TERM" and "KILL" on some operating systems, + submit code to me if you want this. - WARNING 2: Up to and including perl v5.6.1, doing almost anything in - a signal handler could be dangerous. The most safe code avoids all - mallocs and system calls, usually by preallocating a flag before - entering the signal handler, altering the flag's value in the - handler, and responding to the changed value in the main system: + WARNING 2: Up to and including perl v5.6.1, doing almost + anything in a signal handler could be dangerous. The most safe + code avoids all mallocs and system calls, usually by + preallocating a flag before entering the signal handler, + altering the flag's value in the handler, and responding to the + changed value in the main system: - my $got_usr1 = 0; - sub usr1_handler { ++$got_signal } + my $got_usr1 = 0; + sub usr1_handler { ++$got_signal } - $SIG{USR1} = \&usr1_handler; - while () { sleep 1; print "GOT IT" while $got_usr1--; } + $SIG{USR1} = \&usr1_handler; + while () { sleep 1; print "GOT IT" while $got_usr1--; } - Even this approach is perilous if ++ and -- aren't atomic on your - system (I've never heard of this on any modern CPU large enough to - run perl). + Even this approach is perilous if ++ and -- aren't atomic on + your system (I've never heard of this on any modern CPU large + enough to run perl). - kill_kill - ## To kill off a process: - $h->kill_kill; - kill_kill $h; + kill_kill + ## To kill off a process: + $h->kill_kill; + kill_kill $h; - ## To specify the grace period other than 30 seconds: - kill_kill $h, grace => 5; + ## To specify the grace period other than 30 seconds: + kill_kill $h, grace => 5; - ## To send QUIT instead of KILL if a process refuses to die: - kill_kill $h, coup_d_grace => "QUIT"; + ## To send QUIT instead of KILL if a process refuses to die: + kill_kill $h, coup_d_grace => "QUIT"; - Sends a "TERM", waits for all children to exit for up to 30 seconds, - then sends a "KILL" to any that survived the "TERM". + Sends a "TERM", waits for all children to exit for up to 30 + seconds, then sends a "KILL" to any that survived the "TERM". - Will wait for up to 30 more seconds for the OS to successfully "KILL" - the processes. + Will wait for up to 30 more seconds for the OS to successfully + "KILL" the processes. - The 30 seconds may be overridden by setting the "grace" option, this - overrides both timers. + The 30 seconds may be overridden by setting the "grace" option, + this overrides both timers. - The harness is then cleaned up. + The harness is then cleaned up. - The doubled name indicates that this function may kill again and - avoids colliding with the core Perl "kill" function. + The doubled name indicates that this function may kill again and + avoids colliding with the core Perl "kill" function. - Returns a 1 if the "TERM" was sufficient, or a 0 if "KILL" was - required. Throws an exception if "KILL" did not permit the children - to be reaped. + Returns a 1 if the "TERM" was sufficient, or a 0 if "KILL" was + required. Throws an exception if "KILL" did not permit the + children to be reaped. - NOTE: The grace period is actually up to 1 second longer than that - given. This is because the granularity of "time" is 1 second. Let me - know if you need finer granularity, we can leverage Time::HiRes - here. + NOTE: The grace period is actually up to 1 second longer than + that given. This is because the granularity of "time" is 1 + second. Let me know if you need finer granularity, we can + leverage Time::HiRes here. - Win32: Win32 does not know how to send real signals, so "TERM" is a - full-force kill on Win32. Thus all talk of grace periods, etc. do - not apply to Win32. + Win32: Win32 does not know how to send real signals, so "TERM" + is a full-force kill on Win32. Thus all talk of grace periods, + etc. do not apply to Win32. - harness - Takes a harness specification and returns a harness. This harness is - blessed in to IPC::Run, allowing you to use method call syntax for - run(), start(), et al if you like. + harness + Takes a harness specification and returns a harness. This + harness is blessed in to IPC::Run, allowing you to use method + call syntax for run(), start(), et al if you like. - harness() is provided so that you can pre-build harnesses if you - would like to, but it's not required.. + harness() is provided so that you can pre-build harnesses if you + would like to, but it's not required.. - You may proceed to run(), start() or pump() after calling harness() - (pump() calls start() if need be). Alternatively, you may pass your - harness specification to run() or start() and let them harness() for - you. You can't pass harness specifications to pump(), though. + You may proceed to run(), start() or pump() after calling + harness() (pump() calls start() if need be). Alternatively, you + may pass your harness specification to run() or start() and let + them harness() for you. You can't pass harness specifications to + pump(), though. - close_terminal - This is used as (or in) an init sub to cast off the bonds of a - controlling terminal. It must precede all other redirection ops that - affect STDIN, STDOUT, or STDERR to be guaranteed effective. + close_terminal + This is used as (or in) an init sub to cast off the bonds of a + controlling terminal. It must precede all other redirection ops + that affect STDIN, STDOUT, or STDERR to be guaranteed effective. - start - $h = start( - \@cmd, \$in, \$out, ..., - timeout( 30, name => "process timeout" ), - $stall_timeout = timeout( 10, name => "stall timeout" ), - ); + start + $h = start( + \@cmd, \$in, \$out, ..., + timeout( 30, name => "process timeout" ), + $stall_timeout = timeout( 10, name => "stall timeout" ), + ); - $h = start \@cmd, '<', \$in, '|', \@cmd2, ...; + $h = start \@cmd, '<', \$in, '|', \@cmd2, ...; - start() accepts a harness or harness specification and returns a - harness after building all of the pipes and launching (via - fork()/exec(), or, maybe someday, spawn()) all the child processes. - It does not send or receive any data on the pipes, see pump() and - finish() for that. - - You may call harness() and then pass it's result to start() if you - like, but you only need to if it helps you structure or tune your - application. If you do call harness(), you may skip start() and - proceed directly to pump. + start() accepts a harness or harness specification and returns a + harness after building all of the pipes and launching (via + fork()/exec(), or, maybe someday, spawn()) all the child + processes. It does not send or receive any data on the pipes, + see pump() and finish() for that. - start() also starts all timers in the harness. See IPC::Run::Timer - for more information. + You may call harness() and then pass it's result to start() if + you like, but you only need to if it helps you structure or tune + your application. If you do call harness(), you may skip start() + and proceed directly to pump. - start() flushes STDOUT and STDERR to help you avoid duplicate - output. It has no way of asking Perl to flush all your open - filehandles, so you are going to need to flush any others you have - open. Sorry. + start() also starts all timers in the harness. See + IPC::Run::Timer for more information. - Here's how if you don't want to alter the state of $| for your - filehandle: + start() flushes STDOUT and STDERR to help you avoid duplicate + output. It has no way of asking Perl to flush all your open + filehandles, so you are going to need to flush any others you + have open. Sorry. - $ofh = select HANDLE; $of = $|; $| = 1; $| = $of; select $ofh; + Here's how if you don't want to alter the state of $| for your + filehandle: - If you don't mind leaving output unbuffered on HANDLE, you can do - the slightly shorter + $ofh = select HANDLE; $of = $|; $| = 1; $| = $of; select $ofh; - $ofh = select HANDLE; $| = 1; select $ofh; + If you don't mind leaving output unbuffered on HANDLE, you can + do the slightly shorter - Or, you can use IO::Handle's flush() method: + $ofh = select HANDLE; $| = 1; select $ofh; - use IO::Handle; - flush HANDLE; + Or, you can use IO::Handle's flush() method: - Perl needs the equivalent of C's fflush( (FILE *)NULL ). + use IO::Handle; + flush HANDLE; - pump - pump $h; - $h->pump; + Perl needs the equivalent of C's fflush( (FILE *)NULL ). + + adopt + Experimental feature. NOT FUNCTIONAL YET, NEED TO CLOSE FDS + BETTER IN CHILDREN. SEE t/adopt.t for a test suite. + + pump + pump $h; + $h->pump; - Pump accepts a single parameter harness. It blocks until it delivers - some input or receives some output. It returns TRUE if there is - still input or output to be done, FALSE otherwise. + Pump accepts a single parameter harness. It blocks until it + delivers some input or receives some output. It returns TRUE if + there is still input or output to be done, FALSE otherwise. - pump() will automatically call start() if need be, so you may call - harness() then proceed to pump() if that helps you structure your - application. + pump() will automatically call start() if need be, so you may + call harness() then proceed to pump() if that helps you + structure your application. - If pump() is called after all harnessed activities have completed, a - "process ended prematurely" exception to be thrown. This allows for - simple scripting of external applications without having to add lots - of error handling code at each step of the script: + If pump() is called after all harnessed activities have + completed, a "process ended prematurely" exception to be thrown. + This allows for simple scripting of external applications + without having to add lots of error handling code at each step + of the script: - $h = harness \@smbclient, \$in, \$out, $err; + $h = harness \@smbclient, \$in, \$out, $err; - $in = "cd /foo\n"; - $h->pump until $out =~ /^smb.*> \Z/m; - die "error cding to /foo:\n$out" if $out =~ "ERR"; - $out = ''; + $in = "cd /foo\n"; + $h->pump until $out =~ /^smb.*> \Z/m; + die "error cding to /foo:\n$out" if $out =~ "ERR"; + $out = ''; - $in = "mget *\n"; - $h->pump until $out =~ /^smb.*> \Z/m; - die "error retrieving files:\n$out" if $out =~ "ERR"; + $in = "mget *\n"; + $h->pump until $out =~ /^smb.*> \Z/m; + die "error retrieving files:\n$out" if $out =~ "ERR"; - $h->finish; + $h->finish; - warn $err if $err; + warn $err if $err; - pump_nb - pump_nb $h; - $h->pump_nb; + pump_nb + pump_nb $h; + $h->pump_nb; - "pump() non-blocking", pumps if anything's ready to be pumped, - returns immediately otherwise. This is useful if you're doing some - long-running task in the foreground, but don't want to starve any - child processes. + "pump() non-blocking", pumps if anything's ready to be pumped, + returns immediately otherwise. This is useful if you're doing + some long-running task in the foreground, but don't want to + starve any child processes. - pumpable - Returns TRUE if calling pump() won't throw an immediate "process - ended prematurely" exception. This means that there are open I/O - channels or active processes. May yield the parent processes' time - slice for 0.01 second if all pipes are to the child and all are - paused. In this case we can't tell if the child is dead, so we yield - the processor and then attempt to reap the child in a nonblocking - way. + pumpable + Returns TRUE if calling pump() won't throw an immediate "process + ended prematurely" exception. This means that there are open I/O + channels or active processes. May yield the parent processes' + time slice for 0.01 second if all pipes are to the child and all + are paused. In this case we can't tell if the child is dead, so + we yield the processor and then attempt to reap the child in a + nonblocking way. - reap_nb - Attempts to reap child processes, but does not block. + reap_nb + Attempts to reap child processes, but does not block. - Does not currently take any parameters, one day it will allow - specific children to be reaped. + Does not currently take any parameters, one day it will allow + specific children to be reaped. - Only call this from a signal handler if your "perl" is recent enough - to have safe signal handling (5.6.1 did not, IIRC, but it was being - discussed on perl5-porters). Calling this (or doing any significant - work) in a signal handler on older "perl"s is asking for seg faults. + Only call this from a signal handler if your "perl" is recent + enough to have safe signal handling (5.6.1 did not, IIRC, but it + was being discussed on perl5-porters). Calling this (or doing + any significant work) in a signal handler on older "perl"s is + asking for seg faults. - finish - This must be called after the last start() or pump() call for a - harness, or your system will accumulate defunct processes and you - may "leak" file descriptors. + finish + This must be called after the last start() or pump() call for a + harness, or your system will accumulate defunct processes and + you may "leak" file descriptors. - finish() returns TRUE if all children returned 0 (and were not - signaled and did not coredump, ie ! $?), and FALSE otherwise (this - is like run(), and the opposite of system()). + finish() returns TRUE if all children returned 0 (and were not + signaled and did not coredump, ie ! $?), and FALSE otherwise + (this is like run(), and the opposite of system()). - Once a harness has been finished, it may be run() or start()ed - again, including by pump()s auto-start. + Once a harness has been finished, it may be run() or start()ed + again, including by pump()s auto-start. - If this throws an exception rather than a normal exit, the harness - may be left in an unstable state, it's best to kill the harness to - get rid of all the child processes, etc. + If this throws an exception rather than a normal exit, the + harness may be left in an unstable state, it's best to kill the + harness to get rid of all the child processes, etc. - Specifically, if a timeout expires in finish(), finish() will not - kill all the children. Call "<$h-"kill_kill>> in this case if you - care. This differs from the behavior of "run". + Specifically, if a timeout expires in finish(), finish() will + not kill all the children. Call "<$h-"kill_kill>> in this case + if you care. This differs from the behavior of "run". - result - $h->result; + result + $h->result; - Returns the first non-zero result code (ie $? >> 8). See - "full_result" to get the $? value for a child process. + Returns the first non-zero result code (ie $? >> 8). See + "full_result" to get the $? value for a child process. - To get the result of a particular child, do: + To get the result of a particular child, do: - $h->result( 0 ); # first child's $? >> 8 - $h->result( 1 ); # second child + $h->result( 0 ); # first child's $? >> 8 + $h->result( 1 ); # second child - or + or - ($h->results)[0] - ($h->results)[1] + ($h->results)[0] + ($h->results)[1] - Returns undef if no child processes were spawned and no child number - was specified. Throws an exception if an out-of-range child number - is passed. + Returns undef if no child processes were spawned and no child + number was specified. Throws an exception if an out-of-range + child number is passed. - results - Returns a list of child exit values. See "full_results" if you want - to know if a signal killed the child. + results + Returns a list of child exit values. See "full_results" if you + want to know if a signal killed the child. - Throws an exception if the harness is not in a finished state. + Throws an exception if the harness is not in a finished state. - full_result - $h->full_result; + full_result + $h->full_result; - Returns the first non-zero $?. See "result" to get the first $? >> 8 - value for a child process. + Returns the first non-zero $?. See "result" to get the first $? + >> 8 value for a child process. - To get the result of a particular child, do: + To get the result of a particular child, do: - $h->full_result( 0 ); # first child's $? >> 8 - $h->full_result( 1 ); # second child + $h->full_result( 0 ); # first child's $? + $h->full_result( 1 ); # second child - or + or - ($h->full_results)[0] - ($h->full_results)[1] + ($h->full_results)[0] + ($h->full_results)[1] - Returns undef if no child processes were spawned and no child number - was specified. Throws an exception if an out-of-range child number - is passed. + Returns undef if no child processes were spawned and no child + number was specified. Throws an exception if an out-of-range + child number is passed. - full_results - Returns a list of child exit values as returned by "wait". See - "results" if you don't care about coredumps or signals. + full_results + Returns a list of child exit values as returned by "wait". See + "results" if you don't care about coredumps or signals. - Throws an exception if the harness is not in a finished state. + Throws an exception if the harness is not in a finished state. FILTERS These filters are used to modify input our output between a child @@ -1318,6 +1328,24 @@ } }; + new_string_source + TODO: Needs confirmation. Was previously undocumented. in this + module. + + This is a filter which is exportable. Returns a sub which appends + the data passed in to the output buffer and returns 1 if data was + appended. 0 if it was an empty string and undef if no data was + passed. + + NOTE: Any additional variables passed to new_string_source will be + passed to the sub every time it's called and appended to the output. + + new_string_sink + TODO: Needs confirmation. Was previously undocumented. + + This is a filter which is exportable. Returns a sub which pops the + data out of the input stream and pushes it onto the string. + io Takes a filename or filehandle, a redirection operator, optional filters, and a source or destination (depends on the redirection operator). Returns an IPC::Run::IO object suitable for harness()ing @@ -1653,12 +1681,12 @@ The second problem is that Perl's DESTROY subs and other on-exit cleanup gets run in the child process. If objects are instantiated in the parent - before the child is forked, the DESTROY will get run once in the - parent and once in the child. When coprocess subs exit, POSIX::exit is - called to work around this, but it means that objects that are still - referred to at that time are not cleaned up. So setting package vars or - closure vars to point to objects that rely on DESTROY to affect things - outside the process (files, etc), will lead to bugs. + before the child is forked, the DESTROY will get run once in the parent + and once in the child. When coprocess subs exit, POSIX::exit is called + to work around this, but it means that objects that are still referred + to at that time are not cleaned up. So setting package vars or closure + vars to point to objects that rely on DESTROY to affect things outside + the process (files, etc), will lead to bugs. I goofed on the syntax: "<pipe" vs. "<pty<" and ">filename" are both oddities. @@ -1690,11 +1718,9 @@ Message ylln51p2b6....@windlord.stanford.edu, on 2000/02/04. SUPPORT - Bugs should always be submitted via the CPAN bug tracker - - <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=IPC-Run> + Bugs should always be submitted via the GitHub bug tracker - For other issues, contact the maintainer (the first listed author) + <https://github.com/toddr/IPC-Run/issues> AUTHORS Adam Kennedy <ad...@cpan.org> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPC-Run-0.96/lib/IPC/Run.pm new/IPC-Run-0.97/lib/IPC/Run.pm --- old/IPC-Run-0.96/lib/IPC/Run.pm 2017-05-12 15:46:43.000000000 +0200 +++ new/IPC-Run-0.97/lib/IPC/Run.pm 2018-03-26 23:34:29.000000000 +0200 @@ -15,10 +15,10 @@ ## Using run() instead of system(): use IPC::Run qw( run timeout ); - run \@cmd, \$in, \$out, \$err, timeout( 10 ) or die "cat: $?" + run \@cat, \$in, \$out, \$err, timeout( 10 ) or die "cat: $?" # Can do I/O to sub refs and filenames, too: - run \@cmd, '<', "in.txt", \&out, \&err or die "cat: $?" + run \@cat, '<', "in.txt", \&out, \&err or die "cat: $?" run \@cat, '<', "in.txt", '>>', "out.txt", '2>>', "err.txt"; @@ -1015,7 +1015,7 @@ use vars qw{$VERSION @ISA @FILTER_IMP @FILTERS @API @EXPORT_OK %EXPORT_TAGS}; BEGIN { - $VERSION = '0.96'; + $VERSION = '0.97'; @ISA = qw{ Exporter }; ## We use @EXPORT for the end user's convenience: there's only one function @@ -4349,11 +4349,9 @@ =head1 SUPPORT -Bugs should always be submitted via the CPAN bug tracker +Bugs should always be submitted via the GitHub bug tracker -L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=IPC-Run> - -For other issues, contact the maintainer (the first listed author) +L<https://github.com/toddr/IPC-Run/issues> =head1 AUTHORS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPC-Run-0.96/t/run.t new/IPC-Run-0.97/t/run.t --- old/IPC-Run-0.96/t/run.t 2017-05-12 15:35:53.000000000 +0200 +++ new/IPC-Run-0.97/t/run.t 2018-03-26 23:18:28.000000000 +0200 @@ -176,7 +176,7 @@ ## ## Calling the local system shell ## -ok( run qq{$perl -e exit} ); +ok( run qq{"$perl" -e exit} ); is( $?, 0 ); is( _map_fds, $fd_map ); @@ -186,7 +186,7 @@ skip( "$^O's shell returns 0 even if last command doesn't", 3 ); } - ok( !run(qq{$perl -e 'exit(42)'}) ); + ok( !run(qq{"$perl" -e 'exit(42)'}) ); ok($?); is( $? >> 8, 42 ); }