From 5f211d4bc50da95dd44969177d2a860256bbdfd7 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 4 Aug 2010 14:35:41 -0600 Subject: [PATCH] build: rerun bootstrap if po/Makevars got nuked There has been a frequent complaint of: make[2]: Entering directory `/home/remote/eblake/libvirt/po' make[2]: *** No rule to make target `/config.status', needed by `Makefile'. Stop. It happens after nuking and regenerating the po directory, which is a common action after running anything like 'make dist' or 'make rpm' that dirties all the .po files. Teach autogen.sh that it must regenerate po/Makevars to avoid the missing variable declaration, and teach cfg.mk to recognize that a nuked po directory is cause to rerun autogen.sh. * cfg.mk (_update_required): Check for po/Makevars. * autogen.sh (bootstrap): Run bootstrap if it got lost. Diagnosed by Justin Clift. --- autogen.sh | 8 ++++++-- cfg.mk | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/autogen.sh b/autogen.sh index 2f5b42d638..c0a1c4ae0d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -74,10 +74,14 @@ bootstrap_hash() # 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. +# Also, running 'make rpm' tends to litter the po/ directory, and some people +# like to run 'git clean -x -f po' to fix it; but only ./bootstrap regenerates +# the required file po/Makevars. curr_status=.git-module-status t=$(bootstrap_hash; git diff .gnulib) -if test "$t" = "$(cat $curr_status 2>/dev/null)"; then - : # good, it's up to date, all we need is autoreconf +if test "$t" = "$(cat $curr_status 2>/dev/null)" \ + && test -f "$THEDIR/po/Makevars"; then + # good, it's up to date, all we need is autoreconf autoreconf -if else echo running bootstrap... diff --git a/cfg.mk b/cfg.mk index e12265e2e4..7226828a58 100644 --- a/cfg.mk +++ b/cfg.mk @@ -459,6 +459,7 @@ ifeq (0,$(MAKELEVEL)) # b653eda3ac4864de205419d9f41eec267cb89eeb _submodule_hash = sed 's/^[ +-]//;s/ .*//' _update_required := $(shell \ + test -f po/Makevars || { echo 1; exit; }; \ cd '$(srcdir)'; \ actual=$$(git submodule status | $(_submodule_hash); \ git hash-object bootstrap.conf; \