In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/6e0eede9b1aceb547aaf28a246d0f7792ed6e360?hp=d50f1408338c986819086d7001a554dcd41e31f5>
- Log ----------------------------------------------------------------- commit 6e0eede9b1aceb547aaf28a246d0f7792ed6e360 Author: Nicholas Clark <[email protected]> Date: Wed Oct 6 19:20:04 2010 +0100 Avoid defining a full XSLoader::bootstrap_inherit post 5.6, as it's not needed. Previously the full pre 5.6 XSLoader::bootstrap_inherit emulation code was always declared, but only used with a *runtime* check of Perl version. However, it appears to be part of the implicit API of XSLoader that XSLoader::bootstrap_inherit exists, so keep a stub implementation post 5.6 the commit. ----------------------------------------------------------------------- Summary of changes: dist/XSLoader/XSLoader_pm.PL | 31 +++++++++++++++++++++++-------- 1 files changed, 23 insertions(+), 8 deletions(-) diff --git a/dist/XSLoader/XSLoader_pm.PL b/dist/XSLoader/XSLoader_pm.PL index f2e5bbc..47492e1 100644 --- a/dist/XSLoader/XSLoader_pm.PL +++ b/dist/XSLoader/XSLoader_pm.PL @@ -8,7 +8,7 @@ print OUT <<'EOT'; package XSLoader; -$VERSION = "0.11"; +$VERSION = "0.12"; #use strict; @@ -34,7 +34,7 @@ sub load { my $boots = "$module\::bootstrap"; goto &$boots if defined &$boots; - goto retry unless $module and defined &dl_load_file; + goto \&XSLoader::bootstrap_inherit unless $module and defined &dl_load_file; my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; @@ -82,7 +82,7 @@ print OUT <<'EOT'; warn "$bs: $...@\n" if $@; } - goto retry if not -f $file or -s $bs; + goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @@ -133,15 +133,26 @@ print OUT <<'EOT'; # See comment block above push(@DynaLoader::dl_shared_objects, $file); # record files loaded return &$xs(@_); +} +EOT + +# Can't test with DynaLoader->can('bootstrap_inherit' when building in the +# core, as XSLoader gets built before DynaLoader. - retry: - my $bootstrap_inherit = DynaLoader->can('bootstrap_inherit') || - XSLoader->can('bootstrap_inherit'); - goto &$bootstrap_inherit; +if ($] >= 5.006) { + print OUT <<'EOT'; + +sub bootstrap_inherit { + require DynaLoader; + goto \&DynaLoader::bootstrap_inherit; } -# Versions of DynaLoader prior to 5.6.0 don't have this function. +EOT +} else { + print OUT <<'EOT'; + sub bootstrap_inherit { + # Versions of DynaLoader prior to 5.6.0 don't have bootstrap_inherit. package DynaLoader; my $module = $_[0]; @@ -152,6 +163,10 @@ sub bootstrap_inherit { DynaLoader::bootstrap(@_); } +EOT +} + +print OUT <<'EOT'; 1; -- Perl5 Master Repository
