[oe] Avoid issues with APR package detecting Libtool

Martin Panter vadmium+floss at gmail.com
Sun Jan 16 12:32:38 UTC 2011


The configure script was failing for APR, I think because it was
trying to hack Libtool internals and wasn't compatible with newer
Libtool 2.4. Fixed for me with attached patch.
-Martin
-------------- next part --------------
From bcabb119df06cb55a7db782ee5c147726415e9f9 Mon Sep 17 00:00:00 2001
From: Martin Panter <vadmium à gmail.com>
Date: Fri, 24 Dec 2010 05:39:15 +0000
Subject: [PATCH 2/3] APR: Avoid issues with Libtool modification script

Fixes issue with detecting Libtool script location by taking change from
upstream 1.3 branch. Original complaint from buildconf script:

/libtool.m4 not found

Also avoids issue with libtool.m4 modification by explicitly setting the top_
builddir Make variable
---
 recipes/apr/apr/libtool-detect.patch |  152 ++++++++++++++++++++++++++++++++++
 recipes/apr/apr_1.3.5.bb             |   10 ++-
 2 files changed, 161 insertions(+), 1 deletions(-)
 create mode 100644 recipes/apr/apr/libtool-detect.patch

diff --git a/recipes/apr/apr/libtool-detect.patch b/recipes/apr/apr/libtool-detect.patch
new file mode 100644
index 0000000..2da11b3
--- /dev/null
+++ b/recipes/apr/apr/libtool-detect.patch
@@ -0,0 +1,152 @@
+Taken from the following change, which has been merged into 1.3 and 1.4
+but not released yet
+------------------------------------------------------------------------
+r748902 | jerenkrantz | 2009-02-28 18:32:55 +0000 (Sat, 28 Feb 2009) | 12 lines
+Changed paths:
+   M /apr/apr/trunk/build/buildcheck.sh
+   M /apr/apr/trunk/buildconf
+   M /apr/apr/trunk/configure.in
+
+Go back around and clean up GNU libtool 2.x detection and usage.
+
+(Tested with GNU libtool 2.2.6, 1.5.26, and jlibtool; and GNU autoconf 2.63.)
+
+* configure.in
+  (AC_CONFIG_MACRO_DIR): Define so that glibtoolize2 knows where to plop things.
+  (AC_PROG_SED): Always find sed.
+  (Xsed): Define to work around libtool 2.x brokenness.
+* build/buildcheck.sh: Re-activate libtool 2.x
+* buildconf: Clean up and rationalize the entire process of importing libtool
+  autoconf macros.
+
+------------------------------------------------------------------------
+Index: configure.in
+===================================================================
+--- configure.in	(revision 748901)
++++ configure.in	(revision 748902)
+@@ -9,6 +9,7 @@ AC_PREREQ(2.50)
+ AC_INIT(build/apr_common.m4)
+ AC_CONFIG_HEADER(include/arch/unix/apr_private.h)
+ AC_CONFIG_AUX_DIR(build)
++AC_CONFIG_MACRO_DIR(build)
+ 
+ dnl 
+ dnl Include our own M4 macros along with those for libtool
+@@ -121,6 +122,8 @@ dnl can only be used once within a configure scrip
+ dnl preload section from invoking the macro to get compiler info.
+ AC_PROG_CC
+ 
++AC_PROG_SED
++
+ dnl Preload
+ APR_PRELOAD
+ 
+@@ -164,6 +167,11 @@ echo "performing libtool configuration..."
+ AC_ARG_ENABLE(experimental-libtool,[  --enable-experimental-libtool Use experimental custom libtool],
+   [experimental_libtool=$enableval],[experimental_libtool=no])
+ 
++dnl Workarounds for busted Libtool 2.x when we don't call AC_PROG_LIBTOOL
++if test "x$Xsed" = "x"; then
++  Xsed="$SED -e 1s/^X//"
++fi
++
+ case $host in
+ *-os2*)
+     # Use a custom-made libtool replacement
+Index: buildconf
+===================================================================
+--- buildconf	(revision 748901)
++++ buildconf	(revision 748902)
+@@ -35,25 +35,20 @@ fi
+ # Note: APR supplies its own config.guess and config.sub -- we do not
+ #       rely on libtool's versions
+ #
+-echo "Copying libtool helper files ..."
++echo "buildconf: copying libtool helper files using $libtoolize"
+ 
+ # Remove any libtool files so one can switch between libtool 1.3
+ # and libtool 1.4 by simply rerunning the buildconf script.
+-(cd build ; rm -f ltconfig ltmain.sh libtool.m4)
++(cd build ; rm -f ltconfig ltmain.sh libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4)
+ 
+-$libtoolize --copy --automake
+-
+-if [ -f libtool.m4 ]; then 
+-   ltfile=`pwd`/libtool.m4
+-elif grep all_pkgmacro_files $libtoolize > /dev/null; then
+-    # libtool 2.x
+-   aclocal_dir=`sed -n '/^aclocaldir=/{s/.*=//;p;q;}' < $libtoolize`
+-   ltfiles=`sed -n '/^all_pkgmacro_files=/{s/.*=//;;s/"//;p;q;}' < $libtoolize`
+-   for f in $ltfiles; do
+-       test -f "$aclocal_dir/$f" && cp "$aclocal_dir/$f" build
+-   done
+-   ltfile=$aclocal_dir/libtool.m4
+-else
++lt_pversion=`$libtoolize --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
++lt_version=`echo $lt_pversion|sed -e 's/\([a-z]*\)$/.\1/'`
++IFS=.; set $lt_version; IFS=' '
++if test "$1" = "1"; then
++  $libtoolize --copy --automake
++  if [ -f libtool.m4 ]; then 
++    ltfile=`pwd`/libtool.m4
++  else
+    ltfindcmd="`sed -n \"/=[^\\\`]/p;/libtool_m4=/{s/.*=/echo /p;q;}\" \
+                    < $libtoolize`"
+    ltfile=${LIBTOOL_M4-`eval "$ltfindcmd"`}
+@@ -62,21 +57,17 @@ fi
+      ltpath=`dirname $libtoolize`
+      ltfile=`cd $ltpath/../share/aclocal ; pwd`/libtool.m4
+    fi
+-fi
+-  
+-if [ ! -f $ltfile ]; then
++  fi
++  if [ ! -f $ltfile ]; then
+     echo "$ltfile not found"
+     exit 1
++  fi
++  # Do we need this anymore?
++  echo "buildconf: Using libtool.m4 at ${ltfile}."
++  cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4
+ fi
+-
+-echo "buildconf: Using libtool.m4 at ${ltfile}."
+-
+-cat $ltfile | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4
+-
+-# libtool.m4 from 1.6 requires ltsugar.m4
+-if [ -f ltsugar.m4 ]; then
+-   rm -f build/ltsugar.m4
+-   mv ltsugar.m4 build/ltsugar.m4
++if test "$1" = "2"; then
++  $libtoolize --copy
+ fi
+ 
+ # Clean up any leftovers
+@@ -85,22 +76,22 @@ rm -f aclocal.m4 libtool.m4
+ #
+ # Generate the autoconf header and ./configure
+ #
+-echo "Creating include/arch/unix/apr_private.h.in ..."
++echo "buildconf: creating include/arch/unix/apr_private.h.in ..."
+ ${AUTOHEADER:-autoheader}
+ 
+-echo "Creating configure ..."
++echo "buildconf: creating configure ..."
+ ### do some work to toss config.cache?
+ ${AUTOCONF:-autoconf}
+ 
+ # Remove autoconf 2.5x's cache directory
+ rm -rf autom4te*.cache
+ 
+-echo "Generating 'make' outputs ..."
++echo "buildconf: generating 'make' outputs ..."
+ build/gen-build.py make
+ 
+ # Create RPM Spec file
+ if [ -f `which cut` ]; then
+-  echo rebuilding rpm spec file
++  echo "buildconf: rebuilding rpm spec file"
+   ( REVISION=`build/get-version.sh all include/apr_version.h APR`
+     VERSION=`echo $REVISION | cut -d- -s -f1`
+     RELEASE=`echo $REVISION | cut -d- -s -f2`
diff --git a/recipes/apr/apr_1.3.5.bb b/recipes/apr/apr_1.3.5.bb
index 955334f..251d8fe 100644
--- a/recipes/apr/apr_1.3.5.bb
+++ b/recipes/apr/apr_1.3.5.bb
@@ -7,7 +7,9 @@ PR = "r5"
 SRC_URI = "${APACHE_MIRROR}/apr/${P}.tar.bz2;name=apr135tarbz2 \
            file://configure_fixes.patch \
 	   file://cleanup.patch \
-           file://configfix.patch"
+           file://configfix.patch \
+           file://libtool-detect.patch;striplevel=0 \
+"
 
 inherit autotools lib_package binconfig
 
@@ -18,6 +20,12 @@ do_configure_prepend() {
 	./buildconf
 }
 
+# The buildconf script tries to change build/libtool.m4 to use the apr_
+# builddir Make variable instead of top_builddir, but it's not working very
+# well. So explicitly set top_builddir to reference the apr_builddir variable
+# as a workaround.
+EXTRA_OEMAKE += "top_builddir='$(apr_builddir)'"
+
 do_stage() {
 	autotools_stage_all
 	install -d ${STAGING_DATADIR}/apr
-- 
1.7.1


More information about the Openembedded-devel mailing list