diff options
author | Tobias Powalowski <tpowa@archlinux.org> | 2023-01-31 09:43:15 +0100 |
---|---|---|
committer | Levente Polyak <anthraxx@archlinux.org> | 2023-03-06 21:51:27 +0100 |
commit | 0365edb264c08b6520c8b57fadbff55967e1e948 (patch) | |
tree | 180b4e8defcdb47c19383199488ed9e5bf21dd7d | |
parent | 4ff7aa0d8a8c88a6d1d02fa8462fa59c24a97422 (diff) | |
download | devtools-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-- | Makefile | 2 | ||||
-rw-r--r-- | lib/common.sh | 3 | ||||
-rw-r--r-- | src/diffpkg.in | 2 | ||||
-rw-r--r-- | src/find-libdeps.in | 2 |
4 files changed, 7 insertions, 2 deletions
@@ -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);; |