From 119de3a00044c0f854c21cd3620666414b1c6a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Reynolds?= Date: Wed, 17 Aug 2011 18:14:44 -0300 Subject: Script to restore packages from the cleanup destdir --- repo-restore-to-normal | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 repo-restore-to-normal diff --git a/repo-restore-to-normal b/repo-restore-to-normal new file mode 100755 index 0000000..e46cfc9 --- /dev/null +++ b/repo-restore-to-normal @@ -0,0 +1,54 @@ +#!/bin/bash +# Solves issue165 + +. "$(dirname $0)/db-functions" +. "$(dirname $0)/config" + +# Find all pkgnames on old with pkgvers + on_repo=($(find ${CLEANUP_DESTDIR} -name "*.pkg.tar.?z" -printf "%f\n" | \ + sed "s/^\(.\+-[^-]\+\)-[^-]\+-[^-]\+$/\1/")) + +# Traverse all repos +for _repo in ${PKGREPOS[@]}; do + msg "Restoring [${_repo}]" + +# Find all pkgnames on this repo's abs + on_abs=($( + find ${SVNREPO}/${_repo} -name PKGBUILD | \ + while read pkgbuild; do + source ${pkgbuild} >/dev/null 2>&1 +# cleanup to save memory + unset build package source md5sums pkgdesc pkgrel epoch \ + url license arch depends makedepends optdepends options \ + >/dev/null 2>&1 + +# also cleanup package functions + for _pkg in ${pkgname[@]}; do + unset package_${pkg} >/dev/null 2>&1 + done + +# this fills the on_abs array + echo ${pkgname[@]}-${pkgver} + done + )) + +# quit if abs is empty + if [ ${#on_abs[*]} -eq 0 ]; then + warning "[${_repo}]'s ABS tree is empty, skipping" + break + fi + +# Compares them, whatever is on abs should be restored + restore=($(comm -12 <(echo ${on_abs[@]} | tr ' ' "\n" | sort -u) \ + <(echo ${on_repo[@]} | tr ' ' "\n" | sort -u))) + + msg2 "Restoring the following packages:" + plain "$(echo ${restore[@]} | tr ' ' "\n")" + + for _pkg in ${restore[@]}; do + find ${CLEANUP_DESTDIR} -name "${_pkg}*" -exec mv -v '{}' ${STAGING}/${_repo} + done + +done + +exit $? -- cgit v1.2.3-2-g168b