summaryrefslogtreecommitdiff
path: root/db-check-nonfree
diff options
context:
space:
mode:
authorJoshua Ismael Haase Hernandez <hahj87@gmail.com>2011-05-18 21:21:59 -0500
committerJoshua Ismael Haase Hernandez <hahj87@gmail.com>2011-05-18 21:21:59 -0500
commitb88a0166be595545c2b2d68451291f8ba6bb08ab (patch)
tree21024f1fae89269d1326fba2ee4770f0861034cb /db-check-nonfree
parente6e9e1a468c15a6ca609d8c6072a7b8c16fb3833 (diff)
* Separated nonfree check from db-update
* Added db-check-nonfree to repo-update
Diffstat (limited to 'db-check-nonfree')
-rw-r--r--db-check-nonfree45
1 files changed, 45 insertions, 0 deletions
diff --git a/db-check-nonfree b/db-check-nonfree
new file mode 100644
index 0000000..83efb14
--- /dev/null
+++ b/db-check-nonfree
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+. "$(dirname $0)/db-functions"
+. "$(dirname $0)/config"
+
+if [ $# -ge 1 ]; then
+ warning "Calling $(basename $0) with a specific repository is not supported"
+ exit 1
+fi
+
+# TODO: this might lock too much (architectures)
+for repo in ${repos[@]}; do
+ for pkgarch in ${ARCHES[@]}; do
+ repo_lock ${repo} ${pkgarch} || exit 1
+ done
+done
+
+msg "Check nonfree in repo:"
+nonfree=($(cut -d: -f1 ${BLACKLIST_FILE} | sort -u))
+for repo in ${ARCHREPOS[@]}; do
+ for pkgarch in ${ARCHES[@]}; do
+ msg2 "$repo $pkgarch"
+ if [ ! -f "${FTP_BASE}/${repo}/os/${pkgarch}/${repo}${DBEXT}" ]; then
+ continue
+ fi
+ unset dbpkgs
+ unset cleanpkgs
+ cleanpkgs=()
+ dbpkgs=($(bsdtar -xOf "${FTP_BASE}/${repo}/os/${pkgarch}/${repo}${DBEXT}" | awk '/^%NAME%/{getline;print}' | sort -u ))
+ for pkgname in ${dbpkgs[@]}; do
+ if in_array ${pkgname} ${nonfree[@]}; then
+ cleanpkgs[${#cleanpkgs[*]}]=${pkgname}
+ fi
+ done
+ if [ ${#cleanpkgs[@]} -ge 1 ]; then
+ arch_repo_remove "${repo}" "${pkgarch}" ${cleanpkgs[@]}
+ fi
+ done
+done
+
+for repo in ${repos[@]}; do
+ for pkgarch in ${ARCHES[@]}; do
+ repo_unlock ${repo} ${pkgarch}
+ done
+done