* bootstrap: Update script from gnulib

This commit is contained in:
Darshit Shah 2024-02-19 18:37:51 +05:30
parent e377b80863
commit 35204ab5d7

View File

@ -3,7 +3,7 @@
# Bootstrap this package from checked-out sources. # Bootstrap this package from checked-out sources.
scriptversion=2022-12-27.07; # UTC scriptversion=2023-12-10.18; # UTC
# Copyright (C) 2003-2024 Free Software Foundation, Inc. # Copyright (C) 2003-2024 Free Software Foundation, Inc.
# #
@ -37,7 +37,7 @@ medir=`dirname "$me"`
# A library of shell functions for autopull.sh, autogen.sh, and bootstrap. # A library of shell functions for autopull.sh, autogen.sh, and bootstrap.
scriptlibversion=2023-03-09.17; # UTC scriptlibversion=2023-12-10.18; # UTC
# Copyright (C) 2003-2024 Free Software Foundation, Inc. # Copyright (C) 2003-2024 Free Software Foundation, Inc.
# #
@ -340,7 +340,7 @@ check_versions() {
# Handle the still-experimental Automake-NG programs specially. # Handle the still-experimental Automake-NG programs specially.
# They remain named as the mainstream Automake programs ("automake", # They remain named as the mainstream Automake programs ("automake",
# and "aclocal") to avoid gratuitous incompatibilities with # and "aclocal") to avoid gratuitous incompatibilities with
# preexisting uses (by, say, autoreconf, or custom autogen.sh # preexisting usages (by, say, autoreconf, or custom autogen.sh
# scripts), but correctly identify themselves (as being part of # scripts), but correctly identify themselves (as being part of
# "GNU automake-ng") when asked their version. # "GNU automake-ng") when asked their version.
case $app in case $app in
@ -497,7 +497,8 @@ prepare_GNULIB_SRCDIR ()
# We already checked that $GNULIB_SRCDIR references a directory. # We already checked that $GNULIB_SRCDIR references a directory.
# Verify that it contains a gnulib checkout. # Verify that it contains a gnulib checkout.
test -f "$GNULIB_SRCDIR/gnulib-tool" \ test -f "$GNULIB_SRCDIR/gnulib-tool" \
|| die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified, but does not contain gnulib-tool" || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \
"but does not contain gnulib-tool"
elif $use_git; then elif $use_git; then
gnulib_path=$(git_modules_config submodule.gnulib.path) gnulib_path=$(git_modules_config submodule.gnulib.path)
test -z "$gnulib_path" && gnulib_path=gnulib test -z "$gnulib_path" && gnulib_path=gnulib
@ -558,7 +559,8 @@ prepare_GNULIB_SRCDIR ()
# be processed, which can drastically reduce download and processing # be processed, which can drastically reduce download and processing
# time for checkout. If the fetch by commit fails, a shallow fetch can # 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 # not be performed because we do not know what the depth of the commit
# is without fetching all commits. So fallback to fetching all commits. # is without fetching all commits. So fall back to fetching all
# commits.
git -C "$gnulib_path" init git -C "$gnulib_path" init
git -C "$gnulib_path" remote add origin \ git -C "$gnulib_path" remote add origin \
${GNULIB_URL:-$default_gnulib_url} ${GNULIB_URL:-$default_gnulib_url}
@ -574,7 +576,8 @@ prepare_GNULIB_SRCDIR ()
GNULIB_SRCDIR=$gnulib_path GNULIB_SRCDIR=$gnulib_path
# Verify that the submodule contains a gnulib checkout. # Verify that the submodule contains a gnulib checkout.
test -f "$gnulib_path/gnulib-tool" \ test -f "$gnulib_path/gnulib-tool" \
|| die "Error: $gnulib_path is supposed to contain a gnulib checkout, but does not contain gnulib-tool" || die "Error: $gnulib_path is supposed to contain a gnulib checkout," \
"but does not contain gnulib-tool"
fi fi
# XXX Should this be done if $use_git is false? # XXX Should this be done if $use_git is false?
@ -594,7 +597,8 @@ upgrade_bootstrap ()
if test -f "$medir"/bootstrap-funclib.sh; then if test -f "$medir"/bootstrap-funclib.sh; then
update_lib=true update_lib=true
{ cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/top/bootstrap" \ { cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/top/bootstrap" \
&& cmp -s "$medir"/bootstrap-funclib.sh "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" \ && cmp -s "$medir"/bootstrap-funclib.sh \
"$GNULIB_SRCDIR/top/bootstrap-funclib.sh" \
&& cmp -s "$medir"/autopull.sh "$GNULIB_SRCDIR/top/autopull.sh" \ && cmp -s "$medir"/autopull.sh "$GNULIB_SRCDIR/top/autopull.sh" \
&& cmp -s "$medir"/autogen.sh "$GNULIB_SRCDIR/top/autogen.sh"; \ && cmp -s "$medir"/autogen.sh "$GNULIB_SRCDIR/top/autogen.sh"; \
} }
@ -611,10 +615,18 @@ upgrade_bootstrap ()
a) ignored=--;; a) ignored=--;;
*) ignored=ignored;; *) ignored=ignored;;
esac esac
u=$update_lib
exec sh -c \ exec sh -c \
'{ if '$update_lib' && test -f "$1"; then cp "$1" "$3"; else cp "$2" "$3"; fi; } && { if '$update_lib' && test -f "$4"; then cp "$4" "$5"; else rm -f "$5"; fi; } && { if '$update_lib' && test -f "$6"; then cp "$6" "$7"; else rm -f "$7"; fi; } && { if '$update_lib' && test -f "$8"; then cp "$8" "$9"; else rm -f "$9"; fi; } && shift && shift && shift && shift && shift && shift && shift && shift && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ '{ if '$u' && test -f "$1"; then cp "$1" "$3"; else cp "$2" "$3"; fi; } &&
{ if '$u' && test -f "$4"; then cp "$4" "$5"; else rm -f "$5"; fi; } &&
{ if '$u' && test -f "$6"; then cp "$6" "$7"; else rm -f "$7"; fi; } &&
{ if '$u' && test -f "$8"; then cp "$8" "$9"; else rm -f "$9"; fi; } &&
shift && shift && shift && shift && shift &&
shift && shift && shift && shift &&
exec "${CONFIG_SHELL-/bin/sh}" "$@"' \
$ignored \ $ignored \
"$GNULIB_SRCDIR/top/bootstrap" "$GNULIB_SRCDIR/build-aux/bootstrap" "$medir/bootstrap" \ "$GNULIB_SRCDIR/top/bootstrap" "$GNULIB_SRCDIR/build-aux/bootstrap" \
"$medir/bootstrap" \
"$GNULIB_SRCDIR/top/bootstrap-funclib.sh" "$medir/bootstrap-funclib.sh" \ "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" "$medir/bootstrap-funclib.sh" \
"$GNULIB_SRCDIR/top/autopull.sh" "$medir/autopull.sh" \ "$GNULIB_SRCDIR/top/autopull.sh" "$medir/autopull.sh" \
"$GNULIB_SRCDIR/top/autogen.sh" "$medir/autogen.sh" \ "$GNULIB_SRCDIR/top/autogen.sh" "$medir/autogen.sh" \
@ -647,7 +659,9 @@ Optional environment variables:
Use this if you already have gnulib sources Use this if you already have gnulib sources
and history on your machine, and do not want and history on your machine, and do not want
to waste your bandwidth downloading them again. to waste your bandwidth downloading them again.
GNULIB_URL Cloneable URL of the gnulib repository. GNULIB_URL URL of the gnulib repository. The default is
$default_gnulib_url,
which is Gnulib's upstream repository.
Options: Options:
--bootstrap-sync if this bootstrap script is not identical to --bootstrap-sync if this bootstrap script is not identical to
@ -747,9 +761,12 @@ autopull()
done done
$use_git || test -n "$GNULIB_SRCDIR" \ $use_git || test -n "$GNULIB_SRCDIR" \
|| die "Error: --no-git requires \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option" || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable" \
"or --gnulib-srcdir option"
test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \
|| die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option is specified, but does not denote a directory" || die "Error: \$GNULIB_SRCDIR environment variable" \
"or --gnulib-srcdir option is specified," \
"but does not denote a directory"
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
die "Running this script from a non-checked-out distribution is risky." die "Running this script from a non-checked-out distribution is risky."
@ -760,7 +777,7 @@ autopull()
if $use_gnulib || $bootstrap_sync; then if $use_gnulib || $bootstrap_sync; then
prepare_GNULIB_SRCDIR prepare_GNULIB_SRCDIR
if $bootstrap_sync; then if $bootstrap_sync; then
upgrade_bootstrap upgrade_bootstrap "$@"
fi fi
fi fi
@ -811,7 +828,10 @@ autopull()
uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'` uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'`
fi fi
if test -n "$uninitialized"; then if test -n "$uninitialized"; then
die "Some git submodules are not initialized: "`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'`" Either use option '--no-git', or run 'git submodule update --init' and bootstrap again." uninit_comma=`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'`
die "Some git submodules are not initialized: "$uninit_comma \
"Either use option '--no-git'," \
"or run 'git submodule update --init' and bootstrap again."
fi fi
fi fi
@ -978,7 +998,7 @@ symlink_to_dir()
for dot_ig in x $vc_ignore; do for dot_ig in x $vc_ignore; do
test $dot_ig = x && continue test $dot_ig = x && continue
ig=$parent/$dot_ig ig=$parent/$dot_ig
insert_vc_ignore $ig "${dst_dir##*/}" insert_vc_ignore $ig "${dst_dir##*/}/"
done done
fi fi
@ -1075,7 +1095,8 @@ autogen()
done done
test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \
|| die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option is specified, but does not denote a directory" || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir" \
"option is specified, but does not denote a directory"
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
die "Running this script from a non-checked-out distribution is risky." die "Running this script from a non-checked-out distribution is risky."
@ -1083,7 +1104,8 @@ autogen()
if $use_gnulib; then if $use_gnulib; then
if test -z "$GNULIB_SRCDIR"; then if test -z "$GNULIB_SRCDIR"; then
gnulib_path=$(test -f .gitmodules && git config --file .gitmodules submodule.gnulib.path) gnulib_path=$(test -f .gitmodules &&
git config --file .gitmodules submodule.gnulib.path)
test -z "$gnulib_path" && gnulib_path=gnulib test -z "$gnulib_path" && gnulib_path=gnulib
GNULIB_SRCDIR=$gnulib_path GNULIB_SRCDIR=$gnulib_path
fi fi
@ -1104,7 +1126,7 @@ autogen()
mkdir $build_aux mkdir $build_aux
for dot_ig in x $vc_ignore; do for dot_ig in x $vc_ignore; do
test $dot_ig = x && continue test $dot_ig = x && continue
insert_vc_ignore $dot_ig $build_aux insert_vc_ignore $dot_ig $build_aux/
done done
fi fi
@ -1327,7 +1349,9 @@ Optional environment variables:
have gnulib sources on your machine, and have gnulib sources on your machine, and
do not want to waste your bandwidth downloading do not want to waste your bandwidth downloading
them again. them again.
GNULIB_URL Cloneable URL of the gnulib repository. GNULIB_URL URL of the gnulib repository. The default is
$default_gnulib_url,
which is Gnulib's upstream repository.
Options: Options:
@ -1458,9 +1482,11 @@ done
$pull || $gen || pull=true gen=true $pull || $gen || pull=true gen=true
$use_git || test -n "$GNULIB_SRCDIR" \ $use_git || test -n "$GNULIB_SRCDIR" \
|| die "Error: --no-git requires \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option" || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable" \
"or --gnulib-srcdir option"
test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \
|| die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir option is specified, but does not denote a directory" || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir" \
"option is specified, but does not denote a directory"
if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then
die "Bootstrapping from a non-checked-out distribution is risky." die "Bootstrapping from a non-checked-out distribution is risky."
@ -1470,7 +1496,7 @@ check_build_prerequisites $use_git
if $bootstrap_sync; then if $bootstrap_sync; then
prepare_GNULIB_SRCDIR prepare_GNULIB_SRCDIR
upgrade_bootstrap upgrade_bootstrap "$@"
# Since we have now upgraded if needed, no need to try it a second time below. # Since we have now upgraded if needed, no need to try it a second time below.
bootstrap_sync=false bootstrap_sync=false
fi fi
@ -1483,7 +1509,11 @@ export GNULIB_REFDIR
if $pull && { $use_git || test -z "$SKIP_PO"; }; then if $pull && { $use_git || test -z "$SKIP_PO"; }; then
autopull \ autopull \
`if $bootstrap_sync; then echo ' --bootstrap-sync'; else echo ' --no-bootstrap-sync'; fi` \ `if $bootstrap_sync; then
echo ' --bootstrap-sync'
else
echo ' --no-bootstrap-sync'
fi` \
`if test -z "$checkout_only_file"; then echo ' --force'; fi` \ `if test -z "$checkout_only_file"; then echo ' --force'; fi` \
`if ! $use_git; then echo ' --no-git'; fi` \ `if ! $use_git; then echo ' --no-git'; fi` \
`if test -n "$SKIP_PO"; then echo ' --skip-po'; fi` \ `if test -n "$SKIP_PO"; then echo ' --skip-po'; fi` \