On 25/08/09 15:23, Jim Meyering wrote:
From a4272589d360fa86abe77fa8b1b3df5277f50c74 Mon Sep 17 00:00:00
2001
From: Jim Meyering<meyering(a)redhat.com>
Date: Tue, 25 Aug 2009 09:43:04 +0200
Subject: [PATCH libguestfs 1/3] build: update gnulib submodule to latest
* .gnulib: Update to latest.
---
.gnulib | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/.gnulib b/.gnulib
index 7560950..52dec75 160000
--- a/.gnulib
+++ b/.gnulib
@@ -1 +1 @@
-Subproject commit 7560950d6efd9e209b8d7188e1a95ceb53035889
+Subproject commit 52dec75be71b6526bb42610f74beb013cb27f1f3
--
1.6.4.1.322.g38eb7
This is just dark magic to me. I'll take your word on it ;)
From 3d9604287c9af52b725b7efe815cee3d8a522c5e Mon Sep 17 00:00:00
2001
From: Jim Meyering<meyering(a)redhat.com>
Date: Tue, 25 Aug 2009 09:10:21 +0200
Subject: [PATCH libguestfs 2/3] build: invoke autopoint with --force
* bootstrap: Invoke autopoint with --force, to avoid warning
about existing build-aux/config.rpath.
Invoke libtoolize before gnulib-tool, to avoid spurious warnings.
* autogen.sh: Add comments.
Remove build-aux/config.rpath before running autoreconf.
---
autogen.sh | 4 ++++
bootstrap | 10 ++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/autogen.sh b/autogen.sh
index 5179623..649ca7b 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -33,6 +33,10 @@ else
fi
mkdir -p daemon/m4
+
+# Remove this file, so autoreconf doesn't complain about it being
+# locally modified.
+rm -f build-aux/config.rpath
autoreconf -i
CONFIGUREDIR=.
diff --git a/bootstrap b/bootstrap
index 2eba6a7..c2d5604 100755
--- a/bootstrap
+++ b/bootstrap
@@ -29,7 +29,14 @@ GNULIB_SRCDIR=.gnulib
ls po/*.po 2>/dev/null | sed 's|.*/||; s|\.po$||'> po/LINGUAS
# Run autopoint, to get po/Makevars.template:
-autopoint
+# Also, released autopoint has the tendency to install macros that have
+# been obsoleted in current gnulib, so run this before gnulib-tool.
+autopoint --force
+
+# Autoreconf runs aclocal before libtoolize, which causes spurious
+# warnings if the initial aclocal is confused by the libtoolized
+# (or worse out-of-date) macro directory.
+libtoolize --copy --install
# Create gettext configuration.
echo "$0: Creating po/Makevars from po/Makevars.template ..."
@@ -50,7 +57,6 @@ gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
(cd daemon&& mkdir -p tests lib&& ../$gnulib_tool --update)
modules='
-asprintf
closeout
gitlog-to-changelog
gnu-make
--
1.6.4.1.322.g38eb7
That's a whole lot clearer, thanks.
From 080317644908f2e7e13df4abbcbe99a9c02d45bf Mon Sep 17 00:00:00
2001
From: Jim Meyering<meyering(a)redhat.com>
Date: Tue, 25 Aug 2009 16:21:48 +0200
Subject: [PATCH libguestfs 3/3] build: use only one m4/ directory
* Makefile.am (ACLOCAL_AMFLAGS): Specify only one include dir: m4.
* bootstrap: Tell gnulib-tool to put .m4 files in m4/, not gnulib/m4.
* autogen.sh: Move autoreconf from here into...
* bootstrap: ...here, so that it is sure to precede the gnulib-tool run.
* m4/.gitignore: Update.
---
Makefile.am | 2 +-
autogen.sh | 7 ------
bootstrap | 7 +++++-
m4/.gitignore | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 68 insertions(+), 9 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 8fed9ec..bbf23d9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -15,7 +15,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
+ACLOCAL_AMFLAGS = -I m4
SUBDIRS = gnulib/lib src daemon appliance fish po examples images \
gnulib/tests capitests regressions test-tool
diff --git a/autogen.sh b/autogen.sh
index 649ca7b..9c73a2d 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -32,13 +32,6 @@ else
./bootstrap&& echo "$t"> $curr_status
fi
-mkdir -p daemon/m4
-
-# Remove this file, so autoreconf doesn't complain about it being
-# locally modified.
-rm -f build-aux/config.rpath
-autoreconf -i
-
CONFIGUREDIR=.
# Run configure in BUILDDIR if it's set
diff --git a/bootstrap b/bootstrap
index c2d5604..020a6b3 100755
--- a/bootstrap
+++ b/bootstrap
@@ -38,6 +38,11 @@ autopoint --force
# (or worse out-of-date) macro directory.
libtoolize --copy --install
+# Remove this file, so autoreconf doesn't complain about it being
+# locally modified.
+rm -f build-aux/config.rpath
+autoreconf -i
+
# Create gettext configuration.
echo "$0: Creating po/Makevars from po/Makevars.template ..."
rm -f po/Makevars
@@ -76,7 +81,7 @@ warnings
$gnulib_tool \
--avoid=dummy \
--with-tests \
- --m4-base=gnulib/m4 \
+ --m4-base=m4 \
--source-base=gnulib/lib \
--tests-base=gnulib/tests \
--import $modules
diff --git a/m4/.gitignore b/m4/.gitignore
index a2d2160..2f903a4 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -25,3 +25,64 @@ ulonglong.m4
wchar_t.m4
wint_t.m4
xsize.m4
+/00gnulib.m4
+/alloca.m4
+/close-stream.m4
+/closeout.m4
+/eealloc.m4
+/environ.m4
+/errno_h.m4
+/error.m4
+/exitfail.m4
+/extensions.m4
+/float_h.m4
+/fpending.m4
+/getpagesize.m4
+/glibc2.m4
+/gnu-make.m4
+/gnulib-common.m4
+/gnulib-comp.m4
+/gnulib-tool.m4
+/include_next.m4
+/inline.m4
+/intl.m4
+/intldir.m4
+/intlmacosx.m4
+/intmax_t.m4
+/localcharset.m4
+/locale-fr.m4
+/locale-ja.m4
+/locale-zh.m4
+/lock.m4
+/malloca.m4
+/manywarnings.m4
+/mbrtowc.m4
+/mbsinit.m4
+/mbstate_t.m4
+/memchr.m4
+/mmap-anon.m4
+/multiarch.m4
+/onceonly.m4
+/quotearg.m4
+/rawmemchr.m4
+/setenv.m4
+/stdbool.m4
+/stddef_h.m4
+/stdint.m4
+/stdio_h.m4
+/stdlib_h.m4
+/strchrnul.m4
+/strerror.m4
+/string_h.m4
+/strndup.m4
+/strnlen.m4
+/threadlib.m4
+/unistd_h.m4
+/vasnprintf.m4
+/vasprintf.m4
+/visibility.m4
+/warnings.m4
+/wchar.m4
+/wctob.m4
+/wctype.m4
+/xalloc.m4
--
1.6.4.1.322.g38eb7
I'm not sure this entirely resolves the problem with m4 macro dir
precedence you describe in your intro. You've still got the problem that
if you run things in the wrong order you end up with the wrong version
of a macro in the m4 directory, with no obvious way of noticing that
this has happened.
I wonder if the above macros should be checked in to libguestfs rather
than ignored. I know this isn't ideal, but it would at least be obvious
if one changed.
Matt
--
Matthew Booth, RHCA, RHCSS
Red Hat Engineering, Virtualisation Team
M: +44 (0)7977 267231
GPG ID: D33C3490
GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490