summaryrefslogtreecommitdiff
path: root/repo-update
diff options
context:
space:
mode:
Diffstat (limited to 'repo-update')
-rwxr-xr-xrepo-update68
1 files changed, 68 insertions, 0 deletions
diff --git a/repo-update b/repo-update
new file mode 100755
index 0000000..12c6d0c
--- /dev/null
+++ b/repo-update
@@ -0,0 +1,68 @@
+#!/bin/bash
+# -*- coding: utf-8 -*-
+source ~/.bashrc
+source $(dirname $0)/config
+source $(dirname $0)/local_config
+source $(dirname $0)/libremessages
+
+msg "Updating your-freedom"
+$(dirname $0)/yf-update
+
+msg "Global exclude-list"
+# To not downgrade repos by accident
+find ${repodir}/old/packages -name "*${PKGEXT}" \
+ -fprintf ${rsync_not_needed}2 '%f\n'
+
+for repo in ${ARCHREPOS[@]}; do
+ msg "Syncing ${repo}"
+ for arch in ${ARCHARCHES[@]} 'any'; do
+ msg2 "${repo} ${arch}"
+ # makes a file containing rsync output for filter.py
+ plain "Checking packages..."
+ ${rsync_list_command} \
+ rsync://${mirror}/${mirrorpath}/${repo}/os/${arch}/ \
+ ${repodir}/staging/${repo}/ > ${rsout_file} 2&>/dev/null
+ # reads blacklist and rsout_file and makes an rsync exclude-from
+ # list
+ plain "Excluding nonfree..."
+ filter.py -r ${rsync_blacklist} -k ${blacklist} \
+ -f ${rsout_file}
+ # list files in ${repodir}/${repo} and write their names on
+ # rsync_not_needed for using as an rsync exclude-from
+ plain "Excluding our packages"
+ find ${repodir}/${repo} -name "*${PKGEXT}" \
+ -fprintf ${rsync_not_needed} '%f\n'
+ # Actual rsync command
+ plain "Syncing..."
+ ${rsync_update_command} \
+ --exclude-from=${rsync_blacklist} \
+ --exclude-from=${rsync_not_needed} \
+ --exclude-from=${rsync_not_needed}2 \
+ rsync://${mirror}/${mirrorpath}/${repo}/os/${arch}/ \
+ ${repodir}/staging/${repo}/ 2&>/dev/null
+ done
+ for arch in ${ARCHARCHES[@]}; do
+ msg2 "Making pending list for $repo $arch"
+ # if there is a db in repo (db is created on rsync)
+ if [ -r ${repodir}/staging/${repo}/os/${arch}/${repo}${DBEXT} ]; then
+ # clean_repo makes pending list with files on db and remove
+ # packages from db
+ $(dirname $0)/clean_repo.py -k ${blacklist} -w ${whitelist} \
+ -p ${docs_dir}/pending-${repo}.txt \
+ -b ${repodir}/staging/${repo}/${repo}${DBEXT} \
+ -d ${repodir}/stagging/${repo}
+ fi
+ done
+ # if some nonfree files got pass the filter this command delete them
+ msg2 "Fallback cleaning repo"
+ $(dirname $0)/clean_repo.py -k ${blacklist} -d ${repodir}/staging/${repo}
+done
+
+msg "Removing leftover files..."
+find ${repodir}/staging/ -type f \! -name "*${PKGEXT}" -delete
+# Staging should not have symbolic links
+find ${repodir}/staging/ -type l -delete
+
+$(dirname $0)/db-update
+$(dirname $0)/db-check-nonfree
+