commit: 6d11c0bf665e15ee3393ffb92ca03214f73003b3
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 29 11:45:34 2024 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Fri Mar 29 11:45:34 2024 +0000
URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=6d11c0bf
scripts/bootstrap-prefix: shellcheck
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
scripts/bootstrap-prefix.sh | 93 ++++++++++++++++++++++++---------------------
1 file changed, 50 insertions(+), 43 deletions(-)
diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh
index 6440b4563e..c3daad42ca 100755
--- a/scripts/bootstrap-prefix.sh
+++ b/scripts/bootstrap-prefix.sh
@@ -58,7 +58,7 @@ efetch() {
if [[ ${OFFLINE_MODE} ]] ; then
echo "I need ${1##*/} from $1 in $DISTDIR, can you give
it to me?"
- read
+ read -r
[[ -e ${DISTDIR}/${1##*/} ]] && return 0
# Give fetch a try
fi
@@ -66,15 +66,15 @@ efetch() {
if [[ -z ${FETCH_COMMAND} ]] ; then
# Try to find a download manager, we only deal with
wget,
# curl, FreeBSD's fetch and ftp.
- if [[ x$(type -t wget) == "xfile" ]] ; then
+ if [[ $(type -t wget) == "file" ]] ; then
FETCH_COMMAND="wget"
[[ $(wget -h) == *"--no-check-certificate"* ]] \
&& FETCH_COMMAND+="
--no-check-certificate"
- elif [[ x$(type -t curl) == "xfile" ]] ; then
+ elif [[ $(type -t curl) == "file" ]] ; then
FETCH_COMMAND="curl -f -L -O"
- elif [[ x$(type -t fetch) == "xfile" ]] ; then
+ elif [[ $(type -t fetch) == "file" ]] ; then
FETCH_COMMAND="fetch"
- elif [[ x$(type -t ftp) == "xfile" ]] ; then
+ elif [[ $(type -t ftp) == "file" ]] ; then
FETCH_COMMAND="ftp"
else
eerror "no suitable download manager found!"
@@ -86,7 +86,7 @@ efetch() {
einfo "Fetching ${1##*/}"
estatus "stage1: fetching ${1##*/}"
- pushd "${DISTDIR}" > /dev/null
+ pushd "${DISTDIR}" > /dev/null || exit 1
# Try for mirrors first, fall back to distfiles, then try given
location
local locs=( )
@@ -107,7 +107,7 @@ efetch() {
eerror "downloading ${1} failed!"
return 1
fi
- popd > /dev/null
+ popd > /dev/null || exit 1
fi
return 0
}
@@ -311,7 +311,7 @@ bootstrap_setup() {
else
getent passwd > "${ROOT}"/etc/passwd
# add user if it's not in /etc/passwd, bug
#766417
- getent passwd $(id -un) >> "${ROOT}"/etc/passwd
+ getent passwd "$(id -un)" >>
"${ROOT}"/etc/passwd
fi
fi
if [[ ! -f ${ROOT}/etc/group ]]; then
@@ -320,7 +320,7 @@ bootstrap_setup() {
else
getent group > "${ROOT}"/etc/group
# add group if it's not in /etc/group, bug
#766417
- getent group $(id -gn) >> "${ROOT}"/etc/group
+ getent group "$(id -gn)" >> "${ROOT}"/etc/group
fi
fi
[[ -f ${ROOT}/etc/resolv.conf ]] || ln -s
{,"${ROOT}"}/etc/resolv.conf
@@ -331,10 +331,11 @@ bootstrap_setup() {
}
bootstrap_profile() {
- local profile=""
+ local profile
+ local profile_linux
# 2.6.32.1 -> 2*256^3 + 6*256^2 + 32 * 256 + 1 = 33955841
- kver() { uname -r|cut -d\- -f1|awk -F. '{for (i=1; i<=NF;
i++){s+=lshift($i,(4-i)*8)};print s}'; }
+ kver() { uname -r|cut -d- -f1|awk -F. '{for (i=1; i<=NF;
i++){s+=lshift($i,(4-i)*8)};print s}'; }
# >=glibc-2.20 requires >=linux-2.6.32.
profile-kernel() {
if [[ $(kver) -ge 50462720 ]] ; then # 3.2
@@ -349,9 +350,9 @@ bootstrap_profile() {
}
if is-rap ; then
- local
profile_linux=default/linux/ARCH/17.0/prefix/$(profile-kernel)
+ profile_linux="default/linux/ARCH/17.0/prefix/$(profile-kernel)"
else
- local profile_linux=prefix/linux/ARCH
+ profile_linux="prefix/linux/ARCH"
fi
case ${CHOST} in
@@ -449,9 +450,11 @@ bootstrap_profile() {
else
SDKPATH=$(xcrun --show-sdk-path --sdk macosx)
if [[ -L ${SDKPATH} ]] ; then
+ local fsdk
+ local osvers
# try and find a matching OS SDK
- local fsdk=$(readlink -f "${SDKPATH}")
- local osvers=$(sw_vers -productVersion)
+ fsdk="$(readlink -f "${SDKPATH}")"
+ osvers="$(sw_vers -productVersion)"
if [[ ${osvers%%.*} -le 10 ]] ; then
osvers=$(echo ${osvers} | cut -d'.'
-f1-2)
else
@@ -545,18 +548,19 @@ do_tree() {
# latest tree cannot be fetched from mirrors, always have to
# respect the source to get the latest
if [[ -n ${LATEST_TREE_YES} ]] ; then
- ( export GENTOO_MIRRORS= DISTFILES_G_O= DISTFILES_PFX= ;
+ ( export GENTOO_MIRRORS='' DISTFILES_G_O=''
DISTFILES_PFX='' ;
efetch "$1/$2" ) || return 1
else
# use only Prefix mirror
- ( export GENTOO_MIRRORS= DISTFILES_G_O= ;
+ ( export GENTOO_MIRRORS='' DISTFILES_G_O='' ;
efetch "$1/$2" ) || return 1
fi
einfo "Unpacking, this may take a while"
estatus "stage1: unpacking Portage tree"
- bzip2 -dc ${DISTDIR}/$2 | tar -xf - -C ${PORTDIR}
--strip-components=1
+ bzip2 -dc "${DISTDIR}/$2" \
+ | tar -xf - -C "${PORTDIR}" --strip-components=1
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
- touch ${PORTDIR}/.unpacked
+ touch "${PORTDIR}"/.unpacked
fi
}
@@ -607,8 +611,10 @@ bootstrap_startscript() {
einfo "To start Gentoo Prefix, run the script ${ROOT}/startprefix"
# see if PATH is kept/respected
- local minPATH="preamble:${BASH%/*}:postlude"
- local theirPATH="$(echo 'echo "${PATH}"' | env LS_COLORS=
PATH="${minPATH}" $SHELL -l 2>/dev/null | grep "preamble:.*:postlude")"
+ local minPATH
+ local theirPATH
+ minPATH="preamble:${BASH%/*}:postlude"
+ theirPATH="$(echo 'echo "${PATH}"' | env LS_COLORS= PATH="${minPATH}"
$SHELL -l 2>/dev/null | grep "preamble:.*:postlude")"
if [[ ${theirPATH} != *"preamble:"*":postlude"* ]] ; then
einfo "WARNING: your shell initialisation (.cshrc, .bashrc,
.profile)"
einfo " seems to overwrite your PATH, this effectively
kills"
@@ -647,11 +653,11 @@ bootstrap_portage() {
ptmp=${S}
rm -rf "${S}" >& /dev/null
mkdir -p "${S}" >& /dev/null
- cd "${S}"
+ cd "${S}" || return 1
bzip2 -dc "${DISTDIR}/${A}" | tar -xf -
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
S="${S}/prefix-portage-${PV}"
- cd "${S}"
+ cd "${S}" || return 1
fix_config_sub
@@ -686,7 +692,7 @@ bootstrap_portage() {
einfo "Installing ${A%.tar.*}"
emake install || return 1
- cd "${ROOT}"
+ cd "${ROOT}" || return 1
rm -Rf ${ptmp} >& /dev/null
# Some people will skip the tree() step and hence var/log is not created
@@ -696,7 +702,7 @@ bootstrap_portage() {
# in Prefix the sed wrapper is deadly, so kill it
rm -f "${ROOT}"/tmp/usr/lib/portage/bin/ebuild-helpers/sed
- local tmpportdir=${ROOT}/tmp/${PORTDIR#${ROOT}}
+ local tmpportdir=${ROOT}/tmp/${PORTDIR#"${ROOT}"}
[[ -e "${tmpportdir}" ]] || ln -s "${PORTDIR}" "${tmpportdir}"
for d in "${ROOT}"/tmp/usr/lib/python$(python_ver); do
[[ -e ${d}/portage ]] || ln -s
"${ROOT}"/tmp/usr/lib/portage/lib/portage ${d}/portage
@@ -718,6 +724,7 @@ fix_config_sub() {
# for various versions of autoconf
if [[ ${CHOST} == arm64-apple-darwin* ]] ; then
# Apple Silicon doesn't use aarch64, but arm64
+ # note: macOS /usr/bin/find knows no -print0 or -exec
find . -name "config.sub" | \
xargs sed -i -e 's/ arm\(-\*\)* / arm\1 | arm64\1 /'
find . -name "config.sub" | \
@@ -737,8 +744,8 @@ bootstrap_simple() {
einfo "Unpacking ${A%.tar.*}"
S="${PORTAGE_TMPDIR}/${PN}-${PV}"
rm -rf "${S}"
- mkdir -p "${S}"
- cd "${S}"
+ mkdir -p "${S}" || return 1
+ cd "${S}" || return 1
case $3 in
xz) decomp=xz ;;
bz2) decomp=bzip2 ;;
@@ -747,7 +754,7 @@ bootstrap_simple() {
${decomp} -dc "${DISTDIR}"/${A} | tar -xf -
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
S="${S}"/${PN}-${PV}
- cd "${S}"
+ cd "${S}" || return 1
fix_config_sub
@@ -766,7 +773,7 @@ bootstrap_simple() {
einfo "Installing ${A%.tar.*}"
emake PREFIX="${ROOT}"/tmp/usr install || return 1
- cd "${ROOT}"
+ cd "${ROOT}" || return 1
rm -Rf "${S}"
einfo "${A%.tar.*} successfully bootstrapped"
}
@@ -798,8 +805,8 @@ bootstrap_gnu() {
einfo "Unpacking ${A%.tar.*}"
S="${PORTAGE_TMPDIR}/${PN}-${PV}"
rm -rf "${S}"
- mkdir -p "${S}"
- cd "${S}"
+ mkdir -p "${S}" || return 1
+ cd "${S}" || return 1
case ${t} in
tar.xz) decomp=xz ;;
tar.bz2) decomp=bzip2 ;;
@@ -1004,8 +1011,8 @@ bootstrap_python() {
einfo "Unpacking ${A%.tar.*}"
export S="${PORTAGE_TMPDIR}/python-${PV}"
rm -rf "${S}"
- mkdir -p "${S}"
- cd "${S}"
+ mkdir -p "${S}" || return 1
+ cd "${S}" || return 1
case ${A} in
*bz2) bzip2 -dc "${DISTDIR}"/${A} | tar -xf - ;;
*xz) xz -dc "${DISTDIR}"/${A} | tar -xf - ;;
@@ -1013,7 +1020,7 @@ bootstrap_python() {
esac
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
S="${S}"/Python-${PV%%-*}
- cd "${S}"
+ cd "${S}" || return 1
rm -rf Modules/_ctypes/libffi* || return 1
rm -rf Modules/zlib || return 1
@@ -1125,7 +1132,7 @@ bootstrap_python() {
# configure to not find them using HAS_HG (TODO: obsolete?)
# - Do not find libffi via pkg-config using PKG_CONFIG
HAS_HG=no \
- PKG_CONFIG= \
+ PKG_CONFIG='' \
econf \
--with-system-ffi \
--without-ensurepip \
@@ -1137,9 +1144,9 @@ bootstrap_python() {
einfo "Installing ${A%.tar.*}"
emake -k install || echo "??? Python failed to install *sigh*
continuing anyway"
- cd "${ROOT}"/tmp/usr/bin
+ cd "${ROOT}"/tmp/usr/bin || return 1
ln -sf python${PV%.*} python
- cd "${ROOT}"/tmp/usr/lib
+ cd "${ROOT}"/tmp/usr/lib || return 1
# messes up python emerges, and shouldn't be necessary for anything
# http://forums.gentoo.org/viewtopic-p-6890526.html
rm -f libpython${PV%.*}.a
@@ -1159,12 +1166,12 @@ bootstrap_cmake_core() {
einfo "Unpacking ${A%.tar.*}"
export S="${PORTAGE_TMPDIR}/cmake-${PV}"
rm -rf "${S}"
- mkdir -p "${S}"
- cd "${S}"
+ mkdir -p "${S}" || return 1
+ cd "${S}" || return 1
gzip -dc "${DISTDIR}"/${A} | tar -xf -
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
S="${S}"/cmake-${PV}
- cd "${S}"
+ cd "${S}" || return 1
# don't set a POSIX standard, system headers don't like that, #757426
sed -i -e 's/^#if !defined(_WIN32) && !defined(__sun)/& \&\&
!defined(__APPLE__)/' \
@@ -1211,8 +1218,8 @@ bootstrap_zlib_core() {
einfo "Unpacking ${A%.tar.*}"
export S="${PORTAGE_TMPDIR}/zlib-${PV}"
rm -rf "${S}"
- mkdir -p "${S}"
- cd "${S}"
+ mkdir -p "${S}" || return 1
+ cd "${S}" || return 1
case ${A} in
*.tar.gz) decomp=gzip ;;
*) decomp=bzip2 ;;
@@ -1220,7 +1227,7 @@ bootstrap_zlib_core() {
${decomp} -dc "${DISTDIR}"/${A} | tar -xf -
[[ ${PIPESTATUS[*]} == '0 0' ]] || return 1
S="${S}"/zlib-${PV}
- cd "${S}"
+ cd "${S}" || return 1
if [[ ${CHOST} == x86_64-*-* || ${CHOST} == sparcv9-*-* ]] ; then
# 64-bits targets need zlib as library (not just to unpack),