]> git.donarmstrong.com Git - dak.git/blob - wanna-build/trigger.daily
testing must be before unstable so packages uploaded after they've entered testingdon...
[dak.git] / wanna-build / trigger.daily
1 #!/bin/sh
2 #
3 # Updates wanna-build databases after the archive maintenance
4 # finishes
5 #
6 PATH="/bin:/usr/bin"
7 #testing must be before unstable so late upld don't build for testing needlessly
8 DISTS="oldstable-security stable stable-security testing testing-security unstable"
9 SECTIONS="main contrib non-free"
10 ARCHS_oldstable="m68k arm sparc alpha powerpc i386"
11 ARCHS_stable="mips mipsel ia64 hppa s390 $ARCHS_oldstable"
12 ARCHS_testing="$ARCHS_stable"
13 ARCHS_unstable="$ARCHS_testing hurd-i386 sh"
14 TMPDIR="/org/wanna-build/tmp"
15 WGETOPT="-q -t2 -w0 -T60"
16 CURLOPT="-q -s -S -f -K /org/wanna-build/trigger.curlrc"
17 LOCKFILE="/org/wanna-build/tmp/DB_Maintenance_In_Progress"
18
19 DAY=`date +%w`
20
21 if lockfile -! -l 3600 $LOCKFILE; then
22         echo "Cannot lock $LOCKFILE"
23         exit 1
24 fi
25
26 cleanup() {
27         rm -f "$LOCKFILE"
28 }
29 trap cleanup 0
30
31 echo Updating wanna-build databases...
32 umask 027
33
34 if [ "$DAY" = "0" ]; then
35         savelog -c 26 -p /org/wanna-build/db/merge.log
36 fi
37
38 exec >> /org/wanna-build/db/merge.log 2>&1
39
40 echo -------------------------------------------------------------------------
41 echo "merge triggered `date`"
42
43 cd $TMPDIR
44
45 #
46 # Make one big Packages and Sources file.
47 #
48 for d in $DISTS ; do
49         dist=`echo $d | sed s/-.*$//`
50         case "$dist" in
51                 oldstable)
52                         ARCHS="$ARCHS_oldstable"
53                         ;;
54                 stable)
55                         ARCHS="$ARCHS_stable"
56                         ;;
57                 testing)
58                         ARCHS="$ARCHS_testing"
59                         ;;
60                 *)
61                         ARCHS="$ARCHS_unstable"
62                         ;;
63         esac
64         NON_US="false" # this is changed below if sources can be found
65         rm -f Sources.$d
66         if [ "$d" = "unstable" ]; then
67                 gzip -dc /org/incoming.debian.org/buildd/Sources.gz >> Sources.$d
68         fi
69         for a in $ARCHS ; do
70                 rm -f Packages.$d.$a quinn-$d.$a
71                 if [ "$d" = "unstable" ]; then
72                         gzip -dc /org/incoming.debian.org/buildd/Packages.gz >> Packages.$d.$a
73                 fi
74         done
75
76         for s in $SECTIONS ; do
77                 if echo $d | grep -qv -- -security; then
78                         rm -f Sources.gz
79                         if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/$d/non-US/$s/source/Sources.gz; then
80                                 mv Sources.gz Sources-non-us.$d.$s.gz
81                                 NON_US="true"
82                         fi
83                         gzip -dc Sources-non-us.$d.$s.gz >> Sources.$d
84                         gzip -dc /org/ftp.debian.org/ftp/dists/$d/$s/source/Sources.gz >> Sources.$d
85                         if [ "$d" = "testing" -o "$d" = "stable" ]; then
86                                 if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/$d-proposed-updates/non-US/$s/source/Sources.gz; then
87                                         mv Sources.gz Sources-non-us.$d-p-u.$s.gz
88                                 fi
89                                 gzip -dc Sources-non-us.$d-p-u.$s.gz >> Sources.$d
90                                 gzip -dc /org/ftp.debian.org/ftp/dists/$d-proposed-updates/$s/source/Sources.gz >> Sources.$d
91                         fi
92
93                         rm -f Packages.gz
94                         for a in $ARCHS ; do
95                                 if [ "$NON_US" = "true" ]; then
96                                         if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/$d/non-US/$s/binary-$a/Packages.gz; then
97                                                 mv Packages.gz Packages-non-us.$d.$s.$a.gz
98                                         fi
99                                 fi
100                                 gzip -dc Packages-non-us.$d.$s.$a.gz >> Packages.$d.$a
101
102                                 gzip -dc /org/ftp.debian.org/ftp/dists/$d/$s/binary-$a/Packages.gz >> Packages.$d.$a
103                                 if [ "$d" = "testing" -o "$d" = "stable" ]; then
104                                         if [ "$NON_US" = "true" ]; then
105                                                 if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/$d-proposed-updates/non-US/$s/binary-$a/Packages.gz; then
106                                                         mv Packages.gz Packages-non-us.$d-p-u.$s.$a.gz
107                                                 fi
108                                         fi
109                                         gzip -dc Packages-non-us.$d-p-u.$s.$a.gz >> Packages.$d.$a
110                                         gzip -dc /org/ftp.debian.org/ftp/dists/$d-proposed-updates/$s/binary-$a/Packages.gz >> Packages.$d.$a
111                                 fi
112                                 if [ "$d" = "unstable" -a "$s" = "main" ]; then
113                                         gzip -dc /org/ftp.debian.org/ftp/dists/$d/$s/debian-installer/binary-$a/Packages.gz >> Packages.$d.$a
114                                 fi
115                         done
116                 else
117                         rm -f Sources.gz
118                         if wget $WGETOPT http://security.debian.org/debian-security/dists/$dist/updates/$s/source/Sources.gz; then
119                                 mv Sources.gz Sources-$d.$s.gz
120                         fi
121                         gzip -dc Sources-$d.$s.gz >> Sources.$d
122                         if [ "$s" = "main" ]; then
123                                 if curl $CURLOPT http://security.debian.org/buildd/$dist/Sources.gz -o Sources.gz; then
124                                         mv Sources.gz Sources-$d.accepted.gz
125                                 fi
126                                 gzip -dc Sources-$d.accepted.gz >> Sources.$d
127                                 if curl $CURLOPT http://security.debian.org/buildd/$dist/Packages.gz -o Packages.gz; then
128                                         mv Packages.gz Packages.$d.accepted.gz
129                                 fi
130                         fi
131                         rm -f Packages.gz
132                         for a in $ARCHS ; do
133                                 if wget $WGETOPT http://security.debian.org/debian-security/dists/$dist/updates/$s/binary-$a/Packages.gz; then
134                                         mv Packages.gz Packages.$d.$s.$a.gz
135                                 fi
136                                 gzip -dc Packages.$d.$s.$a.gz >> Packages.$d.$a
137                                 if [ "$s" = "main" ]; then
138                                         gzip -dc Packages.$d.accepted.gz >> Packages.$d.$a
139                                 fi
140                         done
141                 fi
142         done
143
144         if [ "$d" = "oldstable" ]; then
145                 gzip -dc /org/ftp.debian.org/ftp/dists/old-proposed-updates/Sources.gz >> Sources.$d
146                 if "$NON_US" = "true" ]; then
147                         rm -f Sources.gz
148                         if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/old-proposed-updates/Sources.gz; then
149                                 mv Sources.gz Sources-non-us.p-u.gz
150                         fi
151                         gzip -dc Sources-non-us.p-u.gz >> Sources.$d
152                         rm -f Packages.gz
153                         if wget $WGETOPT http://non-us.debian.org/debian-non-US/dists/old-proposed-updates/Packages.gz; then
154                                 mv Packages.gz Packages-non-us.p-u.gz
155                         fi
156                 fi
157                         
158                 for a in $ARCHS ; do
159                         gzip -dc /org/ftp.debian.org/ftp/dists/old-proposed-updates/Packages.gz >> Packages.$d.$a
160                         gzip -dc Packages-non-us.p-u.gz >> Packages.$d.$a
161                 done
162         fi
163         for a in $ARCHS ; do
164                 if [ "$d" = "unstable" ]; then
165                         quinn-diff -A $a -a /org/buildd.debian.org/web/quinn-diff/Packages-arch-specific -s Sources.$d -p Packages.$d.$a >> quinn-$d.$a
166                 else
167                         quinn-diff -A $a -a /org/buildd.debian.org/web/quinn-diff/Packages-arch-specific -s Sources.$d -p Packages.$d.$a | fgrep -v -f quinn-unstable.$a >> quinn-$d.$a
168                 fi
169         done
170 done
171
172 umask 002
173 for a in $ARCHS_unstable ; do
174         wanna-build --create-maintenance-lock --database=$a/build-db
175
176         for d in $DISTS ; do
177                 dist=`echo $d | sed s/-.*$//`
178                 case "$dist" in
179                         oldstable)
180                                 if echo $ARCHS_oldstable | grep -q -v "\b$a\b"; then
181                                         continue
182                                 fi
183                                 ;;
184                         stable)
185                                 if echo $ARCHS_stable | grep -q -v "\b$a\b"; then
186                                         continue
187                                 fi
188                                 ;;
189                         testing)
190                                 if echo $ARCHS_testing | grep -q -v "\b$a\b"; then
191                                         continue
192                                 fi
193                                 ;;
194                         *)
195                                 if echo $ARCHS_unstable | grep -q -v "\b$a\b"; then
196                                         continue
197                                 fi
198                                 ;;
199                 esac
200                 wanna-build --merge-packages --arch=$a --dist=$d --database=$a/build-db Packages.$d.$a
201                 perl -pi -e 's#^(non-US/)?(non-free)/.*$##msg' quinn-$d.$a
202                 wanna-build --merge-quinn --dist=$d --database=$a/build-db quinn-$d.$a
203                 wanna-build --merge-sources --dist=$d --database=$a/build-db Sources.$d
204                 mv Packages.$d.$a Packages.$d.$a-old
205                 mv quinn-$d.$a quinn-$d.$a-old
206                 if [ "$DAY" = "0" -a "$d" = "unstable" ]; then
207                         savelog -p -c 26 /org/wanna-build/db/$a/transactions.log
208                 fi
209         done
210         wanna-build --remove-maintenance-lock --database=$a/build-db
211 done
212 umask 022
213 for d in $DISTS; do
214         mv Sources.$d Sources.$d-old
215 done
216
217 echo "merge ended `date`"
218 /org/wanna-build/bin/wb-graph >> /org/wanna-build/etc/graph-data
219 /org/wanna-build/bin/wb-graph -p >> /org/wanna-build/etc/graph2-data
220 rm -f "$LOCKFILE"
221 trap -
222 /org/buildd.debian.org/bin/makegraph