[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