torchestrate.sh - amprolla - devuan's apt repo merger
HTML git clone https://git.parazyd.org/amprolla
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
torchestrate.sh (1735B)
---
1 #!/bin/sh
2 # See LICENSE file for copyright and license details.
3
4 # Orchestration of incremental updates
5
6 # Make sure these correlate to lib/config.py
7 AMPROLLA_UPDATE="${AMPROLLA_UPDATE:-/home/amprolla/amprolla/amprolla_update.py}"
8 REPO_ROOT="${REPO_ROOT:-/home/amprolla/amprolla}"
9 AMPROLLA_LOCK="/run/lock/amprolla.lock"
10 RSYNC_URL="mirror@pkgmaster.devuan.org:/home/mirror/"
11
12 [ -f "${AMPROLLA_LOCK}" ] || {
13
14 [ -d "${REPO_ROOT}/merged-staging" ] || mkdir "${REPO_ROOT}/merged-staging"
15 [ -d "${REPO_ROOT}/merged-production" ] || mkdir "${REPO_ROOT}/merged-production"
16
17
18 ln -snf "$REPO_ROOT"/merged-staging "$REPO_ROOT"/merged
19 # The break call is temporary to catch unhandled exceptions in the testing phase
20 python3 "$AMPROLLA_UPDATE" || {
21 ln -snf "$REPO_ROOT"/merged-production "$REPO_ROOT"/merged
22 }
23
24 printf "rsyncing volatile to production... "
25 rsync --delete -raX "$REPO_ROOT"/merged-volatile/* "$REPO_ROOT"/merged-production
26 echo "done!"
27
28 ln -snf "$REPO_ROOT"/merged-production "$REPO_ROOT"/merged
29
30 printf "rsyncing volatile to staging... "
31 rsync --delete -raX "$REPO_ROOT"/merged-volatile/* "$REPO_ROOT"/merged-staging
32 echo "done!"
33
34 printf "rsyncing production to pkgmaster... "
35 rsync --delete -raX \
36 "$REPO_ROOT"/merged-production/ "${RSYNC_URL}/merged"
37 echo "done!"
38
39 # handle obsolete package logs
40 cat "$REPO_ROOT"/log/*-oldpackages.txt | sort | uniq > "$REPO_ROOT"/log/oldpackages.txt
41
42 _logfiles="libsystemd bannedpackages"
43 mkdir -p "$REPO_ROOT"/log/t
44 for i in $_logfiles; do
45 sort "$REPO_ROOT/log/${i}.txt" | uniq > "$REPO_ROOT/log/t/${i}.txt"
46 done
47 cp -f "$REPO_ROOT"/log/t/*.txt "$REPO_ROOT"/log/
48
49 rsync "$REPO_ROOT"/log/t/*.txt ${RSYNC_URL}
50 rsync "$REPO_ROOT"/log/oldpackages.txt "$REPO_ROOT"/log/amprolla.txt ${RSYNC_URL}
51 }