summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2010-09-11 22:52:23 +0200
committerPierre Schmitz <pierre@archlinux.de>2010-09-11 22:52:23 +0200
commitf121126f8166fb6dc261ea82f2890ba6693d047e (patch)
treee909b76baee677c75970eff6f5ede36092abd391
parent8768380b62525537e55def81c3273eeb4f9a88d3 (diff)
downloaddbscripts-f121126f8166fb6dc261ea82f2890ba6693d047e.tar.gz
dbscripts-f121126f8166fb6dc261ea82f2890ba6693d047e.tar.xz
Use local config instead of guessing by hostname
Using the hostname to decide which repos to use is not releiable and hard to test. Instead use config.local to configure these. config files for sigurd and gerolde were added which can be copied or symlinked to config.local on the specific host.
-rw-r--r--config10
-rw-r--r--config.local.gerolde2
-rw-r--r--config.local.sigurd2
-rwxr-xr-xcron-jobs/ftpdir-cleanup14
-rw-r--r--db-functions29
-rwxr-xr-xdb-move8
-rwxr-xr-xdb-update4
-rw-r--r--test/lib/common.inc26
-rwxr-xr-xtest/runTest16
9 files changed, 48 insertions, 63 deletions
diff --git a/config b/config
index a595331..89e89fd 100644
--- a/config
+++ b/config
@@ -1,16 +1,10 @@
-
FTP_BASE="/srv/ftp"
SVNREPO="file:///srv/svn-packages"
SVNREPOCOMMUNITY="file:///srv/svn-community"
-declare -A PKGREPO
-PKGREPO['default']='core extra testing staging kde-unstable gnome-unstable'
-PKGREPO['sigurd']='community community-testing community-staging multilib multilib-testing'
-
-declare -A PKGPOOL
-PKGPOOL['default']='pool/packages'
-PKGPOOL['sigurd']='pool/community'
+PKGREPOS=()
+PKGPOOL=''
CLEANUP_DESTDIR="/srv/package-cleanup"
CLEANUP_DRYRUN=false
diff --git a/config.local.gerolde b/config.local.gerolde
new file mode 100644
index 0000000..dd8ba86
--- /dev/null
+++ b/config.local.gerolde
@@ -0,0 +1,2 @@
+PKGREPOS=('core' 'extra' 'testing' 'staging' 'kde-unstable' 'gnome-unstable')
+PKGPOOL='pool/packages'
diff --git a/config.local.sigurd b/config.local.sigurd
new file mode 100644
index 0000000..c8c3c9f
--- /dev/null
+++ b/config.local.sigurd
@@ -0,0 +1,2 @@
+PKGREPOS=('community' 'community-testing' 'community-staging' 'multilib' 'multilib-testing')
+PKGPOOL='pool/community'
diff --git a/cron-jobs/ftpdir-cleanup b/cron-jobs/ftpdir-cleanup
index 5c8776e..914ef8c 100755
--- a/cron-jobs/ftpdir-cleanup
+++ b/cron-jobs/ftpdir-cleanup
@@ -18,11 +18,9 @@ clean_pkg() {
fi
}
-repos=($(get_repos_for_host))
-
script_lock
-for repo in ${repos[@]}; do
+for repo in ${PKGREPOS[@]}; do
for arch in ${ARCHES[@]}; do
repo_lock ${repo} ${arch} || exit 1
done
@@ -30,7 +28,7 @@ done
${CLEANUP_DRYRUN} && warning 'dry run mode is active'
-for repo in ${repos[@]}; do
+for repo in ${PKGREPOS[@]}; do
for arch in ${ARCHES[@]}; do
if [ ! -f "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT}" ]; then
warning "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT} not found, skipping"
@@ -61,7 +59,7 @@ for repo in ${repos[@]}; do
done
# get a list of all available packages in the pacakge pool
-find "$FTP_BASE/$(get_pkgpool_for_host)" -name "*${PKGEXT}" -printf '%f\n' | sort > "${WORKDIR}/pool"
+find "$FTP_BASE/${PKGPOOL}" -name "*${PKGEXT}" -printf '%f\n' | sort > "${WORKDIR}/pool"
# create a list of packages in our db
cat "${WORKDIR}/db-"* | sort -u > "${WORKDIR}/db"
@@ -70,12 +68,12 @@ if [ ${#old_pkgs[@]} -ge 1 ]; then
msg "Removing old packages from package pool..."
for old_pkg in ${old_pkgs[@]}; do
msg2 "${old_pkg}"
- clean_pkg "$FTP_BASE/$(get_pkgpool_for_host)/${old_pkg}"
+ clean_pkg "$FTP_BASE/${PKGPOOL}/${old_pkg}"
done
fi
# cleanup of legacy $repo/os/any directories
-for repo in ${repos[@]}; do
+for repo in ${PKGREPOS[@]}; do
if [ ! -d "${FTP_BASE}/${repo}/os/any" ]; then
continue
fi
@@ -98,7 +96,7 @@ for repo in ${repos[@]}; do
done
-for repo in ${repos[@]}; do
+for repo in ${PKGREPOS[@]}; do
for arch in ${ARCHES[@]}; do
repo_unlock ${repo} ${arch}
done
diff --git a/db-functions b/db-functions
index 18029ee..939f2d5 100644
--- a/db-functions
+++ b/db-functions
@@ -294,7 +294,7 @@ check_pkgsvn() {
[ $? -ge 1 ] && return 1
local repo="${2}"
- in_array "${repo}" $(get_repos_for_host) || return 1
+ in_array "${repo}" ${PKGREPOS[@]} || return 1
if [ ! -f "${WORKDIR}/pkgbuilds/${repo}/${pkgbase}" ]; then
mkdir -p "${WORKDIR}/pkgbuilds/${repo}"
@@ -320,13 +320,13 @@ check_pkgrepos() {
local pkgver="$(getpkgver ${pkgfile})"
[ $? -ge 1 ] && return 1
- if [ -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkgname}-${pkgver}-"*${PKGEXT} ]; then
+ if [ -f "${FTP_BASE}/${PKGPOOL}/${pkgname}-${pkgver}-"*${PKGEXT} ]; then
return 1
fi
local repo
local arch
- for repo in $(get_repos_for_host); do
+ for repo in ${PKGREPOS[@]}; do
for arch in ${ARCHES[@]}; do
if [ -f "${FTP_BASE}/${repo}/os/${arch}/${pkgname}-${pkgver}"*${PKGEXT} ]; then
return 1
@@ -337,22 +337,6 @@ check_pkgrepos() {
return 0
}
-get_repos_for_host() {
- if [ -n "${PKGREPO[$(hostname -s)]}" ]; then
- echo "${PKGREPO[$(hostname -s)]}"
- else
- echo "${PKGREPO['default']}"
- fi
-}
-
-get_pkgpool_for_host() {
- if [ -n "${PKGPOOL[$(hostname -s)]}" ]; then
- echo "${PKGPOOL[$(hostname -s)]}"
- else
- echo "${PKGPOOL['default']}"
- fi
-}
-
#usage: chk_license ${license[@]}"
chk_license() {
local l
@@ -397,9 +381,12 @@ pkgver_from_src() {
check_repo_permission() {
local repo=$1
- in_array "${repo}" $(get_repos_for_host) || return 1
+ [ ${#PKGREPOS[@]} -eq 0 ] && return 1
+ [ -z "${PKGPOOL}" ] && return 1
+
+ in_array "${repo}" ${PKGREPOS[@]} || return 1
- [ -w "$FTP_BASE/$(get_pkgpool_for_host)" ] || return 1
+ [ -w "$FTP_BASE/${PKGPOOL}" ] || return 1
local arch
for arch in ${ARCHES}; do
diff --git a/db-move b/db-move
index fe9d2c9..cdc261c 100755
--- a/db-move
+++ b/db-move
@@ -92,11 +92,11 @@ for pkgbase in ${args[@]:2}; do
# copy package to pool if needed
# TODO: can be removed once every package has been moved to the package pool
- if [ ! -f ${FTP_BASE}/$(get_pkgpool_for_host)/${pkgfile} ]; then
- cp ${pkgpath} ${FTP_BASE}/$(get_pkgpool_for_host)
+ if [ ! -f ${FTP_BASE}/${PKGPOOL}/${pkgfile} ]; then
+ cp ${pkgpath} ${FTP_BASE}/${PKGPOOL}
fi
- ln -s "../../../$(get_pkgpool_for_host)/${pkgfile}" ${ftppath_to}/${tarch}/
- add_pkgs[${tarch}]+="${FTP_BASE}/$(get_pkgpool_for_host)/${pkgfile} "
+ ln -s "../../../${PKGPOOL}/${pkgfile}" ${ftppath_to}/${tarch}/
+ add_pkgs[${tarch}]+="${FTP_BASE}/${PKGPOOL}/${pkgfile} "
remove_pkgs[${tarch}]+="${pkgname} "
done
done
diff --git a/db-update b/db-update
index 70f0525..49ecbde 100755
--- a/db-update
+++ b/db-update
@@ -58,9 +58,9 @@ for repo in ${repos[@]}; do
msg2 "${pkgfile} (${pkgarch})"
# any packages might have been moved by the previous run
if [ -f "${pkg}" ]; then
- mv "${pkg}" "$FTP_BASE/$(get_pkgpool_for_host)"
+ mv "${pkg}" "$FTP_BASE/${PKGPOOL}"
fi
- ln -s "../../../$(get_pkgpool_for_host)/${pkgfile}" "$FTP_BASE/$repo/os/${pkgarch}"
+ ln -s "../../../${PKGPOOL}/${pkgfile}" "$FTP_BASE/$repo/os/${pkgarch}"
add_pkgs[${#add_pkgs[*]}]=${pkgfile}
done
if [ ${#add_pkgs[@]} -ge 1 ]; then
diff --git a/test/lib/common.inc b/test/lib/common.inc
index 71dfd3d..a0d864a 100644
--- a/test/lib/common.inc
+++ b/test/lib/common.inc
@@ -29,13 +29,15 @@ setUp() {
local r
local a
- #[ -f "${curdir}/../config.local" ] && die "${curdir}/../config.local exists"
+ [ -f "${curdir}/../config.local" ] && die "${curdir}/../config.local exists"
TMP="$(mktemp -d /dev/shm/$(basename $0).XXXXXXXXXX)"
#msg "Using ${TMP}"
- mkdir -p "${TMP}/"{ftp,tmp,staging,{package,source}-cleanup,svn-{packages,community}-{copy,repo}}
+ PKGREPOS=('core' 'extra' 'testing')
+ PKGPOOL='pool/packages'
+ mkdir -p "${TMP}/"{ftp,tmp,staging,{package,source}-cleanup,svn-packages-{copy,repo}}
- for r in ${PKGREPO[@]}; do
+ for r in ${PKGREPOS[@]}; do
mkdir -p "${TMP}/staging/${r}"
for a in ${ARCHES[@]} any; do
mkdir -p "${TMP}/ftp/${r}/os/${a}"
@@ -47,9 +49,7 @@ setUp() {
msg 'Creating svn repository...'
svnadmin create "${TMP}/svn-packages-repo"
- svnadmin create "${TMP}/svn-community-repo"
svn checkout -q "file://${TMP}/svn-packages-repo" "${TMP}/svn-packages-copy"
- svn checkout -q "file://${TMP}/svn-community-repo" "${TMP}/svn-community-copy"
for p in "${pkgdir}"/*; do
pkg=$(basename $p)
@@ -63,6 +63,8 @@ setUp() {
FTP_BASE="${TMP}/ftp"
SVNREPO="file://${TMP}/svn-packages-repo"
SVNREPOCOMMUNITY="file://${TMP}/svn-community-repo"
+ PKGREPOS=(${PKGREPOS[@]})
+ PKGPOOL="${PKGPOOL}"
CLEANUP_DESTDIR="${TMP}/package-cleanup"
SOURCE_CLEANUP_DESTDIR="${TMP}/source-cleanup"
STAGING="${TMP}/staging"
@@ -95,12 +97,12 @@ checkAnyPackage() {
local pkg=$2
local arch
- [ -r "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" ] || fail "$(get_pkgpool_for_host)/${pkg} not found"
+ [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}" ] || fail "${PKGPOOL}/${pkg} not found"
for arch in i686 x86_64; do
[ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ] || fail "${repo}/os/${arch}/${pkg} not a symlink"
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" ] \
- || fail "${repo}/os/${arch}/${pkg} does not link to $(get_pkgpool_for_host)/${pkg}"
+ [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "${FTP_BASE}/${PKGPOOL}/${pkg}" ] \
+ || fail "${repo}/os/${arch}/${pkg} does not link to ${PKGPOOL}/${pkg}"
done
[ -r "${STAGING}"/${repo}/${pkg} ] && fail "${repo}/${pkg} found in staging dir"
@@ -116,18 +118,18 @@ checkPackage() {
local pkg=$2
local arch=$3
- [ -r "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" ] || fail "$(get_pkgpool_for_host)/${pkg} not found"
+ [ -r "${FTP_BASE}/${PKGPOOL}/${pkg}" ] || fail "${PKGPOOL}/${pkg} not found"
[ -L "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ] || fail "${repo}/os/${arch}/${pkg} not a symlink"
[ -r "${STAGING}"/${repo}/${pkg} ] && fail "${repo}/${pkg} found in staging dir"
- [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" ] \
- || fail "${repo}/os/${arch}/${pkg} does not link to $(get_pkgpool_for_host)/${pkg}"
+ [ "$(readlink -e "${FTP_BASE}/${repo}/os/${arch}/${pkg}")" == "${FTP_BASE}/${PKGPOOL}/${pkg}" ] \
+ || fail "${repo}/os/${arch}/${pkg} does not link to ${PKGPOOL}/${pkg}"
( [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT%.tar.*}" ] \
&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${DBEXT%.tar.*}" -O | grep -q ${pkg}) \
|| fail "${pkg} not in ${repo}/os/${arch}/${repo}${DBEXT%.tar.*}"
- local pkgbase=$(getpkgbase "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}")
+ local pkgbase=$(getpkgbase "${FTP_BASE}/${PKGPOOL}/${pkg}")
svn up -q "${TMP}/svn-packages-copy/${pkgbase}"
[ -d "${TMP}/svn-packages-copy/${pkgbase}/repos/${repo}-${arch}" ] \
|| fail "svn-packages-copy/${pkgbase}/repos/${repo}-${arch} does not exist"
diff --git a/test/runTest b/test/runTest
index b07b099..4681944 100755
--- a/test/runTest
+++ b/test/runTest
@@ -321,7 +321,7 @@ testCleanupSimplePackages() {
for arch in ${arches[@]}; do
local pkg1="pkg-simple-a-1-1-${arch}.pkg.tar.xz"
checkRemovedPackage extra 'pkg-simple-a' ${arch}
- [ -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg1}" ] && fail "$(get_pkgpool_for_host)/${pkg1} found"
+ [ -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ] && fail "${PKGPOOL}/${pkg1} found"
[ -f "${FTP_BASE}/${repo}/os/${arch}/${pkg1}" ] && fail "${repo}/os/${arch}/${pkg1} found"
local pkg2="pkg-simple-b-1-1-${arch}.pkg.tar.xz"
@@ -344,7 +344,7 @@ testCleanupAnyPackages() {
local pkg1='pkg-any-a-1-1-any.pkg.tar.xz'
checkRemovedAnyPackage extra 'pkg-any-a'
- [ -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg1}" ] && fail "$(get_pkgpool_for_host)/${pkg1} found"
+ [ -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ] && fail "${PKGPOOL}/${pkg1} found"
[ -f "${FTP_BASE}/${repo}/os/${arch}/${pkg1}" ] && fail "${repo}/os/${arch}/${pkg1} found"
local pkg2="pkg-any-b-1-1-${arch}.pkg.tar.xz"
@@ -375,7 +375,7 @@ testCleanupSplitPackages() {
for arch in ${arches[@]}; do
for pkg in "${pkgdir}/${pkgs[0]}"/*-${arch}.pkg.tar.*; do
checkRemovedPackage extra ${pkgs[0]} ${arch}
- [ -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" ] && fail "$(get_pkgpool_for_host)/${pkg} found"
+ [ -f "${FTP_BASE}/${PKGPOOL}/${pkg}" ] && fail "${PKGPOOL}/${pkg} found"
[ -f "${FTP_BASE}/${repo}/os/${arch}/${pkg}" ] && fail "${repo}/os/${arch}/${pkg} found"
done
@@ -410,7 +410,7 @@ testMovePackagesWithoutPool() {
for old in 0 2; do
for pkg in "${pkgdir}/${pkgs[${old}]}"/*-${arch}.pkg.tar.*; do
pkg=$(basename $pkg)
- mv -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" "${FTP_BASE}/testing/os/${arch}/${pkg}"
+ mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/testing/os/${arch}/${pkg}"
done
done
done
@@ -441,7 +441,7 @@ testUpdateAnyPackageWithoutPool() {
releasePackage extra pkg-any-a any
../db-update
# transform two packages to old style layout
- mv -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg1}" "${FTP_BASE}/extra/os/any"
+ mv -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" "${FTP_BASE}/extra/os/any"
for arch in i686 x86_64; do
ln -sf "../any/${pkg1}" "${FTP_BASE}/extra/os/${arch}"
done
@@ -461,7 +461,7 @@ testUpdateAnyPackageWithoutPool() {
checkAnyPackage extra "${pkg2}"
- [ -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg1}" ] && fail "$(get_pkgpool_for_host)/${pkg1} found"
+ [ -f "${FTP_BASE}/${PKGPOOL}/${pkg1}" ] && fail "${PKGPOOL}/${pkg1} found"
for arch in any i686 x86_64; do
[ -f "${FTP_BASE}/extra/os/${arch}/${pkg1}" ] && fail "extra/os/${arch}/${pkg1} found"
done
@@ -482,7 +482,7 @@ testMoveAnyPackagesWithoutPool() {
# transform a package to old style layout
for pkg in "${pkgdir}/${pkgs[0]}"/*-any.pkg.tar.*; do
pkg=$(basename $pkg)
- mv -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" "${FTP_BASE}/testing/os/any/${pkg}"
+ mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/testing/os/any/${pkg}"
for arch in i686 x86_64; do
ln -sf "../any/${pkg}" "${FTP_BASE}/testing/os/${arch}/${pkg}"
done
@@ -519,7 +519,7 @@ testUpdateSameAnyPackageToDifferentRepositoriesWithoutPool() {
# transform a package to old style layout
for pkg in "${pkgdir}/pkg-any-a"/*-any.pkg.tar.*; do
pkg=$(basename $pkg)
- mv -f "${FTP_BASE}/$(get_pkgpool_for_host)/${pkg}" "${FTP_BASE}/extra/os/any/${pkg}"
+ mv -f "${FTP_BASE}/${PKGPOOL}/${pkg}" "${FTP_BASE}/extra/os/any/${pkg}"
for arch in i686 x86_64; do
ln -sf "../any/${pkg}" "${FTP_BASE}/extra/os/${arch}/${pkg}"
done