[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fetch from existing gnulib Git repository if needed
From: |
Bruno Haible |
Subject: |
Re: Fetch from existing gnulib Git repository if needed |
Date: |
Sun, 28 Apr 2024 11:33:26 +0200 |
Markus Mützel wrote:
> However, it looks like $GNULIB_SRCDIR is empty for us. So, the change doesn't
> seem to make a difference. Executing bootstrap after a revision bump still
> fails if the bootstrap script was already run before.
Oh, there were two 'git checkout' commands and I enhanced only one of them...
Should now be fixed, like this. Thanks for the feedback!
2024-04-28 Bruno Haible <bruno@clisp.org>
bootstrap: Support checking out a recent GNULIB_REVISION, part 2.
Reported by Markus Mützel <markus.muetzel@gmx.de> in
<https://lists.gnu.org/archive/html/bug-gnulib/2024-04/msg00507.html>.
* top/bootstrap-funclib.sh (prepare_GNULIB_SRCDIR): If using a submodule
and the 'git checkout' command fails, fetch the newer commits and then
retry it.
* build-aux/bootstrap: Regenerated.
diff --git a/top/bootstrap-funclib.sh b/top/bootstrap-funclib.sh
index 620006d320..f7905eb208 100644
--- a/top/bootstrap-funclib.sh
+++ b/top/bootstrap-funclib.sh
@@ -1,6 +1,6 @@
# A library of shell functions for autopull.sh, autogen.sh, and bootstrap.
-scriptlibversion=2024-04-27.17; # UTC
+scriptlibversion=2024-04-28.09; # UTC
# Copyright (C) 2003-2024 Free Software Foundation, Inc.
#
@@ -465,8 +465,8 @@ prepare_GNULIB_SRCDIR ()
# The 'git checkout "$GNULIB_REVISION"' command succeeds if the
# GNULIB_REVISION is a commit hash that exists locally, or if it is
# branch name that can be fetched from origin. It fails, however,
- # if the GNULIB_REVISION is a commit hash that only exists in origin.
- # In this case, we need a 'git fetch' and then retry
+ # if the GNULIB_REVISION is a commit hash that only exists in
+ # origin. In this case, we need a 'git fetch' and then retry
# 'git checkout "$GNULIB_REVISION"'.
(cd "$GNULIB_SRCDIR" \
&& { git checkout "$GNULIB_REVISION" 2>/dev/null \
@@ -542,7 +542,17 @@ prepare_GNULIB_SRCDIR ()
# The subdirectory 'gnulib' already exists.
if test -n "$GNULIB_REVISION"; then
if test -d "$gnulib_path/.git"; then
- (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") || exit 1
+ # The 'git checkout "$GNULIB_REVISION"' command succeeds if the
+ # GNULIB_REVISION is a commit hash that exists locally, or if it is
+ # branch name that can be fetched from origin. It fails, however,
+ # if the GNULIB_REVISION is a commit hash that only exists in
+ # origin. In this case, we need a 'git fetch' and then retry
+ # 'git checkout "$GNULIB_REVISION"'.
+ (cd "$gnulib_path" \
+ && { git checkout "$GNULIB_REVISION" 2>/dev/null \
+ || { git fetch origin && git checkout "$GNULIB_REVISION"; }
+ }
+ ) || exit $?
else
die "Error: GNULIB_REVISION is specified in bootstrap.conf," \
"but '$gnulib_path' contains no git history"