diff --git a/.gnulib b/.gnulib index f40e61ea0c..b72ff2a45e 160000 --- a/.gnulib +++ b/.gnulib @@ -1 +1 @@ -Subproject commit f40e61ea0c4940b027aade7dd48948aa93f133a4 +Subproject commit b72ff2a45efde544c406804186d37a3254728571 diff --git a/HACKING b/HACKING index 271ff6cff5..7db7d3b8fc 100644 --- a/HACKING +++ b/HACKING @@ -36,7 +36,8 @@ developer is: git checkout -t origin -b workbranch Hack, committing any changes along the way -Then, when you want to post your patches: +More hints on compiling can be found here . When you want to +post your patches: git pull --rebase (fix any conflicts) diff --git a/autogen.sh b/autogen.sh index d4957f1b02..42e56082f3 100755 --- a/autogen.sh +++ b/autogen.sh @@ -49,6 +49,10 @@ fi # we rerun bootstrap to pull in those diffs. bootstrap_hash() { + if test "$no_git"; then + echo no-git + return + fi git submodule status | sed 's/^[ +-]//;s/ .*//' git hash-object bootstrap.conf git ls-tree -d HEAD gnulib/local | awk '{print $3}' @@ -62,7 +66,9 @@ bootstrap_hash() # Only run bootstrap from a git checkout, never from a tarball. if test -d .git; then curr_status=.git-module-status t= - if test -d .gnulib; then + if test "$no_git"; then + t=no-git + elif test -d .gnulib; then t=$(bootstrap_hash; git diff .gnulib) fi case $t:${CLEAN_SUBMODULE+set} in @@ -78,7 +84,7 @@ if test -d .git; then # good, it's up to date, all we need is autoreconf autoreconf -if else - if test ${CLEAN_SUBMODULE+set}; then + if test -z "$no_git" && test ${CLEAN_SUBMODULE+set}; then echo cleaning up submodules... git submodule foreach 'git clean -dfqx && git reset --hard' fi diff --git a/bootstrap b/bootstrap index 0cbea66e8f..9c522049f0 100755 --- a/bootstrap +++ b/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh # Print a version string. -scriptversion=2013-05-08.20; # UTC +scriptversion=2013-07-03.20; # UTC # Bootstrap this package from checked-out sources. @@ -551,7 +551,7 @@ fi echo "$0: Bootstrapping from checked-out $package sources..." # See if we can use gnulib's git-merge-changelog merge driver. -if test -d .git && (git --version) >/dev/null 2>/dev/null ; then +if $use_git && test -d .git && (git --version) >/dev/null 2>/dev/null ; then if git config merge.merge-changelog.driver >/dev/null ; then : elif (git-merge-changelog --version) >/dev/null 2>/dev/null ; then @@ -574,13 +574,17 @@ git_modules_config () { test -f .gitmodules && git config --file .gitmodules "$@" } -gnulib_path=$(git_modules_config submodule.gnulib.path) -test -z "$gnulib_path" && gnulib_path=gnulib +if $use_git; then + gnulib_path=$(git_modules_config submodule.gnulib.path) + test -z "$gnulib_path" && gnulib_path=gnulib +fi -# Get gnulib files. +# Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a +# submodule, for use in the rest of the script. case ${GNULIB_SRCDIR--} in -) + # Note that $use_git is necessarily true in this case. if git_modules_config submodule.gnulib.url >/dev/null; then echo "$0: getting gnulib files..." git submodule init || exit $? @@ -601,8 +605,8 @@ case ${GNULIB_SRCDIR--} in GNULIB_SRCDIR=$gnulib_path ;; *) - # Use GNULIB_SRCDIR as a reference. - if test -d "$GNULIB_SRCDIR"/.git && \ + # Use GNULIB_SRCDIR directly or as a reference. + if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ git_modules_config submodule.gnulib.url >/dev/null; then echo "$0: getting gnulib files..." if git submodule -h|grep -- --reference > /dev/null; then @@ -628,6 +632,9 @@ case ${GNULIB_SRCDIR--} in ;; esac +# $GNULIB_SRCDIR now points to the version of gnulib to use, and +# we no longer need to use git or $gnulib_path below here. + if $bootstrap_sync; then cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { echo "$0: updating bootstrap and restarting..." diff --git a/cfg.mk b/cfg.mk index bbe84b3174..147e788a6d 100644 --- a/cfg.mk +++ b/cfg.mk @@ -828,6 +828,7 @@ ifeq (0,$(MAKELEVEL)) test -d .git || { echo 0; exit; }; \ test -f po/Makevars || { echo 1; exit; }; \ test -f AUTHORS || { echo 1; exit; }; \ + test "no-git" = "$$(cat $(_curr_status))" && { echo 0; exit; }; \ actual=$$(git submodule status | $(_submodule_hash); \ git hash-object bootstrap.conf; \ git ls-tree -d HEAD gnulib/local | awk '{print $$3}'; \ diff --git a/docs/compiling.html.in b/docs/compiling.html.in index 66d2925a5d..aff5487e9a 100644 --- a/docs/compiling.html.in +++ b/docs/compiling.html.in @@ -65,8 +65,36 @@ checkout it is necessary to generate the configure script and Makefile.in templates using the autogen.sh command. By default when the configure script is run from within a GIT checkout, it - will turn on -Werror for builds. This can be disabled with --disable-werror, - but this is not recommended. To build & install libvirt to your home + will turn on -Werror for builds. This can be disabled with + --disable-werror, but this is not recommended. +

+

+ Libvirt takes advantage of + the gnulib + project to provide portability to a number of platforms. This + is normally done dynamically via a git submodule in + the .gnulib subdirectory, which is auto-updated as + needed when you do incremental builds. Setting the environment + variable GNULIB_SRCDIR to a local directory + containing a git checkout of gnulib will let you reduce local + disk space requirements and network download time, regardless of + which actual commit you have in that reference directory. +

+

+ However, if you are developing on a platform where git is not + available, or are behind a firewall that does not allow for git + to easily obtain the gnulib submodule, it is possible to instead + use a static mode of operation where you are then responsible + for updating the git submodule yourself. In this mode, you must + track the exact gnulib commit needed by libvirt (usually not the + latest gnulib.git) via alternative means, such as a shared NFS + drive or manual download, and run this any time libvirt.git + updates the commit stored in the .gnulib submodule:

+
+      $ GNULIB_SRCDIR=/path/to/gnulib ./autogen.sh --no-git
+    
+ +

To build & install libvirt to your home directory the following commands can be run:

diff --git a/docs/hacking.html.in b/docs/hacking.html.in index 41c8d481a6..ba51e233c8 100644 --- a/docs/hacking.html.in +++ b/docs/hacking.html.in @@ -35,7 +35,9 @@ git checkout -t origin -b workbranch Hack, committing any changes along the way -

Then, when you want to post your patches:

+

More hints on compiling can be + found here. When you want to + post your patches:

   git pull --rebase
   (fix any conflicts)