build: fix build when repos do not have changes
The changed_repos
function determines what repos have changes so that
it only builds repos that actually have changes. But this function just does
a plain diff against the target branch. This means if the target branch
has any changes compared to the source branch, it would consider that
branch as well.
This was never a real issue, because the changed_aports
function
correctly returns the changed aports for a give repo, which would be
empty in case there are no changed aports for that repo. This is also no
a problem in general, because the other repositories always have aports.
This would break when a repository does not have any aports, because ap builddirs
would throw an error.
New functionality has been added that determines how many aports have
changed and tries to select only a subset. To do that, it needs to
convert a space delimited list into a new-line delimited list. It uses
xargs -n1 echo
for that. The problem is that by default, xargs
runs
echo as well even if there are no items passed, resulting in a single
newline being returned. Passing that to wc -l
returns '1' while no
aport was changed. This throws off the accounting for limiting the
packages being built.
Fix this by both properly doing an asymmetric diff against the target
branch in changed_repos
and by adding -r
to xargs
so that it
returns nothing when there are no changed aports.