]> git.decadent.org.uk Git - dak.git/blob - config/debian/cron.hourly
cron.hourly locks itself
[dak.git] / config / debian / cron.hourly
1 #! /bin/bash
2 #
3 # Executed hourly via cron, out of dak's crontab.
4
5 # Only one of me should ever run.
6 [  "${FLOCKER}"  != "$0" ] && exec env FLOCKER="$0" flock -E 0 -en "$0" "$0"
7 "$@" || :
8
9 set -e
10 set -o pipefail
11 set -u
12
13 export SCRIPTVARS=/srv/ftp-master.debian.org/dak/config/debian/vars
14 . $SCRIPTVARS
15
16 PROGRAM="Hourly"
17 ########################################################################
18 # Functions                                                            #
19 ########################################################################
20 # common functions are "outsourced"
21 . "${configdir}/common"
22
23 dak import-users-from-passwd
24
25 # do not run show-new and other stuff in parallel
26 LOCKFILE="$lockdir/unchecked.lock"
27 cleanup() {
28     rm -f "${LOCKFILE}"
29 }
30
31 if lockfile -r16 $LOCKFILE 2> /dev/null; then
32     trap cleanup EXIT
33     do_new
34     dak show-new > /dev/null || true
35     cleanup
36     trap - EXIT
37 fi
38
39 dak queue-report -n > $webdir/new.html
40 dak queue-report -n -d backports-new,backports-policy > ${webdir}/backports-new.html
41 dak queue-report -8 -d new,byhand,stable-new,oldstable-new,backports-new -r $webdir/stat
42 sudo -u dak-unpriv dak show-deferred -r $webdir/stat > ${webdir}/deferred.html
43 dak graph -n new,byhand,stable-new,oldstable-new,deferred -r $webdir/stat -i $webdir/stat -x $scriptsdir/rrd-release-freeze-dates
44
45 cd $webdir
46 cat removals-20*.txt > removals-full.txt
47 cat removals.txt >> removals-full.txt
48 cat removals-20*.822 > removals-full.822
49 cat removals.822 >> removals-full.822
50
51 $base/dak/tools/queue_rss.py -q $queuedir/new -o $webdir/rss/ -d $base/misc -l $base/log/
52 $base/dak/tools/removals.pl $configdir/removalsrss.rc > $webdir/rss/removals.rss
53
54 # cd $masterdir
55 # timeout -k 180 120  /usr/bin/epydoc -q --html --graph all --css blue -n DAK -o $webdir/epydoc --include-log --graph all --show-imports $masterdir/dak/ $masterdir/dakweb/ || true
56
57 # Tell the public mirror to sync its tree
58 ${scriptsdir}/sync-dd dd-sync dd-sync1 dd-sync2 sync
59
60 $scriptsdir/generate-d-i
61
62 # Update backports ACL
63 sudo -u dak-unpriv cat /srv/backports-master.debian.org/etc/acl \
64     | dak acl set-fingerprints backports \
65     | mail -a "X-Debian: DAK" -e -s "backports: acl changes" -a "From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>" backports-team@debian.org
66
67 # do the buildd key updates
68 BUILDDFUN=$(mktemp -p "${TMPDIR}" BUILDDFUN.XXXXXX)
69 exec >> "${BUILDDFUN}" 2>&1
70 ${scriptsdir}/buildd-remove-keys
71 ${scriptsdir}/buildd-add-keys
72 ${scriptsdir}/buildd-prepare-dir
73
74 for keyring in $(dak admin k list-binary); do
75     dak import-keyring --generate-users "%s" ${keyring}
76 done
77 exec >>/dev/null 2>&1
78
79 DATE=$(date -Is)
80 cat "${BUILDDFUN}" | mail -a "X-Debian: DAK" -e -s "[$(hostname -s)] Buildd key changes ${DATE}" -a "From: Debian FTP Masters <ftpmaster@ftp-master.debian.org>" buildd-keys@ftp-master.debian.org
81
82 rm -f "${BUILDDFUN}"