[Dev] [dbscripts] [PATCH 25/31] Allways build packages for all supported architectures

Luke Shumaker lukeshu at lukeshu.com
Fri Apr 6 18:43:58 GMT 2018


From: Pierre Schmitz <pierre at archlinux.de>

(cherry picked from commit 76f95dd139094dc2985b6733f23fcb098f07c64e)
---
 test/Makefile                           |  6 +--
 test/cases/db-move.bats                 | 18 ++-----
 test/cases/db-remove.bats               | 10 ++--
 test/cases/db-repo-add.bats             |  9 ++--
 test/cases/db-repo-remove.bats          | 10 ++--
 test/cases/db-update.bats               | 88 +++++++++++++++------------------
 test/cases/ftpdir-cleanup.bats          | 18 ++-----
 test/cases/packages.bats                | 10 ++--
 test/cases/sourceballs.bats             | 14 ++----
 test/fixtures/pkg-single-arch/PKGBUILD  | 12 +++++
 test/fixtures/pkg-single-epoch/PKGBUILD | 13 +++++
 test/lib/common.bash                    | 64 ++++++++++++------------
 12 files changed, 132 insertions(+), 140 deletions(-)
 create mode 100644 test/fixtures/pkg-single-arch/PKGBUILD
 create mode 100644 test/fixtures/pkg-single-epoch/PKGBUILD

diff --git a/test/Makefile b/test/Makefile
index 9a6d18f..da09c4a 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,10 +1,10 @@
-PACKAGE_CACHE ?= $(or $(TMPDIR),/tmp)/dbscripts-build
+export BUILDDIR ?= $(or $(TMPDIR),/tmp)/dbscripts-build
 
 test:
-	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) bats cases
+	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) bats cases
 
 test-coverage:
-	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) kcov \
+	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) kcov \
 		--include-path=$(CURDIR)/../ \
 		--exclude-path=$(CURDIR)/../test,$(CURDIR)/../cron-jobs/makepkg.conf,$(CURDIR)/../config \
 		$(COVERAGE_DIR) \
diff --git a/test/cases/db-move.bats b/test/cases/db-move.bats
index a0af0ce..4eea575 100755
--- a/test/cases/db-move.bats
+++ b/test/cases/db-move.bats
@@ -6,9 +6,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage testing "${pkgbase}" "${arch}"
-		done
+		releasePackage testing "${pkgbase}"
 	done
 
 	db-update
@@ -29,9 +27,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage testing "${pkgbase}" "${arch}"
-		done
+		releasePackage testing "${pkgbase}"
 	done
 
 	db-update
@@ -52,9 +48,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage testing "${pkgbase}" "${arch}"
-		done
+		releasePackage testing "${pkgbase}"
 	done
 
 	db-update
@@ -72,7 +66,7 @@ load ../lib/common
 	local pkgbase
 
 	for pkgbase in "${pkgs[@]}"; do
-		releasePackage testing "${pkgbase}" any
+		releasePackage testing "${pkgbase}"
 	done
 
 	db-update
@@ -90,9 +84,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage testing "${pkgbase}" "${arch}"
-		done
+		releasePackage testing "${pkgbase}"
 	done
 
 	db-update
diff --git a/test/cases/db-remove.bats b/test/cases/db-remove.bats
index 5201440..deb0f0e 100755
--- a/test/cases/db-remove.bats
+++ b/test/cases/db-remove.bats
@@ -6,9 +6,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -32,9 +30,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -55,7 +51,7 @@ load ../lib/common
 	local pkgbase
 
 	for pkgbase in "${pkgs[@]}"; do
-		releasePackage extra "${pkgbase}" any
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
diff --git a/test/cases/db-repo-add.bats b/test/cases/db-repo-add.bats
index 869796a..a04d9bb 100755
--- a/test/cases/db-repo-add.bats
+++ b/test/cases/db-repo-add.bats
@@ -27,8 +27,8 @@ __movePackageToRepo() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
+		releasePackage extra "$pkgbase"
 		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "$pkgbase" "$arch"
 			__movePackageToRepo extra ${pkgbase} ${arch}
 			db-repo-add extra "${arch}" "${pkgbase}-1-1-${arch}.pkg.tar.xz"
 		done
