]> git.donarmstrong.com Git - wannabuild.git/blob - triggers/common
18408e6ccc56359ead1ba63114b2677c721c1d87
[wannabuild.git] / triggers / common
1 # vim:set et ts=4 sw=4 ft=bash ai:
2
3 set -eE
4
5 LANG=C
6 PATH="/bin:/usr/bin:/org/wanna-build/bin:/org/buildd.debian.org/bin:/org/wanna-build/triggers"
7 ARCHIVE_MAIN="/org/wanna-build/tmp/archive/debian"
8 ARCHIVE_BASE="/org/wanna-build/tmp/archive/${ARCHIVE}"
9 PAS_BASE="/org/buildd.debian.org/web/quinn-diff"
10 LOCKFILE="${ARCHIVE_BASE}/lock"
11 ARCHS_etch="alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc"
12 ARCHS_lenny="alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc"
13 ARCHS_squeeze="amd64 armel hppa i386 ia64 mips mipsel powerpc s390 sparc kfreebsd-amd64 kfreebsd-i386"
14 ARCHS_unstable="$ARCHS_squeeze alpha hurd-i386"
15
16 # Creates a working environment within the corresponding archive
17 # directory and jumps there.
18 ensure_workdir() {
19     mkdir -p "${ARCHIVE_BASE}/workdir"
20     cd "${ARCHIVE_BASE}/workdir"
21 }
22
23 # Puts the list of architectures for a given suite onto stdout.
24 get_architectures() {
25     SUITE="$1"
26
27     if [ "$SUITE" = "etch" -o "$SUITE" = "oldstable" ]; then echo $ARCHS_etch
28     elif [ "$SUITE" = "lenny" -o "$SUITE" = "stable" ]; then echo $ARCHS_lenny
29     elif [ "$SUITE" = "squeeze" -o "$SUITE" = "testing" ]; then echo $ARCHS_squeeze
30     elif [ "$SUITE" = "unstable" -o "$SUITE" = "sid" ]; then echo $ARCHS_unstable
31     elif [ "$SUITE" = "experimental" ]; then echo $ARCHS_unstable
32     else
33         echo "Unknown suite encountered, aborting." >2
34         exit 1
35     fi
36 }
37
38 # Runs quinn-diff with the right arguments.
39 do_quinn() {
40     SUITE="$1"
41     ARCH="$2"
42     quinn-diff \
43         -A $ARCH \
44         -a "$PAS_BASE/$SUITE/Packages-arch-specific" \
45         -s Sources.$SUITE \
46         -p Packages.$SUITE.$ARCH \
47         > quinn-$SUITE.$ARCH 2>/dev/null
48 }
49
50 # Call wanna-build's importing function.  WB_SUITE might differ from SUITE
51 # for other archives than the main one.
52 do_wb_merge_all() {
53     SUITE="$1"
54     ARCH="$2"
55     WB_SUITE="$3"
56     OPTIONS="$4"
57
58     if [ -z "$WB_SUITE" ]
59     then
60         WB_SUITE="$SUITE"
61     fi
62
63     echo "do_wb_merge_all $SUITE/$ARCH started"
64     if test "$4" != "overlay" && test "$4" != "secondary"
65     then
66         wanna-build -v --merge-all --arch=$ARCH --dist=$WB_SUITE \
67             Packages.$SUITE.$ARCH quinn-$SUITE.$ARCH Sources.$SUITE
68     fi
69     if [ "$4" = "overlay" ]
70     then
71         wanna-build -v --merge-all --arch=$ARCH --dist=$WB_SUITE \
72             Packages.$SUITE.$ARCH-all quinn-$SUITE.$ARCH Sources.$SUITE-all
73     fi
74     if [ "$4" = "secondary" ]
75     then
76         wanna-build -v --merge-all-secondary --arch=$ARCH --dist=$WB_SUITE \
77             Packages.$SUITE.$ARCH quinn-$SUITE.$ARCH Sources.$SUITE Packages.$SUITE.$ARCH-all
78     fi
79     echo "do_wb_merge_all $SUITE/$ARCH done"
80 }
81
82 cleanup() {
83     rm -rf "$LOCKFILE"
84 }
85
86 ensure_lock() {
87     if lockfile -! -r 10 -l 6000 "$LOCKFILE"
88     then
89         echo "Cannot lock $LOCKFILE, aborting."
90         exit 1
91     fi
92 }
93
94 trigger_wb_update() {
95     SUITE="$1"
96     ARCHS="$2"
97     SOURCES="$3"
98     PACKAGES="$4"
99     WB_SUITE="$5"
100
101     if [ -z "$WB_SUITE" ]
102     then
103         WB_SUITE="${SUITE}"
104     fi
105
106     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
107
108     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}.full
109     for ARCH in ${ARCHS}; do
110         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}.full
111     done
112     filter-nonfree .full /org/wanna-build/etc/non-free-include-list Sources.${SUITE}.full $(for ARCH in ${ARCHS}; do echo Packages.${SUITE}.${ARCH}.full; done)
113     for ARCH in ${ARCHS}; do
114         do_quinn ${SUITE} ${ARCH}
115         do_wb_merge_all ${SUITE} ${ARCH} ${WB_SUITE}
116     done
117
118     echo "`date`: ${ARCHIVE}/${SUITE} done"
119 }
120
121 trigger_wb_update_for_overlay() {
122     SUITE="$1"
123     ARCHS="$2"
124     SOURCES_BASE="$3"
125     PACKAGES_BASE="$4"
126     SOURCES="$5"
127     PACKAGES="$6"
128     WB_SUITE="$7"
129     WHITELIST_FILE="$8"
130
131     if [ -z "$WB_SUITE" ]
132     then
133         WB_SUITE="${SUITE}"
134     fi
135
136     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
137
138     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}.full
139     new-keep-latest source $(eval echo Sources.${SUITE} ${SOURCES_BASE}) > Sources.${SUITE}-all
140
141     for ARCH in ${ARCHS}; do
142         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}.full
143         new-keep-latest ${ARCH} Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all.full
144     done
145     filter-nonfree .full /org/wanna-build/etc/non-free-include-list Sources.${SUITE}.full $(for ARCH in ${ARCHS}; do echo Packages.${SUITE}.${ARCH}.full; done)
146     for ARCH in ${ARCHS}; do
147         do_quinn ${SUITE} ${ARCH}
148         do_wb_merge_all ${SUITE} ${ARCH} ${WB_SUITE} overlay
149     done
150
151     echo "`date`: ${ARCHIVE}/${SUITE} done"
152 }
153
154 # This is for the case where you get also get packages from
155 # a secondary unrelated suite, the buildd's chroot also has
156 # those packages files in it.
157 # Examples are *-{volatile,backports,edu} and experimental
158 # This is not for something like stable and proposed-updates
159 trigger_wb_update_with_secondary() {
160     SUITE="$1"
161     ARCHS="$2"
162     PACKAGES_BASE="$3"
163     SOURCES="$4"
164     PACKAGES="$5"
165     WB_SUITE="$6"
166     WHITELIST_FILE="$7"
167
168     if [ -z "$WB_SUITE" ]
169     then
170         WB_SUITE="${SUITE}"
171     fi
172
173     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
174
175     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}.full
176
177     for ARCH in ${ARCHS}; do
178         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}.full
179         new-keep-latest ${ARCH} Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all.full
180     done
181     filter-nonfree .full /org/wanna-build/etc/non-free-include-list Sources.${SUITE}.full $(for ARCH in ${ARCHS}; do echo Packages.${SUITE}.${ARCH}.full Packages.${SUITE}.${ARCH}-all.full; done)
182     for ARCH in ${ARCHS}; do
183         do_quinn ${SUITE} ${ARCH}
184         do_wb_merge_all ${SUITE} ${ARCH} ${WB_SUITE} secondary
185     done
186
187     echo "`date`: ${ARCHIVE}/${SUITE} done"
188 }
189