]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - client/make-request.sh
- Added kget, krfb and kppp, which were previously part of kdenetwork.
[projects/pld-builder.new.git] / client / make-request.sh
CommitLineData
1344b6f1
MM
1#!/bin/sh
2
b4818b81 3# prevent "*" from being expanded in builders var
7ae0b732 4set -f
b4818b81 5
864cdeb5 6builders=
864cdeb5
MM
7with=
8without=
9flags=
10command=
11command_flags=
16b5ec37 12gpg_opts=
e728b34c 13default_branch='HEAD'
da6bf40b 14dist=
bcb3a8b8 15url=
218a4c96 16no_depend=no
12151609 17verbose=no
da6bf40b 18autotag=no
d3516ebf 19requester_override=
bfa10c0d 20
98abd48b
ER
21if [ -x /usr/bin/python ]; then
22 send_mode="python"
23else
24 echo "No python present, using mail mode"
25 send_mode="mail"
26fi
544ca060 27
e29fbd39
AG
28if [ -n "$HOME_ETC" ]; then
29 USER_CFG=$HOME_ETC/.requestrc
544ca060 30else
e29fbd39 31 USER_CFG=$HOME/.requestrc
e728b34c 32fi
e29fbd39 33
e728b34c 34if [ ! -f "$USER_CFG" ]; then
e29fbd39 35 echo "Creating config file $USER_CFG. You *must* edit it."
bcb3a8b8 36 cat > $USER_CFG <<EOF
1344b6f1 37priority=2
e728b34c 38requester=deviloper@pld-linux.org
544ca060 39default_key=deviloper@pld-linux.org
bfa10c0d
AM
40send_mode="$send_mode"
41url="$url"
1344b6f1 42mailer="/usr/sbin/sendmail -t"
16b5ec37 43gpg_opts=""
da6bf40b 44dist=th
1cd123e3 45url="http://src.th.pld-linux.org:1234/"
1344b6f1 46
a757e911 47# defaults:
771f742d 48f_upgrade=yes
544ca060
MM
49EOF
50exit
51fi
52
e728b34c 53if [ -f "$USER_CFG" ]; then
9cc9841b 54 . $USER_CFG
da6bf40b
ER
55 # legacy fallback
56 if [ "${distro:+set}" = "set" ]; then
57 dist=$distro
58 fi
e728b34c
ER
59fi
60
45d8ed70
ER
61# internal options, not to be overriden
62specs=
63df_fetch=no
a166aeda 64upgrade_macros=no
045b9f0b 65upgrade_scripts=no
0387e9e2 66cr=$(printf "\r")
45d8ed70 67
c9f4704f
ER
68# Set colors
69c_star=$(tput setaf 2)
55bfbaf6 70c_red=$(tput setaf 1)
c9f4704f
ER
71c_norm=$(tput op)
72msg() {
73 echo >&2 "${c_star}*${c_norm} $*"
74}
55bfbaf6
ER
75red() {
76 echo "${c_red}$*${c_norm}"
77}
c9f4704f 78
45d8ed70
ER
79die() {
80 echo >&2 "$0: $*"
81 exit 1
82}
83
bfa10c0d 84send_request() {
bcb3a8b8
ER
85 # switch to mail mode, if no url set
86 [ -z "$url" ] && send_mode="mail"
87
bcb3a8b8
ER
88 case "$send_mode" in
89 "mail")
c9f4704f 90 msg "Sending using mail mode"
bcb3a8b8
ER
91 cat - | $mailer
92 ;;
93 *)
c9f4704f 94 msg "Sending using http mode to $url"
bcb3a8b8 95 cat - | python -c '
e3a591a1 96import sys, socket, urllib2
bfa10c0d
AM
97
98try:
99 data = sys.stdin.read()
e6aa37ec 100 url = sys.argv[1]
e3a591a1 101 socket.setdefaulttimeout(10)
e6aa37ec 102 req = urllib2.Request(url, data)
e3a591a1 103 f = urllib2.urlopen(req)
bfa10c0d
AM
104 f.close()
105except Exception, e:
e6aa37ec 106 print >> sys.stderr, "Problem while sending request via HTTP: %s: %s" % (url, e)
bfa10c0d 107 sys.exit(1)
f04b3329 108print >> sys.stdout, "Request queued via HTTP."
bfa10c0d 109' "$url"
bcb3a8b8
ER
110 ;;
111 esac
bfa10c0d
AM
112}
113
8727819e
ER
114# htmlspecialchars: escape <, > and &
115hsc() {
116 local input=$1
117 echo -E "$input" | sed -e 's,&,\&amp;,g;s,<,\&lt;,g;s,>,\&gt;,g'
118}
119
45d8ed70
ER
120# simple df_fetcher, based on packages/fetchsrc_request
121# TODO: tcp (smtp) mode
122# TODO: adjust for ~/.requestrc config
123df_fetch() {
124 local specs="$@"
125
126 # Sending by
127 local MAILER='/usr/sbin/sendmail'
128 # MAILER='/usr/bin/msmtp'
129 # Sending via
130 local VIA="SENDMAIL"
131 #VIA="localhost"
132 local VIA_ARGS=""
133 #VIA_ARGS="some additional flags"
134 # e.g. for msmtp:
135 # VIA_ARGS='-a gmail'
136 #
137 # DISTFILES EMAIL
138 local DMAIL="distfiles@pld-linux.org"
139
140 local HOST=$(hostname -f)
141 local LOGIN=${requester%@*}
142
143 for spec in $specs; do
144 local SPEC=$(echo "$spec" | sed -e 's|:.*||')
1768b4b0 145 SPEC=${SPEC%.spec}
45d8ed70
ER
146 local BRANCH=$(echo "$spec" | sed -e 's|.*:||')
147 echo >&2 "Distfiles Request: $SPEC:$BRANCH via $MAILER ${VIA_ARGS:+ ($VIA_ARGS)}"
148 cat <<-EOF | "$MAILER" -t -i $VIA_ARGS
149 To: $DMAIL
150 From: $LOGIN <$LOGIN@$HOST>
151 Subject: fetchsrc_request notify
45d8ed70
ER
152 X-distfiles-request: yes
153 X-Login: $LOGIN
1768b4b0 154 X-Package: $SPEC
45d8ed70
ER
155 X-Branch: $BRANCH
156 X-Flags: force-reply
157
158 .
159 EOF
160 done
a757e911 161}
1344b6f1 162
41a0b4f6
ER
163# autotag from rpm-build-macros
164# displays latest used tag for a specfile
165autotag() {
166 local out s
167 for s in "$@"; do
168 # strip branches
169 s=${s%:*}
170 # ensure package ends with .spec
171 s=${s%.spec}.spec
057cd5df
ER
172 git fetch --tags
173 out=$(git for-each-ref --count=1 --sort=-authordate refs/tags/auto/$dist \
d235cd88 174 --format='%(refname:short)')
41a0b4f6
ER
175 echo "$s:$out"
176 done
177}
178
179# get autotag for specs
057cd5df 180# WARNING: This may checkout some files from VCS
41a0b4f6
ER
181get_autotag() {
182 local pkg spec rpmdir
183
184 rpmdir=$(rpm -E %_topdir)
41a0b4f6 185 for pkg in "$@"; do
a2cad6fc 186 cd $rpmdir
41a0b4f6
ER
187 # strip branches
188 pkg=${pkg%:*}
189 # strip .spec extension
190 pkg=${pkg%.spec}
191 # checkout only if missing
192 if [ ! -e $pkg/$pkg.spec ]; then
193 $rpmdir/builder -g $pkg -ns -r HEAD 1>&2
194 fi
195 if [ ! -e $pkg/$pkg.spec ]; then
196 # just print it out, to fallback to base pkg name
197 echo "$pkg"
198 else
b8eb9953
KK
199 cd $pkg
200 autotag $pkg.spec
41a0b4f6
ER
201 fi
202 done
203}
204
586a5f1f 205usage() {
23e1dcfb
ER
206 cat <<EOF
207Usage: make-request.sh [OPTION] ... [SPECFILE] ....
208
209Mandatory arguments to long options are mandatory for short options too.
210
7b78b948 211 --config-file /path/to/config/file
bb30a063
ER
212 Source additional config file (after $USER_CFG), useful when
213 when sending build requests to Ac/Th from the same account
41a0b4f6
ER
214 -a
215 Try to use latest auto-tag for the spec when building
216 WARNING: This will checkout new files to your packages dir
bb30a063 217 -b 'BUILDER BUILDER ...', --builder='BUILDER BUILDER ...'
41a0b4f6 218 Sends request to given builders (in 'version-arch' format)
bb30a063
ER
219 --with VALUE, --without VALUE
220 Build package with(out) a given bcond
23e1dcfb 221 --kernel VALUE
bb30a063 222 set alt_kernel to VALUE
23e1dcfb 223 --target VALUE
bb30a063 224 set --target to VALUE
0387e9e2
ER
225 -D "NAME VALUE"|--define "NAME VALUE"
226 define macro named NAME with value VALUE
23e1dcfb 227 -s BUILD_ID, --skip BUILD_ID[,BUILD_ID][,BUILD_ID]
bb30a063 228 mark build ids on src builder to be skipped
23e1dcfb 229 --branch VALUE
bb30a063
ER
230 specify default branch for specs in request
231 -t, --test-build
0e59dd68
AM
232 Performs a 'test-build'. Package will be uploaded to hidden .test-builds/
233 ftp tree and won't be upgraded on builders.
bb30a063 234 -r, --ready-build
0e59dd68
AM
235 Preforms a 'ready' build. Package will be built and uploaded to test/ ftp tree
236 (and later moved by release manager staff to ready/ and main ftp tree)
bb30a063
ER
237 -u, --upgrade
238 Forces package upgrade (for use with -c or -q, not -t)
239 -n, --no-upgrade
240 Disables package upgrade (for use with -r)
218a4c96 241 -ni, --no-install-br
bb30a063 242 Do not install missing BuildRequires (--nodeps)
218a4c96
ER
243 -nd, --no-depend
244 Do not add dependency of build jobs, each job in batch runs itself
bb30a063
ER
245 -j, --jobs
246 Number of parallel jobs for single build
247 -f, --flag
da6bf40b
ER
248 -d, --dist DISTRIBUTION_ID
249 Specify value for \$dist
bb30a063
ER
250 -df, --distfiles-fetch[-request] PACKAGE
251 Send distfiles request to fetch sources for PACKAGE
252 -cf, --command-flag
253 Not yet documented
254 -c, --command
7b78b948
ER
255 Executes a given command on builders (prepended to build jobs if build jobs included)
256 -C, --post-command
257 Executes a given command on builders (appended to build jobs if build jobs included)
bb30a063
ER
258 --test-remove-pkg
259 shortcut for --command poldek -evt ARGS
260 --remove-pkg
261 shortcut for --command poldek -ev --noask ARGS
262 --upgrade-pkg
263 shortcut for --command poldek --up -Uv ARGS
a72a1c1c 264 --pull
bb30a063 265 Updates builders infrastructure (outside chroot)
a166aeda
ER
266 --update-macros
267 Updates rpm-build-macros on src builder
f255298f
KK
268 --update-scripts
269 Updates ~/rpm/rpm-build-tools on builder
23e1dcfb 270 -q
bb30a063
ER
271 shortcut for --command rpm -q ARGS
272 -g, --gpg-opts "opts"
273 Pass additional options to gpg binary
274 -p, --priority VALUE
275 sets request priority (default 2)
276 -h, --help
277 Displays this help message
fab41d9b
JK
278 --requester username
279 Override the requester
23e1dcfb
ER
280EOF
281 exit 0
586a5f1f
AG
282}
283
da6bf40b
ER
284# validate distro, set $dist
285set_dist() {
4f727d37
ER
286 case "$1" in
287 ac)
288 ;;
289 ac-java|ac-xen)
290 ;;
291 ti)
292 ;;
293 ti-dev)
294 ;;
295 th)
296 ;;
297 th-java)
298 ;;
299 aidath)
300 ;;
301 *)
da6bf40b 302 die "dist \`$1' not known"
4f727d37
ER
303 ;;
304 esac
305
da6bf40b 306 dist=$1
4f727d37 307}
586a5f1f 308
8727819e 309while [ $# -gt 0 ]; do
9cc9841b 310 case "$1" in
da6bf40b
ER
311 -d | --dist | --distro)
312 set_dist $2
9cc9841b
ER
313 shift
314 ;;
315
7b78b948
ER
316 --config-file)
317 [ -f "$2" ] && . $2 || die "Config file not found"
9cc9841b
ER
318 shift
319 ;;
320
bb30a063 321 --builder | -b)
2ae16ef4
ER
322 for b in $2; do
323 builders="$builders ${b%:*}"
324 done
9cc9841b
ER
325 shift
326 ;;
327
41a0b4f6
ER
328 -a)
329 autotag=yes
330 ;;
331
bb30a063 332 --with)
aa64c8df 333 with="$with $(echo "$2" | tr ',' ' ')"
9cc9841b
ER
334 shift
335 ;;
336
bb30a063 337 --without)
d4a37eec 338 without="$without $(echo "$2" | tr ',' ' ')"
9cc9841b
ER
339 shift
340 ;;
341
bb30a063 342 --test-build | -t)
9cc9841b
ER
343 build_mode=test
344 f_upgrade=no
345 ;;
346
bb30a063 347 --kernel)
9cc9841b
ER
348 kernel=$2
349 shift
350 ;;
351
be264f26
ER
352 --target)
353 target=$2
354 shift
355 ;;
356
0387e9e2
ER
357 -D|--define)
358 value=${2#* }
359 name=${2%% *}
360 define="$define$cr$name=$value"
361 shift
362 ;;
363
db286098 364 -s|--skip)
897f56ee 365 skip="$2"
db286098
ER
366 shift
367 ;;
368
11270534
ER
369 --branch)
370 branch=$2
371 shift
372 ;;
373
bb30a063 374 --priority | -p)
9cc9841b
ER
375 priority=$2
376 shift
377 ;;
378
bb30a063 379 --ready-build | -r)
9cc9841b
ER
380 build_mode=ready
381 ;;
382
bb30a063 383 --upgrade | -u)
9cc9841b
ER
384 f_upgrade=yes
385 ;;
386
bb30a063 387 --no-upgrade | -n)
9cc9841b
ER
388 f_upgrade=no
389 ;;
390
218a4c96
ER
391 --no-depend | -nd)
392 no_depend=yes
393 ;;
394
bb30a063 395 --no-install-br | -ni)
9cc9841b
ER
396 flags="$flags no-install-br"
397 ;;
398
bb30a063 399 -j | --jobs)
d8f1c9c0
AM
400 jobs="$2"
401 shift
402 ;;
403
c75bde7b
AM
404 -j*)
405 jobs="${1#-j}"
406 ;;
407
12151609
ER
408 -v)
409 verbose=yes
410 ;;
411
bb30a063 412 --flag | -f)
9cc9841b
ER
413 flags="$flags $2"
414 shift
415 ;;
416
bb30a063 417 --command-flags | -cf)
9cc9841b
ER
418 command_flags="$2"
419 shift
420 ;;
421
bb30a063 422 --command | -c)
9cc9841b 423 command="$2"
30ddd991 424 if [ "$command" = - ]; then
3f77765b
ER
425 echo >&2 "Reading command from STDIN"
426 echo >&2 "---"
427 command=$(cat)
428 echo >&2 "---"
429 fi
7b78b948
ER
430 shift
431 ;;
432 --post-command | -C)
433 post_command="$2"
434 if [ "$post_command" = - ]; then
435 echo >&2 "Reading post_command from STDIN"
436 echo >&2 "---"
437 post_command=$(cat)
438 echo >&2 "---"
439 fi
9cc9841b
ER
440 shift
441 ;;
442 --test-remove-pkg)
443 command="poldek -evt $2"
444 f_upgrade=no
445 shift
446 ;;
447 --remove-pkg)
c4c115cc 448 command="for a in $2; do poldek -ev --noask \$a; done"
9cc9841b
ER
449 f_upgrade=no
450 shift
451 ;;
b098536f 452 --upgrade-pkg|-Uhv)
218a4c96 453 command="poldek --up; poldek -uv $2"
9cc9841b
ER
454 f_upgrade=no
455 shift
456 ;;
457 -q)
458 command="rpm -q $2"
459 f_upgrade=no
460 shift
461 ;;
462
a72a1c1c 463 --pull)
9cc9841b 464 command_flags="no-chroot"
a72a1c1c 465 command="git pull"
49a8a604 466 f_upgrade=no
9cc9841b
ER
467 ;;
468
a166aeda
ER
469 --update-macros)
470 upgrade_macros="yes"
471 ;;
472
f255298f
KK
473 --update-scripts)
474 upgrade_scripts='yes'
475 ;;
476
45d8ed70
ER
477 -df | --distfiles-fetch | --distfiles-fetch-request)
478 df_fetch=yes
479 ;;
480
bb30a063 481 --gpg-opts | -g)
1bf4c407
TP
482 gpg_opts="$2"
483 shift
484 ;;
9cc9841b 485
bb30a063 486 --help | -h)
9cc9841b
ER
487 usage
488 ;;
489
fab41d9b
JK
490 --requester)
491 requester_override="$2"
492 shift
493 ;;
494
bb30a063 495 -*)
9cc9841b
ER
496 die "unknown knob: $1"
497 ;;
498
bb30a063 499 *:* | *)
9cc9841b
ER
500 specs="$specs $1"
501 ;;
502 esac
503 shift
1344b6f1
MM
504done
505
da6bf40b 506case "$dist" in
e728b34c 507ac)
9cc9841b
ER
508 builder_email="builder-ac@pld-linux.org"
509 default_builders="ac-*"
510 default_branch="AC-branch"
8503c5d2 511 url="http://ep09.pld-linux.org:1289/"
a3387055 512 control_url="http://ep09.pld-linux.org/~buildsrc"
9cc9841b 513 ;;
da6bf40b 514ac-java) # fake "dist" for java available ac architectures
e4047e17 515 builder_email="builder-ac@pld-linux.org"
9cc9841b
ER
516 default_builders="ac-i586 ac-i686 ac-athlon ac-amd64"
517 default_branch="AC-branch"
8503c5d2 518 url="http://ep09.pld-linux.org:1289/"
9cc9841b 519 ;;
da6bf40b 520ac-xen) # fake "dist" for xen-enabled architectures
e4047e17
ER
521 builder_email="builder-ac@pld-linux.org"
522 default_builders="ac-i686 ac-athlon ac-amd64"
523 default_branch="AC-branch"
70d46bca 524 ;;
e728b34c 525ti)
9cc9841b
ER
526 builder_email="builderti@ep09.pld-linux.org"
527 default_builders="ti-*"
5ed6b10a
AM
528 url="http://ep09.pld-linux.org:1231/"
529 control_url="http://ep09.pld-linux.org/~builderti"
9cc9841b 530 ;;
3274da14 531ti-dev)
532 builder_email="buildertidev@ep09.pld-linux.org"
533 default_builders="ti-dev-*"
534 url="http://ep09.pld-linux.org:1232/"
535 control_url="http://ep09.pld-linux.org/~buildertidev"
536 ;;
e728b34c 537th)
f0cfd110 538 builder_email="builderth@pld-linux.org"
9cc9841b 539 default_builders="th-*"
1cd123e3 540 url="http://src.th.pld-linux.org:1234/"
f0cfd110 541 control_url="http://src.th.pld-linux.org"
9cc9841b 542 ;;
da6bf40b 543th-java) # fake "dist" for java available th architectures
f0cfd110 544 builder_email="builderth@pld-linux.org"
976435cb 545 default_builders="th-x86_64 th-athlon th-i686"
1cd123e3 546 url="http://src.th.pld-linux.org:1234/"
e219518b 547 ;;
32384897 548aidath)
549 builder_email="builderaidath@ep09.pld-linux.org"
550 default_builders="aidath-*"
551 ;;
14b580de 552*)
da6bf40b 553 die "dist \`$dist' not known"
14b580de 554 ;;
e728b34c
ER
555esac
556
da6bf40b 557# need to do this after dist selection
897f56ee 558if [ "$skip" ]; then
9b86ba23
ER
559 skip=$(skip="$skip" control_url="$control_url" python -c '
560import urllib2
561import sys
562import StringIO
563import gzip
564import re
565import os
566import string
567from xml.dom import minidom
568
569skip = os.environ.get("skip").split(",");
570control_url = os.environ.get("control_url")
571
572print >> sys.stderr, "* Check queue_id-s against %s" % control_url
573
574try:
575 headers = { "Cache-Control": "no-cache", "Pragma": "no-cache" }
576 req = urllib2.Request(url=control_url + "/queue.gz", headers=headers)
577 f = urllib2.urlopen(req)
578except Exception, e:
579 print >> sys.stderr, "Fetch error %s: %s" % (control_url + "/queue.gz", e)
580 sys.exit(1)
581
582sio = StringIO.StringIO()
583sio.write(f.read())
584f.close()
585sio.seek(0)
586f = gzip.GzipFile(fileobj = sio)
587
588xml = re.compile("(<queue>.*?</queue>)", re.DOTALL).match(f.read()).group(1)
589d = minidom.parseString(xml)
590
591q = []
592for c in d.documentElement.childNodes:
593 if c.nodeName != "group":
594 continue
595 q.append(c.attributes["id"].value)
596
597err = 0
598for s in skip:
599 if s not in q:
600 print >> sys.stderr, "- Check %s: ERROR: Not valid queue-id" % s
601 err = 1
602 else:
603 print >> sys.stderr, "- Check %s: OK" % s
604if err == 1:
605 sys.exit(1)
606print string.join(skip, ",")
607') || exit $?
897f56ee
ER
608 f_upgrade=no
609 build_mode=test
610 priority=-1
611 command="skip:$skip"
612 command_flags="no-chroot"
da6bf40b 613 builders="$dist-src"
897f56ee
ER
614fi
615
11270534
ER
616branch=${branch:-$default_branch}
617
e728b34c 618specs=`for s in $specs; do
9cc9841b 619 case "$s" in
218a4c96 620 ^)
da6bf40b 621 # skip marker - pass it along
218a4c96
ER
622 echo $s
623 ;;
9cc9841b 624 *:*) # package name with branch
e4d71c86
KK
625 _specfile=$(basename ${s%:*})
626 echo ${_specfile%.spec}.spec:${s##*:}
9cc9841b
ER
627 ;;
628 *) # just package name
d1ae5775 629 echo $(basename ${s%.spec}).spec:$branch
9cc9841b
ER
630 ;;
631 esac
878677a8 632done`
1344b6f1 633
41a0b4f6
ER
634if [ "$autotag" = "yes" ]; then
635 msg "Auto autotag build enabled"
636 specs=$(get_autotag $specs)
637fi
638
45d8ed70
ER
639if [ "$df_fetch" = "yes" ]; then
640 df_fetch $specs
641 exit 0
642fi
643
a166aeda 644if [ "$upgrade_macros" = "yes" ]; then
218a4c96 645 command="poldek --up; poldek -uv rpm-build-macros"
da6bf40b 646 builders="$dist-src"
a166aeda
ER
647 f_upgrade=no
648 build_mode=test
649fi
650
045b9f0b
KK
651if [ "$upgrade_scripts" = "yes" ]; then
652 command="cd ~/rpm/rpm-build-tools && git pull"
653 command_flags=as-builder
654 builders="$dist-src"
655 f_upgrade=no
656 build_mode=test
657fi
658
2f470d17 659if [[ "$requester" != *@* ]] ; then
b3d9fd17 660 requester="$requester@pld-linux.org"
2f470d17
MK
661fi
662
14b580de 663if [ -z "$builders" ] ; then
9cc9841b 664 builders="$default_builders"
a757e911
MM
665fi
666
544ca060 667if [ "$f_upgrade" = "yes" ] ; then
9cc9841b 668 flags="$flags upgrade"
a757e911
MM
669fi
670
e936beda 671if [ "$build_mode" = "test" ] ; then
9cc9841b
ER
672 if [ "$f_upgrade" = "yes" ] ; then
673 die "--upgrade and --test-build are mutually exclusive"
674 fi
675 flags="$flags test-build"
e936beda
MM
676fi
677
e728b34c
ER
678if [ -z "$build_mode" ] ; then
679 # missing build mode, builders go crazy when you proceed"
680 die "please specify build mode"
681fi
682
683
280b1afd 684ok=
e728b34c
ER
685for s in $specs; do
686 ok=1
280b1afd
MM
687done
688
d80e53cf
ER
689if [ -z "$specs" -a -z "$command" ]; then
690 die "no packages to build or command to invoke specified"
280b1afd
MM
691fi
692
1344b6f1
MM
693id=$(uuidgen)
694
695gen_req() {
9cc9841b
ER
696 echo "<group id='$id' no='0' flags='$flags'>"
697 echo " <time>$(date +%s)</time>"
c9f4704f 698 msg "Using priority $priority"
9cc9841b 699 echo " <priority>$priority</priority>"
d8f1c9c0 700 if [ -n "$jobs" ]; then
c9f4704f 701 msg "Using jobs $jobs"
d8f1c9c0
AM
702 echo " <maxjobs>$jobs</maxjobs>"
703 fi
fe7aaa44 704 if [ -z "$url" ]; then
c9f4704f 705 msg "Using email $builder_email"
fe7aaa44 706 else
c9f4704f 707 msg "Using URL $url"
fe7aaa44 708 fi
2aa9d23d
ER
709
710 if [ "$build_mode" = "ready" ]; then
711 msg "Build mode: $(tput setaf 2)$build_mode$c_norm"
712 else
713 msg "Build mode: $(tput setaf 3)$build_mode$c_norm"
714 fi
715
fab41d9b
JK
716 if [ -n "$requester_override" ] ; then
717 echo " <requester>$requester_override</requester>"
718 fi
719
c9f4704f 720 msg "Queue-ID: $id"
9cc9841b
ER
721 echo
722
d80e53cf
ER
723 # job to depend on
724 local depend=
0387e9e2 725 local b i=1 val
d80e53cf
ER
726 local name branch builders_xml
727
728 for b in $builders; do
55bfbaf6 729 msg "Builder: $(red $b)"
d80e53cf
ER
730 builders_xml="$builders_xml <builder>$b</builder>"
731 done
732
733 if [ "$command" ]; then
9cc9841b 734 bid=$(uuidgen)
e6aa37ec 735 echo -E >&2 "* Command: $command"
9cc9841b 736 echo " <batch id='$bid' depends-on=''>"
30ddd991 737 echo " <command flags='$command_flags'>"
8727819e 738 hsc "$command"
30ddd991 739 echo "</command>"
9cc9841b 740 echo " <info></info>"
d80e53cf 741 echo "$builders_xml"
9cc9841b 742 echo " </batch>"
d80e53cf
ER
743 depend=$bid
744 fi
9cc9841b 745
4156e476
ER
746 if [ "$f_upgrade" = "yes" ] ; then
747 msg "Upgrade mode: $f_upgrade"
748 fi
e728b34c 749
4156e476
ER
750 for s in $specs; do
751 # skip marker
752 if [ "$s" = "^" ]; then
753 depend=
754 continue
755 fi
756 if [ "$no_depend" = yes ]; then
757 depend=
758 fi
759 bid=$(uuidgen)
760 echo " <batch id='$bid' depends-on='$depend'>"
c4aa0539 761
4156e476
ER
762 name=$(echo "$s" | sed -e 's|:.*||')
763 branch=$(echo "$s" | sed -e 's|.*:||')
764 msg "Adding #$i $name:$branch${kernel:+ alt_kernel=$kernel}${target:+ target=$target}${depend:+ depends on $depend}"
765 echo " <spec>$name</spec>"
766 echo " <branch>$branch</branch>"
767 echo " ${kernel:+<kernel>$kernel</kernel>}"
768 echo " ${target:+<target>$target</target>}"
0387e9e2
ER
769
770 oIFS=$IFS; IFS=$cr
771 for b in $define; do
772 [ -z "$b" ] && continue
773 value=${b#*=}
774 b=${b%%=*}
775 echo " <define name='$(hsc $b)'>$(hsc "$value")</define>"
4e66252a 776 msg "- define $b=$value"
0387e9e2
ER
777 done
778 IFS=$oIFS
779
4156e476
ER
780 echo " <info></info>"
781 echo
782 for b in $with; do
783 echo " <with>$b</with>"
784 done
785 for b in $without; do
786 echo " <without>$b</without>"
218a4c96 787 done
4156e476
ER
788 echo
789 echo "$builders_xml"
790 echo " </batch>"
791 i=$((i+1))
792
793 # let next job depend on previous
794 depend=$bid
795 done
e728b34c 796
7b78b948
ER
797 if [ "$post_command" ]; then
798 bid=$(uuidgen)
ffcfade9
ER
799 if [ "$no_depend" = yes ]; then
800 depend=
801 fi
7b78b948
ER
802 echo -E >&2 "* Post-Command: $post_command"
803 echo " <batch id='$bid' depends-on='$depend'>"
804 echo " <command flags='$command_flags'>"
8727819e 805 hsc "$post_command"
7b78b948
ER
806 echo "</command>"
807 echo " <info></info>"
808 echo "$builders_xml"
809 echo " </batch>"
810 depend=$bid
811 fi
812
9cc9841b 813 echo "</group>"
1344b6f1
MM
814}
815
816gen_email () {
e728b34c 817 # make request first, so the STDERR/STDOUT streams won't be mixed
6d0cc702
ER
818 local tmp req
819 tmp=$(mktemp)
820 gen_req > $tmp
e728b34c 821
12151609 822 if [ "$verbose" = "yes" ]; then
6d0cc702 823 cat $tmp >&2
12151609 824 fi
6d0cc702
ER
825
826 cat <<-EOF
827 From: $requester
828 To: $builder_email
829 Subject: build request
830 Message-Id: <$id@$(hostname)>
831 X-New-PLD-Builder: request
832 X-Requester-Version: \$Id$
833
834 EOF
835
836 gpg --clearsign --default-key $default_key $gpg_opts --output=- $tmp
837 rm -f $tmp
1344b6f1
MM
838}
839
bfa10c0d 840gen_email | send_request
This page took 0.70338 seconds and 4 git commands to generate.