From 92d80242ad1344b5364ca9bd1d995d68c3a73ef7 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 28 Apr 2024 11:29:27 +0200 Subject: [PATCH] bootstrap: Support checking out a recent GNULIB_REVISION, part 2. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reported by Markus Mützel in . * 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. --- ChangeLog | 10 ++++++++++ build-aux/bootstrap | 18 ++++++++++++++---- top/bootstrap-funclib.sh | 18 ++++++++++++++---- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 30afe4b190..5948faf102 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2024-04-28 Bruno Haible + + bootstrap: Support checking out a recent GNULIB_REVISION, part 2. + Reported by Markus Mützel in + . + * 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. + 2024-04-27 Collin Funk gnulib-tool.py: Preserve module ordering in --create-megatestdir. diff --git a/build-aux/bootstrap b/build-aux/bootstrap index 8d0b97d436..6295b8a128 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-27.17; # UTC +scriptlibversion=2024-04-28.09; # UTC # Copyright (C) 2003-2024 Free Software Foundation, Inc. # @@ -502,8 +502,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 \ @@ -579,7 +579,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" 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" -- 2.39.5