Skip to content

Commit

Permalink
Merge 7ff86f9 into 1e43c13
Browse files Browse the repository at this point in the history
  • Loading branch information
toddr committed May 8, 2021
2 parents 1e43c13 + 7ff86f9 commit a1f04e3
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 66 deletions.
8 changes: 3 additions & 5 deletions dist/XSLoader/Makefile.PL
Expand Up @@ -8,6 +8,8 @@
use strict;
use warnings;

use v5.6;

use ExtUtils::MakeMaker;
use ExtUtils::MM_Unix;

Expand Down Expand Up @@ -101,11 +103,7 @@ WriteMakefile(
my @perls = ($orig_perl);
push @perls, qw(bleadperl
perl5.6.1
perl5.6.0
perl5.005_03
perl5.004_05
perl5.004_04
perl5.004)
perl5.6.0)
if $ENV{PERL_TEST_ALL};

my $out;
Expand Down
59 changes: 7 additions & 52 deletions dist/XSLoader/XSLoader_pm.PL
@@ -1,4 +1,6 @@
use strict;
use warnings;

use Config;
# We require DynaLoader to make sure that mod2fname is loaded
eval { require DynaLoader };
Expand All @@ -9,37 +11,15 @@ print OUT <<'EOT';
# Generated from XSLoader_pm.PL (resolved %Config::Config value)
# This file is unique for every OS
package XSLoader;
use strict;
no strict 'refs';
$VERSION = "0.30"; # remember to update version in POD!
package XSLoader;
#use strict;
our $VERSION = "0.32"; # remember to update version in POD!
package DynaLoader;
EOT

# dlutils.c before 5.006 has this:
#
# #ifdef DEBUGGING
# dl_debug = SvIV( perl_get_sv("DynaLoader::dl_debug", 0x04) );
# #endif
#
# where 0x04 is GV_ADDWARN, which causes a warning to be issued by the call
# into XS below, if DynaLoader.pm hasn't been loaded.
# It was changed to 0 in the commit(s) that added XSLoader to the core
# (9cf41c4d23a47c8b and its parent 9426adcd48655815)
# Hence to backport XSLoader to work silently with earlier DynaLoaders we need
# to ensure that the variable exists:

print OUT <<'EOT' if $] < 5.006;
# enable debug/trace messages from DynaLoader perl code
$dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug;
EOT

print OUT <<'EOT';
# No prizes for guessing why we don't say 'bootstrap DynaLoader;' here.
# NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB
boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) &&
Expand Down Expand Up @@ -208,42 +188,17 @@ print OUT <<'EOT';
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.
if ($] >= 5.006) {
print OUT <<'EOT';
sub bootstrap_inherit {
require DynaLoader;
goto \&DynaLoader::bootstrap_inherit;
}
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];
local *DynaLoader::isa = *{"$module\::ISA"};
local @DynaLoader::isa = (@DynaLoader::isa, 'DynaLoader');
# Cannot goto due to delocalization. Will report errors on a wrong line?
require DynaLoader;
DynaLoader::bootstrap(@_);
}
EOT
}

print OUT <<'EOT';
1;
__END__
=head1 NAME
Expand All @@ -252,7 +207,7 @@ XSLoader - Dynamically load C libraries into Perl code
=head1 VERSION
Version 0.30
Version 0.32
=head1 SYNOPSIS
Expand Down
4 changes: 2 additions & 2 deletions dist/XSLoader/t/XSLoader.t
@@ -1,6 +1,8 @@
#!perl -T

use strict;
use warnings;

use Config;

my $db_file;
Expand All @@ -10,8 +12,6 @@ BEGIN {
die "Test::More not available\n";
}

plan(skip_all => "these tests needs Perl 5.5+") if $] < 5.005;

use Config;
foreach (qw/SDBM_File GDBM_File ODBM_File NDBM_File DB_File/) {
if ($Config{extensions} =~ /\b$_\b/) {
Expand Down
23 changes: 16 additions & 7 deletions ext/DynaLoader/DynaLoader_pm.PL
Expand Up @@ -73,6 +73,8 @@ print OUT <<'EOT';
# Generated from DynaLoader_pm.PL, this file is unique for every OS
use strict;
package DynaLoader;
# And Gandalf said: 'Many folk like to know beforehand what is to
Expand All @@ -88,9 +90,12 @@ package DynaLoader;
# Tim.Bunce@ig.co.uk, August 1994
BEGIN {
$VERSION = '1.50';
our $VERSION = '1.51';
}
our (@dl_library_path, @dl_resolve_using, @dl_require_symbols,
$dl_debug, @dl_librefs, @dl_modules, @dl_shared_objects);
EOT

if (!$ENV{PERL_BUILD_EXPAND_CONFIG_VARS}) {
Expand Down Expand Up @@ -119,14 +124,14 @@ sub dl_load_flags { 0x00 }
EOT

if ($ENV{PERL_BUILD_EXPAND_CONFIG_VARS}) {
print OUT "(\$dl_dlext, \$dl_so, \$dlsrc) = (",
print OUT "our (\$dl_dlext, \$dl_so, \$dlsrc) = (",
to_string($Config{'dlext'}), ",",
to_string($Config{'so'}), ",",
to_string($Config{'dlsrc'}), ")\n;" ;
}
else {
print OUT <<'EOT';
($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)};
our ($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)};
EOT
}

Expand All @@ -141,7 +146,7 @@ print OUT expand_os_specific(<<'EOT');
# inefficient to define on systems that don't need it.
$Is_VMS = $^O eq 'VMS';
<</$^O-eq-VMS>>
$do_expand = <<$^O-eq-VMS>>1<<|$^O-eq-VMS>>0<</$^O-eq-VMS>>;
my $do_expand = <<$^O-eq-VMS>>1<<|$^O-eq-VMS>>0<</$^O-eq-VMS>>;
@dl_require_symbols = (); # names of symbols we need<<$^O-eq-freemint>>
@dl_resolve_using = (); # names of files to link with<</$^O-eq-freemint>><<$^O-eq-hpux>>
Expand Down Expand Up @@ -292,6 +297,8 @@ sub croak { require Carp; Carp::croak(@_) }
sub bootstrap_inherit {
my $module = $_[0];
no strict qw/refs vars/;
local *isa = *{"$module\::ISA"};
local @isa = (@isa, 'DynaLoader');
# Cannot goto due to delocalization. Will report errors on a wrong line?
Expand All @@ -300,9 +307,9 @@ sub bootstrap_inherit {
sub bootstrap {
# use local vars to enable $module.bs script to edit values
local(@args) = @_;
local($module) = $args[0];
local(@dirs, $file);
local our (@args) = @_;
local our ($module) = $args[0];
local our (@dirs, $file);
unless ($module) {
require Carp;
Expand Down Expand Up @@ -558,6 +565,8 @@ sub dl_find_symbol_anywhere
return undef;
}
1;
__END__
=head1 NAME
Expand Down
2 changes: 2 additions & 0 deletions ext/DynaLoader/Makefile.PL
@@ -1,4 +1,6 @@
use strict;
use warnings;

use ExtUtils::MakeMaker;

my $is_mswin = $^O eq 'MSWin32';
Expand Down
2 changes: 2 additions & 0 deletions ext/DynaLoader/t/DynaLoader.t
@@ -1,6 +1,8 @@
#!/usr/bin/perl -wT

use strict;
use warnings;

use Config;
push @INC, '.';
if (-f 't/test.pl') {
Expand Down

0 comments on commit a1f04e3

Please sign in to comment.