[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] bootstrap: tune Octave bootstrap --gnulib-refdir
From: |
Paul Eggert |
Subject: |
[PATCH] bootstrap: tune Octave bootstrap --gnulib-refdir |
Date: |
Tue, 12 Nov 2024 09:30:02 -0800 |
* top/bootstrap-funclib.sh (prepare_GNULIB_SRCDIR):
Use GNULIB_REFDIR also when a submodule 'gnulib' is not configured.
This greatly speeds up bootstrapping Octave when using
‘./bootstrap --gnulib-refdir=...’.
* build-aux/bootstrap: Regenerate.
---
ChangeLog | 9 ++++++
build-aux/bootstrap | 67 ++++++++++++++++++++++------------------
top/bootstrap-funclib.sh | 67 ++++++++++++++++++++++------------------
3 files changed, 83 insertions(+), 60 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 348fd1d27d..3f283978c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2024-11-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ bootstrap: tune Octave bootstrap --gnulib-refdir
+ * top/bootstrap-funclib.sh (prepare_GNULIB_SRCDIR):
+ Use GNULIB_REFDIR also when a submodule 'gnulib' is not configured.
+ This greatly speeds up bootstrapping Octave when using
+ ‘./bootstrap --gnulib-refdir=...’.
+ * build-aux/bootstrap: Regenerate.
+
2024-11-11 Paul Eggert <eggert@cs.ucla.edu>
openat: port lowest-fd to native MS-Windows
diff --git a/build-aux/bootstrap b/build-aux/bootstrap
index 3758683da4..ca7cd84386 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-07-21.12; # UTC
+scriptlibversion=2024-11-12.17; # UTC
# Copyright (C) 2003-2024 Free Software Foundation, Inc.
#
@@ -545,38 +545,45 @@ prepare_GNULIB_SRCDIR ()
if test ! -d "$gnulib_path"; then
# The subdirectory 'gnulib' does not yet exist. Clone into it.
echo "$0: getting gnulib files..."
- trap cleanup_gnulib HUP INT PIPE TERM
- gnulib_url=${GNULIB_URL:-$default_gnulib_url}
- shallow=
- if test -z "$GNULIB_REVISION"; then
- if git clone -h 2>&1 | grep -- --depth > /dev/null; then
- shallow='--depth 2'
- fi
- git clone $shallow "$gnulib_url" "$gnulib_path" \
- || cleanup_gnulib
+ if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then
+ # Use GNULIB_REFDIR as a reference.
+ git clone "$GNULIB_REFDIR" "$gnulib_path" || cleanup_gnulib
else
- if git fetch -h 2>&1 | grep -- --depth > /dev/null; then
- shallow='--depth 2'
+ # GNULIB_REFDIR is not set or not usable. Ignore it.
+ trap cleanup_gnulib HUP INT PIPE TERM
+ gnulib_url=${GNULIB_URL:-$default_gnulib_url}
+ shallow=
+ if test -z "$GNULIB_REVISION"; then
+ if git clone -h 2>&1 | grep -- --depth > /dev/null; then
+ shallow='--depth 2'
+ fi
+ git clone $shallow "$gnulib_url" "$gnulib_path" \
+ || cleanup_gnulib
+ else
+ if git fetch -h 2>&1 | grep -- --depth > /dev/null; then
+ shallow='--depth 2'
+ fi
+ mkdir -p "$gnulib_path"
+ # Only want a shallow checkout of $GNULIB_REVISION,
+ # but git does not support cloning by commit hash.
+ # So attempt a shallow fetch by commit hash to minimize
+ # the amount of data downloaded and changes needed to be
+ # processed, which can drastically reduce download and
+ # processing time for checkout. If the fetch by commit fails,
+ # a shallow fetch can not be performed because we do not
+ # know what the depth of the commit is without fetching
+ # all commits. So fall back to fetching all commits.
+ git -C "$gnulib_path" init
+ git -C "$gnulib_path" remote add origin "$gnulib_url"
+ git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \
+ || git -C "$gnulib_path" fetch origin \
+ || cleanup_gnulib
+ git -C "$gnulib_path" reset --hard FETCH_HEAD
+ (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \
+ || cleanup_gnulib
fi
- mkdir -p "$gnulib_path"
- # Only want a shallow checkout of $GNULIB_REVISION, but git does not
- # support cloning by commit hash. So attempt a shallow fetch by
commit
- # hash to minimize the amount of data downloaded and changes needed
to
- # be processed, which can drastically reduce download and processing
- # time for checkout. If the fetch by commit fails, a shallow fetch
can
- # not be performed because we do not know what the depth of the
commit
- # is without fetching all commits. So fall back to fetching all
- # commits.
- git -C "$gnulib_path" init
- git -C "$gnulib_path" remote add origin "$gnulib_url"
- git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \
- || git -C "$gnulib_path" fetch origin \
- || cleanup_gnulib
- git -C "$gnulib_path" reset --hard FETCH_HEAD
- (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \
- || cleanup_gnulib
+ trap - HUP INT PIPE TERM
fi
- trap - HUP INT PIPE TERM
else
# The subdirectory 'gnulib' already exists.
if test -n "$GNULIB_REVISION"; then
diff --git a/top/bootstrap-funclib.sh b/top/bootstrap-funclib.sh
index b29e2b49e1..0d8b5a259d 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-07-21.12; # UTC
+scriptlibversion=2024-11-12.17; # UTC
# Copyright (C) 2003-2024 Free Software Foundation, Inc.
#
@@ -508,38 +508,45 @@ prepare_GNULIB_SRCDIR ()
if test ! -d "$gnulib_path"; then
# The subdirectory 'gnulib' does not yet exist. Clone into it.
echo "$0: getting gnulib files..."
- trap cleanup_gnulib HUP INT PIPE TERM
- gnulib_url=${GNULIB_URL:-$default_gnulib_url}
- shallow=
- if test -z "$GNULIB_REVISION"; then
- if git clone -h 2>&1 | grep -- --depth > /dev/null; then
- shallow='--depth 2'
- fi
- git clone $shallow "$gnulib_url" "$gnulib_path" \
- || cleanup_gnulib
+ if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then
+ # Use GNULIB_REFDIR as a reference.
+ git clone "$GNULIB_REFDIR" "$gnulib_path" || cleanup_gnulib
else
- if git fetch -h 2>&1 | grep -- --depth > /dev/null; then
- shallow='--depth 2'
+ # GNULIB_REFDIR is not set or not usable. Ignore it.
+ trap cleanup_gnulib HUP INT PIPE TERM
+ gnulib_url=${GNULIB_URL:-$default_gnulib_url}
+ shallow=
+ if test -z "$GNULIB_REVISION"; then
+ if git clone -h 2>&1 | grep -- --depth > /dev/null; then
+ shallow='--depth 2'
+ fi
+ git clone $shallow "$gnulib_url" "$gnulib_path" \
+ || cleanup_gnulib
+ else
+ if git fetch -h 2>&1 | grep -- --depth > /dev/null; then
+ shallow='--depth 2'
+ fi
+ mkdir -p "$gnulib_path"
+ # Only want a shallow checkout of $GNULIB_REVISION,
+ # but git does not support cloning by commit hash.
+ # So attempt a shallow fetch by commit hash to minimize
+ # the amount of data downloaded and changes needed to be
+ # processed, which can drastically reduce download and
+ # processing time for checkout. If the fetch by commit fails,
+ # a shallow fetch can not be performed because we do not
+ # know what the depth of the commit is without fetching
+ # all commits. So fall back to fetching all commits.
+ git -C "$gnulib_path" init
+ git -C "$gnulib_path" remote add origin "$gnulib_url"
+ git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \
+ || git -C "$gnulib_path" fetch origin \
+ || cleanup_gnulib
+ git -C "$gnulib_path" reset --hard FETCH_HEAD
+ (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \
+ || cleanup_gnulib
fi
- mkdir -p "$gnulib_path"
- # Only want a shallow checkout of $GNULIB_REVISION, but git does not
- # support cloning by commit hash. So attempt a shallow fetch by
commit
- # hash to minimize the amount of data downloaded and changes needed
to
- # be processed, which can drastically reduce download and processing
- # time for checkout. If the fetch by commit fails, a shallow fetch
can
- # not be performed because we do not know what the depth of the
commit
- # is without fetching all commits. So fall back to fetching all
- # commits.
- git -C "$gnulib_path" init
- git -C "$gnulib_path" remote add origin "$gnulib_url"
- git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \
- || git -C "$gnulib_path" fetch origin \
- || cleanup_gnulib
- git -C "$gnulib_path" reset --hard FETCH_HEAD
- (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \
- || cleanup_gnulib
+ trap - HUP INT PIPE TERM
fi
- trap - HUP INT PIPE TERM
else
# The subdirectory 'gnulib' already exists.
if test -n "$GNULIB_REVISION"; then
--
2.43.0
- [PATCH] bootstrap: tune Octave bootstrap --gnulib-refdir,
Paul Eggert <=