From ba0094839da328a6820ced5fe07e32c9630b6b23 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sat, 1 Feb 2014 12:40:49 +0100 Subject: make db-move work with pkgnames Signed-off-by: Florian Pritz --- db-functions | 18 ++++++++++++++++++ db-move | 25 ++++++++++++++++--------- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/db-functions b/db-functions index 05ff1b9..47d23ef 100644 --- a/db-functions +++ b/db-functions @@ -598,3 +598,21 @@ arch_history_commit() { popd } +pkgentry_from_db() { + local repo="$1" + local arch="$2" + local pkgname="$3" + + local db="$FTP_BASE/$repo/os/$arch/$repo$DBEXT" + local line + + for line in $(tar tf "$db" | sed -n 's#^\([^/]*\)/$#\1#p'); do + local name=${line##*/} + if [[ ${line%-*-*} = $pkgname ]]; then + echo $name + return 0 + fi + done + + return 1 +} diff --git a/db-move b/db-move index 6faadbc..1a69383 100755 --- a/db-move +++ b/db-move @@ -12,7 +12,7 @@ args=(${@}) repo_from="${args[0]}" repo_to="${args[1]}" arch="${args[2]}" -pkgs=("${args[@]:3}") +pkgnames=("${args[@]:3}") ftppath_from="${FTP_BASE}/${repo_from}/os/" ftppath_to="${FTP_BASE}/${repo_to}/os/" @@ -28,16 +28,23 @@ done msg "Moving packages from [${repo_from}] to [${repo_to}]..." -# TODO: resolve pkgname to pkgfile for db_add -# and actually make this script callable -# with a pkgname rather than a pkgfile -for pkg in "${pkgs[@]}"; do - pkgname=$(getpkgname "$FTP_BASE/$PKGPOOL/$pkg") - arch_db_add "${repo_to}" "$arch" "$pkg" - arch_db_remove "${repo_from}" "$arch" "$pkgname" +for pkgname in "${pkgnames[@]}"; do + pkgentry=$(pkgentry_from_db "$repo_from" "$arch" "$pkgname") + pkgs=($(getpkgfiles "$ftppath_from$arch/$pkgentry"*${PKGEXT})) + + if [[ -z $pkgentry ]]; then + warning "Failed to detect pkgentry for $pkgname" + continue + fi + + for pkg in "${pkgs[@]}"; do + pkgname=$(getpkgname "$pkg") + arch_db_add "${repo_to}" "$arch" "${pkg##*/}" + arch_db_remove "${repo_from}" "$arch" "$pkgname" + done done -arch_history_commit "db-move: ${pkgs[@]}" +arch_history_commit "db-move: $repo_from -> $repo_to: ${pkgnames[@]}" for pkgarch in ${ARCHES[@]}; do repo_unlock ${repo_from} ${pkgarch} -- cgit v1.2.3-24-g4f1b