]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - client/make-request.sh
- add ac-java "distribution"
[projects/pld-builder.new.git] / client / make-request.sh
CommitLineData
1344b6f1
MM
1#!/bin/sh
2
864cdeb5
MM
3builders=
4specs=
5with=
6without=
7flags=
8command=
9command_flags=
16b5ec37 10gpg_opts=
e728b34c
ER
11default_branch='HEAD'
12distro=
544ca060 13
e29fbd39
AG
14if [ -n "$HOME_ETC" ]; then
15 USER_CFG=$HOME_ETC/.requestrc
544ca060 16else
e29fbd39 17 USER_CFG=$HOME/.requestrc
e728b34c 18fi
e29fbd39 19
e728b34c 20if [ ! -f "$USER_CFG" ]; then
e29fbd39 21 echo "Creating config file $USER_CFG. You *must* edit it."
e728b34c 22 cat >$USER_CFG <<'EOF'
1344b6f1 23priority=2
e728b34c 24requester=deviloper@pld-linux.org
544ca060 25default_key=deviloper@pld-linux.org
1344b6f1 26mailer="/usr/sbin/sendmail -t"
16b5ec37 27gpg_opts=""
e728b34c 28distro=th
1344b6f1 29
a757e911 30# defaults:
771f742d 31f_upgrade=yes
544ca060
MM
32EOF
33exit
34fi
35
e728b34c
ER
36if [ -f "$USER_CFG" ]; then
37 . $USER_CFG
38fi
39
a757e911
MM
40die () {
41 echo "$0: $*" 1>&2
42 exit 1
43}
1344b6f1 44
586a5f1f
AG
45usage() {
46 echo "Usage: make-request.sh [OPTION] ... [SPECFILE] ...."
47 echo ""
48 echo "Mandatory arguments to long options are mandatory for short options too."
d3200d79
AG
49 echo " -C --config-file /path/to/config/file"
50 echo " Source additional config file (after $USER_CFG), useful when"
51 echo " when sending build requests to Ac/Th from the same account"
db22a5da 52 echo " -b 'BUILDER BUILDER ...' --builder='BUILDER BUILDER ...'"
586a5f1f
AG
53 echo " Sends request to given builders"
54 echo " --with VALUE --without VALUE"
55 echo " Build package with(out) a given bcond"
c7ce92e2 56 echo " --kernel VALUE"
57 echo " set alt_kernel to VALUE"
e936beda 58 echo " -t --test-build"
e728b34c
ER
59 echo " Performs a 'test-build'. Package will be uploaded to test/ tree"
60 echo " and won't be upgraded on builders"
84a20e23 61 echo " -r --ready-build"
e728b34c 62 echo " Build and upgrade package and upload it to ready/ tree"
586a5f1f 63 echo " -u --upgrade"
e728b34c 64 echo " Forces package upgrade (for use with -t)"
586a5f1f 65 echo " -n --no-upgrade"
e728b34c 66 echo " Disables package upgrade (for use with -r)"
586a5f1f
AG
67 echo " -ni -no-install-br"
68 echo " Do not install missing BuildRequires (--nodeps)"
69 echo " -f --flag"
e728b34c
ER
70 echo " -d --distro"
71 echo " Specify value for \$distro"
586a5f1f
AG
72 echo " -cf --command-flag"
73 echo " Not yet documented"
74 echo " -c --command"
75 echo " Executes a given command on builders"
e728b34c
ER
76 echo " --test-remove-pkg"
77 echo " shortcut for --command poldek -evt ARGS"
78 echo " --remove-pkg"
79 echo " shortcut for --command poldek -ev --noask ARGS"
80 echo " --upgrade-pkg"
81 echo " shortcut for --command poldek -uv ARGS"
586a5f1f
AG
82 echo " --cvsup"
83 echo " Updates builders infrastructure (outside chroot)"
e728b34c
ER
84 echo " -q "
85 echo " shortcut for --command rpm -q ARGS"
16b5ec37
AG
86 echo " -g --gpg-opts \"opts\""
87 echo " Pass additional options to gpg binary"
1b630d82 88 echo " -p --priority VALUE"
97decef3 89 echo " sets request priority (default 2)"
586a5f1f
AG
90 echo " -h --help"
91 echo " Displays this help message"
92 exit 0;
93}
94
95
1344b6f1
MM
96while [ $# -gt 0 ] ; do
97 case "$1" in
e728b34c
ER
98 --distro | -d )
99 distro=$2
100 shift
101 ;;
102
d3200d79
AG
103 --config-file | -C )
104 [ -f $2 ] && . $2 || die "Config file not found"
105 shift
106 ;;
e728b34c 107
a757e911 108 --builder | -b )
1344b6f1
MM
109 builders="$builders $2"
110 shift
111 ;;
c4aa0539 112
1344b6f1
MM
113 --with )
114 with="$with $2"
115 shift
116 ;;
e728b34c 117
1344b6f1
MM
118 --without )
119 without="$without $2"
120 shift
121 ;;
a757e911 122
e728b34c
ER
123 --test-build | -t )
124 build_mode=test
125 f_upgrade=no
126 ;;
84a20e23 127
c7ce92e2 128 --kernel )
129 kernel=$2
130 shift
131 ;;
132
1b630d82 133 --priority | -p )
97decef3 134 priority=$2
135 shift
136 ;;
137
e728b34c
ER
138 --ready-build | -r )
139 build_mode=ready
140 ;;
141
a757e911
MM
142 --upgrade | -u )
143 f_upgrade=yes
144 ;;
145
146 --no-upgrade | -n )
544ca060 147 f_upgrade=no
a757e911
MM
148 ;;
149
5d25d4e4 150 --no-install-br | -ni )
e728b34c
ER
151 flags="$flags no-install-br"
152 ;;
153
a757e911
MM
154 --flag | -f )
155 flags="$flags $2"
156 shift
157 ;;
c4aa0539
MM
158
159 --command-flags | -cf )
160 command_flags="$2"
161 shift
162 ;;
163
164 --command | -c )
165 command="$2"
e728b34c
ER
166 f_upgrade=no
167 shift
168 ;;
169 --test-remove-pkg)
170 command="poldek -evt $2"
171 f_upgrade=no
172 shift
173 ;;
174 --remove-pkg)
175 command="poldek -ev --noask $2"
176 f_upgrade=no
177 shift
178 ;;
179 --upgrade-pkg)
180 command="poldek -uv $2"
181 f_upgrade=no
182 shift
183 ;;
184 -q)
185 command="rpm -q $2"
186 f_upgrade=no
c4aa0539
MM
187 shift
188 ;;
31900458 189
16b5ec37 190 --cvsup )
e728b34c
ER
191 command_flags="no-chroot"
192 command="cvs up"
16b5ec37
AG
193 ;;
194
6e36f66c
AG
195 --gpg-opts | -g )
196 gpg_opts="$2"
16b5ec37
AG
197 shift
198 ;;
e728b34c 199
586a5f1f
AG
200 --help | -h )
201 usage
202 ;;
e728b34c 203
1344b6f1 204 -* )
a757e911 205 die "unknown knob: $1"
1344b6f1 206 ;;
c4aa0539 207
e728b34c 208 *:* | * )
1344b6f1
MM
209 specs="$specs $1"
210 ;;
1344b6f1
MM
211 esac
212 shift
213done
214
e728b34c
ER
215case "$distro" in
216ac)
217 builder_email="builder-ac@pld-linux.org"
218 default_builders="ac-*"
219 default_branch="AC-branch"
220 ;;
b603979d
ER
221ac-java) # fake "distro" for java available ac archidectures
222 builder_email="builder-ac@pld-linux.org"
223 default_builders="ac-i586 ac-i686 ac-athlon ac-amd64"
224 default_branch="AC-branch"
225 ;;
e728b34c 226ti)
9c474625 227 builder_email="builderti@ep09.pld-linux.org"
228 default_builders="ti-*"
e728b34c
ER
229 ;;
230th)
231 builder_email="builderth@ep09.pld-linux.org"
232 default_builders="th-*"
233 ;;
234esac
235
236specs=`for s in $specs; do
878677a8 237 case "$s" in
e728b34c
ER
238 *.spec:*) # spec with branch
239 echo $s
240 ;;
241 *.spec) # spec without branch
242 echo $s:$default_branch
243 ;;
244 *:*) # package name with branch
245 echo $s | sed -e 's/:/.spec:/'
246 ;;
247 *) # just package name
248 echo $s.spec:$default_branch
249 ;;
878677a8
MM
250 esac
251done`
1344b6f1 252
2f470d17
MK
253if [[ "$requester" != *@* ]] ; then
254 requester="$requester@pld-linux.org"
255fi
256
a757e911
MM
257if [ "$builders" = "" ] ; then
258 builders="$default_builders"
259fi
260
544ca060 261if [ "$f_upgrade" = "yes" ] ; then
a757e911
MM
262 flags="$flags upgrade"
263fi
264
e936beda
MM
265if [ "$build_mode" = "test" ] ; then
266 if [ "$f_upgrade" = "yes" ] ; then
e728b34c 267 die "--upgrade and --test-build are mutually exclusive"
e936beda
MM
268 fi
269 flags="$flags test-build"
270fi
271
e728b34c
ER
272if [ -z "$build_mode" ] ; then
273 # missing build mode, builders go crazy when you proceed"
274 die "please specify build mode"
275fi
276
277
280b1afd 278ok=
e728b34c
ER
279for s in $specs; do
280 ok=1
280b1afd
MM
281done
282
283if [ "$ok" = "" ] ; then
c4aa0539
MM
284 if [ "$command" = "" ] ; then
285 die "no specs passed"
286 fi
287else
288 if [ "$command" != "" ] ; then
289 die "cannot pass specs and --command"
290 fi
280b1afd
MM
291fi
292
1344b6f1
MM
293id=$(uuidgen)
294
295gen_req() {
a757e911 296 echo "<group id='$id' no='0' flags='$flags'>"
1344b6f1
MM
297 echo " <time>$(date +%s)</time>"
298 echo " <priority>$priority</priority>"
299 echo
300
c4aa0539
MM
301 if [ "$command" != "" ] ; then
302 bid=$(uuidgen)
303 echo " <batch id='$bid' depends-on=''>"
304 echo " <command flags='$command_flags'>$command</command>"
305 echo " <info></info>"
306 for b in $builders ; do
307 echo " <builder>$b</builder>"
308 done
309 echo " </batch>"
310 else
e728b34c
ER
311
312 echo >&2 "* Using priority $priority"
313 echo >&2 "* Using email $builder_email"
314 echo >&2 "* Build mode: $build_mode"
315 if [ "$f_upgrade" = "yes" ] ; then
316 echo >&2 "* Upgrade mode: $f_upgrade"
317 fi
318 echo >&2 "* Queue-ID: $id"
319
30dbf6a3
MM
320 # first id:
321 fid=
e728b34c
ER
322 i=1
323 for s in $specs; do
30dbf6a3
MM
324 bid=$(uuidgen)
325 echo " <batch id='$bid' depends-on='$fid'>"
326 [ "$fid" = "" ] && fid="$bid"
1344b6f1
MM
327 name=$(echo "$s" | sed -e 's|:.*||')
328 branch=$(echo "$s" | sed -e 's|.*:||')
e728b34c 329 echo >&2 "* Adding #$i $name:$branch"
1344b6f1
MM
330 echo " <spec>$name</spec>"
331 echo " <branch>$branch</branch>"
2889120e 332 echo " ${kernel:+<kernel>$kernel</kernel>}"
864cdeb5 333 echo " <info></info>"
1344b6f1 334 echo
e728b34c 335 for b in $with; do
1344b6f1
MM
336 echo " <with>$b</with>"
337 done
e728b34c 338 for b in $without; do
1344b6f1
MM
339 echo " <without>$b</without>"
340 done
341 echo
e728b34c 342 for b in $builders; do
1344b6f1
MM
343 echo " <builder>$b</builder>"
344 done
345 echo " </batch>"
e728b34c 346 i=$((i+1))
1344b6f1 347 done
c4aa0539
MM
348
349 fi
e728b34c 350
1344b6f1
MM
351 echo "</group>"
352}
353
354gen_email () {
e728b34c
ER
355 # make request first, so the STDERR/STDOUT streams won't be mixed
356 local req=$(gen_req)
357
1344b6f1 358cat <<EOF
2f470d17 359From: $requester
1344b6f1
MM
360To: $builder_email
361Subject: build request
362Message-Id: <$id@$(hostname)>
363X-New-PLD-Builder: request
2d28916b 364X-Requester-Version: \$Id$
1344b6f1 365
e728b34c 366$(echo "$req" | gpg --clearsign --default-key $default_key $gpg_opts)
1344b6f1
MM
367EOF
368}
369
8454c165 370gen_email | $mailer
e728b34c
ER
371
372# vim:ts=2:sw=2:noet
This page took 0.090114 seconds and 4 git commands to generate.