]> git.decadent.org.uk Git - dak.git/blob - config/debian-security/cron.unchecked
Publish security archive on all changes
[dak.git] / config / debian-security / cron.unchecked
1 #! /bin/bash
2
3 set -e
4 set -o pipefail
5 set -u
6
7 export SCRIPTVARS=/srv/security-master.debian.org/dak/config/debian-security/vars
8 . $SCRIPTVARS
9
10 # And use one locale, no matter what the caller has set
11 export LANG=C
12 export LC_ALL=C
13
14 report=$queuedir/REPORT
15 reportdis=$queuedir/REPORT.disembargo
16 timestamp=$(date "+%Y-%m-%d %H:%M")
17 doanything=false
18 dopolicy=false
19 LOCKFILE="$lockdir/unchecked.lock"
20
21 last_changed() {
22     psql -qAtc "SELECT MAX(last_changed) FROM suite WHERE archive_id=(SELECT id FROM archive WHERE name='$1')"
23 }
24
25 cleanup() {
26     rm -f "$LOCKFILE"
27 }
28
29 if ! lockfile -r8 "$LOCKFILE"; then
30     echo "aborting cron.unchecked because $LOCKFILE has already been locked"
31     exit 0
32 fi
33 trap cleanup EXIT
34
35 old_last_changed=$(last_changed security)
36
37 cd $unchecked
38 changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
39 if [ -n "$changes" ]; then
40     doanything=true
41     echo "$timestamp": ${changes:-"Nothing to do in unchecked"}  >> $report
42     dak process-upload -a -d "$unchecked" >> $report
43 fi
44
45 cd $disembargo
46 changes=$(find . -maxdepth 1 -mindepth 1 -type f -name \*.changes | sed -e "s,./,," | xargs)
47 if [ -n "$changes" ]; then
48     doanything=true
49     echo "$timestamp": ${changes:-"Nothing to do in disembargo"}  >> $reportdis
50     dak process-upload -a -d "$disembargo" >> $reportdis
51 fi
52
53 for queue in embargoed unembargoed; do
54     echo "$timestamp: processing ${queue}" >> ${report}
55     dak process-policy ${queue} | mail -a "X-Debian: DAK" -e -s "Automatically accepted from ${queue}" -a "From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>" team@security.debian.org
56 done
57 accepted=$(find ${queuedir}/accepted -type f -name "*.changes")
58 if [ -n "${accepted}" ]; then
59     dopolicy=true
60 fi
61
62 # sync accepted files to ftpmaster
63 cd ${base}
64 find ${queuedir}/accepted -type f -exec mv -t /srv/queued/ftpmaster '{}' +
65
66 # export policy queues
67 for queue in embargoed; do
68     cd ${queuedir}/${queue}
69     rm -rf export.new
70     mkdir export.new
71     dak export -q ${queue} -d export.new --all
72     rsync -a --delete export.new/. export/.
73     rm -rf export.new
74     cd ${base}
75 done
76
77 if [ "${doanything}" = "false" ] && [ "${dopolicy}" = "false" ]; then
78     echo "$timestamp": Nothing to do >> $report
79     exit 0
80 fi
81
82 # Update stable-kfreebsd
83 dak update-suite stable stable-kfreebsd
84
85 # manage build queues
86 dak manage-build-queues -a
87 dak generate-packages-sources2 -a build-queues
88 dak generate-releases -a build-queues >/dev/null
89 ${scriptsdir}/update-buildd-archive ${base}/build-queues ${incoming}/debian-security-buildd
90
91 new_last_changed=$(last_changed security)
92
93 if [[ "${old_last_changed}" != "${new_last_changed}" ]]; then
94     # We had something approved from a policy queue, push out new archive
95     dak dominate
96     cd $configdir
97     $configdir/map.sh
98     dak generate-packages-sources2 -a security
99     dak generate-releases -a security >/dev/null
100     /srv/security-master.debian.org/dak/config/debian-security/make-mirror.sh >/dev/null
101     sudo -u archvsync -H /home/archvsync/signal_security
102 fi
103
104 cleanup
105 trap - EXIT
106
107 $configdir/cron.buildd