From: Pierre Schmitz <[email protected]>

(cherry picked from commit 7628525156110022fa70ad91e4bc13ee8a3cceb0)
---
 test/cases/db-move.bats        |  37 ++++-------
 test/cases/db-remove.bats      |  10 +--
 test/cases/db-repo-add.bats    |  12 +---
 test/cases/db-repo-remove.bats |  10 +--
 test/cases/db-update.bats      |  54 +++++++----------
 test/cases/ftpdir-cleanup.bats |  46 +++++++-------
 test/lib/common.bash           | 135 +++++++++++++++++++++++------------------
 7 files changed, 143 insertions(+), 161 deletions(-)

diff --git a/test/cases/db-move.bats b/test/cases/db-move.bats
index cdc89e3..8d5087f 100755
--- a/test/cases/db-move.bats
+++ b/test/cases/db-move.bats
@@ -13,12 +13,9 @@ load ../lib/common
 
        db-move testing extra pkg-simple-a
 
-       for arch in "${ARCH_BUILD[@]}"; do
-               checkPackage extra "pkg-simple-a-1-1-${arch}.pkg.tar.xz" 
"${arch}"
-               checkRemovedPackage testing pkg-simple-a "${arch}"
-
-               checkPackage testing "pkg-simple-b-1-1-${arch}.pkg.tar.xz" 
"${arch}"
-       done
+       checkRemovedPackage testing pkg-simple-a
+       checkPackage extra pkg-simple-a
+       checkPackage testing pkg-simple-b
 }
 
 @test "move multiple packages" {
@@ -35,10 +32,8 @@ load ../lib/common
        db-move testing extra pkg-simple-a pkg-simple-b
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkPackage extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" 
"${arch}"
-                       checkRemovedPackage testing "${pkgbase}" "${arch}"
-               done
+               checkRemovedPackage testing "${pkgbase}"
+               checkPackage extra "${pkgbase}"
        done
 }
 
@@ -55,10 +50,8 @@ load ../lib/common
 
        db-move testing extra pkg-simple-epoch
 
-       for arch in "${ARCH_BUILD[@]}"; do
-               checkPackage extra "pkg-simple-epoch-1:1-1-${arch}.pkg.tar.xz" 
"${arch}"
-               checkRemovedPackage testing pkg-simple-epoch "${arch}"
-       done
+       checkRemovedPackage testing pkg-simple-epoch
+       checkPackage extra pkg-simple-epoch
 }
 
 @test "move any packages" {
@@ -72,9 +65,9 @@ load ../lib/common
        db-update
        db-move testing extra pkg-any-a
 
-       checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
-       checkRemovedPackage testing pkg-any-a any
-       checkPackage testing pkg-any-b-1-1-any.pkg.tar.xz any
+       checkPackage extra pkg-any-a
+       checkRemovedPackage testing pkg-any-a
+       checkPackage testing pkg-any-b
 }
 
 @test "move split packages" {
@@ -90,12 +83,6 @@ load ../lib/common
        db-update
        db-move testing extra pkg-split-a
 
-       for arch in "${ARCH_BUILD[@]}"; do
-               for pkg in $(getPackageNamesFromPackageBase pkg-split-a); do
-                       checkPackage extra "${pkg##*/}" "${arch}"
-               done
-               for pkg in $(getPackageNamesFromPackageBase pkg-split-b); do
-                       checkPackage testing "${pkg##*/}" "${arch}"
-               done
-       done
+       checkPackage extra pkg-split-a
+       checkPackage testing pkg-split-b
 }
diff --git a/test/cases/db-remove.bats b/test/cases/db-remove.bats
index deb0f0e..ff88237 100755
--- a/test/cases/db-remove.bats
+++ b/test/cases/db-remove.bats
@@ -18,9 +18,7 @@ load ../lib/common
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkRemovedPackage extra "${pkgbase}" "${arch}"
-               done
+               checkRemovedPackage extra "${pkgbase}"
        done
 }
 
@@ -40,9 +38,7 @@ load ../lib/common
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkRemovedPackage extra "${pkgbase}" "${arch}"
-               done
+               checkRemovedPackage extra "${pkgbase}"
        done
 }
 
