From: Bruno Haible Date: Sat, 27 Apr 2024 17:08:06 +0000 (+0200) Subject: bootstrap: Support checking out a recent GNULIB_REVISION. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=d81a4871f8ec7e7757187929c4463f1cf5392f26;p=gnulib.git bootstrap: Support checking out a recent GNULIB_REVISION. Reported by Markus Mützel in . * top/bootstrap-funclib.sh (prepare_GNULIB_SRCDIR): If the 'git checkout' command fails, fetch the newer commits and then retry it. * build-aux/bootstrap: Regenerated. --- diff --git a/ChangeLog b/ChangeLog index b1c986eaf3..dacf6892b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2024-04-27 Bruno Haible + + bootstrap: Support checking out a recent GNULIB_REVISION. + Reported by Markus Mützel in + . + * top/bootstrap-funclib.sh (prepare_GNULIB_SRCDIR): If the + 'git checkout' command fails, fetch the newer commits and then retry it. + * build-aux/bootstrap: Regenerated. + 2024-04-27 Bruno Haible ctime, localtime, tzset, wcsftime: Fix env access (regr. 2024-02-09). diff --git a/build-aux/bootstrap b/build-aux/bootstrap index 20913180a6..8d0b97d436 100755 --- a/build-aux/bootstrap +++ b/build-aux/bootstrap @@ -37,7 +37,7 @@ medir=`dirname "$me"` # A library of shell functions for autopull.sh, autogen.sh, and bootstrap. -scriptlibversion=2024-04-13.15; # UTC +scriptlibversion=2024-04-27.17; # UTC # Copyright (C) 2003-2024 Free Software Foundation, Inc. # @@ -499,7 +499,17 @@ prepare_GNULIB_SRCDIR () || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \ "but does not contain gnulib-tool" if test -n "$GNULIB_REVISION" && $use_git; then - (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || exit $? + # 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_SRCDIR" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? fi else if ! $use_git; then diff --git a/top/bootstrap-funclib.sh b/top/bootstrap-funclib.sh index 7511d62d9b..620006d320 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-13.15; # UTC +scriptlibversion=2024-04-27.17; # UTC # Copyright (C) 2003-2024 Free Software Foundation, Inc. # @@ -462,7 +462,17 @@ prepare_GNULIB_SRCDIR () || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \ "but does not contain gnulib-tool" if test -n "$GNULIB_REVISION" && $use_git; then - (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || exit $? + # 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_SRCDIR" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? fi else if ! $use_git; then