diff options
author | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-10-28 12:17:38 -0300 |
---|---|---|
committer | Nicolas Reynolds <fauno@kiwwwi.com.ar> | 2011-10-28 12:17:38 -0300 |
commit | 560d8b718c59acf36fb76b9766add53434c98b1d (patch) | |
tree | 21199c8102f85f5c1921653d16978b8c8e1591df /cron-jobs/repo-sanity-check | |
parent | 9612e5d915faf63ea6d5a5ca5c3ff74cca8eb923 (diff) | |
parent | e9d0581b173853e647b36caa170b7c4bbee43643 (diff) |
Merge branch 'master' of https://projects.parabolagnulinux.org/dbscripts
Conflicts:
config
Diffstat (limited to 'cron-jobs/repo-sanity-check')
-rwxr-xr-x | cron-jobs/repo-sanity-check | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cron-jobs/repo-sanity-check b/cron-jobs/repo-sanity-check new file mode 100755 index 0000000..1ba90a6 --- /dev/null +++ b/cron-jobs/repo-sanity-check @@ -0,0 +1,56 @@ +#!/bin/bash +# Solves issue165 + +. "$(dirname $0)/../db-functions" +. "$(dirname $0)/../config" + +# Traverse all repos +for _repo in ${PKGREPOS[@]}; do + msg "Cleaning up [${_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 pkgver 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[@]} + done + )) + +# quit if abs is empty + if [ ${#on_abs[*]} -eq 0 ]; then + warning "[${_repo}]'s ABS tree is empty, skipping" + break + fi + +# Find all pkgnames on repos + on_repo=($( + find ${FTP_BASE}/${_repo} -name "*.pkg.tar.?z" -printf "%f\n" | \ + sed "s/^\(.\+\)-[^-]\+-[^-]\+-[^-]\+$/\1/" + )) + +# Compares them, whatever is on repos but not on abs should be removed + remove=($(comm -13 <(echo ${on_abs[@]} | tr ' ' "\n" | sort -u) \ + <(echo ${on_repo[@]} | tr ' ' "\n" | sort -u))) + +# Remove them from databases, ftpdir-cleanup will take care of the rest + find ${FTP_BASE}/${_repo} -name "*.db.tar.?z" -exec \ + repo-remove {} ${remove[@]} >/dev/null 2>&1 \; + + msg2 "Removed the following packages:" + plain "$(echo ${remove[@]} | tr ' ' "\n")" + +done + +exit $? |