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