On Tue, 03 Apr 2018 16:10:58 -0400, Luke Shumaker wrote: > > From: Pierre Schmitz <pie...@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
This glob is overly permissive, and copies too much. releasePackage calls __buildPackage from "${TMP}/svn-packages-copy/${pkgbase}/trunk/". This means that when we update a package, after the updated version is built, both v1 and v2 exist in that trunk/ directory. Then, this copies both the v1 and v2 .pkg.tar.gz files to the cache directory for v2. That is: On subsequent runs (e.i. with a cache hit) of __buildPackage for v2 of that package, it will look like makepkg magically built both v1 and v2 of the package, instead of just v2. This isn't really a problem right now because further down in releasePackage, when we copy the makepkg outputs to $STAGING, that glob is sufficiently strict and only copies the v2 outputs. But this could easily accidentially lead to weird breakage with a seemingly innocuous change assumes that everything that __buildPackage spits out is good (*ahem* 76f95dd139094dc2985b6733f23fcb098f07c64e). > } > > setup() { > -- > 2.16.2 -- Happy hacking, ~ Luke Shumaker _______________________________________________ Dev mailing list Dev@lists.parabola.nu https://lists.parabola.nu/mailman/listinfo/dev