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

Jim Meyering jim at meyering.net
Tue Aug 25 15:09:13 UTC 2009


Matthew Booth wrote:
> On 25/08/09 15:23, Jim Meyering wrote:
>>  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
>
> This is just dark magic to me. I'll take your word on it ;)

FYI, I updated by running this command:

    git syncsub

where I've defined that alias in ~/.gitconfig:

   [alias]
          syncsub = submodule foreach git pull origin master

The SHA1 values are old and new ones corresponding to commits in
the upstream gnulib repository.

>> Subject: [PATCH libguestfs 2/3] build: invoke autopoint with --force
...
> That's a whole lot clearer, thanks.

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

> 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

If you manually run some of the commands currently run only
via bootstrap (autoreconf, autopoint, libtoolize), then yes,
you can cause trouble.

But you can do the same by accidentally running ": > configure", too ;-)
Or even manually compiling or linking a file or two, but with the wrong options.

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

Please, please, no ;-)
Let's use that only as a last resort.  Otherwise,
it ends up being messy when you build on a few different types
of systems, with different versions of auto* tools installed.

Here's an adjusted version of that 3rd patch.
The prior version didn't work when run from a clean directory,
because I'd made it run autoreconf *before* gnulib-tool, so it
failed to create a configure script.


>From a31be14485deeac914a789891bec67c72346f7c0 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] 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 run only when gnulib-tool is.
Also, tell it to skip the usual autopoint and libtoolize runs.
* m4/.gitignore: Update.
---
 Makefile.am   |    2 +-
 autogen.sh    |    7 ------
 bootstrap     |    6 ++++-
 m4/.gitignore |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 67 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..c3f7d6e 100755
--- a/bootstrap
+++ b/bootstrap
@@ -76,7 +76,11 @@ warnings
 $gnulib_tool			\
   --avoid=dummy			\
   --with-tests			\
-  --m4-base=gnulib/m4		\
+  --m4-base=m4			\
   --source-base=gnulib/lib	\
   --tests-base=gnulib/tests	\
   --import $modules
+
+# Disable autopoint and libtoolize, since they were already done above.
+AUTOPOINT=true LIBTOOLIZE=true \
+    autoreconf --verbose --install --no-recursive
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