Compare commits

...

2 Commits

Author SHA1 Message Date
Ivan Shapovalov
805ff8ce74 Merge branch 'work/fix-pkgctl-version-upgrade' into 'master'
fix(pkgctl): handle pkgver values containing regex metacharacters

See merge request archlinux/devtools!311
2025-07-28 05:22:54 +00:00
Ivan Shapovalov
ec9f0548bc fix(pkgctl): handle pkgver values containing regex metacharacters
`pkgbuild_set_pkgver()` used the value of `$pkgver` directly in regular
expressions, which breaks if said value happens to contain e.g. a `+`.
Fix this by escaping all possible regex metacharacters in `$pkgver`.
2025-05-12 19:54:48 +02:00

View File

@@ -14,6 +14,11 @@ source /usr/share/makepkg/util/schema.sh
set -eo pipefail set -eo pipefail
# escapes regex metacharacters in a given string
_escape_pkgver() {
# shellcheck disable=SC2001
sed 's:[\^.\[$()|*+?{\\]:\\&:g' <<<"$1"
}
# set the pkgver variable in a PKGBUILD # set the pkgver variable in a PKGBUILD
# assumes that the pkgbuild is sourced to detect the presence of a pkgver function # assumes that the pkgbuild is sourced to detect the presence of a pkgver function
@@ -21,6 +26,8 @@ pkgbuild_set_pkgver() {
local new_pkgver=$1 local new_pkgver=$1
local pkgver=${pkgver} local pkgver=${pkgver}
pkgver="$(_escape_pkgver "${pkgver}")"
if [[ $(type -t pkgver) == function ]]; then if [[ $(type -t pkgver) == function ]]; then
# TODO: check if die or warn, if we provide _commit _gitcommit setter maybe? # TODO: check if die or warn, if we provide _commit _gitcommit setter maybe?
warning 'setting pkgver variable has no effect if the PKGBUILD has a pkgver() function' warning 'setting pkgver variable has no effect if the PKGBUILD has a pkgver() function'