mirror of https://gitee.com/openkylin/libvirt.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.
This commit is contained in:
parent
e335b2ca90
commit
f272378d52
|
@ -2,6 +2,7 @@
|
|||
*.o
|
||||
*~
|
||||
.git
|
||||
.git-module-status
|
||||
ABOUT-NLS
|
||||
COPYING
|
||||
INSTALL
|
||||
|
|
|
@ -48,6 +48,8 @@ cov: clean-cov
|
|||
clean-cov:
|
||||
rm -rf $(top_builddir)/coverage
|
||||
|
||||
MAINTAINERCLEANFILES = .git-module-status
|
||||
|
||||
# disable this check
|
||||
distuninstallcheck:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
11
autogen.sh
11
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
|
||||
|
||||
|
|
10
cfg.mk
10
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
|
||||
|
|
Loading…
Reference in New Issue