]> git.donarmstrong.com Git - wannabuild.git/blob - triggers/common
71ce5cc3dd453a782b8292895dd7b6e17240d1d8
[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 cleanup() {
40     rm -rf "$LOCKFILE"
41 }
42
43 ensure_lock() {
44     if lockfile -! -r 10 -l 6000 "$LOCKFILE"
45     then
46         echo "Cannot lock $LOCKFILE, aborting."
47         exit 1
48     fi
49 }
50
51 trigger_wb_update() {
52     SUITE="$1"
53     ARCHS="$2"
54     SOURCES="$3"
55     PACKAGES="$4"
56     WB_SUITE="$5"
57
58     if [ -z "$WB_SUITE" ]
59     then
60         WB_SUITE="${SUITE}"
61     fi
62
63     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
64
65     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
66     for ARCH in ${ARCHS}; do
67         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}
68     done
69     [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF=""
70     [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF=""
71     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . Packages.${SUITE}.%ARCH% -- ${ARCHS} || true
72
73     echo "`date`: ${ARCHIVE}/${SUITE} done"
74 }
75
76 trigger_wb_update_for_overlay() {
77     SUITE="$1"
78     ARCHS="$2"
79     SOURCES_BASE="$3"
80     PACKAGES_BASE="$4"
81     SOURCES="$5"
82     PACKAGES="$6"
83     WB_SUITE="$7"
84     WHITELIST_FILE="$8"
85
86     if [ -z "$WB_SUITE" ]
87     then
88         WB_SUITE="${SUITE}"
89     fi
90
91     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
92
93     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
94     new-keep-latest source $(eval echo Sources.${SUITE} ${SOURCES_BASE}) > Sources.${SUITE}-all
95     for ARCH in ${ARCHS}; do
96         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}
97         new-keep-latest ${ARCH} Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all
98     done
99     [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF=""
100     [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF=""
101     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . \
102         Packages.${SUITE}.%ARCH%-all . Sources.${SUITE}-all $SNF -- ${ARCHS} || true
103
104     echo "`date`: ${ARCHIVE}/${SUITE} done"
105 }
106
107 # This is for the case where you get also get packages from
108 # a secondary unrelated suite, the buildd's chroot also has
109 # those packages files in it.
110 # Examples are *-{volatile,backports,edu} and experimental
111 # This is not for something like stable and proposed-updates
112 trigger_wb_update_with_secondary() {
113     SUITE="$1"
114     ARCHS="$2"
115     PACKAGES_BASE="$3"
116     SOURCES="$4"
117     PACKAGES="$5"
118     WB_SUITE="$6"
119     WHITELIST_FILE="$7"
120
121     if [ -z "$WB_SUITE" ]
122     then
123         WB_SUITE="${SUITE}"
124     fi
125
126     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
127
128     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
129
130     for ARCH in ${ARCHS}; do
131         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}
132         ucat Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all
133     done
134     [ -f Packages.${SUITE}.i386.non-free ] && PNF="Packages.${SUITE}.%ARCH%.non-free" || PNF=""
135     [ -f Sources.${SUITE}.non-free ] && SNF="Sources.${SUITE}.non-free" || SNF=""
136     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% $PNF . Sources.${SUITE} $SNF . \
137         Packages.${SUITE}.%ARCH%-all -- ${ARCHS} || true
138
139     echo "`date`: ${ARCHIVE}/${SUITE} done"
140 }
141
142 ucat() {
143     for FILE in $*; do
144       if [ -f ${FILE} ]; then
145         case $FILE in
146             *.gz)
147                 zcat $FILE
148                 ;;
149             *.bz2)
150                 bzcat $FILE
151                 ;;
152             *)
153                 cat $FILE
154                 ;;
155         esac
156       fi
157     done
158 }