diff options
Diffstat (limited to 'meta/recipes-devtools/perl/perl-5.12.3/debian/fixes/autodie-flock.diff')
-rw-r--r-- | meta/recipes-devtools/perl/perl-5.12.3/debian/fixes/autodie-flock.diff | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/meta/recipes-devtools/perl/perl-5.12.3/debian/fixes/autodie-flock.diff b/meta/recipes-devtools/perl/perl-5.12.3/debian/fixes/autodie-flock.diff deleted file mode 100644 index 375ae418f4..0000000000 --- a/meta/recipes-devtools/perl/perl-5.12.3/debian/fixes/autodie-flock.diff +++ /dev/null @@ -1,100 +0,0 @@ -Upstream-Status:Inappropriate [debian patch] - -From: Niko Tyni <ntyni@debian.org> -Subject: Allow for flock returning EAGAIN instead of EWOULDBLOCK on linux/parisc -Bug-Debian: http://bugs.debian.org/543731 -Origin: upstream, http://github.com/pfenwick/autodie/commit/037738e11a6097734b0e1dabdd77b92e5fe35219 - - ---- - cpan/autodie/lib/Fatal.pm | 14 +++++++++++++- - cpan/autodie/t/flock.t | 12 ++++++++++-- - 2 files changed, 23 insertions(+), 3 deletions(-) - -diff --git a/cpan/autodie/lib/Fatal.pm b/cpan/autodie/lib/Fatal.pm -old mode 100644 -new mode 100755 -index 18e71ed..c17a257 ---- a/cpan/autodie/lib/Fatal.pm -+++ b/cpan/autodie/lib/Fatal.pm -@@ -5,6 +5,7 @@ use Carp; - use strict; - use warnings; - use Tie::RefHash; # To cache subroutine refs -+use Config; - - use constant PERL510 => ( $] >= 5.010 ); - -@@ -52,6 +53,10 @@ our %_EWOULDBLOCK = ( - MSWin32 => 33, - ); - -+# the linux parisc port has separate EAGAIN and EWOULDBLOCK, -+# and the kernel returns EAGAIN -+my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0; -+ - # We have some tags that can be passed in for use with import. - # These are all assumed to be CORE:: - -@@ -720,6 +725,11 @@ sub _one_invocation { - my $EWOULDBLOCK = eval { POSIX::EWOULDBLOCK(); } - || $_EWOULDBLOCK{$^O} - || _autocroak("Internal error - can't overload flock - EWOULDBLOCK not defined on this system."); -+ my $EAGAIN = $EWOULDBLOCK; -+ if ($try_EAGAIN) { -+ $EAGAIN = eval { POSIX::EAGAIN(); } -+ || _autocroak("Internal error - can't overload flock - EAGAIN not defined on this system."); -+ } - - require Fcntl; # For Fcntl::LOCK_NB - -@@ -735,7 +745,9 @@ sub _one_invocation { - # If we failed, but we're using LOCK_NB and - # returned EWOULDBLOCK, it's not a real error. - -- if (\$_[1] & Fcntl::LOCK_NB() and \$! == $EWOULDBLOCK ) { -+ if (\$_[1] & Fcntl::LOCK_NB() and -+ (\$! == $EWOULDBLOCK or -+ ($try_EAGAIN and \$! == $EAGAIN ))) { - return \$retval; - } - -diff --git a/cpan/autodie/t/flock.t b/cpan/autodie/t/flock.t -index a7550ba..6421a56 100755 ---- a/cpan/autodie/t/flock.t -+++ b/cpan/autodie/t/flock.t -@@ -2,7 +2,8 @@ - use strict; - use Test::More; - use Fcntl qw(:flock); --use POSIX qw(EWOULDBLOCK); -+use POSIX qw(EWOULDBLOCK EAGAIN); -+use Config; - - require Fatal; - -@@ -10,6 +11,9 @@ my $EWOULDBLOCK = eval { EWOULDBLOCK() } - || $Fatal::_EWOULDBLOCK{$^O} - || plan skip_all => "EWOULDBLOCK not defined on this system"; - -+my $try_EAGAIN = ($^O eq 'linux' and $Config{archname} =~ /hppa|parisc/) ? 1 : 0; -+my $EAGAIN = eval { EAGAIN() }; -+ - my ($self_fh, $self_fh2); - - eval { -@@ -55,7 +59,11 @@ eval { - $return = flock($self_fh2, LOCK_EX | LOCK_NB); - }; - --is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK"); -+if (!$try_EAGAIN) { -+ is($!+0, $EWOULDBLOCK, "Double-flocking should be EWOULDBLOCK"); -+} else { -+ ok($!+0 == $EWOULDBLOCK || $!+0 == $EAGAIN, "Double-flocking should be EWOULDBLOCK or EAGAIN"); -+} - ok(!$return, "flocking a file twice should fail"); - is($@, "", "Non-blocking flock should not fail on EWOULDBLOCK"); - --- -tg: (a508b62..) fixes/autodie-flock (depends on: upstream) |