Home  |  Linux  | Mysql  | PHP  | XML
From:Roderich Schupp Date:Sat Aug 16 08:45:31 2008
Subject:Re: perl5lib
On Fri, Aug 15, 2008 at 11:36 PM, Bob Davis <bob@bobsbits.net> wrote:
> It seems that if PERL5LIB is set then the exe generated from pp doesnt work
> on the target client. This happens in particular when oracle is installed on
> the client. This was discussed in  another thread and it was suggested that
> a pp switch be added to ignore PERL5LIB. So I decided to hack it and found
> the place in util.c which is under myldr.
>
> Here is patch diff

That's the easy part :) But now you _always_ ignore PERL5LIB, because
the stuff in myldr is built once when PAR::Packer is built and then included
"as is" in every pp-packed executable.
The real solution is to add another switch to pp (also easy) and to
communicate that setting somehow into myldr/util.c.

The tricky part is "somehow". pp generates slightly different main.pl
scripts (embedded in the packed executable) depending on its options,
but unsetting PERL5LIB in main.pl doesn't have any effect, because
PERL5LIB is added to @INC in the perl startup code _before_ main.pl
starts executin. You can pass information in environment variables from
myldr/util.c to e.g. main.pl, but not vice versa.

Idea:
- in myldr/util.c: if PERL5LIB is set, save it to PAR_PERL5LIB,
  then unset PERL5LIB
- insert (very early) on into main.pl (dependent on your new pp option)

    unshift @INC, split($Config{path_sep}, $ENV{PAR_PERL5LIB}) if
$ENV{PAR_PERL5LIB};

Note that this still changes the current behaviour, because PERL5LIB is now
unset during the early extraction of modules.

BTW, I also stumbled about Oracle installations setting PERL5LIB for everyone
and found that very annoying :(

Cheers, Roderich
Navigate in group perl.par at sever nntp.perl.org
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by PHP Developer
Powered By PHP Consultants