Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[rt.cpan.org #65535] Unable to run perl script packaged with pp under cygwin on another Windows XP installation

57 views
Skip to first unread message

Oren Cheyette via RT

unread,
Feb 7, 2011, 11:25:16 AM2/7/11
to p...@perl.org, jess...@bestpractical.com
Mon Feb 07 11:25:16 2011: Request 65535 was acted upon.
Transaction: Ticket created by oche...@gmail.com
Queue: PAR
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation
Broken in: (no value)
Severity: (no value)
Owner: Nobody
Requestors: oche...@gmail.com
Status: new
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


I created a perl script parseDealerFiles.exe with pp:
pp -o parseDealerFiles.exe -c read_agency.pl

The resulting package runs fine on the build system. On other platforms,
however, it fails. On a clean XP box (no cygwin or perl installed), it fails
with
> parseDealerFiles.exe
/cygdrive/c/DOCUME~1/OCHEYE~1/LOCALS~1/Temp/par-OCheyette/cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801/parseDealerFiles:
error while loading shared libraries:
cygperl5_10.dll: cannot open shared object file: No such file or directory

This failure happens even though the dll does in fact exist in the cache:
>dir "C:\Documents and Settings\OCheyette\Local
>Settings\Temp\par-OCheyette\cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801\cygperl5_10.dll"
>

Directory of C:\Documents and Settings\OCheyette\Local
Settings\Temp\par-OCheyette\cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801

02/07/2011 07:43 AM 1,665,958 cygperl5_10.dll
1 File(s) 1,665,958 bytes
0 Dir(s) 65,451,020,288 bytes free


I attempted to fix this problem by installing a minimal version of cygwin+perl
on the clean system. That didn't work either - I hit some problem with the POSIX
module:
Can't locate
./C:/TEMP/par-OCheyette/cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801/inc/lib/auto/POSIX/load_import.al
in @INC (@INC contains: CODE(0x10a8a680)
C:/TEMP/par-OCheyette/cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801/inc/lib
C:/TEMP/par-OCheyette/cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801/inc
CODE(0x108034a0) CODE(0x108039b0) /sfcore/Portfolio/Scripts) at POSIX.pm line 25

Version information:
> perl --version
This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
(with 13 registered patches, see perl -V for more detail)
...
> pp --version
PAR Packager, version 1.008 (PAR version 1.002)
Copyright 2002-2009 by Audrey Tang <cp...@audreyt.org>
...

Oren Cheyette via RT

unread,
Feb 7, 2011, 11:33:36 AM2/7/11
to p...@perl.org, jess...@bestpractical.com
Mon Feb 07 11:33:35 2011: Request 65535 was acted upon.
Transaction: Correspondence added by oche...@gmail.com
Queue: PAR
Subject: Re: [rt.cpan.org #65535] AutoReply: Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: Nobody
Requestors: oche...@gmail.com
Status: new
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


Also, uname returns
CYGWIN_NT-5.1

Roderich Schupp via RT

unread,
Feb 8, 2011, 5:46:39 AM2/8/11
to p...@perl.org, jess...@bestpractical.com
Tue Feb 08 05:46:38 2011: Request 65535 was acted upon.
Transaction: Correspondence added by RSCHUPP
Queue: PAR
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: Nobody
Requestors: oche...@gmail.com
Status: new
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


On 2011-02-07 11:25:16, oche...@gmail.com wrote:
> I created a perl script parseDealerFiles.exe with pp:
> pp -o parseDealerFiles.exe -c read_agency.pl
>
> The resulting package runs fine on the build system. On other
> platforms, however, it fails.

That's to be expected. The resulting executable still "lives"
in the Cygwin universe, hence needs a minimal Cygwin runtime.

If you want a real standalone executable, I suggest you use
a "native" Perl distribution, e.g. ActiveState or Strawberry.

Back to Cygwin: I just tried a minimal example (note that I
have gcc-4 installed and built my PAR::Packer with it).

$ pp -o hello.exe -e 'print "hello cygwin\n"'

The resulting hello.exe is linked with (in addition to
the Windows kernel32.dll)

DLL contained in Cygwin package

cygwin1.dll cygwin-1.7.7-1
cyggcc_s-1.dll cyggcc_s-1.dll
cygssp-0.dll libssp0-4.3.4-3

If you look into the cache area, C:/temp/par-USER/SHA1CHECKSUM
or similar, you'll see an executable called "hello" (it's
different from hello.exe - it's actually a special purpose
Perl interpreter). "hello" is also linked against the above
DLLs plus cygperl5_10.dll (which can also be found in the
cache area). The latter is in turn linked with

cygcrypt-0.dll (contained in crypt-1.1-1)
cygwin1.dll
cyggcc_s-1.dll
cygssp-0.dll

So all Cygwin packages mentioned above need to be installed
whereever you want to run the executable. (Package "perl" should NOT
be needed, as cygperl5_10.dll has been packed in.)

> I attempted to fix this problem by installing a minimal version of
> cygwin+perl on the clean system. That didn't work either - I hit
> some problem with the POSIX module:
> Can't locate
./C:/TEMP/par-OCheyette/cache-f3bb3a3b5cf33a95f9828a5031438146c41d2801/inc/lib/auto/POSIX/load_import.al

Different problem. Strange path name:
- note ".C/:" at the beginning
- the file is actually called load_imports.al (note the "s")

Cheers, Roderich

Oren Cheyette via RT

unread,
Feb 8, 2011, 9:50:29 AM2/8/11
to p...@perl.org, jess...@bestpractical.com
Tue Feb 08 09:50:28 2011: Request 65535 was acted upon.

Transaction: Correspondence added by oche...@gmail.com
Queue: PAR
Subject: Re: [rt.cpan.org #65535] Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: Nobody
Requestors: oche...@gmail.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


I actually did the cygwin install. Hence the mention in the bug report of doing
a minimal install of cygwin and perl to try to fix the issue.


Any thoughts on what's causing the POSIX load_import error? The error message is
EXACTLY what appeared on the screen - no "s" at the end of load_import. And it
was PAR (pp) that did all the relocation and renaming, so I have no idea what
caused the screwy ./C: at the beginning.

Thanks for the help.


________________________________
From: Roderich Schupp via RT <bug...@rt.cpan.org>
To: oche...@gmail.com
Sent: Tue, February 8, 2011 2:46:39 AM
Subject: [rt.cpan.org #65535] Unable to run perl script packaged with pp under

cygwin on another Windows XP installation

Roderich Schupp via RT

unread,
Feb 8, 2011, 10:35:15 AM2/8/11
to p...@perl.org, jess...@bestpractical.com
Tue Feb 08 10:35:14 2011: Request 65535 was acted upon.
Transaction: Correspondence added by RSCHUPP
Queue: PAR
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: Nobody
Requestors: oche...@gmail.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


On 2011-02-08 09:50:28, oche...@gmail.com wrote:
> I actually did the cygwin install. Hence the mention in the bug report
> of doing
> a minimal install of cygwin and perl to try to fix the issue.

Please try my previous hello example on the machine with
the minimal Cygwin install. Does it work?

If not: you can find out about the DLLs needed with

$ objdump -ax hello.exe | grep 'DLL Name'
DLL Name: cygwin1.dll
DLL Name: cyggcc_s-1.dll
DLL Name: cygssp-0.dll
DLL Name: KERNEL32.dll

and then

$ cygcheck -f /usr/bin/cygwin1.dll
cygwin-1.7.7-1

etc to find the Cygwin package that contains these DLLs.
Repeat for the executable named "hello" in the cache area
and cygperl5_10.dll.

> Any thoughts on what's causing the POSIX load_import error? The error
> message is
> EXACTLY what appeared on the screen - no "s" at the end of
> load_import.

Yeah, I can reproduce that here with a minimal

$ pp -o posix.exe -e 'use POSIX; print "OK"'

Stay tuned.

Cheers, Roderich

Roderich Schupp via RT

unread,
Feb 8, 2011, 4:15:26 PM2/8/11
to p...@perl.org, jess...@bestpractical.com
Tue Feb 08 16:15:25 2011: Request 65535 was acted upon.

Transaction: Correspondence added by RSCHUPP
Queue: PAR
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation
Broken in: (no value)
Severity: (no value)
Owner: RSCHUPP


On 2011-02-08 10:35:14, RSCHUPP wrote:
> Stay tuned.

OK, nailed it. Some weird heuristic in AutoBuilder.pm
(a Perl core module) got the wrong idea when presented "C:\TEMP\...".
So don't do that (at least for Cygwin).

Can you please apply the following patch to PAR::Packer,
then rebuild and re-install PAR::Packer. Finally re-pack your script
and try it out.

Cheers, Roderich


Index: myldr/mktmpdir.c
===================================================================
--- myldr/mktmpdir.c (revision 1233)
+++ myldr/mktmpdir.c (working copy)
@@ -58,7 +58,12 @@
char *c;
const char *tmpdir = NULL;
const char *key = NULL , *val = NULL;
- const char *temp_dirs[4] = { "C:\\TEMP", P_tmpdir, ".", "" };
+ const char *temp_dirs[4] = {
+ P_tmpdir,
+#ifdef WIN32
+ "C:\\TEMP",
+#endif
+ ".", "" };
const char *temp_keys[6] = { "PAR_TMPDIR", "TMPDIR", "TEMPDIR",
"TEMP", "TMP", "" };
const char *user_keys[3] = { "USER", "USERNAME", "" };


Oren Cheyette via RT

unread,
Feb 8, 2011, 6:45:30 PM2/8/11
to p...@perl.org, jess...@bestpractical.com
Tue Feb 08 18:45:29 2011: Request 65535 was acted upon.

Transaction: Correspondence added by oche...@gmail.com
Queue: PAR
Subject: Re: [rt.cpan.org #65535] Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: RSCHUPP
Requestors: oche...@gmail.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


Seems to work, though it surfaced some other cygwin related problem, but it
doesn't seem to have anything to do with PAR.

Thanks.


________________________________
From: Roderich Schupp via RT <bug...@rt.cpan.org>
To: oche...@gmail.com

Sent: Tue, February 8, 2011 1:15:26 PM
Subject: [rt.cpan.org #65535] Unable to run perl script packaged with pp under

cygwin on another Windows XP installation

Roderich Schupp via RT

unread,
Feb 11, 2011, 5:19:59 AM2/11/11
to p...@perl.org, jess...@bestpractical.com
Fri Feb 11 05:19:59 2011: Request 65535 was acted upon.
Transaction: Correspondence added by RSCHUPP
Queue: PAR
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation

Broken in: (no value)
Severity: (no value)
Owner: RSCHUPP
Requestors: oche...@gmail.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


BTW, the attached fix only solves the problem in a special case.
I've just comitted a more general fix, will be in the next release.

On 2011-02-08 18:45:29, oche...@gmail.com wrote:
> Seems to work, though it surfaced some other cygwin related problem,
> but it
> doesn't seem to have anything to do with PAR.

Closing this bug now. Feel free to open a new one if
you encounter other problems with PAR::Packer on Cygwin.

Cheers, Roderich

Roderich Schupp via RT

unread,
Oct 12, 2012, 2:50:48 AM10/12/12
to p...@perl.org
Fri Oct 12 02:50:47 2012: Request 65535 was acted upon.
Transaction: Correspondence added by RSCHUPP
Queue: PAR-Packer
Subject: Unable to run perl script packaged with pp under cygwin on another Windows XP installation
Broken in: 1.012
Severity: (no value)
Owner: RSCHUPP
Requestors: oche...@gmail.com
Status: open
Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=65535 >


Fixed in 1.013
0 new messages