@@ -46,10 +46,13 @@ __movePackageToRepo() {
 	local pkgbase
 	local arch
 
+	for pkgbase in "${pkgs[@]}"; do
+		releasePackage extra "$pkgbase"
+	done
+
 	for arch in "${ARCH_BUILD[@]}"; do
 		add_pkgs=()
 		for pkgbase in "${pkgs[@]}"; do
-			releasePackage extra "$pkgbase" "$arch"
 			__movePackageToRepo extra ${pkgbase} ${arch}
 			add_pkgs+=("${pkgbase}-1-1-${arch}.pkg.tar.xz")
 		done
@@ -69,7 +72,7 @@ __movePackageToRepo() {
 	local arch
 
 	for pkgbase in ${pkgs[@]}; do
-		releasePackage extra ${pkgbase} any
+		releasePackage extra ${pkgbase}
 		__movePackageToRepo extra ${pkgbase} any
 		db-repo-add extra any ${pkgbase}-1-1-any.pkg.tar.xz
 	done
diff --git a/test/cases/db-repo-remove.bats b/test/cases/db-repo-remove.bats
index 165b759..6145f25 100755
--- a/test/cases/db-repo-remove.bats
+++ b/test/cases/db-repo-remove.bats
@@ -6,9 +6,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -32,9 +30,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -55,7 +51,7 @@ load ../lib/common
 	local pkgbase
 
 	for pkgbase in ${pkgs[@]}; do
-		releasePackage extra ${pkgbase} any
+		releasePackage extra ${pkgbase}
 	done
 
 	db-update
diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats
index cf60fcd..2fafcd8 100755
--- a/test/cases/db-update.bats
+++ b/test/cases/db-update.bats
@@ -6,9 +6,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -21,15 +19,15 @@ load ../lib/common
 }
 
 @test "add single simple package" {
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-single-arch'
 	db-update
-	checkPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686'
+	checkPackage extra 'pkg-single-arch-1-1-x86_64.pkg.tar.xz' 'x86_64'
 }
 
 @test "add single epoch package" {
-	releasePackage extra 'pkg-simple-epoch' 'i686'
+	releasePackage extra 'pkg-single-epoch'
 	db-update
-	checkPackage extra 'pkg-simple-epoch-1:1-1-i686.pkg.tar.xz' 'i686'
+	checkPackage extra 'pkg-single-epoch-1:1-1-x86_64.pkg.tar.xz' 'x86_64'
 }
 
 @test "add any packages" {
@@ -37,7 +35,7 @@ load ../lib/common
 	local pkgbase
 
 	for pkgbase in "${pkgs[@]}"; do
-		releasePackage extra "${pkgbase}" any
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -54,9 +52,7 @@ load ../lib/common
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -71,23 +67,23 @@ load ../lib/common
 }
 
 @test "update any package" {
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 	db-update
 
-	updatePackage pkg-any-a any
+	updatePackage pkg-any-a
 
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 	db-update
 
 	checkPackage extra pkg-any-a-1-2-any.pkg.tar.xz any
 }
 
 @test "update any package to different repositories at once" {
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 
-	updatePackage pkg-any-a any
+	updatePackage pkg-any-a
 
-	releasePackage testing pkg-any-a any
+	releasePackage testing pkg-any-a
 
 	db-update
 
@@ -96,21 +92,21 @@ load ../lib/common
 }
 
 @test "update same any package to same repository" {
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 	db-update
 	checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
 
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 	run db-update
 	[ "$status" -ne 0 ]
 }
 
 @test "update same any package to different repositories" {
-	releasePackage extra pkg-any-a any
+	releasePackage extra pkg-any-a
 	db-update
 	checkPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
 
-	releasePackage testing pkg-any-a any
+	releasePackage testing pkg-any-a
 	run db-update
 	[ "$status" -ne 0 ]
 
@@ -123,9 +119,7 @@ load ../lib/common
 	local pkgbase='pkg-split-a'
 	local arch
 
-	for arch in "${ARCH_BUILD[@]}"; do
-		releasePackage "${repo}" "${pkgbase}" "${arch}"
-	done
+	releasePackage "${repo}" "${pkgbase}"
 
 	# remove a split package to make db-update fail
 	rm "${STAGING}/extra/${pkgbase}1-"*
@@ -140,26 +134,26 @@ load ../lib/common
 
 @test "unknown repo" {
 	mkdir "${STAGING}/unknown/"
-	releasePackage extra 'pkg-simple-a' 'i686'
-	releasePackage unknown 'pkg-simple-b' 'i686'
+	releasePackage extra 'pkg-any-a'
+	releasePackage unknown 'pkg-any-b'
 	db-update
-	checkPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686'
+	checkPackage extra 'pkg-any-a-1-1-any.pkg.tar.xz' any
 	[ ! -e "${FTP_BASE}/unknown" ]
 	rm -rf "${STAGING}/unknown/"
 }
 
 @test "add unsigned package fails" {
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 	rm "${STAGING}"/extra/*.sig
 	run db-update
 	[ "$status" -ne 0 ]
 
-	checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+	checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
 }
 
 @test "add invalid signed package fails" {
 	local p
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 	for p in "${STAGING}"/extra/*${PKGEXT}; do
 		unxz "$p"
 		xz -0 "${p%%.xz}"
@@ -167,37 +161,37 @@ load ../lib/common
 	run db-update
 	[ "$status" -ne 0 ]
 
-	checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+	checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
 }
 
 @test "add broken signature fails" {
 	local s
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 	for s in "${STAGING}"/extra/*.sig; do
 		echo 0 > "$s"
 	done
 	run db-update
 	[ "$status" -ne 0 ]
 
-	checkRemovedPackage extra pkg-simple-a-1-1-i686.pkg.tar.xz i686
+	checkRemovedPackage extra pkg-any-a-1-1-any.pkg.tar.xz any
 }
 
 @test "add package with inconsistent version fails" {
 	local p
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 
 	for p in "${STAGING}"/extra/*; do
-		mv "${p}" "${p/pkg-simple-a-1/pkg-simple-a-2}"
+		mv "${p}" "${p/pkg-any-a-1/pkg-any-a-2}"
 	done
 
 	run db-update
 	[ "$status" -ne 0 ]
-	checkRemovedPackage extra 'pkg-simple-a-2-1-i686.pkg.tar.xz' 'i686'
+	checkRemovedPackage extra 'pkg-any-a-2-1-any.pkg.tar.xz' 'any'
 }
 
 @test "add package with inconsistent name fails" {
 	local p
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 
 	for p in "${STAGING}"/extra/*; do
 		mv "${p}" "${p/pkg-/foo-pkg-}"
@@ -205,40 +199,38 @@ load ../lib/common
 
 	run db-update
 	[ "$status" -ne 0 ]
-	checkRemovedPackage extra 'foo-pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686'
+	checkRemovedPackage extra 'foo-pkg-any-a-1-1-any.pkg.tar.xz' 'any'
 }
 
 @test "add package with inconsistent pkgbuild fails" {
 	skip # abslibre is broken
-	releasePackage extra 'pkg-simple-a' 'i686'
+	releasePackage extra 'pkg-any-a'
 
-	updateRepoPKGBUILD 'pkg-simple-a' extra i686
+	updateRepoPKGBUILD 'pkg-any-a' extra any
 
 	run db-update
 	[ "$status" -ne 0 ]
-	checkRemovedPackage extra 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686'
+	checkRemovedPackage extra 'pkg-any-a-1-1-any.pkg.tar.xz' 'any'
 }
 
 @test "add package with insufficient permissions fails" {
-	releasePackage core 'pkg-simple-a' 'i686'
-	releasePackage extra 'pkg-simple-b' 'i686'
+	releasePackage core 'pkg-any-a'
+	releasePackage extra 'pkg-any-b'
 
 	chmod -xwr ${FTP_BASE}/core/os/i686
 	run db-update
 	[ "$status" -ne 0 ]
 	chmod +xwr ${FTP_BASE}/core/os/i686
 
-	checkRemovedPackage core 'pkg-simple-a-1-1-i686.pkg.tar.xz' 'i686'
-	checkRemovedPackage extra 'pkg-simple-b-1-1-i686.pkg.tar.xz' 'i686'
+	checkRemovedPackage core 'pkg-any-a-1-1-any.pkg.tar.xz' 'any'
+	checkRemovedPackage extra 'pkg-any-b-1-1-any.pkg.tar.xz' 'any'
 }
 
 @test "package has to be a regular file" {
 	local p
 	local target=$(mktemp -d)
 
-	for arch in "${ARCH_BUILD[@]}"; do
-		releasePackage extra 'pkg-simple-a' $arch
-	done
+	releasePackage extra 'pkg-simple-a'
 
 	for p in "${STAGING}"/extra/*i686*; do
 		mv "${p}" "${target}"
diff --git a/test/cases/ftpdir-cleanup.bats b/test/cases/ftpdir-cleanup.bats
index 2cb2e59..1a46fdf 100755
--- a/test/cases/ftpdir-cleanup.bats
+++ b/test/cases/ftpdir-cleanup.bats
@@ -16,9 +16,7 @@ __checkRepoRemovedPackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -44,9 +42,7 @@ __checkRepoRemovedPackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -69,7 +65,7 @@ __checkRepoRemovedPackage() {
 	local arch='any'
 
 	for pkgbase in "${pkgs[@]}"; do
-		releasePackage extra "${pkgbase}" any
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -91,9 +87,7 @@ __checkRepoRemovedPackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -122,9 +116,7 @@ __checkRepoRemovedPackage() {
 	local arch
 
 	for pkgbase in ${pkgs[@]}; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra ${pkgbase} ${arch}
-		done
+		releasePackage extra ${pkgbase}
 	done
 
 	db-update
diff --git a/test/cases/packages.bats b/test/cases/packages.bats
index 3e0246b..657de91 100755
--- a/test/cases/packages.bats
+++ b/test/cases/packages.bats
@@ -15,16 +15,16 @@ load ../lib/common
 
 	for pkgbase in "${tmp}"/*; do
 		pushd "${pkgbase}"
+		run namcap -e pkgnameindesc,tags PKGBUILD
+		[ -z "$output" ]
+
+		__buildPackage
+
 		# FIXME: Is overriding IFS a bats bug?
 		IFS=' '
 		pkgarchs=($(. PKGBUILD; echo ${arch[@]}))
 		for pkgarch in "${pkgarchs[@]}"; do
 			echo "Building ${pkgbase} on ${pkgarch}"
-			run namcap -e pkgnameindesc,tags PKGBUILD
-			[ -z "$output" ]
-
-			__buildPackage "$pkgarch"
-
 			if [[ $pkgarch != "$ARCH_HOST" && $pkgarch != any ]]; then
 				# Cross-arch namcap is silly:
 				#
diff --git a/test/cases/sourceballs.bats b/test/cases/sourceballs.bats
index ba06b8d..f5e41a8 100755
--- a/test/cases/sourceballs.bats
+++ b/test/cases/sourceballs.bats
@@ -16,9 +16,7 @@ __checkRemovedSourcePackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 	db-update
 
@@ -33,7 +31,7 @@ __checkRemovedSourcePackage() {
 	local pkgbase
 
 	for pkgbase in "${pkgs[@]}"; do
-		releasePackage extra "${pkgbase}" any
+		releasePackage extra "${pkgbase}"
 	done
 	db-update
 
@@ -50,9 +48,7 @@ __checkRemovedSourcePackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 
 	db-update
@@ -69,9 +65,7 @@ __checkRemovedSourcePackage() {
 	local arch
 
 	for pkgbase in "${pkgs[@]}"; do
-		for arch in "${ARCH_BUILD[@]}"; do
-			releasePackage extra "${pkgbase}" "${arch}"
-		done
+		releasePackage extra "${pkgbase}"
 	done
 	db-update
 	sourceballs
diff --git a/test/fixtures/pkg-single-arch/PKGBUILD b/test/fixtures/pkg-single-arch/PKGBUILD
new file mode 100644
index 0000000..581efb4
--- /dev/null
+++ b/test/fixtures/pkg-single-arch/PKGBUILD
@@ -0,0 +1,12 @@
+pkgname=pkg-single-arch
+pkgver=1
+pkgrel=1
+pkgdesc="A package called ${pkgname}"
+arch=('x86_64')
+url='http://www.archlinux.org/'
+license=('GPL')
+depends=('glibc')
+
+package() {
+	install -D -m755 /bin/true ${pkgdir}/usr/bin/${pkgname}
+}
diff --git a/test/fixtures/pkg-single-epoch/PKGBUILD b/test/fixtures/pkg-single-epoch/PKGBUILD
new file mode 100644
index 0000000..c1bc3d6
--- /dev/null
+++ b/test/fixtures/pkg-single-epoch/PKGBUILD
@@ -0,0 +1,13 @@
+pkgname=pkg-single-epoch
+pkgver=1
+pkgrel=1
+epoch=1
+pkgdesc="A package called ${pkgname}"
+arch=('x86_64')
+url='http://www.archlinux.org/'
+license=('GPL')
+depends=('glibc')
+
+package() {
+	install -D -m755 /bin/true ${pkgdir}/usr/bin/${pkgname}
+}
diff --git a/test/lib/common.bash b/test/lib/common.bash
index ea01a2d..9c1ae4c 100644
--- a/test/lib/common.bash
+++ b/test/lib/common.bash
@@ -35,37 +35,44 @@ __getCheckSum() {
 }
 
 __buildPackage() {
-	local arch=$1
+	local pkgdest=${1:-.}
 	local p
-	local checkSum
+	local cache
+	local pkgarches
+	local tarch
 	local pkgnames
 
-	if [[ -n ${PACKAGE_CACHE} ]]; then
-		checkSum=$(__getCheckSum PKGBUILD)
-			# TODO: Be more specific
-			if cp -av ${PACKAGE_CACHE}/${checkSum}/*-${arch}${PKGEXT}{,.sig} .; then
-				return 0
-			fi
+	if [[ -n ${BUILDDIR} ]]; then
+		cache=${BUILDDIR}/$(__getCheckSum PKGBUILD)
+		if [[ -d ${cache} ]]; then
+			cp -Lv ${cache}/*${PKGEXT}{,.sig} ${pkgdest}
+			return 0
+		else
+			mkdir -p ${cache}
+		fi
 	fi
 
-	if [ "${arch}" == 'any' ]; then
-		sudo librechroot -n "dbscripts@${arch}" make
-	else
-		sudo librechroot -n "dbscripts@${arch}" -A "$arch" make
-	fi
-	sudo libremakepkg -n "dbscripts@${arch}"
+	pkgarches=($(. PKGBUILD; echo ${arch[@]}))
+	for tarch in ${pkgarches[@]}; do
+		if [ "${tarch}" == 'any' ]; then
+			sudo librechroot -n "dbscripts@${tarch}" make
+		else
+			sudo librechroot -n "dbscripts@${tarch}" -A "$tarch" make
+		fi
+		sudo PKGDEST="${pkgdest}" libremakepkg -n "dbscripts@${tarch}"
+	done
 
 	pkgnames=($(. PKGBUILD; print_all_package_names))
+	pushd ${pkgdest}
 	for p in ${pkgnames[@]/%/${PKGEXT}}; do
-		[[ ${p} = *-${arch}${PKGEXT} ]] || continue
 		# Manually sign packages as "makepkg --sign" is buggy
 		gpg -v --detach-sign --no-armor --use-agent ${p}
 
-		if [[ -n ${PACKAGE_CACHE} ]]; then
-			mkdir -p ${PACKAGE_CACHE}/${checkSum}
-			cp -Lv ${p}{,.sig} ${PACKAGE_CACHE}/${checkSum}/
+		if [[ -n ${BUILDDIR} ]]; then
+			cp -Lv ${p}{,.sig} ${cache}/
 		fi
 	done
+	popd
 }
 
 setup() {
@@ -128,11 +135,8 @@ teardown() {
 releasePackage() {
 	local repo=$1
 	local pkgbase=$2
-	local arch=$3
-	local a
-	local p
-	local pkgver
-	local pkgname
+	local pkgarches
+	local tarch
 
 	if [ ! -d "${TMP}/svn-packages-copy/${pkgbase}/trunk" ]; then
 		mkdir -p "${TMP}/svn-packages-copy/${pkgbase}"/{trunk,repos}
@@ -142,23 +146,21 @@ releasePackage() {
 	fi
 
 	pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/"
-	__buildPackage ${arch}
-	xbs release-client "${repo}" "${arch}"
-	pkgver=$(. PKGBUILD; get_full_version)
-	pkgname=($(. PKGBUILD; echo "${pkgname[@]}"))
-	for p in "${pkgname[@]}"; do
-		cp "${p}-${pkgver}-${arch}"${PKGEXT}{,.sig} "${STAGING}/${repo}/"
+
+	__buildPackage "${STAGING}"/${repo}
+	pkgarches=($(. PKGBUILD; echo ${arch[@]}))
+	for tarch in "${pkgarches[@]}"; do
+		xbs release-client "${repo}" "${tarch}"
 	done
 	popd
 }
 
 updatePackage() {
 	local pkgbase=$1
-	local arch=$2
 
 	pushd "${TMP}/svn-packages-copy/${pkgbase}/trunk/"
 	__updatePKGBUILD
-	__buildPackage ${arch}
+	__buildPackage
 	popd
 }
 
-- 
2.16.2




More information about the Dev mailing list