In perl.git, the branch maint-5.24 has been updated <http://perl5.git.perl.org/perl.git/commitdiff/30222baf8c8b4c9785e63829370d1220e1d1a09f?hp=4506b61c8a3e2b8cd5b850c4a6013bfe2b6b281a>
- Log ----------------------------------------------------------------- commit 30222baf8c8b4c9785e63829370d1220e1d1a09f Author: Steve Hay <steve.m....@googlemail.com> Date: Wed Oct 12 09:15:18 2016 +0100 Regen customized.dat for base.pm changes M t/porting/customized.dat commit c8c9dadec10e39374f462bb4b99ebe544f209769 Author: Steve Hay <steve.m....@googlemail.com> Date: Wed Oct 12 08:29:37 2016 +0100 Bump Module-CoreList $VERSION a bit M dist/Module-CoreList/Changes M dist/Module-CoreList/lib/Module/CoreList.pm M dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm M dist/Module-CoreList/lib/Module/CoreList/Utils.pm M pod/perldelta.pod commit 4eea7ae1645b051a5fdeb465ead214a6db640028 Author: Steve Hay <steve.m....@googlemail.com> Date: Wed Oct 12 08:21:12 2016 +0100 Update MANIFEST for previous commit M MANIFEST commit 1ee1950eb0df6c3c2b26f7262094604222ebbdac Author: Aristotle Pagaltzis <pagalt...@gmx.de> Date: Tue Oct 11 18:33:59 2016 +0200 try to minimise fallout of base @INC fiddling (cherry picked from commit 6749a6283459e02074ca1e4c961f390ba5fe0083) M dist/base/lib/base.pm M dist/base/t/incdot.t A dist/base/t/incmodified-vs-incdot.t A dist/base/t/lib/BaseIncDoubleExtender.pm A dist/base/t/lib/BaseIncExtender.pm ----------------------------------------------------------------------- Summary of changes: MANIFEST | 3 +++ dist/Module-CoreList/Changes | 2 +- dist/Module-CoreList/lib/Module/CoreList.pm | 8 +++---- .../lib/Module/CoreList/TieHashDelta.pm | 2 +- dist/Module-CoreList/lib/Module/CoreList/Utils.pm | 2 +- dist/base/lib/base.pm | 12 +++++++--- dist/base/t/incdot.t | 2 +- dist/base/t/incmodified-vs-incdot.t | 27 ++++++++++++++++++++++ dist/base/t/lib/BaseIncDoubleExtender.pm | 9 ++++++++ dist/base/t/lib/BaseIncExtender.pm | 7 ++++++ pod/perldelta.pod | 2 +- t/porting/customized.dat | 2 +- 12 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 dist/base/t/incmodified-vs-incdot.t create mode 100644 dist/base/t/lib/BaseIncDoubleExtender.pm create mode 100644 dist/base/t/lib/BaseIncExtender.pm diff --git a/MANIFEST b/MANIFEST index e6a3dd9..893abbf 100644 --- a/MANIFEST +++ b/MANIFEST @@ -3008,7 +3008,10 @@ dist/base/t/fields-5_8_0.t See if fields work dist/base/t/fields-base.t See if fields work dist/base/t/fields.t See if fields work dist/base/t/incdot.t Test how base.pm handles '.' in @INC +dist/base/t/incmodified-vs-incdot.t Test base.pm's @INC fiddling dist/base/t/isa.t See if base's behaviour doesn't change +dist/base/t/lib/BaseIncDoubleExtender.pm Test module for base.pm +dist/base/t/lib/BaseIncExtender.pm Test module for base.pm dist/base/t/lib/Broken.pm Test module for base.pm dist/base/t/lib/Dummy.pm Test module for base.pm dist/base/t/lib/HasSigDie.pm Module for testing base.pm diff --git a/dist/Module-CoreList/Changes b/dist/Module-CoreList/Changes index 433cd3f..80f7ae3 100644 --- a/dist/Module-CoreList/Changes +++ b/dist/Module-CoreList/Changes @@ -1,4 +1,4 @@ -5.20160903_24 +5.20161019_24 - Updated for v5.24.1 5.20160920 diff --git a/dist/Module-CoreList/lib/Module/CoreList.pm b/dist/Module-CoreList/lib/Module/CoreList.pm index 21f22bb..67b3f2c 100644 --- a/dist/Module-CoreList/lib/Module/CoreList.pm +++ b/dist/Module-CoreList/lib/Module/CoreList.pm @@ -4,7 +4,7 @@ use vars qw/$VERSION %released %version %families %upstream %bug_tracker %deprecated %delta/; use Module::CoreList::TieHashDelta; use version; -$VERSION = '5.20160903_24'; +$VERSION = '5.20161019_24'; sub _released_order { # Sort helper, to make '?' sort after everything else (substr($released{$a}, 0, 1) eq "?") @@ -13253,9 +13253,9 @@ for my $version ( sort { $a <=> $b } keys %released ) { 'Math::BigFloat::Trace' => '0.42_01', 'Math::BigInt::Trace' => '0.42_01', 'Memoize' => '1.03_01', - 'Module::CoreList' => '5.20160903_24', - 'Module::CoreList::TieHashDelta'=> '5.20160903_24', - 'Module::CoreList::Utils'=> '5.20160903_24', + 'Module::CoreList' => '5.20161019_24', + 'Module::CoreList::TieHashDelta'=> '5.20161019_24', + 'Module::CoreList::Utils'=> '5.20161019_24', 'Module::Metadata::corpus::BOMTest::UTF16BE'=> undef, 'Module::Metadata::corpus::BOMTest::UTF16LE'=> undef, 'Module::Metadata::corpus::BOMTest::UTF8'=> '1', diff --git a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm index c7abfae..dc6b6ad 100644 --- a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm +++ b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm @@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta; use strict; use vars qw($VERSION); -$VERSION = '5.20160903_24'; +$VERSION = '5.20161019_24'; sub TIEHASH { my ($class, $changed, $removed, $parent) = @_; diff --git a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm index 449133b..3e97332 100644 --- a/dist/Module-CoreList/lib/Module/CoreList/Utils.pm +++ b/dist/Module-CoreList/lib/Module/CoreList/Utils.pm @@ -6,7 +6,7 @@ use vars qw[$VERSION %utilities]; use Module::CoreList; use Module::CoreList::TieHashDelta; -$VERSION = '5.20160903_24'; +$VERSION = '5.20161019_24'; sub utilities { my $perl = shift; diff --git a/dist/base/lib/base.pm b/dist/base/lib/base.pm index b69f359..d7193a6 100644 --- a/dist/base/lib/base.pm +++ b/dist/base/lib/base.pm @@ -6,6 +6,12 @@ use vars qw($VERSION); $VERSION = '2.23_01'; $VERSION =~ tr/_//d; +# simplest way to avoid indexing of the package: no package statement +sub base::__inc_scope_guard::DESTROY { + my $noop = $_[0][0]; + ref $_ and $_ == $noop and $_ = '.' for @INC; +} + # constant.pm is slow sub SUCCESS () { 1 } @@ -91,15 +97,15 @@ sub import { next if grep $_->isa($base), ($inheritor, @bases); - # Following blocks help isolate $SIG{__DIE__} changes + # Following blocks help isolate $SIG{__DIE__} and @INC changes { my $sigdie; { local $SIG{__DIE__}; my $fn = _module_to_filename($base); - local @INC = @INC; - pop @INC if my $dotty = $INC[-1] eq '.'; + my $dotty = $INC[-1] eq '.' && ( $INC[-1] = sub {()} ); eval { + my $redotty = $dotty && bless [ $dotty ], 'base::__inc_scope_guard'; require $fn }; # Only ignore "Can't locate" errors from our eval require. diff --git a/dist/base/t/incdot.t b/dist/base/t/incdot.t index 1619492..e0619a6 100644 --- a/dist/base/t/incdot.t +++ b/dist/base/t/incdot.t @@ -8,7 +8,7 @@ use Test::More tests => 2; if ($INC[-1] ne '.') { push @INC, '.' } -my $inc = quotemeta "@INC[0..$#INC-1]"; +my $inc = quotemeta "@INC"; eval { 'base'->import("foo") }; like $@, qr/\@INC contains: $inc\).\)/, diff --git a/dist/base/t/incmodified-vs-incdot.t b/dist/base/t/incmodified-vs-incdot.t new file mode 100644 index 0000000..a5288e8 --- /dev/null +++ b/dist/base/t/incmodified-vs-incdot.t @@ -0,0 +1,27 @@ +#!/usr/bin/perl -w + +use strict; +use Test::More tests => 10; # one test is in each BaseInc* itself + +use lib 't/lib'; + +# make it look like an older perl +BEGIN { push @INC, '.' if $INC[-1] ne '.' } + +use base 'BaseIncExtender'; + +BEGIN { + is $INC[0], 't/lib/blahblah', 'modules loaded by base can prepend entries to @INC'; + is $INC[1], 't/lib', 'previously prepended additional @INC entry remains'; + is $INC[-1], '.', 'dot still at end @INC after using base'; +} + +use base 'BaseIncDoubleExtender'; + +BEGIN { + is $INC[0], 't/lib/blahdeblah', 'modules loaded by base can prepend entries to @INC'; + is $INC[1], 't/lib/blahblah', 'previously prepended additional @INC entry remains'; + is $INC[2], 't/lib', 'previously prepended additional @INC entry remains'; + is $INC[-2], '.', 'dot still at previous end of @INC after using base'; + is $INC[-1], 't/lib/on-end', 'modules loaded by base can append entries to @INC'; +} diff --git a/dist/base/t/lib/BaseIncDoubleExtender.pm b/dist/base/t/lib/BaseIncDoubleExtender.pm new file mode 100644 index 0000000..455c5de --- /dev/null +++ b/dist/base/t/lib/BaseIncDoubleExtender.pm @@ -0,0 +1,9 @@ +package BaseIncDoubleExtender; + +BEGIN { ::ok( $INC[-1] ne '.', 'no trailing dot in @INC during module load from base' ) } + +use lib 't/lib/blahdeblah'; + +push @INC, 't/lib/on-end'; + +1; diff --git a/dist/base/t/lib/BaseIncExtender.pm b/dist/base/t/lib/BaseIncExtender.pm new file mode 100644 index 0000000..3b693ad --- /dev/null +++ b/dist/base/t/lib/BaseIncExtender.pm @@ -0,0 +1,7 @@ +package BaseIncExtender; + +BEGIN { ::ok( $INC[-1] ne '.', 'no trailing dot in @INC during module load from base' ) } + +use lib 't/lib/blahblah'; + +1; diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 666a25c..45097e4 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -191,7 +191,7 @@ L<Memoize> has been upgraded from version 1.03 to 1.03_01. =item * -L<Module::CoreList> has been upgraded from version 5.20160506 to 5.20160903_24. +L<Module::CoreList> has been upgraded from version 5.20160506 to 5.20161019_24. =item * diff --git a/t/porting/customized.dat b/t/porting/customized.dat index 2532e30..4c62386 100644 --- a/t/porting/customized.dat +++ b/t/porting/customized.dat @@ -159,7 +159,7 @@ Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm 76771092dd2b87a Test::Harness cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm bf1fbfff9720330886651f183959a5db56daeea0 Test::Harness cpan/Test-Harness/lib/Test/Harness.pm da2d76ba673372da129060c9d0adb8cf0d91f9f7 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac -base dist/base/lib/base.pm e46ed81849982613d87463879da4edf4de20ad7e +base dist/base/lib/base.pm b65c508c9d699bf2b7913fb17dc9b23d4c508b33 bignum cpan/bignum/lib/bigint.pm 56330354995409dab5073ea92d749f8727e265db bignum cpan/bignum/lib/bignum.pm e999973f78e6be12282c11bb6328246b31a9576b bignum cpan/bignum/lib/bigrat.pm 7fccc9df30e43dbbae6e5ea91b26c8046545c9a9 -- Perl5 Master Repository