diff options
Diffstat (limited to 'testing2x')
-rwxr-xr-x | testing2x | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/testing2x b/testing2x new file mode 100755 index 0000000..2ed5c25 --- /dev/null +++ b/testing2x @@ -0,0 +1,61 @@ +#!/bin/bash + +. "$(dirname "$(readlink -e "$0")")/config" +. "$(dirname "$(readlink -e "$0")")/db-functions" + +if [ $# -lt 1 ]; then + msg "usage: %s <pkgname|pkgbase> ..." "${0##*/}" + exit 1 +fi + +# Lock everything to reduce possibility of interfering task between the different repo-updates +script_lock +for repo in 'core' 'extra' 'testing'; do + for pkgarch in "${ARCHES[@]}"; do + repo_lock "${repo}" "${pkgarch}" || exit 1 + done +done + +declare -A pkgs + +for pkgbase in "$@"; do + if [ ! -d "${WORKDIR}/${pkgbase}" ]; then + /usr/bin/svn export -q "${SVNREPO}/${pkgbase}/repos" "${WORKDIR}/${pkgbase}" >/dev/null + + found_source=false + for pkgarch in "${ARCHES[@]}" 'any'; do + svnrepo_from="${WORKDIR}/${pkgbase}/testing-${pkgarch}" + if [ -r "${svnrepo_from}/PKGBUILD" ]; then + found_source=true + break + fi + done + "${found_source}" || die "%s not found in [testing]" "${pkgbase}" + found_target=false + for pkgarch in "${ARCHES[@]}" 'any'; do + for repo in 'core' 'extra'; do + svnrepo_to="${WORKDIR}/${pkgbase}/${repo}-${pkgarch}" + if [ -r "${svnrepo_to}/PKGBUILD" ]; then + found_target=true + pkgs[${repo}]+="${pkgbase} " + break 2 + fi + done + done + "${found_target}" || die "%s neither found in [core] nor [extra]" "${pkgbase}" + fi +done + +for pkgarch in "${ARCHES[@]}"; do + repo_unlock 'testing' "${pkgarch}" +done +for repo in 'core' 'extra'; do + for pkgarch in "${ARCHES[@]}"; do + repo_unlock "${repo}" "${pkgarch}" + done + if [ -n "${pkgs[${repo}]}" ]; then + "$(dirname "$(readlink -e "$0")")/db-move" 'testing' "${repo}" ${pkgs[${repo}]} + fi +done + +script_unlock |