On January 8, 2016 10:53, Steffen Mueller wrote in perl5-porters:
Picking out one of the failures:
>
On 01/07/2016 09:59 PM, Andreas Koenig wrote:
> > - RSCHUPP/PAR-Packer-1.028.tar.gz
> >
> > main.o: In function `par_redo_stack':
> >
> /tmp/loop_over_bdir-6977-63Xcet/PAR-Packer-1.028-WKcHP9/myldr/internals.c:3:
> undefined reference to `PUSHEVAL'
>
My gut says that this should be easy to fix, but I haven't tried. I also
don't know if I'll get to it any time soon (and also, Roderich is quite
capable of it himself).
Uh, that's the infamous Internals::PAR::CLEARSTACK (in myldr/internals.c).
I've wondered on several occasions what its intended purpose was.
My guess is that a script like
use Carp qw(cluck);
sub bar { cluck("you are here -->\n"); }
sub foo { bar(); }
foo();
which produces the following output
you are here -->
at cluck.pl line 2.
main::bar() called at cluck.pl line 3
main::foo() called at cluck.pl line 4
would produce the same output when packed, instead of
you are here -->
at script/cluck.pl line 2.
main::bar() called at script/cluck.pl line 3
main::foo() called at script/cluck.pl line 4
require main called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 636
PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x1d500e0)', 1)
called at script/main.pl line 26
require main called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 636
PAR::_run_member('Archive::Zip::ZipFileMember=HASH(0x1d503c8)')
called at
/home/roderich/perl5/perlbrew/perls/perl-5.18.4/lib/site_perl/5.18.4/PAR.pm
line 428
PAR::import('PAR') called at -e line 634
eval {...} called at -e line 41
__par_pl::BEGIN() called at script/cluck.pl line 0
eval {...} called at script/cluck.pl line 0
However, this CLEARSTACK feature has not been enabled for ages. In fact, if
I enable it it makes any packed executable segfault with any version of
perl >= 5.8.
Hence it's time to finally dike it out.
Cheers, Roderich