modperl_dso_compile_problems

This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.



Subject: mod-perl as DSO (solaris)
From: Ricardo Stella <stella@rider.edu>
Date: Tue, 26 Sep 2000 15:00:50 -0400


Solaris 2.8
Apache 1.3.12
GCC 2.95.2
Perl 5.6.0
Enterprise 250 (64bitish)
Modperl 1.24

I can't get modperl compiled as a DSO neither via the 'flexible-method'
nor the APXS method.

The first method, seg faults.

The second method won't configure, stating I should not build mod-perl
as a DSO or compile perl with -Ubincompat5005.

My current perl was compiled with bincompat5005 (perl -V:bincompat5005
shows as 'defined')

So, is this working at all ???  Searching the archives, all I found was
related to 1.23.  I also tried specifically setting 

CFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing

when compiling apache, but did not help.

===

Subject: Re: mod-perl as DSO (solaris)
From: Ricardo Stella <stella@rider.edu>
Date: Fri, 29 Sep 2000 11:35:02 -0400

Doug MacEachern wrote:
> 
> On Tue, 26 Sep 2000, Ricardo Stella wrote:
> 
> > Solaris 2.8
> > Apache 1.3.12
> > GCC 2.95.2
> > Perl 5.6.0
> > Enterprise 250 (64bitish)
> > Modperl 1.24
> >
> > I can't get modperl compiled as a DSO neither via the 'flexible-method'
> > nor the APXS method.
> >
> > The first method, seg faults.
> >
> > The second method won't configure, stating I should not build mod-perl
> > as a DSO or compile perl with -Ubincompat5005.
> >
> > My current perl was compiled with bincompat5005 (perl -V:bincompat5005
> > shows as 'defined')
> 
> exactly, -Ubincompat5005 will _un_ define bincompat5005, perl
> -V:bincompat5005 should report: bincompat5005='undef';
> 
> this is a requirement for solaris (or any Perl where Perl's malloc is
> used, rather than system malloc) , because Perl's malloc with
> bincompat5005 will pollute malloc() and free() into the main server, then
> when mod_perl's dso is closed (it is closed/re-opened at startup), the
> everything in the main server using free/malloc now has a function pointer
> into la-la land.  when you turn off bincompat5005, then Perl's malloc/free
> are namespace protected, so only Perl uses Perl's malloc.


More testing but still problems...

First I downloaded GCC and make from sunfreeware.com just in case Sun's
versions are messed up (this is the ones distributed with Solaris 8).

I built apache clean first with the following criteria:

CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing"
\
./configure \
"--with-layout=Apache" \
"--prefix=/usr/local/apache2" \
"--enable-shared=max" \
"--enable-module=most" \
"--enable-rule=SHARED_CORE" \
"$@"

Then, I built perl clean with -Ubincompat5005.  I did build a shared
perl though.

Then I built mod perl via APXS as a DSO with:

 $ perl Makefile.PL \
     USE_APXS=1 \
     WITH_APXS=/path/to/bin/apxs \
     EVERYTHING=1 \
     [...]
 $ make
 $ make test
 $ make install

Note that make test does not work with APXS (docs should be updated !).

But I got the followin errors:

First, with the default http.conf 'apachectl configtest' fails with:

Syntax error on line 212 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/mod_negotiation.so into server:
ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/mod_negotiation.so: symbol __floatdisf:
referenced symbol not found

Disabling mod_negotiation: 
Syntax error on line 231 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/libproxy.so into server: ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/libproxy.so: symbol __floatdisf: referenced
symbol not found

And finally, disabling mod_proxy:
Syntax error on line 238 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/libexec/libperl.so into server: ld.so.1:
/usr/local/apache2/bin/httpd: fatal: relocation error: file
/usr/local/apache2/libexec/libperl.so: symbol Perl_free_tmps: referenced
symbol not found

So what now ???  HELP !!!


===

Subject: Re: mod-perl as DSO (solaris)
From: Ricardo Stella <stella@rider.edu>
Date: Fri, 29 Sep 2000 12:56:53 -0400

Might have figured out the problem, and it might be an apache issue
dealing with largefiles:

I compiled apache cleanly as:
./configure \
"--with-layout=Apache" \
"--prefix=/usr/local/apache2" \
"--enable-module=most" \
"--enable-shared=max" \

This worked.  'apachectl configtest' did not complain.

Then I compiled mod_perl as:

 $ perl Makefile.PL \
     USE_APXS=1 \
     WITH_APXS=/path/to/bin/apxs \
     EVERYTHING=1 \

And I got the following error message:

Your Perl is uselargefiles enabled, but Apache is not, suggestions:
    *) Rebuild Apache with CFLAGS="-D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64"
    *) Rebuild Perl with Configure -Uuselargefiles
    *) Let mod_perl build Apache (USE_DSO=1 instead of USE_APXS=1)

So I cleand and compiled apache again, but enabling these CFLAGS. 
Apache chocked on mod_negotiation.

Any ideas now ???

===

Subject: Re: mod-perl as DSO (solaris)
From: Doug MacEachern <dougm@covalent.net>
Date: Fri, 29 Sep 2000 13:33:13 -0700 (PDT)

On Fri, 29 Sep 2000, Ricardo Stella wrote:

>     *) Rebuild Perl with Configure -Uuselargefiles

if you do this and re-build Apache without the extra CFLAGS, that problem
will go away.

===



===

Subject: Re: Building modperl as a DSO in Apache_1.3.12
From: Doug MacEachern <dougm@covalent.net>
Date: Tue, 26 Sep 2000 12:56:07 -0700 (PDT)

On Tue, 22 Aug 2000, Kairam, Raj wrote:

> I am trying to build modperl ( mod_perl-1.24 ) as DSO in to Apache (
> apache_1.3.12 ) on a host running HP-UX 11.0

>   ld: Unrecognized argument: -Wl -E
>   ld: Usage: ld flags ... files ...
> The output of make is captured in the following attachment
>  <<make_0818.txt>> 
> The last line in the above file indicates the 'ld' command and the arguments
> '-Wl -E' are in that long line halfway.
> 
> When I look at the generated Makefile, I see the two lines
> CCCDLFLAGS = +z
> CCDLFLAGS = -Wl, E -Wl,-B,deferred
> 
> How can I avoid this error ?. Any of you working with mod_perl on a HP-UX
> box encountered this situation ?.

your 'perl -V' would help alot, but i'm guessing if you run
'make LD=cc', that would fix the problem.


===


the rest of The Pile (a partial mailing list archive)

doom@kzsu.stanford.edu