Skip to content

Commit

Permalink
build: allow for local gnulib diffs
Browse files Browse the repository at this point in the history
Commit f7bd00c 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.
  • Loading branch information
ebblake committed Nov 9, 2011
1 parent 0dbc10a commit 676fdf8
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
3 changes: 3 additions & 0 deletions autogen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions bootstrap.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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}
Expand Down
1 change: 1 addition & 0 deletions cfg.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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 $$?)
Expand Down

0 comments on commit 676fdf8

Please sign in to comment.