Front page | perl.perl5.porters |
Postings from January 2004
PATCH for perl-5.8.4
Thread Next
From:
Edward S. Peschko
Date:
January 21, 2004 08:10
Subject:
PATCH for perl-5.8.4
Message ID:
20040120012118.GA29151@mdssdev05.comp.pge.com
hey,
Could you include the following patch for perl-5.8.4? It seems to have gotten
lost in the shuffle.
Right now, to get dl_shared_object files, you do:
----
foreach my $mod (@DynaLoader::dl_modules)
{
require strict;
strict::->unimport('refs');
next if $mod eq 'B';
if (defined &{$mod.'::bootstrap'})
{
my $boot = \&{$mod.'::bootstrap'};
my $cv = B::svref_2object($boot);
# Copied from XSLoader
my @modparts = split(/::/,$mod);
my $modfname = $modparts[-1];
my $modpname = join('/',@modparts);
my $modlibname = $INC{"$modpname.pm"};
my $c = @modparts;
$modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename
my $file = "$modlibname/auto/$modpname/$modfname.$Config{'dlext'}";
unless (-r $file)
{
foreach my $dir (@INC)
{
$file = "$dir/auto/$modpname/$modfname.$Config{'dlext'}";
last if -r $file;
}
}
print "#Load $mod $file\n";
}
}
-----
as opposed to, with patch:
for ($xx = 0; $xx < @DynaLoader::dl_shared_objects)
{
my $file = $DynaLoader::dl_shared_objects[$xx];
my $mod = $DynaLoader::dl_modules[$xx];
print "#Load $mod $file\n";
}
Thanks,
Ed
..patch with patch -p1 -d :perldir: < :patch:
diff -rc perl-5.8.1/ext/DynaLoader/DynaLoader_pm.PL perl-5.8.1.new/ext/DynaLoader/DynaLoader_pm.PL
*** perl-5.8.1/ext/DynaLoader/DynaLoader_pm.PL Sat Sep 13 10:14:41 2003
--- perl-5.8.1.new/ext/DynaLoader/DynaLoader_pm.PL Mon Jan 19 17:05:39 2004
***************
*** 80,85 ****
--- 80,86 ----
my $Mac_FS;
$Mac_FS = eval { require Mac::FileSpec::Unixish } if $Is_MacOS;
+ @dl_shared_objects = (); # shared objects for symbols we have
@dl_require_symbols = (); # names of symbols we need
@dl_resolve_using = (); # names of files to link with
@dl_library_path = (); # path to look for files
***************
*** 330,335 ****
--- 331,339 ----
my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file);
# See comment block above
+
+ push(@dl_shared_objects, $file); # record files loaded
+
&$xs(@args);
}
***************
*** 548,553 ****
--- 552,558 ----
$dl_debug
@dl_librefs
@dl_modules
+ @dl_shared_objects
Implemented in:
bootstrap($modulename) Perl
@filepaths = dl_findfile(@names) Perl
***************
*** 622,627 ****
--- 627,636 ----
=item @dl_modules
An array of module (package) names that have been bootstrap'ed.
+
+ =item @dl_shared_objects
+
+ An array of file names for the shared objects that were loaded.
=item dl_error()
Thread Next
-
PATCH for perl-5.8.4
by Edward S. Peschko