summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/PKGBUILD.5.asciidoc5
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/optdepends.sh.in18
2 files changed, 16 insertions, 7 deletions
diff --git a/doc/PKGBUILD.5.asciidoc b/doc/PKGBUILD.5.asciidoc
index 9634bd15..ac26f3fe 100644
--- a/doc/PKGBUILD.5.asciidoc
+++ b/doc/PKGBUILD.5.asciidoc
@@ -212,8 +212,9 @@ underscore and the architecture name e.g., 'checkdepends_x86_64=()'.
An array of packages (and accompanying reasons) that are not essential for
base functionality, but may be necessary to make full use of the contents
of this package. optdepends are currently for informational purposes only
- and are not utilized by pacman during dependency resolution. The format
- for specifying optdepends is:
+ and are not utilized by pacman during dependency resolution. Packages in
+ this list follow the same format as depends, with an optional description
+ appended. The format for specifying optdepends descriptions is:
optdepends=('python: for library bindings')
+
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