[pacman-dev] [PATCH] libmakepkg: fix linting arrays of empty strings
Allan McRae
allan at archlinux.org
Sun Oct 21 09:16:38 UTC 2018
On 17/10/18 3:49 am, morganamilo wrote:
> [[ ${array[@]} ]] will resolve to false if array only contains empty
> strings. This means that values such as "depends=('')" can be inserted
> into a pkgbuild and bypass the linting.
>
> This causes makepkg to successfully build the package while pacman
> refuses to install it because of the unmet dependency on ''.
>
> Instead check the length of the array.
>
> Signed-off-by: morganamilo <morganamilo at gmail.com>
>
The error this gives is:
==> ERROR: depends is not allowed to be empty.
but this also gives this error:
depends=('glibc' '' 'gcc')
so this is not a regression... just a poorly worked error message.
Allan
> diff --git a/scripts/libmakepkg/util/pkgbuild.sh.in b/scripts/libmakepkg/util/pkgbuild.sh.in
> index c6f8a82d..b29229a3 100644
> --- a/scripts/libmakepkg/util/pkgbuild.sh.in
> +++ b/scripts/libmakepkg/util/pkgbuild.sh.in
> @@ -60,7 +60,7 @@ extract_global_variable() {
>
> if (( isarray )); then
> array_build ref "$attr"
> - [[ ${ref[@]} ]] && array_build "$outputvar" "$attr"
> + (( ${#ref[@]} )) && array_build "$outputvar" "$attr"
> else
> [[ ${!attr} ]] && printf -v "$outputvar" %s "${!attr}"
> fi
> @@ -144,7 +144,7 @@ get_pkgbuild_all_split_attributes() {
> done
> done
>
> - [[ ${all_list[@]} ]] && array_build "$outputvar" all_list
> + (( ${#all_list[@]} )) && array_build "$outputvar" all_list
> }
>
> ##
>
More information about the pacman-dev
mailing list