@@ -61,6 +57,6 @@ load ../lib/common
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               checkRemovedPackage extra "${pkgbase}" any
+               checkRemovedPackage extra "${pkgbase}"
        done
 }
diff --git a/test/cases/db-repo-add.bats b/test/cases/db-repo-add.bats
index a04d9bb..ef6cfe7 100755
--- a/test/cases/db-repo-add.bats
+++ b/test/cases/db-repo-add.bats
@@ -35,9 +35,7 @@ __movePackageToRepo() {
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkPackageDB extra 
"${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
-               done
+               checkPackageDB extra "${pkgbase}"
        done
 }
 
@@ -60,9 +58,7 @@ __movePackageToRepo() {
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkPackageDB extra 
"${pkgbase}-1-1-${arch}.pkg.tar.xz" "${arch}"
-               done
+               checkPackageDB extra "${pkgbase}"
        done
 }
 
@@ -78,8 +74,6 @@ __movePackageToRepo() {
        done
 
        for pkgbase in ${pkgs[@]}; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkPackageDB extra ${pkgbase}-1-1-any.pkg.tar.xz 
${arch}
-               done
+               checkPackageDB extra ${pkgbase}
        done
 }
diff --git a/test/cases/db-repo-remove.bats b/test/cases/db-repo-remove.bats
index 6145f25..389c31e 100755
--- a/test/cases/db-repo-remove.bats
+++ b/test/cases/db-repo-remove.bats
@@ -18,9 +18,7 @@ load ../lib/common
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkRemovedPackageDB extra "${pkgbase}" "${arch}"
-               done
+               checkRemovedPackageDB extra "${pkgbase}"
        done
 }
 
@@ -40,9 +38,7 @@ load ../lib/common
        done
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkRemovedPackageDB extra "${pkgbase}" "${arch}"
-               done
+               checkRemovedPackageDB extra "${pkgbase}"
        done
 }
 
@@ -61,6 +57,6 @@ load ../lib/common
        done
 
        for pkgbase in ${pkgs[@]}; do
-               checkRemovedPackageDB extra ${pkgbase} any
+               checkRemovedPackageDB extra ${pkgbase}
        done
 }
diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats
index 3a2e543..56e364b 100755
--- a/test/cases/db-update.bats
+++ b/test/cases/db-update.bats
@@ -12,22 +12,20 @@ load ../lib/common
        db-update
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       checkPackage extra "${pkgbase}-1-1-${arch}.pkg.tar.xz" 
"${arch}"
-               done
+               checkPackage extra "${pkgbase}"
        done
 }
 
 @test "add single simple package" {
        releasePackage extra 'pkg-single-arch'
        db-update
-       checkPackage extra 'pkg-single-arch-1-1-x86_64.pkg.tar.xz' 'x86_64'
+       checkPackage extra 'pkg-single-arch'
 }
 
 @test "add single epoch package" {
        releasePackage extra 'pkg-single-epoch'
        db-update
-       checkPackage extra 'pkg-single-epoch-1:1-1-x86_64.pkg.tar.xz' 'x86_64'
+       checkPackage extra 'pkg-single-epoch'
 }
 
 @test "add any packages" {
@@ -41,7 +39,7 @@ load ../lib/common
        db-update
 
        for pkgbase in "${pkgs[@]}"; do
-               checkPackage extra "${pkgbase}-1-1-any.pkg.tar.xz" any
+               checkPackage extra "${pkgbase}"
        done
 }
 
@@ -58,11 +56,7 @@ load ../lib/common
        db-update
 
        for pkgbase in "${pkgs[@]}"; do
-               for arch in "${ARCH_BUILD[@]}"; do
-                       for pkg in $(getPackageNamesFromPackageBase 
${pkgbase}); do
-                               checkPackage extra "${pkg##*/}" "${arch}"
-                       done
-               done
+               checkPackage extra "${pkgbase}"
        done
 }
 
@@ -75,7 +69,7 @@ load ../lib/common
        releasePackage extra pkg-any-a
        db-update
 
