Matthew Booth wrote:
On 25/08/09 09:05, Jim Meyering wrote:
> The last patch was incomplete, since autoreconf must also be
> run with -f/--force.
This was certainly required to allow me to build from scratch. Why are
these forces necessary where they weren't before?
Good question. I haven't tracked it down.
Maybe because there are now more modules,
and some of them pull in pieces that before weren't required.
Are there any
disadvantages to using force here? If so, is there any way to avoid it?
One potential disadvantage of using --force would be if you run
the forcing tool *after* bootstrap and that tool were to replace
gnulib-tool-provided .m4 files with older versions. But that's
a risk only if your generate gnulib-tool's files and those
others into the same trees. We don't. gnulib's .m4 files are
in gnulib/m4 and the others go into m4/
That brings up something I'll have to look into: aclocal include-dir ordering:
Currently, we have this in the top-level Makefile.am:
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
...
Sure enough. .m4 files are searched first in m4/ and then if not
found, in gnulib/m4. Wrong. We want gnulib-supplied .m4 files
to have precedence, because when there's a difference, they're
almost always newer.
So I'm also juggling things so that there's only one m4/ directory:
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
and making gnulib-tool write into it, too.
In order for that to work, I've made this change in bootstrap:
- --m4-base=gnulib/m4 \
+ --m4-base=m4 \
and moved the autoreconf invocation from autogen.sh
into bootstrap, so that it is sure to precede the gnulib-tool run.
Here's an updated series.
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
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
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