Signed-off-by: Aleksey Avdeev <s...@altlinux.ru> --- Hello.
Ability to explicitly disable the use git when calling bootstrap will exclude recourse to third-party resources for assembly rpm package. What, in particular, significantly simplify the preparation of packages to build on git.alt (see <http://en.altlinux.org/Git.alt_reference#Building_packages_with_gear>). The patch in my repository: <http://git.altlinux.org/people/solo/public/?p=gnulib.git;a=commit;h=8741ad8a412b2aa9f7a4e3fc69902c12a6ed9d69>. Background: see <https://bugzilla.redhat.com/show_bug.cgi?id=562743>. ChangeLog | 8 ++++++ build-aux/bootstrap | 60 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05a4e3d..4bd8d73 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2010-03-19 Aleksey Avdeev <s...@altlinux.ru> + + bootstrap: a new option --no-git, prohibiting the use git in + the bootstrap process. + * build-aux/bootstrap (NO_GIT): Explicit prohibition to use git, + if defined with GNULIB_SRCDIR. + * build-aux/bootstrap (git_submodule_gnulib_path): New function. + 2010-03-11 Bruno Haible <br...@clisp.org> Fix problems with overloaded C++ definitions of memchr, strpbrk, etc. diff --git a/build-aux/bootstrap b/build-aux/bootstrap index 365a3d9..0acddc0 100755 --- a/build-aux/bootstrap +++ b/build-aux/bootstrap @@ -54,6 +54,8 @@ Options: have gnulib sources on your machine, and do not want to waste your bandwidth downloading them again. Defaults to \$GNULIB_SRCDIR. + --no-git Explicit prohibition to use git, if used + --gnulib-srcdir (or defined \$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. @@ -234,6 +236,8 @@ do checkout_only_file=;; --copy) copy=true;; + --no-git) + NO_GIT=t;; *) echo >&2 "$0: $option: unknown option" exit 1;; @@ -408,12 +412,15 @@ git_modules_config () { test -f .gitmodules && git config --file .gitmodules "$@" } -gnulib_path=`git_modules_config submodule.gnulib.path` +git_submodule_gnulib_path () { + git_modules_config submodule.gnulib.path +} # Get gnulib files. case ${GNULIB_SRCDIR--} in -) + git_gnulib_path=`git_submodule_gnulib_path` if git_modules_config submodule.gnulib.url >/dev/null; then echo "$0: getting gnulib files..." git submodule init || exit $? @@ -434,33 +441,46 @@ case ${GNULIB_SRCDIR--} in ;; *) # Use GNULIB_SRCDIR as a reference. - if test -d "$GNULIB_SRCDIR"/.git && \ - git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - if git submodule --help|grep reference > /dev/null; then - # Prefer the one-liner available in git 1.6.4 or newer. - git submodule update --init --reference "$GNULIB_SRCDIR" \ - "$gnulib_path" || exit $? - else - # This fallback allows at least git 1.5.5. - if test -f "$gnulib_path"/gnulib-tool; then - # Since file already exists, assume submodule init already complete. - git submodule update || exit $? + if test ! -d "$GNULIB_SRCDIR"; then + echo "$0: $GNULIB_SRCDIR no directory." + exit 1 + fi + if test x"$NO_GIT" = x; then + git_gnulib_path=`git_submodule_gnulib_path` + if test -d "$GNULIB_SRCDIR"/.git && \ + git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + if git submodule --help|grep reference > /dev/null; then + # Prefer the one-liner available in git 1.6.4 or newer. + git submodule update --init --reference "$GNULIB_SRCDIR" \ + "$gnulib_path" || exit $? else - # Older git can't clone into an empty directory. - rmdir "$gnulib_path" 2>/dev/null - git clone --reference "$GNULIB_SRCDIR" \ - "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ - && git submodule init && git submodule update \ - || exit $? + # This fallback allows at least git 1.5.5. + if test -f "$gnulib_path"/gnulib-tool; then + # Since file already exists, assume submodule init already complete. + git submodule update || exit $? + else + # Older git can't clone into an empty directory. + rmdir "$gnulib_path" 2>/dev/null + git clone --reference "$GNULIB_SRCDIR" \ + "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ + && git submodule init && git submodule update \ + || exit $? + fi fi + GNULIB_SRCDIR=$gnulib_path fi - GNULIB_SRCDIR=$gnulib_path + else + echo "$0: unuse git..." fi ;; esac gnulib_tool=$GNULIB_SRCDIR/gnulib-tool +if test ! -x "$gnulib_tool";then + echo >&2 "$0: invalid gnulib srcdir: $GNULIB_SRCDIR" + exit 1 +fi <$gnulib_tool || exit # Get translations. -- 1.6.5.2