summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Ismael Haase Hernández <hahj87@gmail.com>2011-08-17 14:15:37 -0700
committerJoshua Ismael Haase Hernández <hahj87@gmail.com>2011-08-17 14:15:37 -0700
commit5409ca38eb6ee00cfce9ea2ab11f1c1220044f6b (patch)
treea43aa4e7f09115553653ac445cd529d988dd57cf
parent08d7532452e9fcae248a17881f11051b564d313b (diff)
parent119de3a00044c0f854c21cd3620666414b1c6a7e (diff)
Merge branch 'master' of http://projects.parabolagnulinux.org/dbscripts into stable
-rwxr-xr-xrepo-restore-to-normal54
1 files changed, 54 insertions, 0 deletions
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 $?