Bug 14924 - p5-Apache-Radius with mod_perl broken on CURRENT
Summary: p5-Apache-Radius with mod_perl broken on CURRENT
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Mark Murray
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 1999-11-16 17:20 UTC by Sheldon Hearn
Modified: 2002-05-18 09:28 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sheldon Hearn 1999-11-16 17:20:00 UTC
    When the p5-Apache-Radius port is used in conjunction with the
    mod_perl port on a RELENG_3 box, it works.  On a HEAD box, it
    breaks:

	Syntax error on line 261 of /usr/local/etc/apache/httpd.conf:
	Can't load '/usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/MD5/MD5.so' for module MD5: /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/MD5/MD5.so: Undefined symbol "PL_markstack_ptr" at /usr/libdata/perl/5.00503/DynaLoader.pm line 169.

	 at /usr/local/lib/perl5/site_perl/5.005/Authen/Radius.pm line 18
	BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.005/Authen/Radius.pm line 18.
	BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.005/Apache/AuthenRadius.pm line 8.

    The mod_perl port installs a loadable perl interpreter module for
    use with the Apache web server.  The p5-Apache-Radius port installs
    a perl module which may be used by a mod_perl-enabled Apache to use
    RADIUS authentication.

Fix: 

I have had no feedback from the modperl@apache.org mailing list.  I
    received this reply to a message I sent to freebsd-hackers:

|	Date      : Thu, 11 Nov 1999 00:45:52 +0100
|	From      : Ollivier Robert <roberto@keltia.freenix.fr>
|	To        : hackers@freebsd.org
|	Subject   : Re: mode_perl DSO works on STABLE, not CURRENT
|	Message-ID: <19991111004552.B44926@keltia.freenix.fr>
|
|	Your Perl binary is compiled without '-Wl,-E' (or
|	'-Wl,--export-dynamic'). Without this option the Perl binary
|	doesn't expoert its symbols thus preventing any dynamically
|	loaded module to use anything from the binary.

    My perl binary _is_ compiled with '-Wl,-E' but I suspect that
    mod_perl may not have been.

    Regrettably, I don't know where to start with this problem. :-(

Regards,
Sheldon.
How-To-Repeat: 

    On a CURRENT FreeBSD machine with an up-to-date ports tree:

    Make sure that you do not have p5-Apache installed.  The p5-Apache
    port integrates the perl interpretor into the httpd binary.  You
    will not see this problem if you have p5-Apache installed.

    # cd /usr/ports/www/p5-Apache-Radius
    # make install
    # /usr/local/sbin/apachectl configtest

    Observe that the test is successful with "Syntax OK".

    Now edit /usr/local/etc/apache/httpd.conf and search for this line:

	AddModule mod_perl.c

    Add the following line directly after it:

	PerlModule Apache::AuthenRadius

    Now rerun the Apache configuration test:
    # /usr/local/sbin/apachectl configtest

    Observe the error messages as quoted above in the Description.
Comment 1 Sheldon Hearn freebsd_committer freebsd_triage 1999-11-16 17:25:50 UTC
Responsible Changed
From-To: freebsd-ports->markm

Mark promised to take a look at it for me, but please don't let that 
stop you if you think you have a bead on it. :-) 

Comment 2 Sheldon Hearn 1999-12-14 11:31:05 UTC
This is the feedback I got from Doug MacEachern <dougm@backflipcorp.com>,
who is quite clued up with mod_perl. :-)

On Mon, 13 Dec 1999 22:12:28 PST, Doug MacEachern wrote:

> I suggest linking things static, both mod_perl and Perl itself (no
> -Duseshplib)

Ciao,
Sheldon.
Comment 3 lwa 1999-12-31 17:27:26 UTC
I had about the same problem with mod_perl-1.21 and p5-Apache-DBI-0.87
Apache has been able to start after I relink it with -lperl
Comment 4 Sheldon Hearn freebsd_committer freebsd_triage 2000-04-25 06:33:41 UTC
State Changed
From-To: open->analyzed

Fixed on the RELENG_4 branch a while back, but still broken in 
RELENG_3. 

Comment 5 p.rehor 2000-05-16 14:07:21 UTC
On my 3.4-Release box I get (Apache 1.3.12, p5-Apache-1.23, p5-DBI-1.13):

	root@ns.decros.cz:/home/reho# apachectl configtest
	Syntax error on line 319 of /usr/local/etc/apache/httpd.conf:
	Can't load
