dlopen issues in 2.1.10 (was: perl dynamic expansion in unlang?)
John Dennis
jdennis at redhat.com
Thu Mar 24 18:13:23 CET 2011
On 03/18/2011 12:39 PM, Fajar A. Nugraha wrote:
> On a side note, in RHEL6's freeradius-perl RPM, rlm_perl is unusable:
> Can't load '/usr/lib64/perl5/auto/Data/Dumper/Dumper.so' for module
> Data::Dumper: /usr/lib64/perl5/auto/Data/Dumper/Dumper.so: undefined
> symbol: Perl_sv_cmp at /usr/lib64/perl5/XSLoader.pm line 70.
This was filed as https://bugzilla.redhat.com/show_bug.cgi?id=689045
I finally tracked this down and since it affects other people building
2.1.10 I thought I would pass along the info. Alan please also note
there is a git formatted patch attached against the v2.1.x git branch
and I think you also need to run autogen.sh again (see below).
It turns out the fix is to use lt_dladvise* and Alan checked in a fix
for it on 12/9/2009 in commit 7115d751. However that code does not get
turned on unless HAVE_LT_DLADVISE_INIT is defined.
Alan checked in a fix on 8/6/2010 in commit 323229c2 which added the
check for lt_dladvise in configure.in and if found sets
HAVE_LT_DLADVISE_INIT
opps, but not really the actual symbol which was defined was
HAVE_HAVE_LT_DLADVISE_INIT (note the extra HAVE_)
This was corrected on 1/7/2011 in commit 03993758.
So if you modify HAVE_HAVE_LT_DLADVISE_INIT to be HAVE_LT_DLADVISE_INIT
in the 2.1.10 tree, run configure again you should pick up the
lt_dladvise fixes right? Wrong. Why?
Because src/include/autoconf.h.in which configure rewrites as
src/include/autoconf.h does not have the HAVE_LT_DLADVISE_INIT symbol in
it. Why?
Because autoheader was not rerun after modifying configure.in. According
to the git log it appears as if the headers were last updated on
1/29/2009, about two years ago.
So the answer is to run autogen.sh right? Sort of, except autogen.sh has
a bug in it which causes it to exit prematurely before it's performed
90% of its work (it misses updating *all* the modules although it does
update src/include/autoconf.h.in). The fix for this is in the attached
0001-Fix-autogen.sh-the-script-is-invoked-with-e-which-ca.patch.
So what do you need to do if you want to enable lt_dladvise in 2.1.10?
1) change HAVE_HAVE_LT_DLADVISE_INIT to HAVE_LT_DLADVISE_INIT
2) patch autogen.sh so it doesn't exit prematurely (not strictly
necessary for lt_dladvise, but a good idea, who knows what else was
getting missed because of it)
3) run autogen.sh
4) do the configure, make, & install dance
Note, steps 1&2 are implemented in attached freeradius-lt-dladvise.patch
Alan:
I think you need to apply
0001-Fix-autogen.sh-the-script-is-invoked-with-e-which-ca.patch, then
run autogen.sh, and then do a git commit.
HTH,
John
--
John Dennis <jdennis at redhat.com>
Looking to carve out IT costs?
www.redhat.com/carveoutcosts/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-autogen.sh-the-script-is-invoked-with-e-which-ca.patch
Type: text/x-patch
Size: 1199 bytes
Desc: not available
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20110324/ab3ab400/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: freeradius-lt-dladvise.patch
Type: text/x-patch
Size: 1707 bytes
Desc: not available
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20110324/ab3ab400/attachment-0001.bin>
More information about the Freeradius-Users
mailing list