[Libguestfs] [PATCH libguestfs 1/2] build: invoke autopoint and autoreconf with --force

Jim Meyering jim at meyering.net
Tue Aug 25 14:23:31 UTC 2009


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 at 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 at 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 at 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




More information about the Libguestfs mailing list