[dbscripts,v2,2/5] Fix overloading PKGEXT to mean two things.

Message ID 20180219201145.14057-3-eschwartz@archlinux.org
State Accepted
Headers show
Series Fix ambiguous uses of $PKGEXT | expand

Commit Message

Emil Velikov via arch-projects Feb. 19, 2018, 8:11 p.m. UTC
PKGEXT is a makepkg variable referring to a fixed filename suffix, but
we were also using it to mean a bash glob referring to candidate
filenames. This is wrong, so rename it to PKGEXTS which is more
descriptive of its purpose.

Exclude the testsuite from this change, as the testsuite actually uses
PKGEXT for its intended purpose. Fix the testsuite to consistently use
PKGEXT, as it hardcoded the file extension in several cases, and extract
its value from the makepkg.conf we ship.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
---

This is new, and renders some old things obsolete. I see no need to jump
through more hoops than strictly necessary, plus, lots of this was
technically broken anyway -- but it worked because again, the testsuite
is not using PKGEXT in the dbscripts sense, rather in the makepkg sense.

I'm hoping some of the logic there can be replaced with my --packagelist
fixes for makepkg 5.1 as well.

 config                         | 2 +-
 cron-jobs/ftpdir-cleanup       | 6 +++---
 db-functions                   | 4 ++--
 db-move                        | 4 ++--
 db-update                      | 8 ++++----
 test/cases/db-repo-add.bats    | 6 +++---
 test/cases/db-update.bats      | 3 +--
 test/cases/ftpdir-cleanup.bats | 6 +++---
 test/lib/common.bash           | 6 ++++--
 9 files changed, 23 insertions(+), 22 deletions(-)

Patch

diff --git a/config b/config
index d2c1942..5bb3b16 100644
--- a/config
+++ b/config
@@ -25,7 +25,7 @@  TMPDIR="/var/tmp"
 ARCHES=(x86_64)
 DBEXT=".db.tar.gz"
 FILESEXT=".files.tar.gz"
-PKGEXT=".pkg.tar.?z"
+PKGEXTS=".pkg.tar.?z"
 SRCEXT=".src.tar.gz"
 
 # Allowed licenses: get sourceballs only for licenses in this array
diff --git a/cron-jobs/ftpdir-cleanup b/cron-jobs/ftpdir-cleanup
index c771950..630efa8 100755
--- a/cron-jobs/ftpdir-cleanup
+++ b/cron-jobs/ftpdir-cleanup
@@ -38,7 +38,7 @@  for repo in ${PKGREPOS[@]}; do
 			continue
 		fi
 		# get a list of actual available package files
-		find "${FTP_BASE}/${repo}/os/${arch}" -xtype f -name "*${PKGEXT}" -printf '%f\n' | sort > "${WORKDIR}/repo-${repo}-${arch}"
+		find "${FTP_BASE}/${repo}/os/${arch}" -xtype f -name "*${PKGEXTS}" -printf '%f\n' | sort > "${WORKDIR}/repo-${repo}-${arch}"
 		# get a list of package files defined in the repo db
 		bsdtar -xOf "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}" | awk '/^%FILENAME%/{getline;print}' | sort > "${WORKDIR}/db-${repo}-${arch}"
 
@@ -62,7 +62,7 @@  for repo in ${PKGREPOS[@]}; do
 done
 
 # get a list of all available packages in the pacakge pool
-find "$FTP_BASE/${PKGPOOL}" -name "*${PKGEXT}" -printf '%f\n' | sort > "${WORKDIR}/pool"
+find "$FTP_BASE/${PKGPOOL}" -name "*${PKGEXTS}" -printf '%f\n' | sort > "${WORKDIR}/pool"
 # create a list of packages in our db
 find "${WORKDIR}" -maxdepth 1 -type f -name 'db-*' -exec cat {} \; | sort -u > "${WORKDIR}/db"
 
@@ -75,7 +75,7 @@  if (( ${#old_pkgs[@]} >= 1 )); then
 	done
 fi
 
-old_pkgs=($(find ${CLEANUP_DESTDIR} -type f -name "*${PKGEXT}" -mtime +${CLEANUP_KEEP} -printf '%f\n'))
+old_pkgs=($(find ${CLEANUP_DESTDIR} -type f -name "*${PKGEXTS}" -mtime +${CLEANUP_KEEP} -printf '%f\n'))
 if (( ${#old_pkgs[@]} >= 1 )); then
 	msg "Removing old packages from the cleanup directory..."
 	for old_pkg in ${old_pkgs[@]}; do
diff --git a/db-functions b/db-functions
index e8949d7..e8eb2bc 100644
--- a/db-functions
+++ b/db-functions
@@ -374,8 +374,8 @@  check_pkgrepos() {
 	local pkgver="$(getpkgver ${pkgfile})" || return 1
 	local pkgarch="$(getpkgarch ${pkgfile})" || return 1
 
-	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}${PKGEXT} ]] && return 1
-	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}${PKGEXT}.sig ]] && return 1
+	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}${PKGEXTS} ]] && return 1
+	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}${PKGEXTS}.sig ]] && return 1
 	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/} ]] && return 1
 	[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/}.sig ]] && return 1
 
