On 12/11/15 19:18, Allan McRae wrote:
On 12/11/15 18:37, David Grayson wrote:
The old implementation had both false negatives and false positives.
Because of the -w option to grep, it didn't detect lines like:
license=bad
Additionally, it did detect irrelevant lines like this:
--with-arch=${_arch}
The latter is a false positive which made it difficult to build valid packages.
This does not catch bad variables in the package() arrays.
Try this: diff --git a/scripts/libmakepkg/lint_pkgbuild/variable.sh.in b/scripts/libmakepkg/lint_pkgbuild/variable.sh.in index 1daac26..412da25 100644 --- a/scripts/libmakepkg/lint_pkgbuild/variable.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/variable.sh.in @@ -39,7 +39,7 @@ lint_variable() { local i for i in ${array[@]}; do - if grep -w -q -e "$i=[^(]" -e "$i+=[^(]" "$BUILDSCRIPT"; then + if grep -q -e "^[[:space:]]*$i=[^(]" -e "^[[:space:]]*$i+=[^(]" "$BUILDSCRIPT"; then error "$(gettext "%s should be an array")" "$i" ret=1 fi @@ -49,7 +49,7 @@ lint_variable() { [[ $a == "any" ]] && continue for i in ${arch_array[@]}; do - if grep -w -q -e "$i_$a=[^(]" -e "$i_$a+=[^(]" "$BUILDSCRIPT"; then + if grep -q -e "^[[:space:]]*$i_$a=[^(]" -e "^[[:space:]]*$i_$a+=[^(]" "$BUILDSCRIPT"; then error "$(gettext "%s_%s should be an array")" "$i" "$a" ret=1 fi @@ -57,7 +57,7 @@ lint_variable() { done for i in ${string[@]}; do - if grep -w -q -e "$i=(" -e "$i+=(" "$BUILDSCRIPT"; then + if grep -q -e "^[[:space:]]*$i=(" -e "^^[[:space:]]*$i+=(" "$BUILDSCRIPT"; then error "$(gettext "%s should not be an array")" "$i" ret=1 fi