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.
This commit is contained in:
Jim Meyering 2009-07-10 10:01:04 +02:00
parent e335b2ca90
commit f272378d52
5 changed files with 26 additions and 7 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
*.o
*~
.git
.git-module-status
ABOUT-NLS
COPYING
INSTALL

View File

@ -48,6 +48,8 @@ cov: clean-cov
clean-cov:
rm -rf $(top_builddir)/coverage
MAINTAINERCLEANFILES = .git-module-status
# disable this check
distuninstallcheck:

View File

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

View File

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

10
cfg.mk
View File

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