summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-07-19 08:12:48 +0200
committerAllan McRae <allan@archlinux.org>2018-07-27 02:21:58 +0200
commit316b031b7c1c8b9a6f4194b1378c58106b2a34dd (patch)
treeafd381d757e3e84bce325b395bcd5bd98242cbd3
parent757e85b21df62bf6c8e7d8c0642c1e93735aabce (diff)
downloadpacman-316b031b7c1c8b9a6f4194b1378c58106b2a34dd.tar.gz
pacman-316b031b7c1c8b9a6f4194b1378c58106b2a34dd.tar.xz
makepkg: reduce strictness of pkgver in depends linting
This change was introduced to prevent entries like depends=('foo>'). However, it had the unintended side effect of causing a number of working PKGBUILDs to fail to build. This happened when a PKGBUILD defined one variable through calling a "complex" statement within the PKGBUILD's package function (e.g. a function or evaluating in a subshell), then used it to define the package metadata variable. extract_function_variable() cannot execute the package function in order to retrieve this information, so it performs a simple grep + eval instead and in the process misses the contextual awareness of running within the package function. While not catching these "issues" can result in incorrect SRCINFO, the resulting packages are fine. Stop aborting on the common case where the pkgver of a dependency is dynamically set during the package function until the large number of broken PKGBUILDs are fixed, and the restrictions of the PKGBUILD format are documented. "Fixes" FS#58776 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/depends.sh.in3
1 files changed, 2 insertions, 1 deletions
diff --git a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in
index 40cdc65a..e363a039 100644
--- a/scripts/libmakepkg/lint_pkgbuild/depends.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/depends.sh.in
@@ -46,7 +46,8 @@ lint_depends() {
# remove optional epoch in version specifier
ver=${depend##$name@(<|>|=|>=|<=)?(+([0-9]):)}
lint_one_pkgname depends "$name" || ret=1
- if [[ $ver != $depend ]]; then
+ # Don't validate empty version because of https://bugs.archlinux.org/task/58776
+ if [[ $ver != $depend && -n $ver ]]; then
# remove optional pkgrel in version specifier
check_pkgver "${ver%-+([0-9])?(.+([0-9]))}" depends || ret=1
fi