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 <morganam...@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
signature.asc
Description: OpenPGP digital signature