On 06/08/2018 02:18 PM, morganamilo wrote:
Error if the arch array contains any and any other values. This also fixes a bug where the check for `$arch == 'any'` which only evaluated the first value in the array, meaning the rest of the values would not be linted.
Signed-off-by: morganamilo <morganamilo@gmail.com> --- scripts/libmakepkg/lint_pkgbuild/arch.sh.in | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/scripts/libmakepkg/lint_pkgbuild/arch.sh.in b/scripts/libmakepkg/lint_pkgbuild/arch.sh.in index f2c80c73..98ae70af 100644 --- a/scripts/libmakepkg/lint_pkgbuild/arch.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/arch.sh.in @@ -38,11 +38,12 @@ lint_arch() { return 1 fi
- if [[ $arch == 'any' ]]; then - return 0 - fi - for a in "${arch[@]}"; do + if [[ $a == 'any' ]]; then + error "$(gettext "any can not be used with other architectures")" + ret=1 + fi
Um, how is this supposed to work? If arch=('any') then this for loop will run once, discover [[ $a = any ]] and error out. The proper check would be to *not* move the previous return 0, but instead tell it to && (( ${#arch[@]} == 1 ))
if [[ $a = *[![:alnum:]_]* ]]; then error "$(gettext "%s contains invalid characters: '%s'")" \ 'arch' "${a//[[:alnum:]_]}" @@ -50,6 +51,10 @@ lint_arch() { fi done
+ if [[ $arch == 'any' ]]; then + return $ret + fi + if (( ! IGNOREARCH )) && ! in_array "$CARCH" "${arch[@]}"; then error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgbase" "$CARCH" return 1
-- Eli Schwartz Bug Wrangler and Trusted User