diff --git a/0001-test-and-fix-for-RT-52317-Calling-run3-garbles-STDIN.patch b/0001-test-and-fix-for-RT-52317-Calling-run3-garbles-STDIN.patch deleted file mode 100644 index fedc11d..0000000 --- a/0001-test-and-fix-for-RT-52317-Calling-run3-garbles-STDIN.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 8ebe48760cfdc78fbf4fc46413dde9470121b99e Mon Sep 17 00:00:00 2001 -From: Roderich Schupp -Date: Sun, 29 Sep 2013 18:12:03 +0200 -Subject: [PATCH 5/5] test and fix for RT #52317: Calling run3 garbles STDIN - ---- - lib/IPC/Run3.pm | 26 ++++++------------------- - t/preserve_stdin.t | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 63 insertions(+), 20 deletions(-) - create mode 100644 t/preserve_stdin.t - -diff --git a/lib/IPC/Run3.pm b/lib/IPC/Run3.pm -index 12c9d8a..777e290 100644 ---- a/lib/IPC/Run3.pm -+++ b/lib/IPC/Run3.pm -@@ -363,14 +363,12 @@ sub run3 { - $options if defined $stderr; - - # this should make perl close these on exceptions --# local *STDIN_SAVE; -+ local *STDIN_SAVE; - local *STDOUT_SAVE; - local *STDERR_SAVE; - -- my $saved_fd0 = dup( 0 ) if defined $in_fh; -- --# open STDIN_SAVE, "<&STDIN"# or croak "run3(): $! saving STDIN" --# if defined $in_fh; -+ open STDIN_SAVE, "<&STDIN" or croak "run3(): $! saving STDIN" -+ if defined $in_fh; - open STDOUT_SAVE, ">&STDOUT" or croak "run3(): $! saving STDOUT" - if defined $out_fh; - open STDERR_SAVE, ">&STDERR" or croak "run3(): $! saving STDERR" -@@ -378,17 +376,10 @@ sub run3 { - - my $errno; - my $ok = eval { -- # The open() call here seems to not force fd 0 in some cases; -- # I ran in to trouble when using this in VCP, not sure why. -- # the dup2() seems to work. -- dup2( fileno $in_fh, 0 ) --# open STDIN, "<&=" . fileno $in_fh -+ open STDIN, "<&=" . fileno $in_fh - or croak "run3(): $! redirecting STDIN" - if defined $in_fh; - --# close $in_fh or croak "$! closing STDIN temp file" --# if ref $stdin; -- - open STDOUT, ">&" . fileno $out_fh - or croak "run3(): $! redirecting STDOUT" - if defined $out_fh; -@@ -428,13 +419,8 @@ sub run3 { - - my @errs; - -- if ( defined $saved_fd0 ) { -- dup2( $saved_fd0, 0 ); -- POSIX::close( $saved_fd0 ); -- } -- --# open STDIN, "<&STDIN_SAVE"# or push @errs, "run3(): $! restoring STDIN" --# if defined $in_fh; -+ open STDIN, "<&STDIN_SAVE" or push @errs, "run3(): $! restoring STDIN" -+ if defined $in_fh; - open STDOUT, ">&STDOUT_SAVE" or push @errs, "run3(): $! restoring STDOUT" - if defined $out_fh; - open STDERR, ">&STDERR_SAVE" or push @errs, "run3(): $! restoring STDERR" -diff --git a/t/preserve_stdin.t b/t/preserve_stdin.t -new file mode 100644 -index 0000000..8e090ee ---- /dev/null -+++ b/t/preserve_stdin.t -@@ -0,0 +1,57 @@ -+#!perl -w -+ -+## test whether reading from STDIN is preserved when -+## run3 is called in between reads -+ -+use Test::More; -+use IPC::Run3; -+use File::Temp qw(tempfile); -+use strict; -+ -+# call run3 at different lines (problems might manifest itself -+# on different lines, probably due to different buffering of input) -+my @check_at = (5, 10, 50, 100, 200, 500); -+plan tests => @check_at * 3; -+ -+# create a test file for input containing 1000 lines -+my $nlines = 1000; -+my @exp_lines; -+my ($fh, $file) = tempfile(UNLINK => 1); -+for (my $i = 1; $i <= $nlines; $i++) -+{ -+ my $line = "this is line $i"; -+ push @exp_lines, $line; -+ print $fh $line, "\n"; -+} -+close $fh; -+ -+ -+my ( $in, $out, $err ); -+ -+foreach my $n (@check_at) -+{ -+ my $nread = 0; -+ my $unexpected; -+ open STDIN, "<", $file or die "can't open file $file: $!"; -+ while () -+ { -+ chomp; -+ $unexpected = qq[line $nread: expected "$exp_lines[$nread]", got "$_"\n] -+ unless $exp_lines[$nread] eq $_ || $unexpected; -+ $nread++; -+ -+ if ($nread == $n) -+ { -+ $in = "checking at line $n"; -+ run3 [ $^X, '-e', 'print uc $_ while <>' ], \$in, \$out, \$err; -+ die "command failed" unless $? == 0; -+ is($out, uc $in); -+ } -+ } -+ close STDIN; -+ -+ is($nread, $nlines, "STDIN was read completely"); -+ ok(!$unexpected, "STDIN as expected") or diag($unexpected); -+} -+ -+ --- -1.8.5.3 - diff --git a/IPC-Run3-0.048.tar.gz b/IPC-Run3-0.048.tar.gz deleted file mode 100644 index 069f30f..0000000 Binary files a/IPC-Run3-0.048.tar.gz and /dev/null differ diff --git a/IPC-Run3-0.049.tar.gz b/IPC-Run3-0.049.tar.gz new file mode 100644 index 0000000..5f9343d Binary files /dev/null and b/IPC-Run3-0.049.tar.gz differ diff --git a/perl-IPC-Run3.spec b/perl-IPC-Run3.spec index 0186d7f..7e81220 100644 --- a/perl-IPC-Run3.spec +++ b/perl-IPC-Run3.spec @@ -1,5 +1,5 @@ Name: perl-IPC-Run3 -Version: 0.048 +Version: 0.049 Release: 1 Summary: Run a subprocess in batch mode License: GPL+ or Artistic or BSD @@ -24,7 +24,6 @@ BuildRequires: perl(Test::Pod::Coverage) BuildRequires: perl(Test::Pod) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) # https://github.com/rschupp/IPC-Run3/commit/8ebe48760cfdc78fbf4fc46413dde9470121b99e -Patch0: 0001-test-and-fix-for-RT-52317-Calling-run3-garbles-STDIN.patch %description This module allows you to run a subprocess and redirect stdin, stdout, @@ -34,7 +33,6 @@ API and none of the bloat and rarely used features of IPC::Run. %prep %setup -q -n IPC-Run3-%{version} -%patch0 -p1 find -type f -exec chmod -x {} \; %build @@ -55,5 +53,13 @@ make test RELEASE_TESTING=1 %{_mandir}/man3/* %changelog +* Tue Jul 16 2024 gss - 0.049-1 +- Update to version 0.049 +- Do not apply 0001-test-and-fix-for-RT-52317-Calling-run3-garbles-STDIN.patch +- Avoid some uninitialized warnings in ProfLogReader +- Improve errno handling on Windows (thanks, Graham Ollis) +- Avoid leaking fds (thanks, Dan Book) +- Fix typos in docs (thanks, Yoshikazu Sawa and Jakub Wilk) + * Thu Jun 30 2022 misaka00251 - 0.048-1 - Init package (Derived from federa project, thanks to fedora team)