-       checkPackage extra pkg-any-a-1-2-any.pkg.tar.xz any
+       checkPackage extra pkg-any-a
 }
 
 @test "update any package to different repositories at once" {
@@ -87,14 +81,14 @@ load ../lib/common
 
        db-update
 
-       checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
-       checkPackage testing pkg-any-a-1-2-any.pkg.tar.xz any
+       checkPackage extra pkg-any-a
+       checkPackage testing pkg-any-a
 }
 
 @test "update same any package to same repository" {
        releasePackage extra pkg-any-a
        db-update
-       checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
+       checkPackage extra pkg-any-a
 
        releasePackage extra pkg-any-a
        run db-update
@@ -104,13 +98,13 @@ load ../lib/common
 @test "update same any package to different repositories" {
        releasePackage extra pkg-any-a
        db-update
-       checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
+       checkPackage extra pkg-any-a
 
        releasePackage testing pkg-any-a
        run db-update
        [ "$status" -ne 0 ]
 
-       checkRemovedPackageDB testing pkg-any-a any
+       checkRemovedPackageDB testing pkg-any-a
 }
 
 @test "add incomplete split package" {
@@ -127,9 +121,7 @@ load ../lib/common
        run db-update
        [ "$status" -ne 0 ]
 
-       for arch in "${ARCH_BUILD[@]}"; do
-               checkRemovedPackageDB ${repo} ${pkgbase} ${arch}
-       done
+       checkRemovedPackageDB ${repo} ${pkgbase}
 }
 
 @test "unknown repo" {
@@ -137,7 +129,7 @@ load ../lib/common
        releasePackage extra 'pkg-any-a'
        releasePackage unknown 'pkg-any-b'
        db-update
-       checkPackage extra 'pkg-any-a-1-1-any.pkg.tar.xz' any
+       checkPackage extra 'pkg-any-a'
        [ ! -e "${FTP_BASE}/unknown" ]
        rm -rf "${STAGING}/unknown/"
 }
@@ -148,7 +140,7 @@ load ../lib/common
        run db-update
        [ "$status" -ne 0 ]
 
-       checkRemovedPackageDB extra pkg-any-a any
+       checkRemovedPackageDB extra pkg-any-a
 }
 
 @test "add invalid signed package fails" {
@@ -161,7 +153,7 @@ load ../lib/common
        run db-update
        [ "$status" -ne 0 ]
 
-       checkRemovedPackageDB extra pkg-any-a any
+       checkRemovedPackageDB extra pkg-any-a
 }
 
 @test "add broken signature fails" {
@@ -173,7 +165,7 @@ load ../lib/common
        run db-update
        [ "$status" -ne 0 ]
 
-       checkRemovedPackageDB extra pkg-any-a any
+       checkRemovedPackageDB extra pkg-any-a
 }
 
 @test "add package with inconsistent version fails" {
@@ -186,7 +178,7 @@ load ../lib/common
 
        run db-update
        [ "$status" -ne 0 ]
-       checkRemovedPackageDB extra 'pkg-any-a' 'any'
+       checkRemovedPackageDB extra 'pkg-any-a'
 }
 
 @test "add package with inconsistent name fails" {
@@ -199,7 +191,7 @@ load ../lib/common
 
        run db-update
        [ "$status" -ne 0 ]
-       checkRemovedPackage extra 'foo-pkg-any-a' 'any'
+       checkRemovedPackage extra 'pkg-any-a'
 }
 
 @test "add package with inconsistent pkgbuild fails" {
@@ -210,7 +202,7 @@ load ../lib/common
 
        run db-update
        [ "$status" -ne 0 ]
-       checkRemovedPackageDB extra 'pkg-any-a' 'any'
+       checkRemovedPackageDB extra 'pkg-any-a'
 }
 
 @test "add package with insufficient permissions fails" {
@@ -222,8 +214,8 @@ load ../lib/common
        [ "$status" -ne 0 ]
        chmod +xwr ${FTP_BASE}/core/os/i686
 
-       checkRemovedPackageDB core 'pkg-any-a' 'any'
-       checkRemovedPackageDB extra 'pkg-any-b' 'any'
+       checkRemovedPackageDB core 'pkg-any-a'
+       checkRemovedPackageDB extra 'pkg-any-b'
 }
 
 @test "package has to be a regular file" {
@@ -239,7 +231,5 @@ load ../lib/common
 
        run db-update
        [ "$status" -ne 0 ]
-       for arch in "${ARCH_BUILD[@]}"; do
-               checkRemovedPackageDB extra "pkg-simple-a" $arch
-       done
+       checkRemovedPackageDB extra "pkg-simple-a"
 }
