summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-05-31 04:50:24 +0200
committerAllan McRae <allan@archlinux.org>2018-06-18 05:15:51 +0200
commit870d4c8fdd5e53c24c2a13cf1010b2536460fd8f (patch)
tree246932af00fc2097cf510057fd1815042c791816
parentc37a06fe1d1fbd2be73adc725323e8a4665eeb09 (diff)
downloadpacman-870d4c8fdd5e53c24c2a13cf1010b2536460fd8f.tar.gz
pacman-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>
-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