]> git.donarmstrong.com Git - wannabuild.git/blob - triggers/common
wanna-build/merge-v3: fix handling of multiple Packages/Sources files
[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     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% . Sources.${SUITE} -- ${ARCHS} || true
70
71     echo "`date`: ${ARCHIVE}/${SUITE} done"
72 }
73
74 trigger_wb_update_for_overlay() {
75     SUITE="$1"
76     ARCHS="$2"
77     SOURCES_BASE="$3"
78     PACKAGES_BASE="$4"
79     SOURCES="$5"
80     PACKAGES="$6"
81     WB_SUITE="$7"
82     WHITELIST_FILE="$8"
83
84     if [ -z "$WB_SUITE" ]
85     then
86         WB_SUITE="${SUITE}"
87     fi
88
89     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
90
91     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
92     new-keep-latest source $(eval echo Sources.${SUITE} ${SOURCES_BASE}) > Sources.${SUITE}-all
93     for ARCH in ${ARCHS}; do
94         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}
95         new-keep-latest ${ARCH} Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all
96     done
97     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% . Sources.${SUITE} . \
98         Packages.${SUITE}.%ARCH%-all . Sources.${SUITE}-all -- ${ARCHS} || true
99
100     echo "`date`: ${ARCHIVE}/${SUITE} done"
101 }
102
103 # This is for the case where you get also get packages from
104 # a secondary unrelated suite, the buildd's chroot also has
105 # those packages files in it.
106 # Examples are *-{volatile,backports,edu} and experimental
107 # This is not for something like stable and proposed-updates
108 trigger_wb_update_with_secondary() {
109     SUITE="$1"
110     ARCHS="$2"
111     PACKAGES_BASE="$3"
112     SOURCES="$4"
113     PACKAGES="$5"
114     WB_SUITE="$6"
115     WHITELIST_FILE="$7"
116
117     if [ -z "$WB_SUITE" ]
118     then
119         WB_SUITE="${SUITE}"
120     fi
121
122     echo "`date`: Processing ${ARCHIVE}/${SUITE} ..."
123
124     new-keep-latest source $(eval echo ${SOURCES}) > Sources.${SUITE}
125
126     for ARCH in ${ARCHS}; do
127         new-keep-latest ${ARCH} $(eval echo $(echo ${PACKAGES} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}
128         ucat Packages.${SUITE}.${ARCH} $(eval echo $(echo ${PACKAGES_BASE} | sed -e 's/%ARCH%/${ARCH}/g')) > Packages.${SUITE}.${ARCH}-all
129     done
130     parallel -l 5 -i wanna-build -v --Pas ${PAS_FILE} --merge-v3 -A "{}" --dist=$WB_SUITE Packages.${SUITE}.%ARCH% . Sources.${SUITE} . \
131         Packages.${SUITE}.%ARCH%-all -- ${ARCHS} || true
132
133     echo "`date`: ${ARCHIVE}/${SUITE} done"
134 }
135
136 ucat() {
137     for FILE in $*; do
138         case $FILE in
139             *.gz)
140                 zcat $FILE
141                 ;;
142             *.bz2)
143                 bzcat $FILE
144                 ;;
145             *)
146                 cat $FILE
147                 ;;
148         esac
149     done
150 }