diff --git a/db-move b/db-move
index 37a9884..fb7ebac 100755
--- a/db-move
+++ b/db-move
@@ -49,7 +49,7 @@  for pkgbase in ${args[@]:2}; do
 
 			for pkgname in ${pkgnames[@]}; do
 				for tarch in ${tarches[@]}; do
-					getpkgfile "${ftppath_from}/${tarch}/"${pkgname}-${pkgver}-${pkgarch}${PKGEXT} >/dev/null
+					getpkgfile "${ftppath_from}/${tarch}/"${pkgname}-${pkgver}-${pkgarch}${PKGEXTS} >/dev/null
 				done
 			done
 			continue 2
@@ -95,7 +95,7 @@  for pkgbase in ${args[@]:2}; do
 
 			for pkgname in ${pkgnames[@]}; do
 				for tarch in ${tarches[@]}; do
-					pkgpath=$(getpkgfile "${ftppath_from}/${tarch}/"${pkgname}-${pkgver}-${pkgarch}${PKGEXT})
+					pkgpath=$(getpkgfile "${ftppath_from}/${tarch}/"${pkgname}-${pkgver}-${pkgarch}${PKGEXTS})
 					pkgfile="${pkgpath##*/}"
 
 					ln -s "../../../${PKGPOOL}/${pkgfile}" ${ftppath_to}/${tarch}/
