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

Matthew Booth mbooth at redhat.com
Tue Aug 25 14:39:33 UTC 2009


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 ;)

>  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

That's a whole lot clearer, thanks.

>  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

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




More information about the Libguestfs mailing list