Skip Menu |

This queue is for tickets about the PAR CPAN distribution.

Report information
The Basics
Id: 6674
Status: rejected
Priority: 0/
Queue: PAR

People
Owner: Nobody in particular
Requestors: mikkon [...] excelsql.com
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 0.83
Fixed in: (no value)



Subject: $DynaLoader::do_expand causes failures on Win32
I tried to convert a large Perl project to a single-file script with the following command: pp -P -B proj.pl When I run the resulting a.pl file, I get the following errors: Can't locate loadable object for module Sys::Hostname in @INC (@INC contains: [...].) at D:/Tools/Perl/site/lib/PAR/Heavy.pm line 104 Can't locate loadable object for module Socket in @INC (@INC contains: [...].) at D:/Tools/Perl/site/lib/PAR/Heavy.pm line 104 Compilation failed in require at IO/Socket.pm line 12. BEGIN failed--compilation aborted at IO/Socket.pm line 12. [...] The mentioned packages are correctly included in the a.pl file. I checked the cache directory under TEMP, and Hostname.dll and Socket.dll were there just fine. I debugged this issue by using the PERL_DL_DEBUG environment variable, and by adding debugging code to the files in the cache directory. The problem went away when I did the following change: Heavy.pm, line 103 (function _bootstrap): local $DynaLoader::do_expand = 1; -> local $DynaLoader::do_expand = 0; I don't know why do_expand is set to 1 here, but in my setup it causes a call to the dummy dl_expandspec function set in _init_dynaloader on line 38 of Heavy.pm. This dummy function does nothing, causing all files to be reported as missing. When I did this change to the Heavy.pm file under the Perl directory, I was able to build a working script from my project. Please investigate, and you'll probably come up with a better fix! I am running PAR 0.83 on ActiveState Perl v5.8.3 (MSWin32-x86-multi-thread).
On Sa. 19. Jun. 2004, 16:05:42, guest wrote: Show quoted text
> I tried to convert a large Perl project to a single-file script with > the following command: > > pp -P -B proj.pl > > When I run the resulting a.pl file, I get the following errors: > > Can't locate loadable object for module Sys::Hostname in @INC (@INC > contains: [...].) at D:/Tools/Perl/site/lib/PAR/Heavy.pm line 104 > Can't locate loadable object for module Socket in @INC (@INC contains: > [...].) at D:/Tools/Perl/site/lib/PAR/Heavy.pm line 104 > Compilation failed in require at IO/Socket.pm line 12. > BEGIN failed--compilation aborted at IO/Socket.pm line 12. > [...] > > The mentioned packages are correctly included in the a.pl file. I > checked the cache directory under TEMP, and Hostname.dll and > Socket.dll were there just fine. > > I debugged this issue by using the PERL_DL_DEBUG environment variable, > and by adding debugging code to the files in the cache directory. > The problem went away when I did the following change: > > Heavy.pm, line 103 (function _bootstrap): > > local $DynaLoader::do_expand = 1; > -> > local $DynaLoader::do_expand = 0; > > I don't know why do_expand is set to 1 here, but in my setup it causes > a call to the dummy dl_expandspec function set in _init_dynaloader > on line 38 of Heavy.pm. This dummy function does nothing, causing > all files to be reported as missing. > > When I did this change to the Heavy.pm file under the Perl directory, > I was able to build a working script from my project. Please > investigate, and you'll probably come up with a better fix! > > I am running PAR 0.83 on ActiveState Perl v5.8.3 (MSWin32-x86-multi- > thread).
Hi, sorry for the extremely belated answer. I have picked up PAR maintenance some time ago and I'm churning through the list of bug reports that has built up. Most likely, you aren't even interested in this PAR bug any more, but would you consider retrying with the most current version of PAR (0.959)? Before looking into bugs carefully, I'd like to know whether they have been fixed. This one might well be gone. You can just reply to this with your findings if you like. Thanks, Steffen
This bug report is now four years old. It's not possible for me to reproduce the problem and the original requestor hasn't answered my reply for two years. (No offense taken, I *was* really late in answering myself.) Therefore, I am rejecting this ticket.