summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Powalowski <tpowa@archlinux.org>2023-01-31 09:43:15 +0100
committerLevente Polyak <anthraxx@archlinux.org>2023-03-06 21:51:27 +0100
commit0365edb264c08b6520c8b57fadbff55967e1e948 (patch)
tree180b4e8defcdb47c19383199488ed9e5bf21dd7d
parent4ff7aa0d8a8c88a6d1d02fa8462fa59c24a97422 (diff)
downloaddevtools-0365edb264c08b6520c8b57fadbff55967e1e948.tar.xz
fix: enable extglob before func definition for bash-5.2 compatibility
The `extglob` option changes the behavior of the shell parser, since extended glob patterns would otherwise be syntax errors. bash-5.2 changed the way a function definition is processed by calling the parser instead of relying on the ad-hoc code in bash-5.1 and earlier versions. This means, in bash-5.2 the shell function was parsed without `extglob` being enabled because the `shopt` command to enable it was part of the function body. Add `shopt` options for `extglob` around function definitions to address this issue and allow bash-5.2 to correctly parse the function. Co-authored-by: Frédéric Pierret (fepitre) <frederic.pierret@qubes-os.org> Co-authored-by: Levente Polyak <anthraxx@archlinux.org> Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
-rw-r--r--Makefile2
-rw-r--r--lib/common.sh3
-rw-r--r--src/diffpkg.in2
-rw-r--r--src/find-libdeps.in2
4 files changed, 7 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 14ced32..8859946 100644
--- a/Makefile
+++ b/Makefile
@@ -78,7 +78,7 @@ $(1)/%: $(2)%.in $(LIBUTILS)
@$(RM) "$$@"
@{ echo -n 'm4_changequote([[[,]]])'; cat $$<; } | m4 -P --define=m4_devtools_version=$$(BUILDTOOLVER) | $(edit) >$$@
@chmod $(3) "$$@"
- @bash -n "$$@"
+ @bash -O extglob -n "$$@"
endef
$(eval $(call buildInScript,build/bin,src/,555))
diff --git a/lib/common.sh b/lib/common.sh
index a5e4616..d345307 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -137,6 +137,7 @@ pkgver_equal() {
# $pkgver can be supplied with or without a pkgrel appended.
# If not supplied, any pkgrel will be matched.
##
+shopt -s extglob
find_cached_package() {
local searchdirs=("$PWD" "$PKGDEST") results=()
local targetname=$1 targetver=$2 targetarch=$3
@@ -191,7 +192,7 @@ find_cached_package() {
return 1
esac
}
-
+shopt -u extglob
check_package_validity(){
local pkgfile=$1
diff --git a/src/diffpkg.in b/src/diffpkg.in
index 10b0904..6d07419 100644
--- a/src/diffpkg.in
+++ b/src/diffpkg.in
@@ -248,6 +248,7 @@ diff_pkgs() {
fi
}
+shopt -s extglob
fetch_pkg() {
local pkg pkgdest pkgurl
case $1 in
@@ -295,6 +296,7 @@ fetch_pkg() {
echo "$pkgdest"
}
+shopt -u extglob
if (( $# < 2 )); then
if [[ ! -f PKGBUILD ]]; then
diff --git a/src/find-libdeps.in b/src/find-libdeps.in
index 5a11580..2517879 100644
--- a/src/find-libdeps.in
+++ b/src/find-libdeps.in
@@ -40,6 +40,7 @@ else
pushd "$WORKDIR" >/dev/null
fi
+shopt -s extglob
process_sofile() {
# extract the library name: libfoo.so
shopt -s extglob nullglob
@@ -56,6 +57,7 @@ process_sofile() {
soobjects+=("${soname}=${soversion}-${soarch}")
fi
}
+shopt -u extglob
case $script_mode in
deps) find_args=(-perm -u+x);;