[libvirt] [PATCH] build: avoid problems with autogen.sh runs from tarball

Eric Blake eblake at redhat.com
Fri Feb 11 18:13:19 UTC 2011


Introduced by commit fac97c65c distributing cfg.mk, which
previously could blindly assume it was in a git checkout.

* cfg.mk (_update_required): Also check for .git.
* autogen.sh: Don't run bootstrap from a tarball.
Reported by Daniel Veillard.
---

This should fix the issues of mistakenly running git on a tarball,
as reported here:
https://www.redhat.com/archives/libvir-list/2011-February/msg00371.html

 autogen.sh |   27 +++++++++++++++------------
 cfg.mk     |    1 +
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/autogen.sh b/autogen.sh
index ff13fd1..b64521e 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -8,8 +8,8 @@ THEDIR=`pwd`
 cd "$srcdir"

 test -f src/libvirt.c || {
-	echo "You must run this script in the top-level libvirt directory"
-	exit 1
+    echo "You must run this script in the top-level libvirt directory"
+    exit 1
 }


@@ -52,16 +52,19 @@ bootstrap_hash()
 # 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)" \
-    && test -f "po/Makevars"; then
-    # good, it's up to date, all we need is autoreconf
-    autoreconf -if
-else
-    echo running bootstrap$no_git...
-    ./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status \
-      || { echo "Failed to bootstrap, please investigate."; exit 1; }
+# Only run bootstrap from a git checkout, never from a tarball.
+if test -d .git; then
+    curr_status=.git-module-status
+    t=$(bootstrap_hash; git diff .gnulib)
+    if test "$t" = "$(cat $curr_status 2>/dev/null)" \
+        && test -f "po/Makevars"; then
+        # good, it's up to date, all we need is autoreconf
+        autoreconf -if
+    else
+        echo running bootstrap$no_git...
+        ./bootstrap$no_git --bootstrap-sync && bootstrap_hash > $curr_status \
+            || { echo "Failed to bootstrap, please investigate."; exit 1; }
+    fi
 fi

 cd "$THEDIR"
diff --git a/cfg.mk b/cfg.mk
index 120f452..4bbeb96 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -507,6 +507,7 @@ ifeq (0,$(MAKELEVEL))
   _submodule_hash = sed 's/^[ +-]//;s/ .*//'
   _update_required := $(shell						\
       cd '$(srcdir)';							\
+      test -d .git || { echo 0; exit; };				\
       test -f po/Makevars || { echo 1; exit; };				\
       actual=$$(git submodule status | $(_submodule_hash);		\
 		git hash-object bootstrap.conf;				\
-- 
1.7.4




More information about the libvir-list mailing list