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 <jden...@redhat.com>

Looking to carve out IT costs?
www.redhat.com/carveoutcosts/
>From 1cbbbcdf4145d24e61d86fbaedce01d0fe9a30df Mon Sep 17 00:00:00 2001
From: John Dennis <jden...@redhat.com>
Date: Thu, 24 Mar 2011 11:59:37 -0400
Subject: [PATCH] Fix autogen.sh, the script is invoked with -e which causes the script
 to exit immediately if a subshell command enclosed in parentheses has
 a non-zero exit status. The command
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

grep "^AC_CONFIG_HEADER" configure.in > /dev/null

returns non-zero for many of the subdirs which causes the autogen.sh
script to immediately exit. In fact it exits on the very first
subdirectory (src/modules/rlm_sql) prematurely aborting the entire
operation.
---
 autogen.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/autogen.sh b/autogen.sh
index 9cba642..20887a8 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -16,6 +16,6 @@ mysubdirs=`echo $mysubdirs`
 for F in $mysubdirs
 do
 	echo "Configuring in $F..."
-	(cd $F && grep "^AC_CONFIG_HEADER" configure.in > /dev/null && autoheader -I$parentdir)
+	(cd $F && grep "^AC_CONFIG_HEADER" configure.in > /dev/null || exit 0; autoheader -I$parentdir)
 	(cd $F && autoconf -I$parentdir)
 done
-- 
1.7.4

diff -r -u freeradius-server-2.1.10.orig/autogen.sh freeradius-server-2.1.10/autogen.sh
--- freeradius-server-2.1.10.orig/autogen.sh	2010-09-28 07:03:56.000000000 -0400
+++ freeradius-server-2.1.10/autogen.sh	2011-03-24 10:36:26.000000000 -0400
@@ -16,6 +16,6 @@
 for F in $mysubdirs
 do
 	echo "Configuring in $F..."
-	(cd $F && grep "^AC_CONFIG_HEADER" configure.in > /dev/null && autoheader -I$parentdir)
+	(cd $F && grep "^AC_CONFIG_HEADER" configure.in > /dev/null || exit 0; autoheader -I$parentdir)
 	(cd $F && autoconf -I$parentdir)
 done
Only in freeradius-server-2.1.10: autogen.sh~
diff -r -u freeradius-server-2.1.10.orig/configure freeradius-server-2.1.10/configure
--- freeradius-server-2.1.10.orig/configure	2010-09-28 07:03:56.000000000 -0400
+++ freeradius-server-2.1.10/configure	2011-03-23 18:09:45.000000000 -0400
@@ -25121,7 +25121,7 @@
 if test $ac_cv_func_lt_dladvise_init = yes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define HAVE_HAVE_LT_DLADVISE_INIT
+#define HAVE_LT_DLADVISE_INIT
 _ACEOF
 
 fi
Only in freeradius-server-2.1.10: configure~
diff -r -u freeradius-server-2.1.10.orig/configure.in freeradius-server-2.1.10/configure.in
--- freeradius-server-2.1.10.orig/configure.in	2010-09-28 07:03:56.000000000 -0400
+++ freeradius-server-2.1.10/configure.in	2011-03-23 18:09:33.000000000 -0400
@@ -936,7 +936,7 @@
 
 old_LIBS="$LIBS"
 LIBS="$LIBS $LIBLTDL"
-AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
+AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
 LIBS="$old_LIBS"
 
 dnl Check for libcrypt
Only in freeradius-server-2.1.10: configure.in~
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to