From: Jim Meyering Date: Fri, 10 Jul 2009 08:01:04 +0000 (+0200) Subject: build: automatically rerun ./bootstrap when needed X-Git-Tag: v0.7.0~207 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f272378d52e28b937219121e8b90883df8a10012;p=thirdparty%2Flibvirt.git build: automatically rerun ./bootstrap when needed When "git pull" (or any other operation) brings in a new version of the gnulib git submodule, you must rerun the autogen.sh script. With this change, "make" now fails and tells you to run ./autogen.sh, when needed. * autogen.sh: Maintain a new file, .git-module-status, containing the current submodule status. If it doesn't exist or its content is different from what "git submodule status" prints, then run ./bootstrap * .gitignore: Add .git-module-status * cfg.mk: Diagnose out of date submodule and fail. * README-hacking: Update not to mention bootstrap. * Makefile.am (MAINTAINERCLEANFILES): Add .git-module-status, so that "make maintainerclean" will remove it. --- diff --git a/.gitignore b/.gitignore index 54c3ba46b5..17c3975847 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.o *~ .git +.git-module-status ABOUT-NLS COPYING INSTALL diff --git a/Makefile.am b/Makefile.am index f9efff580b..beddca725c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -48,6 +48,8 @@ cov: clean-cov clean-cov: rm -rf $(top_builddir)/coverage +MAINTAINERCLEANFILES = .git-module-status + # disable this check distuninstallcheck: diff --git a/README-hacking b/README-hacking index 99c68fef4b..4105a3ee6a 100644 --- a/README-hacking +++ b/README-hacking @@ -28,13 +28,8 @@ You can get a copy of the source repository like this: $ git clone git://libvirt.org/libvirt $ cd libvirt -The next step is to get and check other files needed to build, -which are extracted from other source packages: - - $ ./bootstrap - -Then run this to create e.g., Makefiles and ./configure, -and to invoke ./configure: +The next step is to get all required pieces from gnulib, +to run autoreconf, and to invoke ./configure: $ ./autogen.sh diff --git a/autogen.sh b/autogen.sh index e6bde33aec..415f3ec6dd 100755 --- a/autogen.sh +++ b/autogen.sh @@ -54,6 +54,17 @@ if test -z "$*"; then echo "to pass any to it, please specify them on the $0 command line." fi +# Ensure that whenever we pull in a gnulib update or otherwise change to a +# different version (i.e., when switching branches), we also rerun ./bootstrap. +curr_status=.git-module-status +t=$(git submodule status) +if test "$t" = "$(cat $curr_status 2>/dev/null)"; then + : # good, it's up to date +else + echo running bootstrap... + ./bootstrap && echo "$t" > $curr_status +fi + # Automake requires that ChangeLog exist. touch ChangeLog diff --git a/cfg.mk b/cfg.mk index 736f7c056c..3b3d57f492 100644 --- a/cfg.mk +++ b/cfg.mk @@ -230,3 +230,13 @@ sc_libvirt_unmarked_diagnostics: # We don't use this feature of maint.mk. prev_version_file = /dev/null + +ifeq (0,$(MAKELEVEL)) + _curr_status = .git-module-status + _update_required := \ + $(shell t=$$(git submodule status); \ + test "$$t" = "$$(cat $(_curr_status) 2>/dev/null)"; echo $$?) + ifeq (1,$(_update_required)) + $(error gnulib update required; run ./autogen.sh first) + endif +endif