In commit 91b72cc386ca03241791748da5da2b150c724ace support was added for linting depends/etc. to ensure they contain only valid dependency specifiers. However it did not properly take into account the possibility of dependencies linked to a specific pkgrel, which promptly failed to build because "-" is not allowed in a pkgver. This is something supported by pacman and useful for e.g. split packages which cannot be mismatched even if the pkgver is the same. Fix by removing an optional suffixed "-$decimal" when checking for a valid pkgver. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- Ouch! Sorry... scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in | 3 ++- scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in | 3 ++- scripts/libmakepkg/lint_pkgbuild/depends.sh.in | 3 ++- scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in | 3 ++- scripts/libmakepkg/lint_pkgbuild/provides.sh.in | 9 ++++++++- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in index 5d15bfb2..a4f297d9 100644 --- a/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/checkdepends.sh.in @@ -46,7 +46,8 @@ lint_checkdepends() { ver=${checkdepend#*@(<|>|=|>=|<=)} lint_one_pkgname checkdepends "$name" || ret=1 if [[ $ver != $checkdepend ]]; then - check_pkgver "$ver" checkdepends || ret=1 + # remove optional pkgrel in version specifier + check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" checkdepends || ret=1 fi done diff --git a/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in b/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in index d81e9784..0f81ddb1 100644 --- a/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/conflicts.sh.in @@ -46,7 +46,8 @@ lint_conflicts() { ver=${conflict#*@(<|>|=|>=|<=)} lint_one_pkgname conflicts "$name" || ret=1 if [[ $ver != $conflict ]]; then - check_pkgver "$ver" conflicts || ret=1 + # remove optional pkgrel in version specifier + check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" conflicts || ret=1 fi done diff --git a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in index f17bc545..cbd97706 100644 --- a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in @@ -46,7 +46,8 @@ lint_depends() { ver=${depend#*@(<|>|=|>=|<=)} lint_one_pkgname depends "$name" || ret=1 if [[ $ver != $depend ]]; then - check_pkgver "$ver" depends || ret=1 + # remove optional pkgrel in version specifier + check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" depends || ret=1 fi done diff --git a/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in index 1d0762fb..fc1549d5 100644 --- a/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/makedepends.sh.in @@ -46,7 +46,8 @@ lint_makedepends() { ver=${makedepend#*@(<|>|=|>=|<=)} lint_one_pkgname makedepends "$name" || ret=1 if [[ $ver != $makedepend ]]; then - check_pkgver "$ver" makedepends || ret=1 + # remove optional pkgrel in version specifier + check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" makedepends || ret=1 fi done diff --git a/scripts/libmakepkg/lint_pkgbuild/provides.sh.in b/scripts/libmakepkg/lint_pkgbuild/provides.sh.in index 7500a88a..a0bef4f5 100644 --- a/scripts/libmakepkg/lint_pkgbuild/provides.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/provides.sh.in @@ -37,6 +37,10 @@ lint_provides() { get_pkgbuild_all_split_attributes provides provides_list + # this function requires extglob - save current status to restore later + local shellopts=$(shopt -p extglob) + shopt -s extglob + for provide in "${provides_list[@]}"; do if [[ $provide == *['<>']* ]]; then error "$(gettext "%s array cannot contain comparison (< or >) operators.")" "provides" @@ -47,9 +51,12 @@ lint_provides() { ver=${provide#*=} lint_one_pkgname provides "$name" || ret=1 if [[ $ver != $provide ]]; then - check_pkgver "$ver" provides || ret=1 + # remove optional pkgrel in version specifier + check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" provides || ret=1 fi done + eval "$shellopts" + return $ret } -- 2.17.0