@@ -4,7 +4,8 @@ FTP_BASE="/srv/ftp"
PKGREPOS=()
PKGPOOL=''
SRCPOOL=''
-TESTING_REPO=''
+STAGING_REPOS=()
+TESTING_REPOS=()
STABLE_REPOS=()
# VCS backend
@@ -5,7 +5,8 @@ PKGPOOL='pool/community'
SRCPOOL='sources/community'
SVNREPO='file:///srv/repos/svn-community/svn'
SVNUSER='svn-community'
-TESTING_REPO='community-testing'
+STAGING_REPOS=('community-staging' 'multilib-staging')
+TESTING_REPOS=('community-testing' 'multilib-testing')
STABLE_REPOS=('community')
CLEANUP_DESTDIR="/srv/repos/svn-community/package-cleanup"
@@ -5,7 +5,8 @@ PKGPOOL='pool/packages'
SRCPOOL='sources/packages'
SVNREPO='file:///srv/repos/svn-packages/svn'
SVNUSER='svn-packages'
-TESTING_REPO='testing'
+STAGING_REPOS=('staging')
+TESTING_REPOS=('testing')
STABLE_REPOS=('core' 'extra')
CLEANUP_DESTDIR="/srv/repos/svn-packages/package-cleanup"
@@ -103,7 +103,8 @@ setup() {
PKGREPOS=('core' 'extra' 'testing')
PKGPOOL='pool/packages'
SRCPOOL='sources/packages'
- TESTING_REPO='testing'
+ STAGING_REPOS=('staging')
+ TESTING_REPOS=('testing')
STABLE_REPOS=('core' 'extra')
CLEANUP_DESTDIR="${TMP}/package-cleanup"
SOURCE_CLEANUP_DESTDIR="${TMP}/source-cleanup"
@@ -10,7 +10,7 @@ fi
# Lock everything to reduce possibility of interfering task between the different repo-updates
script_lock
-for repo in "${TESTING_REPO}" "${STABLE_REPOS[@]}"; do
+for repo in "${TESTING_REPOS[@]}" "${STABLE_REPOS[@]}"; do
for pkgarch in "${ARCHES[@]}"; do
repo_lock "${repo}" "${pkgarch}" || exit 1
done
@@ -18,30 +18,36 @@ done
declare -A pkgs
+testing_repo=
for pkgbase in "$@"; do
for pkgarch in "${ARCHES[@]}"; do
- vcsrepo_from="$(find_repo_for_package "${pkgbase}" "${pkgarch[@]}" "${TESTING_REPO}")"
+ vcsrepo_from="$(find_repo_for_package "${pkgbase}" "${pkgarch[@]}" "${TESTING_REPOS[@]}")"
vcsrepo_to="$(find_repo_for_package "${pkgbase}" "${pkgarch[@]}" "${STABLE_REPOS[@]}")"
+ repo_from=${vcsrepo_from%-@(any|${pkgarch})}
+ repo_to="${vcsrepo_to%-@(any|${pkgarch})}"
+ if [[ -z ${testing_repo} ]]; then
+ testing_repo=${repo_from}
+ elif [[ ${testing_repo} != ${repo_from} ]]; then
+ die "Cannot move packages from multiple repos at a time: %s" "${testing_repo} ${repo_from}"
+ fi
if [[ ${vcsrepo_from} && ${vcsrepo_to} ]]; then
- move_to="${vcsrepo_to%-@(any|${pkgarch})}"
- pkgs[${move_to}]+="${pkgbase} "
+ pkgs[${repo_to}]+="${pkgbase} "
break
fi
done
- [[ ${vcsrepo_from} ]] || die "%s not found in [%s]" "$pkgbase" "$TESTING_REPO"
+ [[ ${vcsrepo_from} ]] || die "%s not found in any of these repos: %s" "${pkgbase}" "${TESTING_REPOS[@]}"
[[ ${vcsrepo_to} ]] || die "%s not found in any of these repos: %s" "$pkgbase" "${STABLE_REPOS[*]}"
done
-for pkgarch in "${ARCHES[@]}"; do
- repo_unlock "${TESTING_REPO}" "${pkgarch}"
-done
-for repo in "${STABLE_REPOS[@]}"; do
+for repo in "${TESTING_REPOS[@]}" "${STABLE_REPOS[@]}"; do
for pkgarch in "${ARCHES[@]}"; do
repo_unlock "${repo}" "${pkgarch}"
done
+done
+for repo in "${STABLE_REPOS[@]}"; do
if [[ -n ${pkgs[${repo}]} ]]; then
- "$(dirname "$(readlink -e "$0")")/db-move" "${TESTING_REPO}" "${repo}" ${pkgs[${repo}]}
+ "$(dirname "$(readlink -e "$0")")/db-move" "${testing_repo}" "${repo}" ${pkgs[${repo}]}
fi
done
Currently multilib is a second-class citizen the way it is lumped into community, and dbscripts cannot even keep track of whether it constitutes a testing repo. Teach config to track both testing and staging repos just like the stable ones, and teach testing2x to search through TESTING_REPOS to determine which one it is operating on. Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> --- config | 3 ++- config.local.svn-community | 3 ++- config.local.svn-packages | 3 ++- test/lib/common.bash | 3 ++- testing2x | 26 ++++++++++++++++---------- 5 files changed, 24 insertions(+), 14 deletions(-)