develooper 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


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About