@@ -23,10 +23,12 @@ LOCK_TIMEOUT=300
STAGING="$HOME/staging"
TMPDIR="/var/tmp"
ARCHES=(x86_64)
+# prescriptive
DBEXT=".db.tar.gz"
FILESEXT=".files.tar.gz"
-PKGEXT=".pkg.tar.?z"
SRCEXT=".src.tar.gz"
+# descriptive; bash glob listing allowed extensions.
+PKGEXT_glob=".pkg.tar.?z"
# Allowed licenses: get sourceballs only for licenses in this array
ALLOWED_LICENSES=('GPL' 'GPL1' 'GPL2' 'GPL3' 'LGPL' 'LGPL1' 'LGPL2' 'LGPL2.1' 'LGPL3')
@@ -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 "*${PKGEXT_glob}" -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 "*${PKGEXT_glob}" -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[@]} -ge 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 "*${PKGEXT_glob}" -mtime +${CLEANUP_KEEP} -printf '%f\n'))
if [ ${#old_pkgs[@]} -ge 1 ]; then
msg "Removing old packages from the cleanup directory..."
for old_pkg in ${old_pkgs[@]}; do
@@ -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}${PKGEXT_glob} ]] && return 1
+ [[ -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-${pkgarch}${PKGEXT_glob}.sig ]] && return 1
[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/} ]] && return 1
[[ -f ${FTP_BASE}/${PKGPOOL}/${pkgfile##*/}.sig ]] && return 1
@@ -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}${PKGEXT_glob} >/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}${PKGEXT_glob})
pkgfile="${pkgpath##*/}"
ln -s "../../../${PKGPOOL}/${pkgfile}" ${ftppath_to}/${tarch}/
@@ -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 "*${PKGEXT_glob}" -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}/"*${PKGEXT_glob}))
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${PKGEXT_glob} 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}${PKGEXT_glob} 2>/dev/null))
for pkg in ${arch_pkgs[@]} ${any_pkgs[@]}; do
pkgfile="${pkg##*/}"
msg2 "${pkgfile} (${pkgarch})"
@@ -14,10 +14,10 @@ __movePackageToRepo() {
fi
# FIXME: pkgbase might not be part of the package filename
- mv -v "${STAGING}"/${repo}/${pkgbase}-*-*-${arch}${PKGEXT}{,.sig} "${FTP_BASE}/${PKGPOOL}/"
+ mv -v "${STAGING}"/${repo}/${pkgbase}-*-*-${arch}${PKGEXT_glob}{,.sig} "${FTP_BASE}/${PKGPOOL}/"
for tarch in ${tarches[@]}; do
- ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT} "${FTP_BASE}/${repo}/os/${tarch}/"
- ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT}.sig "${FTP_BASE}/${repo}/os/${tarch}/"
+ ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT_glob} "${FTP_BASE}/${repo}/os/${tarch}/"
+ ln -sv ${FTP_BASE}/${PKGPOOL}/${pkgbase}-*-*-${arch}${PKGEXT_glob}.sig "${FTP_BASE}/${repo}/os/${tarch}/"
done
}
@@ -92,7 +92,7 @@ load ../lib/common
db-update
checkPackage extra pkg-any-a
- PKGEXT=.pkg.tar.gz releasePackage extra pkg-any-a
+ PKGEXT=.pkg.tar.gz PKGEXT_glob=.pkg.tar.gz releasePackage extra pkg-any-a
run db-update
[[ -z $BUILDDIR ]] || rm -f "${BUILDDIR}/$(__getCheckSum "${TMP}/svn-packages-copy/pkg-any-a/trunk/PKGBUILD")"/*.pkg.tar.gz{,.sig}
[ "$status" -ne 0 ]
@@ -151,7 +151,7 @@ load ../lib/common
@test "add invalid signed package fails" {
local p
releasePackage extra 'pkg-any-a'
- for p in "${STAGING}"/extra/*${PKGEXT}; do
+ for p in "${STAGING}"/extra/*${PKGEXT_glob}; do
unxz $p
xz -0 ${p%%.xz}
done
@@ -13,8 +13,8 @@ __checkRepoRemovedPackage() {
local pkgname
for pkgname in $(__getPackageNamesFromPackageBase ${pkgbase}); do
- [[ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-*${PKGEXT} ]]
- [[ ! -f ${FTP_BASE}/${repo}/os/${repoarch}/${pkgname}-*${PKGEXT} ]]
+ [[ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgname}-*${PKGEXT_glob} ]]
+ [[ ! -f ${FTP_BASE}/${repo}/os/${repoarch}/${pkgname}-*${PKGEXT_glob} ]]
done
}
@@ -26,11 +26,12 @@ __buildPackage() {
local pkgarches
local tarch
local pkgnames
+ local PKGEXT="${PKGEXT:-.pkg.tar.xz}"
if [[ -n ${BUILDDIR} ]]; then
cache=${BUILDDIR}/$(__getCheckSum PKGBUILD)
- if __isGlobfile "${cache}"/*${PKGEXT}; then
- cp -Lv ${cache}/*${PKGEXT}{,.sig} ${pkgdest}
+ if __isGlobfile "${cache}"/*${PKGEXT_glob}; then
+ cp -Lv ${cache}/*${PKGEXT_glob}{,.sig} ${pkgdest}
return 0
else
mkdir -p ${cache}
@@ -174,6 +175,7 @@ checkPackageDB() {
local repoarches
local pkgfile
local pkgname
+ local PKGEXT="${PKGEXT:-.pkg.tar.xz}"
# FIXME: We guess the location of the PKGBUILD used for this repo
# We cannot read from trunk as __updatePKGBUILD() might have bumped the version
@@ -221,7 +223,7 @@ checkPackageDB() {
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 -q "${pkgfile%${PKGEXT}}"
+ bsdtar -xf "${FTP_BASE}/${repo}/os/${repoarch}/${repo}${db%.tar.*}" -O | grep -q "${pkgfile%${PKGEXT_glob}}"
done
done
done
From: Luke Shumaker <lukeshu@parabola.nu> Unlike the other *EXT variables, which are prescriptive, PKGEXT is descriptive, and is a glob (this has always been the case). This is confusing because of the other variables, and because it is used prescriptively in makepkg.conf. Simply put, the configuration variable name PKGEXT is overloaded. Let's rename the glob version, to make things clearer. Now, in test/lib/common.bash, there *are* 2 places where it is used prescriptively. How does that work!? The value has a glob character in it! Well, because of sloppy quoting, it just kind of works out. So, in those places, *don't* rename it to PKGEXT_glob, but introduce a local PKGEXT variable with a prescriptive value. In db-update.bats, there's a place where it was set to .pkg.tar.gz both descriptively and prescriptively; so set both PKGEXT and PKGEXT_glob in that case. --- config | 4 +++- 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 | 4 ++-- test/cases/ftpdir-cleanup.bats | 4 ++-- test/lib/common.bash | 8 +++++--- 9 files changed, 26 insertions(+), 22 deletions(-)