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@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 }
##