#!/bin/bash m4_include(lib/common.sh) scriptname=${0##*/} if [[ -z $1 ]]; then echo 'Usage: '$scriptname' [pkgbase]' exit 1 fi pkgbase="${1}" packages_svn='svn+ssh://gerolde.archlinux.org/srv/svn-packages' packages_server='gerolde.archlinux.org' community_svn='svn+ssh://svn-community@nymeria.archlinux.org/srv/repos/svn-community/svn' community_server='nymeria.archlinux.org' mirror='http://mirrors.kernel.org/archlinux' case $scriptname in extra2community) source_svn="${packages_svn}" target_svn="${community_svn}" source_server="${packages_server}" target_server="${community_server}" source_repo='extra' target_repo='community' ;; community2extra) source_svn="${community_svn}" target_svn="${packages_svn}" source_server="${community_server}" target_server="${packages_server}" source_repo='community' target_repo='extra' ;; *) die "Couldn't find configuration for $scriptname" ;; esac setup_workdir pushd $WORKDIR >/dev/null msg "Downloading sources for ${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 . "target_checkout/${pkgbase}/trunk/PKGBUILD" msg "Downloading packages for ${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) # FIXME: this only works with .xz packages ssh "${target_server}" "cd staging/${target_repo} curl -O ${mirror}/${source_repo}/os/${repo_arch}/$_pkgname-$fullver-${_arch}.pkg.tar.xz curl -O ${mirror}/${source_repo}/os/${repo_arch}/$_pkgname-$fullver-${_arch}.pkg.tar.xz.sig" || die done done msg "Adding ${pkgbase} to ${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 ssh "${target_server}" '/arch/db-update' || die msg "Removing ${pkgbase} from ${source_repo}" for _arch in ${arch[@]}; do ssh "${source_server}" "/arch/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