Skip Menu |

This queue is for tickets about the PAR-Packer CPAN distribution.

Report information
The Basics
Id: 68817
Status: resolved
Priority: 0/
Queue: PAR-Packer

People
Owner: Nobody in particular
Requestors: nikosv01 [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: Critical
Broken in: 1.009
Fixed in: (no value)



Subject: Can't locate loadable object for module IO in @INC
Building an executable with Strawberry Perl is successful but when actually running it (after we have renamed the c:/strawberry to c:/strawberryX so it cannot find the dependencies from the path), fails with the following errors : " Can't locate loadable object for module IO in @INC (@INC contains: C +ODE(0xa1d31c ) C:\strawberry\perl\vendor\lib .) at C:/strawberry/perl/site/lib/PAR/ +Heavy.pm line 103</p> Compilation failed in require at C:/strawberry/perl/lib/IO/Handle.pm l +ine 266. " I am on WinXP SP3 ,PAR 1.002,PAR::Packer 1.009, and have tried Strawberry Perl versions 5.12.3.0,5.10.1.5,5.10.1.1 and the problem persists in all of them perl -V reveals something strange with the backslashes: %ENV: PERL_JSON_BACKEND="JSON::XS" PERL_YAML_BACKEND="YAML" @INC: C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib . "C:\strawberry\perl\vendor\lib" is not consistent with the other entries I've found id 52794 which is related to the issue although it refers to version PAR::Packer 1.001. Nevertheless I got the following line : if ($Config{_delim} eq '\\') { s{\\}{/}g for @inc } from the patch "proper-fix.patch" (the patch actually REMOVES this line) and added it to par.pl after line 540. I also corrected Strawberry's @INC , prepending the path "C:/strawberry/perl/vendor/lib" by setting the PERL5LIB env variable, rebuilt it and everything works fine and even tried it in machines that have no Perl installation whatsoever It looks like Strawberry has the path messed up and needs the correct one but also must be combined with "if ($Config{_delim} eq '\\') { s{\\}{/}g for @inc }"
Note to people who stumble over this bug report: The problem described exists and the real fix is rev 1257 in PAR::Packer's Subversion repo and will be in the next relase of PAR::Packer. The actual problem is that XSLoader.pm changed (in general) in Perl 5.14.0 and also in Strawberry 5.12.3.0. However the fix described in this post is bogus and the supplied information is erroneous, e.g. @INC cited DIFFERS from the one printed by Strawberry 5.12.3.0 as installed from MSI (which identifies itself as "Win32 strawberryperl 5.12.3.0 #1 Sun May 15 09:44:53 2011 i386"). Cheers, Roderich
From: nikosv01 [...] gmail.com
ok I did a clean install on a PC with Windows 2003 that had never Perl installed 1.strawberry-perl-5.10.1.5.msi 2.perl -V shows : Summary of my perl5 (revision 5 version 10 subversion 1) configuration: Platform: osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi- thread uname='Win32 strawberryperl 5.10.1.5 #1 Sun May 15 09:44:53 2011 i386' config_args='undef' hint=recommended, useposix=true, d_sigaction=undef useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='gcc', ccflags =' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE - DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -DPERL_MSVCRT_RE ADFIX', optimize='-s -O2', cppflags='-DWIN32' ccversion='', gccversion='3.4.5', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long long', lseek size=8 alignbytes=8, prototype=define Linker and Libraries: ld='g++', ldflags ='-s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\li b"' libpth=C:\strawberry\c\lib libs= -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi3 2 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversio n -lodbc32 -lodbccp32 perllibs= -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladv api32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lve rsion -lodbc32 -lodbccp32 libc=, so=dll, useshrplib=true, libperl=libperl510.a gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags='-mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\st rawberry\c\lib"' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_SITECUSTOMIZE Built under MSWin32 Compiled at May 15 2011 09:50:23 %ENV: PERL_JSON_BACKEND="JSON::XS" PERL_YAML_BACKEND="YAML" @INC: C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib . Still vendor lib path messed up 3. XSLoader.pm is version 0.15 and does not contain a 'goto retry' reference 4. pp -o test.exe test.pl 5.renamed strawberry to strawberrX so the dependencies cannot be found 6.run test.exe same error "Can't locate loadable object for module IO" etc..... 7.applied patch,rebuilt,pp'ed again,runs ok but this is Strawberry 5.10.1.5 not 5.12 or 5.14 Όταν Δευ Ιουν 20 04:21:34 2011, RSCHUPP γράψε: Show quoted text
> Note to people who stumble over this bug report: > > The problem described exists and the real fix is rev 1257 > in PAR::Packer's Subversion repo and will be in the next > relase of PAR::Packer. The actual problem is that > XSLoader.pm changed (in general) in Perl 5.14.0 and also > in Strawberry 5.12.3.0. > > However the fix described in this post is bogus and the supplied > information is erroneous, e.g. @INC cited DIFFERS from the one > printed by Strawberry 5.12.3.0 as installed from MSI > (which identifies itself as "Win32 strawberryperl 5.12.3.0 #1 Sun May 15 > 09:44:53 2011 i386"). > > Cheers, Roderich
On 2011-06-21 03:33:18, nikos wrote: Show quoted text
> but this is Strawberry 5.10.1.5 not 5.12 or 5.14
The problem actually depends on the version of XSLoader.pm (which is a dual-life module): versions <= 1.10 work fine and versions >= 0.14 need a patch to lib/PAR/Filter/PatchContent.pm Different Perl distributions may elect to include a newer version of XSLoader than the Perl release they are based on. Cheers, Roderich