Re-initializing this thread. The problem statement: Executable built with 'pp' doesn't on some target machines with errors as shown below. I just built an pp executable for printing @INC
bash-2.05b$ pp -o showinc -e 'print "INC = @INC\n"' On trying to run from different machine, it failed with errors as follows. bash-0.5# ./showinc Fcntl object version 1.05 does not match bootstrap parameter 1.06 at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/DynaLoader.pm line 252. BEGIN failed--compilation aborted at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/Fcntl.pm line 216. Compilation failed in require at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/IO/Seekable.pm line 104. BEGIN failed--compilation aborted at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/IO/Seekable.pm line 104. Compilation failed in require at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/IO/File.pm line 133. BEGIN failed--compilation aborted at /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi/IO/File.pm line 133. Compilation failed in require at -e line 352. bash-0.5# I'm really looking for some pointers as this has been some major escalation, as my product delivered using pp is not running at the user machine. It would be really great of you in helping me out resolving this issue. Thanks, Bharath -----Original Message----- From: Veera, Bharath Kumar Sent: Friday, November 21, 2008 9:15 PM To: Roderich Schupp; bob davis Cc: par@perl.org Subject: RE: PP binary not running with error message: "IO object version 1.22 does not match bootstrap parameter 1.23 " Hi Bob & Roderich, Thanks a lot for the quick replies. Roderich, here are the results you had asked for: On the build system :- ---------------------- bash-2.05b$ perl -e 'print "INC = @INC\n"' INC = /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.8 /opt/perl_32/lib/site_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.8 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/vendor_perl/5.8.8 /opt/perl_32/lib/vendor_perl . bash-2.05b$ pp -o showinc -e 'print "INC = @INC\n"' bash-2.05b$ ./showinc INC = CODE(0x4075a860) CODE(0x4075a9d4) On the test system :- ---------------------- bash-2.05# ./showinc INC = CODE(0x4075aaa0) CODE(0x4075ac14) bash-2.05# perl -e 'print "INC = @INC\n"' INC = /opt/perl_32/lib/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/5.8.8 /opt/perl_32/lib/site_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/site_perl/5.8.8 /opt/perl_32/lib/site_perl /opt/perl_32/lib/vendor_perl/5.8.8/IA64.ARCHREV_0-thread-multi /opt/perl_32/lib/vendor_perl/5.8.8 /opt/perl_32/lib/vendor_perl . But I didn't get any /tmp/par-XXXX/SOMEHASHDIGEST sorts. And PERL5LIB & PERLLIB environment variables were not defined at all. Is something wrong on my build system? And YES, I use " use lib '../lib'; " kind of code, to refer to my other modules in different directory. Does this affect the @INC such that the resultant pp binary fails? If at all I have to use different methonds to refer to the modules in different directories, can you give me some pointers. Thanks a lot for the help. Let me know if you both need any further information. Regards, Bharath Veera -----Original Message----- From: Roderich Schupp [mailto:roderich.sch...@googlemail.com] Sent: Friday, November 21, 2008 4:15 PM To: Veera, Bharath Kumar Cc: par@perl.org Subject: Re: PP binary not running with error message: "IO object version 1.22 does not match bootstrap parameter 1.23 " On Wed, Nov 19, 2008 at 8:07 PM, Veera, Bharath Kumar <bharath-kumar.ve...@hp.com> wrote: > I've built the perl binary with pp on HP UX 11.23 & while running the same on > another test machine, the build fails with the following error: > > I strongly agree with the first solution as the binary should ideally not > depend on the things > present on the target system. Indeed, this is how it's supposed to work. There are many possible causes why it doesn't. One possible cause was already mentioned by Bob (environment variable PERL5LIB set on target system). Or could be your script or packed modules that manipulate the module search path (@INC), either implicitly like "use lib ...;" or explicitly like "push @INC, ...;". Did you use the latest and greatest version of pp, i.e. PAR::Packer? Could you try the following experiment: - run pp -o showinc -e 'print "INC = @INC\n"' on the build system - and then run ./showinc on the target system The correct output should only show directory names starting with /tmp/par-XXXX/SOMEHASHDIGEST and CODE(...) references. Cheers, Roderich