]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
build: allow for local gnulib diffs
authorEric Blake <eblake@redhat.com>
Wed, 9 Nov 2011 00:06:27 +0000 (17:06 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 9 Nov 2011 16:03:33 +0000 (09:03 -0700)
Commit f7bd00c12 pulled in a gnulib module that fails to compile
on mingw.  While it would be nice to pull in a newer version of
.gnulib that fixes this, it is difficult to backport any .gnulib
update to older releases.  So, it makes sense to take advantage
of gnulib-tool's ability to support local diffs, where we can
apply specific diffs in our use of gnulib without waiting for
upstream gnulib to pick up those changes, as well as avoiding
a wholesale .gnulib update.  The existence of local diffs will
also make it easier to backport fixes against a tarball (as long
as a tarball and libvirt.git share the same .gnulib commit, then
the tarball can be patched by applying the same local diffs as
a post-release libvirt.git commit, without having to rerun an
entire gnulib-tool bootstrap).

This patch introduces the framework for supporting local diffs,
without actually introducing any.

* bootstrap.conf (local_gl_dir): New variable.
* autogen.sh (bootstrap_hash): Hash any local diffs, to force a
re-bootstrap if just diffs change.
* cfg.mk (_update_required): Likewise.

autogen.sh
bootstrap.conf
cfg.mk

index b64521e5edf5cab7cce33925f161feb2bd42096f..f1591d8e1744cae9b47aa1abbbe4b6befcda2408 100755 (executable)
@@ -41,10 +41,13 @@ fi
 # is required.  The first is just the SHA1 that selects a gnulib snapshot.
 # The second ensures that whenever we change the set of gnulib modules used
 # by this package, we rerun bootstrap to pull in the matching set of files.
+# The third ensures that whenever we change the set of local gnulib diffs,
+# we rerun bootstrap to pull in those diffs.
 bootstrap_hash()
 {
     git submodule status | sed 's/^[ +-]//;s/ .*//'
     git hash-object bootstrap.conf
+    git ls-tree -d HEAD gnulib/local | awk '{print $3}'
 }
 
 # Ensure that whenever we pull in a gnulib update or otherwise change to a
index 4557d2da9dca7128b038e3f44e1bbd375d326013..6498aba5020647d72ce6d2359018ef99f680a9a3 100644 (file)
@@ -160,9 +160,10 @@ fi
 
 # Tell gnulib to:
 #   require LGPLv2+
+#   apply any local diffs in gnulib/local/ dir
 #   put *.m4 files in new gnulib/m4/ dir
-#   put *.[ch] files in new gnulib/lib/ dir.
-#   import gnulib tests in new gnulib/tests/ dir.
+#   put *.[ch] files in new gnulib/lib/ dir
+#   import gnulib tests in new gnulib/tests/ dir
 gnulib_name=libgnu
 m4_base=gnulib/m4
 source_base=gnulib/lib
@@ -172,6 +173,7 @@ gnulib_tool_option_extras="\
  --with-tests\
  --avoid=pt_chown\
 "
+local_gl_dir=gnulib/local
 
 # Convince bootstrap to use multiple m4 directories.
 : ${ACLOCAL=aclocal}
diff --git a/cfg.mk b/cfg.mk
index 463ce0c4f8f3c352c363a5403a33b7f54e4c93ae..574c7a49f4a26eca056782c7c02ca1d0b96615f2 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -627,6 +627,7 @@ ifeq (0,$(MAKELEVEL))
       test -f po/Makevars || { echo 1; exit; };                                \
       actual=$$(git submodule status | $(_submodule_hash);             \
                git hash-object bootstrap.conf;                         \
+               git ls-tree -d HEAD gnulib/local | awk '{print $$3}';   \
                git diff .gnulib);                                      \
       stamp="$$($(_submodule_hash) $(_curr_status) 2>/dev/null)";      \
       test "$$stamp" = "$$actual"; echo $$?)