From: Autrijus Tang [mailto:[EMAIL PROTECTED]

> (Oops, forgot to add PMQS to Cc.  Sending again.  Sorry for the dupe.)
>
> On Mon, Oct 20, 2003 at 03:13:22PM +0200, Markus Jansen wrote:
> > >On Fri, 2003-10-17 at 15:31, [EMAIL PROTECTED] wrote:
> > >Actually, executing a PAR-packed exe works like this -
> > >Autrijus correct me if I got this wrong:
> > >
> > >(1) exe creates a temp directory
> > >(2) exe writes to files into this temp directory:
> > >    the shared perl library (e.g. libperl.so) and a small executable
> > >    called par; these files get extracted from C char[] arrays inside
> > >    the executable
> > >(3) exec then sets LD_LIBRARY_PATH to the temp direcctory and execs par
> > >    with one argument: the name of the executable
> > >(4) par is actually a mini-perl (linked against libperl.so), that
> > >    does some stuff in C, then eval's a Perl script contained in par
> > >(5) this script extracts all modules that a required for PAR.pm to work
> > >    from the executable; the script can't use any modules
> > >
> > >The problem is (5) above: PAR.pm uses Archive::Zip which uses
> > >Compress::Zlib which has ashared library Zlib.so that links to
> > >libz.so. Everything is there EXCEPT libz.so.
>
> <snip> This is entirely correct.  May I re-use it in the documentations?
> :-)
>
> > my ultimate solution to this clash so far was to build Zlib.so with
> > all .o files from libz.so around, and modifying the Makefile a
> little bit
> > (I think there is also a lately added option in Compress::Zlib to build
> > libz in the same run (of course only if it cannot be found),
> but I have not
> > tried this). This way I get a self-contained Zlib.so.
> >
> > But of course you are right, the problem should be addressed
> from the PAR side.
>
> (Cc'ing Paul Marquess, author of Compress::Zlib)
>
> Maybe the solution would be a Compress::Zlib::Static, which is just like
> Compress::Zlib but is guaranteed to statically link zlib inside, so we
> can safely distribute it to machines without zlib.
>
> Paul, do you think it is feasible, or is there a better way?

You can already force Compress::Zlib to build with its own private, and
static, version of zlib.

It done like this - untar a zlib distribution into the Compress-ZLib
directory - you should now have a directory called zlib-1.1.4.

Next edit the file config.in and set BUILD_ZLIB to True, INCLUDE to
./zlib-1.1.4 and LIB to ./zlib-1.1.4

Then build as normal with the usual

        perl Makefile.PL
        make test
        make install

That will result in a Zlib.so file that has the zlib library embedded in it.

Paul


Reply via email to