bug-gnulib
[Top][All Lists]
Advanced

[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"






reply via email to

[Prev in Thread] Current Thread [Next in Thread]