[Dev] [dbscripts] [PATCH 5/6] Cache already built packages

Luke Shumaker lukeshu at lukeshu.com
Tue Apr 3 20:10:58 GMT 2018


From: Pierre Schmitz <pierre at archlinux.de>

(cherry picked from commit 59d495b55f52253518fe1a184627e7259034f978)
---
 test/Makefile        |  6 ++++--
 test/lib/common.bash | 25 +++++++++++++++++++------
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/test/Makefile b/test/Makefile
index d9437bf..5ed3910 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,8 +1,10 @@
+PACKAGE_CACHE:=$(shell mktemp -d)
+
 test:
-	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) bats cases
+	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) bats cases
 
 test-coverage:
-	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) kcov \
+	PATH=$(CURDIR)/../:$(CURDIR)/../cron-jobs/:$(PATH) PACKAGE_CACHE=$(PACKAGE_CACHE) kcov \
 		--include-path=$(CURDIR)/../ \
 		--exclude-path=$(CURDIR)/../test,$(CURDIR)/../cron-jobs/makepkg.conf,$(CURDIR)/../config \
 		$(COVERAGE_DIR) \
diff --git a/test/lib/common.bash b/test/lib/common.bash
index c61c948..7704098 100644
--- a/test/lib/common.bash
+++ b/test/lib/common.bash
@@ -8,22 +8,30 @@ die() {
 	exit 1
 }
 
+__getCheckSum() {
+	local result=($(sha1sum $1))
+	echo ${result[0]}
+}
+
 __buildPackage() {
 	local arch=$1
 	local pkgver
 	local pkgname
 	local a
 	local p
+	local checkSum
+
+	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
+	fi
 
 	pkgname=($(. PKGBUILD; echo "${pkgname[@]}"))
 	pkgver=$(. PKGBUILD; get_full_version)
 
-	for p in "${pkgname[@]}"; do
-		if [ -f "${p}-${pkgver}-${arch}"${PKGEXT} ]; then
-			return 0
-		fi
-	done
-
 	if [ "${arch}" == 'any' ]; then
 		sudo librechroot -n "dbscripts@${arch}" make
 	else
@@ -36,6 +44,11 @@ __buildPackage() {
 			gpg --detach-sign --no-armor --use-agent "$file"
 		done
 	done
+
+	if [[ -n ${PACKAGE_CACHE} ]]; then
+		mkdir -p ${PACKAGE_CACHE}/${checkSum}
+		cp -av *-${arch}${PKGEXT}{,.sig} ${PACKAGE_CACHE}/${checkSum}/
+	fi
 }
 
 setup() {
-- 
2.16.2




More information about the Dev mailing list