tags 526346 + patch thanks Hello,
The build system in this version of apr doesn't work with libtool 2.x. It's fixed in the upstream Subversion repository. The attached patch is a port of the relevant commits in upstream svn. Thanks, -- John Wright <j...@debian.org>
#! /bin/sh /usr/share/dpatch/dpatch-run ## 025_libtool_2.x_fixes.dpatch by <j...@debian.org> ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Update build system to work with libtool 2.x ## DP: ## DP: This corresponds to upstream revisions: ## DP: 733052 ## DP: 742752 ## DP: 748902 ## DP: 757363 @DPATCH@ diff --git a/build/buildcheck.sh b/build/buildcheck.sh index 62fe931..c236810 100755 --- a/build/buildcheck.sh +++ b/build/buildcheck.sh @@ -38,7 +38,7 @@ fi # output is multiline from 1.5 onwards # Require libtool 1.4 or newer -libtool=`build/PrintPath glibtool libtool libtool15 libtool14` +libtool=`build/PrintPath glibtool1 glibtool libtool libtool15 libtool14` lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'` if test -z "$lt_pversion"; then echo "buildconf: libtool not found." diff --git a/buildconf b/buildconf index bc0e9fd..11554ed 100755 --- a/buildconf +++ b/buildconf @@ -23,7 +23,7 @@ # build/buildcheck.sh || exit 1 -libtoolize=`build/PrintPath glibtoolize libtoolize15 libtoolize14 libtoolize` +libtoolize=`build/PrintPath glibtoolize1 glibtoolize libtoolize15 libtoolize14 libtoolize` if [ "x$libtoolize" = "x" ]; then echo "libtoolize not found in path" exit 1 @@ -35,17 +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) - -$libtoolize --copy --automake - -if [ -f libtool.m4 ]; then - ltfile=`pwd`/libtool.m4 -else +(cd build ; rm -f ltconfig ltmain.sh libtool.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 lt~obsolete.m4) + +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"`} @@ -54,21 +57,21 @@ else 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 + # Wouldn't it just be better to define top_builddir?? + mv build/libtool.m4 build/libtool.m4.$$ + cat build/libtool.m4.$$ | sed -e 's/LIBTOOL=\(.*\)top_build/LIBTOOL=\1apr_build/' > build/libtool.m4 + rm build/libtool.m4.$$ fi # Clean up any leftovers @@ -77,22 +80,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/configure.in b/configure.in index 46b4b32..2ac1439 100644 --- a/configure.in +++ b/configure.in @@ -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 @@ -20,6 +21,10 @@ sinclude(build/apr_win32.m4) sinclude(build/apr_hints.m4) sinclude(build/libtool.m4) sinclude(build/ltsugar.m4) +sinclude(build/argz.m4) +sinclude(build/ltoptions.m4) +sinclude(build/ltversion.m4) +sinclude(build/lt~obsolete.m4) dnl Hard-coded inclusion at the tail end of apr_private.h: AH_BOTTOM([ @@ -117,6 +122,8 @@ dnl can only be used once within a configure script, so this prevents a dnl preload section from invoking the macro to get compiler info. AC_PROG_CC +AC_PROG_SED + dnl Preload APR_PRELOAD @@ -160,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