Hi list,

I am really glad that Michael Schwern has taken the time to file a more
precise bug report than my musing in the recent post about the bug.

I'm attaching his bug report to this mail.

Best regards,
Steffen
--- Begin Message ---
       Queue: PAR-Packer
 Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=24192 >

I've tracked this down to that @INC is being rebuilt incorrectly such
that all the -Is to static are unshifted onto @INC in reverse.  This
results in the non-XS parts of @INC coming before the XS parts so the
non-XS version of Scalar::Util loads.

You can see the messed up @INC by placing

BEGIN {
        printf "In CZlib: %s\n", join "", map { "$_\n" } @INC;
}

at the top of Compress::Zlib.


The problem appears to be this in scripts/par.pl.

--- script/par.pl       (revision 54264)
+++ script/par.pl       (local)
@@ -413,11 +413,13 @@
         s   sign_par
         v   verify_par
     );
+
+    my @add_to_inc;
     while (@ARGV) {
         $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last;
 
         if ($1 eq 'I') {
-            unshift @INC, $2;
+            push @add_to_inc, $2;
         }
         elsif ($1 eq 'M') {
             eval "use $2";
@@ -455,6 +457,8 @@
             exit;
         }
     }
+
+    unshift @INC, @add_to_inc;
 }
 
 # XXX -- add --par-debug support!


However, that isn't enough.  For some reason printing out load_me_2 in
main.c is required for it to take effect.  I don't know why.  Using
strings on static shows that it contains the fixed par.pl.  I've tried
all sorts of make clean and patching a brand new tarball.


--- End Message ---

Reply via email to