diff --git a/test/cases/ftpdir-cleanup.bats b/test/cases/ftpdir-cleanup.bats
index 1a46fdf..35b3c9f 100755
--- a/test/cases/ftpdir-cleanup.bats
+++ b/test/cases/ftpdir-cleanup.bats
@@ -1,13 +1,21 @@
 load ../lib/common
 
+__getPackageNamesFromPackageBase() {
+       local pkgbase=$1
+
+       (. "packages/${pkgbase}/PKGBUILD"; echo ${pkgname[@]})
+}
+
 __checkRepoRemovedPackage() {
        local repo=$1
        local pkgbase=$2
-       local arch=$3
+       local repoarch=$3
+       local pkgname
 
-       # FIXME: pkgbase might not be part of the package filename
-       [[ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgbase}*${PKGEXT} ]]
-       [[ ! -f ${FTP_BASE}/${repo}/os/${arch}/${pkgbase}*${PKGEXT} ]]
+       for pkgname in $(__getPackageNamesFromPackageBase ${pkgbase}); do
+               [[ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-*${PKGEXT} ]]
+               [[ ! -f 
${FTP_BASE}/${repo}/os/${repoarch}/${pkgname}-*${PKGEXT} ]]
+       done
 }
 
 @test "cleanup simple packages" {
@@ -27,13 +35,12 @@ __checkRepoRemovedPackage() {
 
        ftpdir-cleanup
 
+       checkRemovedPackage extra 'pkg-simple-a'
        for arch in "${ARCH_BUILD[@]}"; do
-               checkRemovedPackage extra 'pkg-simple-a' "${arch}"
                __checkRepoRemovedPackage extra 'pkg-simple-a' ${arch}
-
-               local pkg2="pkg-simple-b-1-1-${arch}.pkg.tar.xz"
-               checkPackage extra "${pkg2}" "${arch}"
        done
+
+       checkPackage extra pkg-simple-b
 }
 
 @test "cleanup epoch packages" {
@@ -53,8 +60,8 @@ __checkRepoRemovedPackage() {
 
        ftpdir-cleanup
 
+       checkRemovedPackage extra 'pkg-simple-epoch'
        for arch in "${ARCH_BUILD[@]}"; do
-               checkRemovedPackage extra 'pkg-simple-epoch' "${arch}"
                __checkRepoRemovedPackage extra 'pkg-simple-epoch' ${arch}
        done
 }
@@ -73,11 +80,12 @@ __checkRepoRemovedPackage() {
        ftpdir-cleanup
 
        local pkg1='pkg-any-a-1-1-any.pkg.tar.xz'
-       checkRemovedPackage extra 'pkg-any-a' any
-       __checkRepoRemovedPackage extra 'pkg-any-a' any
+       checkRemovedPackage extra 'pkg-any-a'
+       for arch in ${ARCH_BUILD[@]}; do
+               __checkRepoRemovedPackage extra 'pkg-any-a' ${arch}
+       done
 
-       local pkg2="pkg-any-b-1-1-${arch}.pkg.tar.xz"
-       checkPackage extra "${pkg2}" any
+       checkPackage extra pkg-any-b
 }
 
 @test "cleanup split packages" {
@@ -99,15 +107,11 @@ __checkRepoRemovedPackage() {
        ftpdir-cleanup
 
        for arch in "${ARCH_BUILD[@]}"; do
-               for pkg in $(getPackageNamesFromPackageBase "${pkgs[0]}"); do
-                       checkRemovedPackage extra "${pkg}" "${arch}"
-                       __checkRepoRemovedPackage extra ${pkg} ${arch}
-               done
-
-               for pkg in $(getPackageNamesFromPackageBase "${pkgs[1]}"); do
-                       checkPackage extra "${pkg##*/}" "${arch}"
-               done
+               __checkRepoRemovedPackage extra ${pkg[0]} ${arch}
        done
+
+       checkRemovedPackage extra "${pkgs[0]}"
+       checkPackage extra "${pkgs[1]}"
 }
 
 @test "cleanup old packages" {
diff --git a/test/lib/common.bash b/test/lib/common.bash
index 98b4469..a833181 100644
--- a/test/lib/common.bash
+++ b/test/lib/common.bash
@@ -3,23 +3,6 @@
 . /usr/share/makepkg/util.sh
 . "$(dirname "${BASH_SOURCE[0]}")"/../test.conf
 
-__getPackageBaseFromPackage() {
-       local _base
-       _grep_pkginfo() {
-               local _ret
-
-               _ret="$(/usr/bin/bsdtar -xOqf "$1" .PKGINFO | grep -m 1 "^${2} 
= ")"
-               echo "${_ret#${2} = }"
-       }
-
-       _base="$(_grep_pkginfo "$1" "pkgbase")"
-       if [ -z "$_base" ]; then
-               _grep_pkginfo "$1" "pkgname"
-       else
-               echo "$_base"
-       fi
-}
-
 __updatePKGBUILD() {
        local pkgrel
 
@@ -175,86 +158,118 @@ updateRepoPKGBUILD() {
        popd
 }
 
-getPackageNamesFromPackageBase() {
-       local pkgbase=$1
-
-       $(. "packages/${pkgbase}/PKGBUILD"; echo ${pkgname[@]})
-}
-
 checkPackageDB() {
        local repo=$1
-       local pkg=$2
-       local arch=$3
+       local pkgbase=$2
        local db
-       local tarch
-       local tarches
-
-       [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}" ]
-       [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}.sig" ]
-       [ ! -r "${STAGING}/${repo}/${pkg}" ]
-       [ ! -r "${STAGING}/${repo}/${pkg}.sig" ]
-
-       if [[ $arch == any ]]; then
-               tarches=("${ARCHES[@]}")
+       local pkgarch
+       local repoarch
+       local repoarches
+       local pkgfile
+       local pkgname
+
+       # FIXME: We guess the location of the PKGBUILD used for this repo
+       # We cannot read from trunk as __updatePKGBUILD() might have bumped the 
version
+       # and different repos can have different versions of the same package
+       local pkgbuildPaths=($(compgen -G 
"${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*"))
+       local pkgbuildPath="${pkgbuildPaths[0]}"
+       echo Repo is $repo
+       echo pkgbuildPaths = ${pkgbuildPaths[@]}
+       echo pkgbuildPath = ${pkgbuildPath}
+       ls -ahl ${TMP}/svn-packages-copy/${pkgbase}/repos/
+       [ -r "${pkgbuildPath}/PKGBUILD" ]
+
+       local pkgarches=($(. "${pkgbuildPath}/PKGBUILD"; echo ${arch[@]}))
+       local pkgnames=($(. "${pkgbuildPath}/PKGBUILD"; echo ${pkgname[@]}))
+       local pkgver=$(. "${pkgbuildPath}/PKGBUILD"; get_full_version)
+
+       if [[ ${pkgarches[@]} == any ]]; then
+               repoarches=("${ARCHES[@]}")
        else
-               tarches=("${arch}")
+               repoarches=("${pkgarches[@]}")
        fi
 
-       for tarch in "${tarches[@]}"; do
-               [ -L "${FTP_BASE}/${repo}/os/${tarch}/${pkg}" ]
-               [ "$(readlink -e "${FTP_BASE}/${repo}/os/${tarch}/${pkg}")" == 
"$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}")" ]
-
-               [ -L "${FTP_BASE}/${repo}/os/${tarch}/${pkg}.sig" ]
-               [ "$(readlink -e "${FTP_BASE}/${repo}/os/${tarch}/${pkg}.sig")" 
== "$(readlink -e "${FTP_BASE}/${PKGPOOL}/${pkg}.sig")" ]
-
-               for db in "${DBEXT}" "${FILESEXT}"; do
-                       [ -r 
"${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" ]
-                       bsdtar -xf 
"${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" -O | grep "${pkg}" 
&>/dev/null
+       for pkgarch in ${pkgarches[@]}; do
+               for pkgname in ${pkgnames[@]}; do
+                       pkgfile="${pkgname}-${pkgver}-${pkgarch}${PKGEXT}"
+
+                       [ -r "${FTP_BASE}/${PKGPOOL}/${pkgfile}" ]
+                       [ -r "${FTP_BASE}/${PKGPOOL}/${pkgfile}.sig" ]
+                       [ ! -r "${STAGING}/${repo}/${pkgfile}" ]
+                       [ ! -r "${STAGING}/${repo}/${pkgfile}.sig" ]
+
+                       for repoarch in "${repoarches[@]}"; do
+                               # Only 'any' packages can be found in repos of 
both arches
+                               if [[ $pkgarch != any ]]; then
+                                       if [[ $pkgarch != ${repoarch} ]]; then
+                                               continue
+                                       fi
+                               fi
+
+                               [ -L 
"${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}" ]
+                               [ "$(readlink -e 
"${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}")" == "$(readlink -e 
"${FTP_BASE}/${PKGPOOL}/${pkgfile}")" ]
+
+                               [ -L 
"${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}.sig" ]
+                               [ "$(readlink -e 
"${FTP_BASE}/${repo}/os/${repoarch}/${pkgfile}.sig")" == "$(readlink -e 
"${FTP_BASE}/${PKGPOOL}/${pkgfile}.sig")" ]
+
+                               for db in "${DBEXT}" "${FILESEXT}"; do
+                                       [ -r 
"${FTP_BASE}/${repo}/os/${repoarch}/${repo}${db%.tar.*}" ]
+                                       bsdtar -xf 
"${FTP_BASE}/${repo}/os/${repoarch}/${repo}${db%.tar.*}" -O | grep 
"${pkgfile%${PKGEXT}}" &>/dev/null
+                               done
+                       done
                done
        done
 }
 
 checkPackage() {
        local repo=$1
-       local pkg=$2
-       local arch=$3
-
-       checkPackageDB "$repo" "$pkg" "$arch"
+       local pkgbase=$2
 
-       local pkgbase=$(__getPackageBaseFromPackage 
"${FTP_BASE}/${PKGPOOL}/${pkg}")
        svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
-       [ -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}" ]
+       # TODO: Does not fail if one arch is missing
+       compgen -G "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*" 
>/dev/null
+
+       checkPackageDB "$repo" "$pkgbase"
 }
 
 checkRemovedPackage() {
        local repo=$1
        local pkgbase=$2
-       local arch=$3
-
-       checkRemovedPackageDB "$repo" "$pkgbase" "$arch"
 
        svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
-       [ ! -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}" ]
+       ! compgen -G "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-*" 
>/dev/null
+
+       checkRemovedPackageDB "$repo" "$pkgbase"
 }
 
 checkRemovedPackageDB() {
        local repo=$1
        local pkgbase=$2
-       local arch=$3
+       local arch
        local db
        local tarch
        local tarches
+       local pkgarches
+       local pkgnames
+       local pkgname
+
+       local pkgbuildPath="${TMP}/svn-packages-copy/${pkgbase}/trunk/PKGBUILD"
+       [[ -r ${pkgbuildPath} ]]
+       pkgarches=($(. "${pkgbuildPath}"; echo ${arch[@]}))
+       pkgnames=($(. "${pkgbuildPath}"; echo ${pkgname[@]}))
 
-       if [[ $arch == any ]]; then
+       if [[ ${pkgarches[@]} == any ]]; then
                tarches=(${ARCHES[@]})
        else
-               tarches=(${arch})
+               tarches=($pkgarches[@])
        fi
 
        for db in "${DBEXT}" "${FILESEXT}"; do
                for tarch in "${tarches[@]}"; do
                        if [ -r 
"${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" ]; then
-                               ! bsdtar -xf 
"${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" -O | grep "${pkgbase}" 
&>/dev/null
+                               for pkgname in ${pkgnames[@]}; do
+                                       ! bsdtar -xf 
"${FTP_BASE}/${repo}/os/${tarch}/${repo}${db%.tar.*}" -O | grep "${pkgname}" 
&>/dev/null
+                               done
                        fi
                done
        done
-- 
2.16.2

_______________________________________________
Dev mailing list
[email protected]
https://lists.parabola.nu/mailman/listinfo/dev

Reply via email to