abuild: ensure a package has deps before printing them

After the first dep is printed, `shift` is called to avoid the special
case where the first dep cannot have a comma prepended.  However,
if there are no deps for a package (seen early on in the aports main
repo in acf-jquery), $# is 0.  POSIX specifies that `shift` has two
options when the shift operand (1) is greater than $#:

- if non-interactive, it can exit the shell
- if it does not exit the shell, it must return a non-zero exit code

Since we run the shell with -e, the second case folds in to the first.

BusyBox ash does not implement this behaviour, but bash does when called
as /bin/sh or when the `posix` shopt is set.
This commit is contained in:
A. Wilcox 2017-08-13 17:28:30 +00:00 committed by Natanael Copa
parent 2b709f7e20
commit f1faef7868
1 changed files with 4 additions and 0 deletions

View File

@ -1838,6 +1838,10 @@ parse_aports_makedepends() {
for j in $pkgname $subpackages; do
echo "o ${j%%:*} $dir"
set -- $deps
if [ $# -eq 0 ]; then
echo "d ${j%%:*}"
continue
fi
echo -n "d ${j%%:*} $1"
shift
while [ $# -gt 0 ]; do