David Reid wrote:
> The changes to the apr-find macro have NOT been picked up in apr-util
> and apr-iconv, so hopefully these tarballs will encourage people to fix
> that?
Here is the apr-util part of that. (apr-iconv part will follow later)
In addition to applying the equivalent changes from apr to apr-util, this
patch also brings across some forgotten comment updates and OS/2 compat code
from apr.
In particular, please could people look at the two "dnl Note: " paragraphs
in find_apu.m4 which this patch does _not_ touch. Copied here:
dnl Note: At this time, we cannot find *both* a source dir and a build dir.
dnl If both are available, the build directory should be passed to
dnl the --with-apr-util switch.
The fact that you can pass a build directory to the --with-apr(-util)
options seems to be one of those occasionally useful but not very tested
features. Perhaps we don't want to advertise it (yet?).
dnl Note: the installation layout is presumed to follow the standard
dnl PREFIX/lib and PREFIX/include pattern. If the APU config file
dnl is available (and can be found), then non-standard layouts are
dnl possible, since it will be described in the config file.
Is plain wrong, I think. The macro *requires* that a config file be found.
Max.
Index: .cvsignore
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/.cvsignore,v
retrieving revision 1.24
diff -u -p -r1.24 .cvsignore
--- .cvsignore 30 Jul 2004 19:37:22 -0000 1.24
+++ .cvsignore 1 Aug 2004 17:08:26 -0000
@@ -14,6 +14,7 @@ exports.c
export_vars.[ch]
export_vars.sh
apu-config
+apu-*-config
apu-config.out
Debug
Release
Index: CHANGES
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/CHANGES,v
retrieving revision 1.134
diff -u -p -r1.134 CHANGES
--- CHANGES 1 Aug 2004 16:55:14 -0000 1.134
+++ CHANGES 1 Aug 2004 17:08:50 -0000
@@ -1,5 +1,8 @@
Changes with APR-util 1.0
+ *) Only install apu-$MAJOR-config and add appropriate detection code to
+ find_apu.m4 (APU_FIND_APU). [Max Bowsher <maxb ukf.net>]
+
*) Add an apr_ldap_err_t structure to handle the return of LDAP
specific error codes. [Graham Leggett, Brad Nicholes]
Index: Makefile.in
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/Makefile.in,v
retrieving revision 1.95
diff -u -p -r1.95 Makefile.in
--- Makefile.in 1 Jul 2004 14:37:45 -0000 1.95
+++ Makefile.in 1 Aug 2004 16:57:05 -0000
@@ -33,7 +33,7 @@ CLEAN_TARGETS = exports.c export_vars.c
DISTCLEAN_TARGETS = config.cache config.log config.status libtool \
include/private/apu_config.h include/private/apu_private.h \
include/private/apu_select_dbm.h include/apr_ldap.h include/apu.h \
- export_vars.sh apu-config build/rules.mk include/apu_want.h \
+ export_vars.sh $(APU_CONFIG) build/rules.mk include/apu_want.h \
apr-util.pc
EXTRACLEAN_TARGETS = configure aclocal.m4 include/private/apu_config.h.in \
exports.c build-outputs.mk \
@@ -49,8 +49,8 @@ [EMAIL PROTECTED]@
[EMAIL PROTECTED]@
# Create apu-config script suitable for the install tree
-apu-config.out: apu-config
- sed 's,^\(location=\).*$$,\1installed,' < apu-config > $@
+apu-config.out: $(APU_CONFIG)
+ sed 's,^\(location=\).*$$,\1installed,' < $(APU_CONFIG) > $@
install: $(TARGET_LIB) apu-config.out
if [ ! -d $(DESTDIR)$(includedir) ]; then \
@@ -76,9 +76,8 @@ install: $(TARGET_LIB) apu-config.out
if [ ! -d $(DESTDIR)$(bindir) ]; then \
$(APR_MKDIR) $(DESTDIR)$(bindir); \
fi;
- $(LIBTOOL) --mode=install cp apu-config.out
$(DESTDIR)$(bindir)/apu-config
$(LIBTOOL) --mode=install cp apu-config.out
$(DESTDIR)$(bindir)/$(APU_CONFIG)
- chmod 755 $(DESTDIR)$(bindir)/apu-config
$(DESTDIR)$(bindir)/$(APU_CONFIG)
+ chmod 755 $(DESTDIR)$(bindir)/$(APU_CONFIG)
$(TARGET_LIB): $(OBJECTS)
$(LINK) @lib_target@ $(ALL_LIBS) $(EXTRA_OS_LINK)
Index: apu-config.in
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/apu-config.in,v
retrieving revision 1.36
diff -u -p -r1.36 apu-config.in
--- apu-config.in 14 Jun 2004 15:43:40 -0000 1.36
+++ apu-config.in 1 Aug 2004 16:58:12 -0000
@@ -43,7 +43,7 @@ [EMAIL PROTECTED]@
show_usage()
{
cat << EOF
-Usage: apu-config [OPTION]
+Usage: apu-$APRUTIL_MAJOR_VERSION-config [OPTION]
Known values for OPTION are:
--prefix[=DIR] change prefix to DIR
@@ -62,9 +62,9 @@ Known values for OPTION are:
--help print this help
When linking with libtool, an application should do something like:
- APU_LIBS="\`apu-config --link-libtool --libs\`"
+ APU_LIBS="\`apu-$APRUTIL_MAJOR_VERSION-config --link-libtool --libs\`"
or when linking directly:
- APU_LIBS="\`apu-config --link-ld --libs\`"
+ APU_LIBS="\`apu-$APRUTIL_MAJOR_VERSION-config --link-ld --libs\`"
An application should use the results of --includes, and --ldflags in
their build process.
Index: configure.in
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/configure.in,v
retrieving revision 1.76
diff -u -p -r1.76 configure.in
--- configure.in 14 Jun 2004 15:43:40 -0000 1.76
+++ configure.in 1 Aug 2004 16:59:49 -0000
@@ -199,7 +199,7 @@ dnl everthing is done.
MAKEFILES="Makefile $test_Makefile"
AC_OUTPUT([
export_vars.sh
- apu-config
+ apu-$APRUTIL_MAJOR_VERSION-config:apu-config.in
apr-util.pc
include/private/apu_select_dbm.h
include/apr_ldap.h
@@ -207,5 +207,7 @@ AC_OUTPUT([
include/apu_want.h
$MAKEFILES
],[
-chmod +x apu-config
+chmod +x apu-$APRUTIL_MAJOR_VERSION-config
+],[
+APRUTIL_MAJOR_VERSION=$APRUTIL_MAJOR_VERSION
])
Index: build/find_apu.m4
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/build/find_apu.m4,v
retrieving revision 1.7
diff -u -p -r1.7 find_apu.m4
--- build/find_apu.m4 5 Nov 2002 22:13:42 -0000 1.7
+++ build/find_apu.m4 3 Aug 2004 10:37:02 -0000
@@ -6,14 +6,22 @@ dnl library. It provides a standardized
dnl embedding APU into the application source, or locating an installed
dnl copy of APU.
dnl
-dnl APR_FIND_APU([srcdir, path, implicit-install-check])
+dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors)
dnl
dnl where srcdir is the location of the bundled APU source directory, or
dnl empty if source is not bundled.
-dnl where path is the prefix to the location where the bundled APU will
-dnl will be built.
+dnl
+dnl where builddir is the location where the bundled APU will be built,
+dnl or empty if the build will occur in the srcdir.
+dnl
dnl where implicit-install-check set to 1 indicates if there is no
-dnl --with-apr option specified, we will look for installed copies.
+dnl --with-apr-util option specified, we will look for installed copies.
+dnl
+dnl where acceptable-majors is a space separated list of acceptable major
+dnl version numbers. Often only a single major version will be acceptable.
+dnl If multiple versions are specified, and --with-apr-util=PREFIX or the
+dnl implicit installed search are used, then the first (leftmost) version
+dnl in the list that is found will be used. Currently defaults to [0 1].
dnl
dnl Sets the following variables on exit:
dnl
@@ -23,6 +31,9 @@ dnl apu_config : If the apu-config too
dnl apu_found is "reconfig", then the bundled directory
dnl should be reconfigured *before* using apu_config.
dnl
+dnl Note: this macro file assumes that apr-config has been installed; it
+dnl is normally considered a required part of an APR installation.
+dnl
dnl Note: At this time, we cannot find *both* a source dir and a build dir.
dnl If both are available, the build directory should be passed to
dnl the --with-apr-util switch.
@@ -44,57 +55,105 @@ dnl
AC_DEFUN(APR_FIND_APU, [
apu_found="no"
+ if test "$ac_cv_emxos2" = "yes"; then
+ # Scripts don't pass test -x on OS/2
+ TEST_X="test -f"
+ else
+ TEST_X="test -x"
+ fi
+
+ m4_if([$4], [],
+ [
+ AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APU
0.x then APU 1.x])
+ acceptable_majors="0 1"
+ ], [acceptable_majors="$4"])
+
+ apu_temp_acceptable_apu_config=""
+ for apu_temp_major in $acceptable_majors
+ do
+ case $apu_temp_major in
+ 0)
+ apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config
apu-config"
+ ;;
+ *)
+ apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config
apu-$apu_temp_major-config"
+ ;;
+ esac
+ done
+
AC_MSG_CHECKING(for APR-util)
AC_ARG_WITH(apr-util,
- [ --with-apr-util=DIR prefix for installed APU, or path to APU build
tree],
+ [ --with-apr-util=PATH prefix for installed APU, path to APU build tree,
+ or the full path to apu-config],
[
if test "$withval" = "no" || test "$withval" = "yes"; then
- AC_MSG_ERROR([--with-apr-util requires a directory to be provided])
+ AC_MSG_ERROR([--with-apr-util requires a directory or file to be
provided])
fi
- if test -x "$withval/bin/apu-config"; then
- apu_found="yes"
- apu_config="$withval/bin/apu-config"
- elif test -x "$withval/apu-config"; then
- dnl Already configured build dir
- apu_found="yes"
- apu_config="$withval/apu-config"
- elif test -x "$withval" && $withval --help > /dev/null 2>&1 ; then
- apu_found="yes"
- apu_config="$withval"
+ for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
+ do
+ for lookdir in "$withval/bin" "$withval"
+ do
+ if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then
+ apu_found="yes"
+ apu_config="$lookdir/$apu_temp_apu_config_file"
+ break 2
+ fi
+ done
+ done
+
+ if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help >
/dev/null 2>&1 ; then
+ apu_found="yes"
+ apu_config="$withval"
fi
- dnl if --with-apr-util is used, then the target prefix/directory must
- dnl be valid
+ dnl if --with-apr-util is used, it is a fatal error for its argument
+ dnl to be invalid
if test "$apu_found" != "yes"; then
- AC_MSG_ERROR([
-The directory given to --with-apr-util does not specify a prefix for an
-installed APU, nor an APR-util build directory.])
+ AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must
specify an install prefix, a build directory, or an apu-config file.])
fi
],[
dnl if we have a bundled source directory, use it
if test -d "$1"; then
+ apu_temp_abs_srcdir="`cd $1 && pwd`"
apu_found="reconfig"
+ echo "sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p'
\"$1/include/apu_version.h\""
+ apu_bundled_major="`sed -n
'/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p'
\"$1/include/apu_version.h\"`"
+ case $apu_bundled_major in
+ "")
+ AC_MSG_ERROR([failed to find major version of bundled APU])
+ ;;
+ 0)
+ apu_temp_apu_config_file="apu-config"
+ ;;
+ *)
+ apu_temp_apu_config_file="apu-$apu_bundled_major-config"
+ ;;
+ esac
if test -n "$2"; then
- apu_config="$2/apu-config"
+ apu_config="$2/$apu_temp_apu_config_file"
else
- apu_config="$1/apu-config"
+ apu_config="$1/$apu_temp_apu_config_file"
fi
fi
if test "$apu_found" = "no" && test -n "$3" && test "$3" = "1"; then
- if apu-config --help > /dev/null 2>&1 ; then
- apu_found="yes"
- apu_config="apu-config"
- else
- dnl look in the some standard places (apparently not in
builtin/default)
- for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do
- if test -x "$lookdir/bin/apu-config"; then
- apu_found="yes"
- apu_config="$lookdir/bin/apu-config"
- break
- fi
- done
- fi
+ for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config
+ dn
+ if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then
+ apu_found="yes"
+ apu_config="$apu_temp_apu_config_file"
+ break
+ else
+ dnl look in some standard places (apparently not in builtin/default)
+ for lookdir in /usr /usr/local /opt/apr /usr/local/apache2 ; do
+ if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then
+ apu_found="yes"
+ apu_config="$lookdir/bin/$apu_temp_apu_config_file"
+ break 2
+ fi
+ done
+ fi
+ done
fi
])
Index: build/rpm/apr-util.spec.in
===================================================================
RCS file: /home/mirror/cvsmirror/misc-cvs/apr-util/build/rpm/apr-util.spec.in,v
retrieving revision 1.1
diff -u -p -r1.1 apr-util.spec.in
--- build/rpm/apr-util.spec.in 1 Jul 2004 22:45:06 -0000 1.1
+++ build/rpm/apr-util.spec.in 1 Aug 2004 17:04:44 -0000
@@ -73,7 +73,6 @@ rm -rf $RPM_BUILD_ROOT
%files devel
%defattr(-,root,root,-)
-%{_bindir}/apu-config
%{_bindir}/apu-%{apuver}-config
%{_libdir}/libaprutil-%{apuver}.*a
%{_libdir}/libaprutil-%{apuver}.so