Skip Menu |

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

Report information
The Basics
Id: 33256
Status: new
Priority: 0/
Queue: PAR-Packer

People
Owner: Nobody in particular
Requestors: tshadwick+bitcard.org [...] oss-solutions.com
Cc:
AdminCc:

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



Subject: PAR::Packer fails to build from CPAN on win32/cygwin
When attempting to do an `install PAR::Packer` from CPAN, the build process dies at the following location: CPAN.pm: Going to build S/SM/SMUELLER/PAR-Packer-0.977.tar.gz make: *** No rule to make target `script/parldyn.exe', needed by `blib/script/parldyn.exe'. Stop. make: *** Waiting for unfinished jobs.... When attempting to build it outside of CPAN, this make target error does not occur, instead, it fails slightly later in the build: gcc static.o -s -s -s -L/usr/local/lib /usr/lib/perl5/5.8/cygwin/auto/DynaLoader /DynaLoader.a /usr/lib/perl5/5.8/cygwin/auto/Win32CORE/Win32CORE.a -L/usr/lib/pe rl5/5.8/cygwin/CORE -ldl -lcrypt -lgdbm_compat win32.coff --output ./static.exe /usr/bin/perl.exe -e1 /usr/bin/perl.exe parlsig.pl ./static.exe ./par.exe 1 30000 ./static.exe -I"/cygdrive/c/PAR-Packer-0.997/inc" -I"/usr/lib/perl5/5.8/cygwin" -I"/usr/lib/perl5/5.8" -I"/usr/lib/perl5/site_perl/5.8/cygwin" -I"/usr/lib/perl5 /site_perl/5.8" -I"/usr/lib/perl5/site_perl/5.8" -I"/usr/lib/perl5/vendor_perl/5 .8/cygwin" -I"/usr/lib/perl5/vendor_perl/5.8" -I"/usr/lib/perl5/vendor_perl/5.8" -I"/cygdrive/c/PAR-Packer-0.997" -I"." -I../myldr/.. -I../blib/lib -q -B -O../script/parl.exe make[1]: *** [../script/parl.exe] Error 34 make[1]: Leaving directory `/cygdrive/c/PAR-Packer-0.997/myldr' make: *** [subdirs] Error 2 The latter failure appears to be because despite the fact that static.exe is technically executable (it does in fact run but return nothing), since it does not return a successful value (thus the make Error 34), the make process dies here. Running the last command manually does not get me past the error. Something about running static.exe with a bunch of arguments, last of which being ../script/parl.exe is simply not functioning properly.
From: tshadwick+bitcard.org [...] oss-solutions.com
I've cleaned up the make output for when I build outside of CPAN. Here's the full `make`: $ make cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm cp lib/PAR/StrippedPARL/Dynamic.pm blib/lib/PAR/StrippedPARL/Dynamic.pm cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm cp lib/pp.pm blib/lib/pp.pm cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm cp lib/PAR/StrippedPARL/Static.pm blib/lib/PAR/StrippedPARL/Static.pm make[1]: Entering directory `/cygdrive/c/PAR-Packer-0.997/myldr' /usr/bin/perl.exe sha1.c.PL sha1.c gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/lib/perl5/5.8/cygwin/CORE sha1.c sha1.c: In function `sha_transform': sha1.c:146: warning: right shift count >= width of type /usr/bin/perl.exe ./file2c.pl /usr/lib/perl5/5.8/cygwin/CORE/libperl.dll.a my_perl.c load_me_0 1 30000 gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/lib/perl5/5.8/cygwin/CORE main.c /usr/bin/perl.exe ./file2c.pl ../script/par.pl my_par_pl.c load_me_2 1 gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/lib/perl5/5.8/cygwin/CORE my_par_pl.c ld2 main.o my_par_pl.o win32.coff -s -s -s -L/usr/local/lib /usr/lib/perl5/5.8/cygwin/auto/DynaLoader/DynaLoader.a /usr/lib/perl5/5.8/cygwin/auto/Win32CORE/Win32CORE.a -L/usr/lib/perl5/5.8/cygwin/CORE -lperl -ldl -lcrypt -lgdbm_compat --output ./par.exe gcc main.o my_par_pl.o win32.coff -s -s -s -L/usr/local/lib /usr/lib/perl5/5.8/cygwin/auto/DynaLoader/DynaLoader.a /usr/lib/perl5/5.8/cygwin/auto/Win32CORE/Win32CORE.a -L/usr/lib/perl5/5.8/cygwin/CORE -lperl -ldl -lcrypt -lgdbm_compat --output ./par.exe Info: resolving _PL_memory_wrap by linking to __imp__PL_memory_wrap (auto-import) /usr/bin/perl.exe -e1 /usr/bin/perl.exe ./file2c.pl ./par.exe my_par.c load_me_1 1 30000 gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/lib/perl5/5.8/cygwin/CORE static.c In file included from mktmpdir.h:76, from mktmpdir.c:1, from static.c:4: sha1.c: In function `sha_transform': sha1.c:146: warning: right shift count >= width of type ld2 static.o -s -s -s -L/usr/local/lib /usr/lib/perl5/5.8/cygwin/auto/DynaLoader/DynaLoader.a /usr/lib/perl5/5.8/cygwin/auto/Win32CORE/Win32CORE.a -L/usr/lib/perl5/5.8/cygwin/CORE -ldl -lcrypt -lgdbm_compat win32.coff --output ./static.exe gcc static.o -s -s -s -L/usr/local/lib /usr/lib/perl5/5.8/cygwin/auto/DynaLoader/DynaLoader.a /usr/lib/perl5/5.8/cygwin/auto/Win32CORE/Win32CORE.a -L/usr/lib/perl5/5.8/cygwin/CORE -ldl -lcrypt -lgdbm_compat win32.coff --output ./static.exe /usr/bin/perl.exe -e1 /usr/bin/perl.exe parlsig.pl ./static.exe ./par.exe 1 30000 ./static.exe -I"/cygdrive/c/PAR-Packer-0.997/inc" -I"/usr/lib/perl5/5.8/cygwin" -I"/usr/lib/perl5/5.8" -I"/usr/lib/perl5/site_perl/5.8/cygwin" -I"/usr/lib/perl5/site_perl/5.8" -I"/usr/lib/perl5/site_perl/5.8" -I"/usr/lib/perl5/vendor_perl/5.8/cygwin" -I"/usr/lib/perl5/vendor_perl/5.8" -I"/usr/lib/perl5/vendor_perl/5.8" -I"/cygdrive/c/PAR-Packer-0.997" -I"." -I../myldr/.. -I../blib/lib -q -B -O../script/parl.exe make[1]: *** [../script/parl.exe] Error 34 make[1]: Leaving directory `/cygdrive/c/PAR-Packer-0.997/myldr' make: *** [subdirs] Error 2
From: tshadwick+bitcard.org [...] oss-solutions.com
It appears that static.exe's malfunction might be related to the sha1 shift warning. The code in sha1.c that is failing is here: #define SWAP_DONE /* assert(sizeof(ULONG) == 8); */ for (i = 0; i < 16; i += 2) { T = *((ULONG *) dp); dp += 8; W[i] = ((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) | ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff); T >>= 32; W[i+1] = ((T << 24) & 0xff000000) | ((T << 8) & 0x00ff0000) | ((T >> 8) & 0x0000ff00) | ((T >> 24) & 0x000000ff); } #endif Specifically: T >>= 32; It says "warning: right shift count >= width of type" So we're trying to shift T a greater amount than T's type. From earlier in the code, it establishes T as a 64 bit ULONG. Weird thing is, this is just a typical byteswap mechanism for endianess (I think?), so I'm confused as to what the problem is. In either case, it's supposed to just be a warning, and it does say "greater than or equal to width of type", so if it's equal, then there's no problem. Heeeelllllp. :)
From: tshadwick+bitcard.org [...] oss-solutions.com
Sorry for the spam. :( I went head and built PAR::Packer on one of my FreeBSD servers, and confirmed that I should be getting some kind of output from static.exe. On FreeBSD I get this: manager# ./static Usage: ./static [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] ./static [ -B|-b ] [-Ooutfile] src.par In cygwin running the same command looks like this: AMSHAD@WEBTEAM-TEMP-1 /cygdrive/c/PAR-Packer-0.997/myldr $ ./static AMSHAD@WEBTEAM-TEMP-1 /cygdrive/c/PAR-Packer-0.997/myldr Just confirming that the built static.exe is faulty.
From: tshadwick+bitcard.org [...] oss-solutions.com
Life. The Universe. Everything. WTF. $ gdb static.exe GNU gdb 6.5.50.20060706-cvs (cygwin-special) Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i686-pc-cygwin"...(no debugging symbols found) (gdb) run static.exe Starting program: /cygdrive/c/PAR-Packer-0.997/myldr/static.exe static.exe Loaded symbols for /cygdrive/c/WINDOWS/system32/ntdll.dll Loaded symbols for /cygdrive/c/WINDOWS/system32/kernel32.dll Loaded symbols for /usr/bin/cygwin1.dll Loaded symbols for /cygdrive/c/WINDOWS/system32/advapi32.dll Loaded symbols for /cygdrive/c/WINDOWS/system32/rpcrt4.dll Loaded symbols for /cygdrive/c/WINDOWS/system32/secur32.dll Program exited with code 042. Cute exit code, but what does it mean? I don't want to hear, "Life, the universe, everything"! :)
From: tshadwick+bitcard.org [...] oss-solutions.com
Out of desperation, I started messing with gcc's build flags on cygwin and did finally get static.exe to build properly. The flags that were being used before were: gcc -c -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/lib/perl5/5.8/cygwin/CORE static.c I changed it to this: gcc -c -DPERL_USE_SAFE_PUTENV -fomit-frame-pointer -O2 -I/usr/lib/perl5/5.8/cygwin/CORE static.c I'm not sure what the implications of these changes are, but they work. On Thu Feb 14 12:10:50 2008, Numbski wrote: Show quoted text
> Life. The Universe. Everything. WTF. > > $ gdb static.exe > GNU gdb 6.5.50.20060706-cvs (cygwin-special) > Copyright (C) 2006 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and
you are Show quoted text
> welcome to change it and/or distribute copies of it under certain > conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for
details. Show quoted text
> This GDB was configured as "i686-pc-cygwin"...(no debugging symbols found) > > (gdb) run static.exe > Starting program: /cygdrive/c/PAR-Packer-0.997/myldr/static.exe static.exe > Loaded symbols for /cygdrive/c/WINDOWS/system32/ntdll.dll > Loaded symbols for /cygdrive/c/WINDOWS/system32/kernel32.dll > Loaded symbols for /usr/bin/cygwin1.dll > Loaded symbols for /cygdrive/c/WINDOWS/system32/advapi32.dll > Loaded symbols for /cygdrive/c/WINDOWS/system32/rpcrt4.dll > Loaded symbols for /cygdrive/c/WINDOWS/system32/secur32.dll > > Program exited with code 042. > > Cute exit code, but what does it mean? I don't want to hear, "Life, the > universe, everything"! :)