According to Paolo Bonzini on 2/17/2010 10:10 AM: > On 02/17/2010 02:57 PM, Eric Blake wrote: > > Any objections? > > Where is the patch? >
Here's my first cut at it. Beware that it is a slight semantic change from Jim's commit 9efa515ce last November; but I actually prefer my semantics. With Jim's semantics and with GNULIB_SRCDIR set in my environment, the mere act of running ./bootstrap was giving me dirty trees because .gitmodules was modified; I ended up having to run 'env -u GNULIB_SRCDIR ./bootstrap' in projects that were using variants of gnulib's bootstrap. Also, remember that you have to actually copy the updated bootstrap into your project to benefit from the change (for example, I noticed that coreutils' copy of bootstrap has several unrelated differences compared to gnulib's copy). But I won't push without more feedback, particularly if Jim has an argument of why to keep his semantics, or if we need to introduce some alternate means of supporting his intent of quickly testing a one-off grab from the latest and greatest local copy of gnulib rather than the configured commit and location stored in .gitmodules. From: Eric Blake <e...@byu.net> Date: Wed, 17 Feb 2010 11:42:16 -0700 Subject: [PATCH] bootstrap: use GNULIB_SRCDIR to reduce disk usage This slightly changes the semantics of GNULIB_SRCDIR; previously, it was a way to change the contents of .gitmodules to actually point to a new location, which meant that running: GNULIB_SRCDIR=~/gnulib ./bootstrap would result in a dirty tree. The new semantics are nicer; the submodule is cloned as normal, but the clone uses the original $GNULIB_SRCDIR as an object reference to reduce download time and disk space, all without modifying .gitmodules. And you can continue to use proj/.git/config to override proj/.gitmodules, if you don't like pulling from the canonical upstream. * build-aux/bootstrap (GNULIB_SRCDIR): If set, use as a reference, rather than reconfiguring where the submodule points. Signed-off-by: Eric Blake <e...@byu.net> --- ChangeLog | 6 ++++++ build-aux/bootstrap | 10 +++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index c240412..d5eec63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-02-17 Eric Blake <e...@byu.net> + + bootstrap: use GNULIB_SRCDIR to reduce disk usage + * build-aux/bootstrap (GNULIB_SRCDIR): If set, use as a reference, + rather than reconfiguring where the submodule points. + 2009-11-17 Eric Blake <e...@byu.net> manywarnings: add more warnings diff --git a/build-aux/bootstrap b/build-aux/bootstrap index 0fb0ac5..1595d1b 100755 --- a/build-aux/bootstrap +++ b/build-aux/bootstrap @@ -43,7 +43,7 @@ Options: sources reside. Use this if you already have gnulib sources on your machine, and do not want to waste your bandwidth downloading - them again. + them again. Defaults to \$GNULIB_SRCDIR. --copy Copy files instead of creating symbolic links. --force Attempt to bootstrap even if the sources seem not to have been checked out. @@ -421,15 +421,11 @@ case ${GNULIB_SRCDIR--} in GNULIB_SRCDIR=gnulib ;; *) - # Redirect the gnulib submodule to the directory on the command line - # if possible. + # Use GNULIB_SRCDIR as a reference. Assumes git 1.6.4 or newer. if test -d "$GNULIB_SRCDIR"/.git && \ git_modules_config submodule.gnulib.url >/dev/null; then - git submodule init - GNULIB_SRCDIR=`cd $GNULIB_SRCDIR && pwd` - git_modules_config --replace-all submodule.gnulib.url $GNULIB_SRCDIR echo "$0: getting gnulib files..." - git submodule update || exit $? + git submodule update --init --reference "$GNULIB_SRCDIR" gnulib || exit $? GNULIB_SRCDIR=gnulib fi ;; -- 1.6.6.1
signature.asc
Description: OpenPGP digital signature