diff --git a/abuild.in b/abuild.in index 178fe42..f78329d 100755 --- a/abuild.in +++ b/abuild.in @@ -1007,17 +1007,32 @@ apk_up2date() { } abuildindex_up2date() { - local i j apk + local i getpkgver || return 1 for i in $pkgname $subpackages; do - apk="${i%:*}-$pkgver-r$pkgrel.apk" - for j in "$abuildrepo"/*/$apk; do - [ -r "$j" ] || continue # ignore missing files - local idx="${j%/*}"/APKINDEX.tar.gz - if ! [ "$idx" -nt "$j" ]; then - return 1 + local found= dir= + local apk="${i%:*}-$pkgver-r$pkgrel.apk" + + # look for file in all arch dirs + for dir in "$abuildrepo"/*; do + [ -d "$dir" ] || continue + local file="$dir"/$apk + local idx="$dir"/APKINDEX.tar.gz + + # check if index is missing + [ -f "$idx" ] || return 1 + + # check if file is there but is newer than index + if [ -f "$file" ]; then + found=1 + if [ "$file" -nt "$idx" ]; then + return 1 + fi fi done + + # we are not up2date if file was not found in any arch dir + [ -z "$found" ] && return 1 done return 0 }