'/usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/DBI/DBI.so' for
module DBI:
/usr/local/lib/perl5/site_perl/5.005/i386-freebsd/auto/DBI/DBI.so: Undefined
symbol "PL_dowarn" at /usr/libdata/perl/5.00503/DynaLoader.pm line 169.

	 at /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/DBI.pm line
158
	BEGIN failed--compilation aborted at
/usr/local/lib/perl5/site_perl/5.005/i386-freebsd/DBI.pm line 158.

In PR14926 sheldonh wrote:

	Fixed on the RELENG_4 branch a while back, but still broken in
RELENG_3.

Becose I needed it on my box, I'm wrote a patch to solve this problem 
for 3.4-RELEASE/i386 (it's inspired by solution for RELENG_4)

Petr


diff -r -u gnu/usr.bin/perl/libperl/config.SH-elf.i386.orig
gnu/usr.bin/perl/libperl/config.SH-elf.i386
--- gnu/usr.bin/perl/libperl/config.SH-elf.i386.orig	Tue May 16 01:32:05
2000
+++ gnu/usr.bin/perl/libperl/config.SH-elf.i386	Tue May 16 11:23:57 2000
@@ -45,9 +45,9 @@
 cat='cat'
 cc='cc'
 cccdlflags='-DPIC -fpic'
-ccdlflags=' '
+ccdlflags=' -Wl,-R/usr/lib'
 ccflags=''
-ccsymbols='__ELF__=1 __FreeBSD__=4 __FreeBSD_cc_version=400002
__GNUC_MINOR__=91 __GNUC__=2 cpu=i386 machine=i386 system=FreeBSD
system=unix'
+ccsymbols='__ELF__=1 __FreeBSD__=3 __FreeBSD_cc_version=340000
__GNUC_MINOR__=7 __GNUC__=2 cpu=i386 machine=i386 system=FreeBSD
system=unix'
 cf_by='markm'
 cf_email='markm@freebsd.org'
 cf_time='$Date: 1999/05/05 19:42:40 $'
@@ -323,7 +323,7 @@
 full_ar='/usr/bin/ar'
 full_csh='/bin/csh'
 full_sed='/usr/bin/sed'
-gccversion='egcs-2.91.66 19990314 (egcs-1.1.2 release)'
+gccversion='2.7.2.3'
 gidtype='gid_t'
 glibpth='/usr/lib'
 grep='grep'
@@ -405,16 +405,17 @@
 installscript='/usr/local/bin'
 installsitearch='/usr/local/lib/perl5/site_perl/5.005/i386-freebsd'
 installsitelib='/usr/local/lib/perl5/site_perl/5.005'
+installusrbinperl='undef'
 intsize='4'
 known_extensions='B DB_File Data/Dumper Fcntl GDBM_File IO IPC/SysV
NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re'
 ksh=''
 large=''
 ld='cc'
-lddlflags='-shared'
-ldflags='-Wl,-E'
+lddlflags='-Wl,-E -shared -lperl -lm '
+ldflags='-Wl,-E -lperl -lm '
 less='less'
 lib_ext='.a'
-libc='/usr/lib/libc.so'
+libc=''
 libperl='libperl.so.3'
 libpth='/usr/lib'
 libs='-lm -lc -lcrypt'
@@ -457,7 +458,7 @@
 myarchname='i386-freebsd'
 mydomain='.freebsd.org'
 myhostname='freefall'
-myuname='freebsd freefall.freebsd.org 4.0-current freebsd 4.0-current #0:
$Date: 1999/05/05 19:42:40 $'
+myuname='freebsd freefall.freebsd.org 3.4-stable freebsd 3.4-stable #0:
$Date: 1999/05/05 19:42:40 $'
 n='-n'
 netdb_hlen_type='int'
 netdb_host_type='const char *'
@@ -473,7 +474,7 @@
 optimize=${CFLAGS:-''}
 orderlib='false'
 osname='freebsd'
-osvers='4.0-current'
+osvers='3.4-stable'
 package='perl5'
 pager='/usr/bin/more'
 passcat='cat /etc/passwd'
@@ -499,7 +500,7 @@
 rd_nodata='-1'
 rm='rm'
 rmail=''
-runnm='true'
+runnm='false'
 scriptdir='/usr/bin'
 scriptdirexp='/usr/bin'
 sed='sed'
@@ -564,7 +565,7 @@
 uniq='uniq'
 usedl='define'
 usemymalloc='n'
-usenm='true'
+usenm='false'
 useopcode='true'
 useperlio='undef'
 useposix='true'
@@ -582,8 +583,8 @@
 zip='zip'
 # Configure command line arguments.
 config_arg0='Configure'
-config_args='-Dprefix=/usr -Darchlib=/usr/libdata/perl/5.00503/mach
-Dprivlib=/usr/libdata/perl/5.00503
-Dsitearch=/usr/local/lib/perl5/site_perl/5.005/i386-freebsd
-Dsitelib=/usr/local/lib/perl5/site_perl/5.005 -Dman1dir=/usr/local/man/man1
-Dman3dir=/usr/share/perl/man/man3 -des -Ulocincpth= -Uloclibpth=
-Dpager=more'
-config_argc=11
+config_args='-Dprefix=/usr -Darchlib=/usr/libdata/perl/5.00503/mach
-Dprivlib=/usr/libdata/perl/5.00503
-Dsitearch=/usr/local/lib/perl5/site_perl/5.005/i386-freebsd
-Dsitelib=/usr/local/lib/perl5/site_perl/5.005 -Dman1dir=/usr/local/man/man1
-Dman3dir=/usr/share/perl/man/man3 -Ulocincpth= -Uloclibpth= -Dpager=more'
+config_argc=10
 config_arg1='-Dprefix=/usr'
 config_arg2='-Darchlib=/usr/libdata/perl/5.00503/mach'
 config_arg3='-Dprivlib=/usr/libdata/perl/5.00503'
@@ -591,10 +592,9 @@
 config_arg5='-Dsitelib=/usr/local/lib/perl5/site_perl/5.005'
 config_arg6='-Dman1dir=/usr/local/man/man1'
 config_arg7='-Dman3dir=/usr/share/perl/man/man3'
-config_arg8='-des'
-config_arg9='-Ulocincpth='
-config_arg10='-Uloclibpth='
-config_arg11='-Dpager=more'
+config_arg8='-Ulocincpth='
+config_arg9='-Uloclibpth='
+config_arg10='-Dpager=more'
 PATCHLEVEL=5
 SUBVERSION=3
 CONFIG=true
diff -r -u gnu/usr.bin/perl/perl/Makefile.orig
gnu/usr.bin/perl/perl/Makefile
--- gnu/usr.bin/perl/perl/Makefile.orig	Tue May 16 10:53:00 2000
+++ gnu/usr.bin/perl/perl/Makefile	Tue May 16 10:56:06 2000
@@ -7,6 +7,7 @@
 CFLAGS+=-I${PERL5SRC} -I${.OBJDIR}
 SRCS=	perlmain.c config.h
 NOSHARED= no
+LDFLAGS= -Wl,-E
 DPADD=	lib/auto/DynaLoader/DynaLoader.a ${LIBPERL} ${LIBM} ${LIBCRYPT}
 LDADD=	lib/auto/DynaLoader/DynaLoader.a -lperl -lm -lcrypt
 LINKS=	${BINDIR}/${PROG} ${BINDIR}/perl5 \
diff -r -u gnu/usr.bin/perl/suidperl/Makefile.orig
gnu/usr.bin/perl/suidperl/Makefile
--- gnu/usr.bin/perl/suidperl/Makefile.orig	Tue May 16 10:58:00 2000
+++ gnu/usr.bin/perl/suidperl/Makefile	Tue May 16 10:58:34 2000
@@ -7,6 +7,7 @@
 CFLAGS+=-I${PERL5SRC} -I${.OBJDIR} -DIAMSUID
 SRCS=	perlmain.c sperl.c config.h
 NOSHARED= no
+LDFLAGS= -Wl,-E
 DPADD=	lib/auto/DynaLoader/DynaLoader.a ${LIBPERL} ${LIBM} ${LIBCRYPT}
 LDADD=	lib/auto/DynaLoader/DynaLoader.a -lperl -lm -lcrypt
 BINOWN=	root


---------------------------------------------------------------------
DECROS s.r.o.          J.S.Baara 40, Ceske Budejovice, Czech Republic
Tel: +420-38-7312808   Fax: +420-38-7311480      http://www.decros.cz
Comment 6 dwcjr 2001-09-01 13:07:55 UTC
Since 4 has been -stable for a while, is this still a problem?
Comment 7 Mark Murray freebsd_committer freebsd_triage 2002-05-18 09:27:09 UTC
State Changed
From-To: analyzed->closed

Fixed.