Fri Aug 06 06:33:08 2010: Request 59224 was acted upon.
Transaction: Correspondence added by RSCHUPP
       Queue: PAR-Packer
     Subject: make error with version 1.006 on aix 5.3
   Broken in: (no value)
    Severity: (no value)
       Owner: RSCHUPP
  Requestors: emanuel.reisin...@ils.at
      Status: open
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=59224 >


On 2010-08-05 09:28:05, ogv wrote:
> I hope this is what you need.
> the output: env - truss -f -a -e par

Yes, that confirms that the E2BIG for execve() is caused
by too large args+env passed to the program.
According to IBM docs, AIX 5 has a ridiculous, non-configurable
limit of 24K for args. 
The main culprit here is PAR::Packer: it calls par with one
argument that is already 23K long (it's a "perl -e ..." type
command). Maybe I can eliminate that, but that's a bit of work
and I want to make sure beforehand that this the only reason 
why PAR::Packer doesn't work on AIX 5. 
Hence, are you ready for a little experiment?

(1) Run "make clean" to start with a clean slate
(2) Try to shrink your process enviroment by unsetting all 
    environment variables that are not absolutely necessary
(3) Strip non-functional whitespace from script/par.pl 
    (saves ~4K) by running

    $ perl -i -p -e 's/^\s+// if /^=cut/../^1;/' script/par.pl

(4) Save some more environmental bytes by reducing the array
    ld_path_keys in function par_setup_libpath in myldr/mktmpdir.c 
    like this

       const char *ld_path_keys[3] = {
         "LIBPATH", "PATH", ""
       };

    (note the empty string as last element)
(5) Now try a normal build

    $ perl Makefile.PL
    $ make
    $ make test  

Cheers, Roderich

Reply via email to