#!/bin/bash # License: Unspecified m4_include(lib/common.sh) scriptname=${0##*/} if [[ -z $1 ]]; then printf 'Usage: %s [pkgbase]\n' "$scriptname" exit 1 fi pkgbase="${1}" case $scriptname in extra2community) source_name='packages' target_name='community' source_repo='extra' target_repo='community' ;; community2extra) source_name='community' target_name='packages' source_repo='community' target_repo='extra' ;; *) die "Couldn't find configuration for %s" "$scriptname" ;; esac server='repos.archlinux.org' source_svn="svn+ssh://svn-${source_name}@${server}/srv/repos/svn-${source_name}/svn" target_svn="svn+ssh://svn-${target_name}@${server}/srv/repos/svn-${target_name}/svn" source_dbscripts="/srv/repos/svn-${source_name}/dbscripts" target_dbscripts="/srv/repos/svn-${target_name}/dbscripts" setup_workdir pushd "$WORKDIR" >/dev/null msg "Downloading sources for %s" "${pkgbase}" svn -q checkout -N "${target_svn}" target_checkout mkdir -p "target_checkout/${pkgbase}/repos" svn -q export "${source_svn}/${pkgbase}/trunk" "target_checkout/${pkgbase}/trunk" || die # shellcheck source=PKGBUILD.proto . "target_checkout/${pkgbase}/trunk/PKGBUILD" msg "Downloading packages for %s" "${pkgbase}" for _arch in "${arch[@]}"; do if [[ "${_arch[*]}" == 'any' ]]; then repo_arch='x86_64' else repo_arch=${_arch} fi for _pkgname in "${pkgname[@]}"; do fullver=$(get_full_version "$_pkgname") pkgpath="/srv/ftp/$source_repo/os/$repo_arch/$_pkgname-$fullver-${_arch}.pkg.tar.*" # shellcheck disable=2029 ssh "$server" "cp $pkgpath staging/$target_repo" || die done done msg "Adding %s to %s" "${pkgbase}" "${target_repo}" svn -q add "target_checkout/${pkgbase}" svn -q propset svn:keywords 'Id' "target_checkout/${pkgbase}/trunk/PKGBUILD" svn -q commit -m"${scriptname}: Moving ${pkgbase} from ${source_repo} to ${target_repo}" target_checkout pushd "target_checkout/${pkgbase}/trunk" >/dev/null archrelease "${arch[@]/#/$target_repo-}" || die popd >/dev/null # shellcheck disable=2029 ssh "${server}" "${target_dbscripts}/db-update" || die msg "Removing %s from %s" "${pkgbase}" "${source_repo}" for _arch in "${arch[@]}"; do # shellcheck disable=2029 ssh "${server}" "${source_dbscripts}/db-remove ${source_repo} ${_arch} ${pkgbase}" done svn -q checkout -N "${source_svn}" source_checkout svn -q up "source_checkout/${pkgbase}" svn -q rm "source_checkout/${pkgbase}" svn -q commit -m"${scriptname}: Moving ${pkgbase} from ${source_repo} to ${target_repo}" source_checkout popd >/dev/null