diff --git a/db-update b/db-update
index 45755a4..a8d885a 100755
--- a/db-update
+++ b/db-update
@@ -9,7 +9,7 @@  if (( $# >= 1 )); then
 fi
 
 # Find repos with packages to release
-if ! staging_repos=($(find  "${STAGING}" -mindepth 1 -type f -name "*${PKGEXT}" -printf '%h\n' | sort -u)); then
+if ! staging_repos=($(find  "${STAGING}" -mindepth 1 -type f -name "*${PKGEXTS}" -printf '%h\n' | sort -u)); then
 	die "Could not read %s" "$STAGING"
 fi
 
@@ -32,7 +32,7 @@  for repo in ${repos[@]}; do
 	if ! check_repo_permission "${repo}"; then
 		die "You don't have permission to update packages in %s" "$repo"
 	fi
-	pkgs=($(getpkgfiles "${STAGING}/${repo}/"*${PKGEXT}))
+	pkgs=($(getpkgfiles "${STAGING}/${repo}/"*${PKGEXTS}))
 	if (( $? == 0 )); then
 		for pkg in ${pkgs[@]}; do
 			if [[ -h ${pkg} ]]; then
@@ -70,10 +70,10 @@  done
 
 for repo in ${repos[@]}; do
 	msg "Updating [%s]..." "$repo"
-	any_pkgs=($(getpkgfiles "${STAGING}/${repo}/"*-any${PKGEXT} 2>/dev/null))
+	any_pkgs=($(getpkgfiles "${STAGING}/${repo}/"*-any${PKGEXTS} 2>/dev/null))
 	for pkgarch in ${ARCHES[@]}; do
 		add_pkgs=()
-		arch_pkgs=($(getpkgfiles "${STAGING}/${repo}/"*-${pkgarch}${PKGEXT} 2>/dev/null))
+		arch_pkgs=($(getpkgfiles "${STAGING}/${repo}/"*-${pkgarch}${PKGEXTS} 2>/dev/null))
 		for pkg in ${arch_pkgs[@]} ${any_pkgs[@]}; do
 			pkgfile="${pkg##*/}"
 			msg2 "${pkgfile} (${pkgarch})"
diff --git a/test/cases/db-repo-add.bats b/test/cases/db-repo-add.bats
index 9fde381..ac91058 100644
--- a/test/cases/db-repo-add.bats
+++ b/test/cases/db-repo-add.bats
@@ -31,7 +31,7 @@  __movePackageToRepo() {
 		releasePackage extra ${pkgbase}
 		for arch in ${arches[@]}; do
 			__movePackageToRepo extra ${pkgbase} ${arch}
-			db-repo-add extra ${arch} ${pkgbase}-1-1-${arch}.pkg.tar.xz
+			db-repo-add extra ${arch} ${pkgbase}-1-1-${arch}${PKGEXT}
 		done
 	done
 
@@ -54,7 +54,7 @@  __movePackageToRepo() {
 		add_pkgs=()
 		for pkgbase in ${pkgs[@]}; do
 			__movePackageToRepo extra ${pkgbase} ${arch}
-			add_pkgs+=("${pkgbase}-1-1-${arch}.pkg.tar.xz")
+			add_pkgs+=("${pkgbase}-1-1-${arch}${PKGEXT}")
 		done
 		db-repo-add extra ${arch} ${add_pkgs[@]}
 	done
@@ -73,7 +73,7 @@  __movePackageToRepo() {
 	for pkgbase in ${pkgs[@]}; do
 		releasePackage extra ${pkgbase}
 		__movePackageToRepo extra ${pkgbase} any
-		db-repo-add extra any ${pkgbase}-1-1-any.pkg.tar.xz
+		db-repo-add extra any ${pkgbase}-1-1-any${PKGEXT}
 	done
 
 	for pkgbase in ${pkgs[@]}; do
diff --git a/test/cases/db-update.bats b/test/cases/db-update.bats
index 1da7eef..349b195 100644
--- a/test/cases/db-update.bats
+++ b/test/cases/db-update.bats
@@ -151,8 +151,7 @@  load ../lib/common
 	local p
 	releasePackage extra 'pkg-any-a'
 	for p in "${STAGING}"/extra/*${PKGEXT}; do
-		unxz $p
-		xz -0 ${p%%.xz}
+		printf '%s\n' "Not a real package" | gpg -v --detach-sign --no-armor --use-agent - > "${p}.sig"
 	done
 	run db-update
 	[ "$status" -ne 0 ]
diff --git a/test/cases/ftpdir-cleanup.bats b/test/cases/ftpdir-cleanup.bats
index 6280ce0..fd485f3 100644
--- a/test/cases/ftpdir-cleanup.bats
+++ b/test/cases/ftpdir-cleanup.bats
@@ -82,7 +82,7 @@  __checkRepoRemovedPackage() {
 	db-remove extra any pkg-any-a
 	ftpdir-cleanup
 
-	local pkg1='pkg-any-a-1-1-any.pkg.tar.xz'
+	local pkg1="pkg-any-a-1-1-any${PKGEXT}"
 	checkRemovedPackage extra 'pkg-any-a'
 	for arch in ${arches[@]}; do
 		__checkRepoRemovedPackage extra 'pkg-any-a' ${arch}
@@ -138,8 +138,8 @@  __checkRepoRemovedPackage() {
 
 	ftpdir-cleanup
 
-	local pkgfilea="pkg-simple-a-1-1-${arch}.pkg.tar.xz"
-	local pkgfileb="pkg-simple-b-1-1-${arch}.pkg.tar.xz"
+	local pkgfilea="pkg-simple-a-1-1-${arch}${PKGEXT}"
+	local pkgfileb="pkg-simple-b-1-1-${arch}${PKGEXT}"
 	for arch in ${arches[@]}; do
 		touch -d "-$(expr ${CLEANUP_KEEP} + 1)days" ${CLEANUP_DESTDIR}/${pkgfilea}{,.sig}
 	done
diff --git a/test/lib/common.bash b/test/lib/common.bash
index 540e403..1b257ab 100644
--- a/test/lib/common.bash
+++ b/test/lib/common.bash
@@ -34,9 +34,9 @@  __buildPackage() {
 	pkgarches=($(. PKGBUILD; echo ${arch[@]}))
 	for tarch in ${pkgarches[@]}; do
 		if [ "${tarch}" == 'any' ]; then
-			PKGDEST=${pkgdest} makepkg -c
+			PKGDEST=${pkgdest} makepkg --config "$MAKEPKG_CONF" -c
 		else
-			PKGDEST=${pkgdest} CARCH=${tarch} makepkg -c
+			PKGDEST=${pkgdest} CARCH=${tarch} makepkg --config "$MAKEPKG_CONF" -c
 		fi
 	done
 
@@ -82,6 +82,8 @@  setup() {
 	local pkg
 	local r
 	local a
+	MAKEPKG_CONF="$PWD/../cron-jobs/makepkg.conf"
+	PKGEXT="$(. "$MAKEPKG_CONF"; printf '%s' "$PKGEXT")"
 
 	TMP="$(mktemp -d)"