summaryrefslogtreecommitdiff
path: root/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-05-30 22:50:24 -0400
committerAllan McRae <allan@archlinux.org>2018-06-18 13:15:51 +1000
commit870d4c8fdd5e53c24c2a13cf1010b2536460fd8f (patch)
tree246932af00fc2097cf510057fd1815042c791816 /scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in
parentc37a06fe1d1fbd2be73adc725323e8a4665eeb09 (diff)
downloadpacman-870d4c8fdd5e53c24c2a13cf1010b2536460fd8f.tar.xz
libmakepkg/lint_pkgbuild: permit versioned optdepends
pacman accepts these, and there is no good reason to be more restrictive ourselves; we should follow the example of "depends" here. Update the documentation to actually state that this is supported. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in')
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in18
1 files changed, 13 insertions, 5 deletions
diff --git a/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in b/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in
index 87e561cb..9978fe9b 100644
--- a/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in
@@ -31,15 +31,23 @@ lint_pkgbuild_functions+=('lint_optdepends')
lint_optdepends() {
- local a list name optdepends_list ret=0
-
- local optdepends_list optdepend name ret=0
+ local optdepends_list optdepend name ver ret=0
get_pkgbuild_all_split_attributes optdepends optdepends_list
- for optdepend in "${optdepends_list[@]}"; do
- name=${optdepend%%:[[:space:]]*}
+ # this function requires extglob - save current status to restore later
+ local shellopts=$(shopt -p extglob)
+ shopt -s extglob
+
+ for optdepend in "${optdepends_list[@]%%:[[:space:]]*}"; do
+ name=${optdepend%%@(<|>|=|>=|<=)*}
+ # remove optional epoch in version specifier
+ ver=${optdepend##$name@(<|>|=|>=|<=)?(+([0-9]):)}
lint_one_pkgname optdepends "$name" || ret=1
+ if [[ $ver != $optdepend ]]; then
+ # remove optional pkgrel in version specifier
+ check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" optdepends || ret=1
+ fi
done
return $ret