]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - client/make-request.sh
use distfiles mail directly to cvs machine
[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]
04803313 101 socket.setdefaulttimeout(30)
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
850c180f 138 local DMAIL="distfiles@cvs.pld-linux.org"
45d8ed70
ER
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
15a56d00
ER
270 --requester username
271 Override the requester
23e1dcfb 272 -q
bb30a063
ER
273 shortcut for --command rpm -q ARGS
274 -g, --gpg-opts "opts"
275 Pass additional options to gpg binary
276 -p, --priority VALUE
277 sets request priority (default 2)
278 -h, --help
279 Displays this help message
15a56d00
ER
280 -v
281 Verbose. Print some more debug on screen
23e1dcfb
ER
282EOF
283 exit 0
586a5f1f
AG
284}
285
da6bf40b
ER
286# validate distro, set $dist
287set_dist() {
4f727d37
ER
288 case "$1" in
289 ac)
290 ;;
291 ac-java|ac-xen)
292 ;;
293 ti)
294 ;;
295 ti-dev)
296 ;;
297 th)
298 ;;
299 th-java)
300 ;;
301 aidath)
302 ;;
303 *)
da6bf40b 304 die "dist \`$1' not known"
4f727d37
ER
305 ;;
306 esac
307
da6bf40b 308 dist=$1
4f727d37 309}
586a5f1f 310
8727819e 311while [ $# -gt 0 ]; do
9cc9841b 312 case "$1" in
da6bf40b
ER
313 -d | --dist | --distro)
314 set_dist $2
9cc9841b
ER
315 shift
316 ;;
317
7b78b948
ER
318 --config-file)
319 [ -f "$2" ] && . $2 || die "Config file not found"
9cc9841b
ER
320 shift
321 ;;
322
bb30a063 323 --builder | -b)
2ae16ef4
ER
324 for b in $2; do
325 builders="$builders ${b%:*}"
326 done
9cc9841b
ER
327 shift
328 ;;
329
41a0b4f6
ER
330 -a)
331 autotag=yes
332 ;;
333
bb30a063 334 --with)
aa64c8df 335 with="$with $(echo "$2" | tr ',' ' ')"
9cc9841b
ER
336 shift
337 ;;
338
bb30a063 339 --without)
d4a37eec 340 without="$without $(echo "$2" | tr ',' ' ')"
9cc9841b
ER
341 shift
342 ;;
343
bb30a063 344 --test-build | -t)
9cc9841b
ER
345 build_mode=test
346 f_upgrade=no
347 ;;
348
bb30a063 349 --kernel)
9cc9841b
ER
350 kernel=$2
351 shift
352 ;;
353
be264f26
ER
354 --target)
355 target=$2
356 shift
357 ;;
358
0387e9e2
ER
359 -D|--define)
360 value=${2#* }
361 name=${2%% *}
362 define="$define$cr$name=$value"
363 shift
364 ;;
365
db286098 366 -s|--skip)
897f56ee 367 skip="$2"
db286098
ER
368 shift
369 ;;
370
11270534
ER
371 --branch)
372 branch=$2
373 shift
374 ;;
375
bb30a063 376 --priority | -p)
9cc9841b
ER
377 priority=$2
378 shift
379 ;;
380
bb30a063 381 --ready-build | -r)
9cc9841b
ER
382 build_mode=ready
383 ;;
384
bb30a063 385 --upgrade | -u)
9cc9841b
ER
386 f_upgrade=yes
387 ;;
388
bb30a063 389 --no-upgrade | -n)
9cc9841b
ER
390 f_upgrade=no
391 ;;
392
218a4c96
ER
393 --no-depend | -nd)
394 no_depend=yes
395 ;;
396
bb30a063 397 --no-install-br | -ni)
9cc9841b
ER
398 flags="$flags no-install-br"
399 ;;
400
bb30a063 401 -j | --jobs)
d8f1c9c0
AM
402 jobs="$2"
403 shift
404 ;;
405
c75bde7b
AM
406 -j*)
407 jobs="${1#-j}"
408 ;;
409
12151609
ER
410 -v)
411 verbose=yes
412 ;;
413
bb30a063 414 --flag | -f)
9cc9841b
ER
415 flags="$flags $2"
416 shift
417 ;;
418
bb30a063 419 --command-flags | -cf)
9cc9841b
ER
420 command_flags="$2"
421 shift
422 ;;
423
bb30a063 424 --command | -c)
9cc9841b 425 command="$2"
30ddd991 426 if [ "$command" = - ]; then
3f77765b
ER
427 echo >&2 "Reading command from STDIN"
428 echo >&2 "---"
429 command=$(cat)
430 echo >&2 "---"
431 fi
7b78b948
ER
432 shift
433 ;;
434 --post-command | -C)
435 post_command="$2"
436 if [ "$post_command" = - ]; then
437 echo >&2 "Reading post_command from STDIN"
438 echo >&2 "---"
439 post_command=$(cat)
440 echo >&2 "---"
441 fi
9cc9841b
ER
442 shift
443 ;;
444 --test-remove-pkg)
445 command="poldek -evt $2"
446 f_upgrade=no
447 shift
448 ;;
449 --remove-pkg)
c4c115cc 450 command="for a in $2; do poldek -ev --noask \$a; done"
9cc9841b
ER
451 f_upgrade=no
452 shift
453 ;;
b098536f 454 --upgrade-pkg|-Uhv)
218a4c96 455 command="poldek --up; poldek -uv $2"
9cc9841b
ER
456 f_upgrade=no
457 shift
458 ;;
459 -q)
460 command="rpm -q $2"
461 f_upgrade=no
462 shift
463 ;;
464
a72a1c1c 465 --pull)
9cc9841b 466 command_flags="no-chroot"
a72a1c1c 467 command="git pull"
49a8a604 468 f_upgrade=no
9cc9841b
ER
469 ;;
470
a166aeda
ER
471 --update-macros)
472 upgrade_macros="yes"
473 ;;
474
f255298f
KK
475 --update-scripts)
476 upgrade_scripts='yes'
477 ;;
478
45d8ed70
ER
479 -df | --distfiles-fetch | --distfiles-fetch-request)
480 df_fetch=yes
481 ;;
482
bb30a063 483 --gpg-opts | -g)
1bf4c407
TP
484 gpg_opts="$2"
485 shift
486 ;;
9cc9841b 487
bb30a063 488 --help | -h)
9cc9841b
ER
489 usage
490 ;;
491
fab41d9b
JK
492 --requester)
493 requester_override="$2"
494 shift
495 ;;
496
bb30a063 497 -*)
9cc9841b
ER
498 die "unknown knob: $1"
499 ;;
500
bb30a063 501 *:* | *)
9cc9841b
ER
502 specs="$specs $1"
503 ;;
504 esac
505 shift
1344b6f1
MM
506done
507
da6bf40b 508case "$dist" in
e728b34c 509ac)
850c180f 510 default_branch="AC-branch"
9cc9841b
ER
511 builder_email="builder-ac@pld-linux.org"
512 default_builders="ac-*"
8503c5d2 513 url="http://ep09.pld-linux.org:1289/"
a3387055 514 control_url="http://ep09.pld-linux.org/~buildsrc"
9cc9841b 515 ;;
da6bf40b 516ac-java) # fake "dist" for java available ac architectures
e4047e17 517 builder_email="builder-ac@pld-linux.org"
9cc9841b
ER
518 default_builders="ac-i586 ac-i686 ac-athlon ac-amd64"
519 default_branch="AC-branch"
8503c5d2 520 url="http://ep09.pld-linux.org:1289/"
9cc9841b 521 ;;
da6bf40b 522ac-xen) # fake "dist" for xen-enabled architectures
e4047e17
ER
523 builder_email="builder-ac@pld-linux.org"
524 default_builders="ac-i686 ac-athlon ac-amd64"
525 default_branch="AC-branch"
70d46bca 526 ;;
e728b34c 527ti)
9cc9841b
ER
528 builder_email="builderti@ep09.pld-linux.org"
529 default_builders="ti-*"
5ed6b10a
AM
530 url="http://ep09.pld-linux.org:1231/"
531 control_url="http://ep09.pld-linux.org/~builderti"
9cc9841b 532 ;;
3274da14 533ti-dev)
534 builder_email="buildertidev@ep09.pld-linux.org"
535 default_builders="ti-dev-*"
536 url="http://ep09.pld-linux.org:1232/"
537 control_url="http://ep09.pld-linux.org/~buildertidev"
538 ;;
e728b34c 539th)
f0cfd110 540 builder_email="builderth@pld-linux.org"
9cc9841b 541 default_builders="th-*"
1cd123e3 542 url="http://src.th.pld-linux.org:1234/"
f0cfd110 543 control_url="http://src.th.pld-linux.org"
9cc9841b 544 ;;
da6bf40b 545th-java) # fake "dist" for java available th architectures
f0cfd110 546 builder_email="builderth@pld-linux.org"
976435cb 547 default_builders="th-x86_64 th-athlon th-i686"
1cd123e3 548 url="http://src.th.pld-linux.org:1234/"
e219518b 549 ;;
32384897 550aidath)
551 builder_email="builderaidath@ep09.pld-linux.org"
552 default_builders="aidath-*"
553 ;;
14b580de 554*)
da6bf40b 555 die "dist \`$dist' not known"
14b580de 556 ;;
e728b34c
ER
557esac
558
da6bf40b 559# need to do this after dist selection
897f56ee 560if [ "$skip" ]; then
9b86ba23
ER
561 skip=$(skip="$skip" control_url="$control_url" python -c '
562import urllib2
563import sys
564import StringIO
565import gzip
566import re
567import os
568import string
569from xml.dom import minidom
570
571skip = os.environ.get("skip").split(",");
572control_url = os.environ.get("control_url")
573
574print >> sys.stderr, "* Check queue_id-s against %s" % control_url
575
576try:
577 headers = { "Cache-Control": "no-cache", "Pragma": "no-cache" }
578 req = urllib2.Request(url=control_url + "/queue.gz", headers=headers)
579 f = urllib2.urlopen(req)
580except Exception, e:
581 print >> sys.stderr, "Fetch error %s: %s" % (control_url + "/queue.gz", e)
582 sys.exit(1)
583
584sio = StringIO.StringIO()
585sio.write(f.read())
586f.close()
587sio.seek(0)
588f = gzip.GzipFile(fileobj = sio)
589
590xml = re.compile("(<queue>.*?</queue>)", re.DOTALL).match(f.read()).group(1)
591d = minidom.parseString(xml)
592
593q = []
594for c in d.documentElement.childNodes:
595 if c.nodeName != "group":
596 continue
597 q.append(c.attributes["id"].value)
598
599err = 0
600for s in skip:
601 if s not in q:
602 print >> sys.stderr, "- Check %s: ERROR: Not valid queue-id" % s
603 err = 1
604 else:
605 print >> sys.stderr, "- Check %s: OK" % s
606if err == 1:
607 sys.exit(1)
608print string.join(skip, ",")
609') || exit $?
897f56ee
ER
610 f_upgrade=no
611 build_mode=test
612 priority=-1
613 command="skip:$skip"
614 command_flags="no-chroot"
da6bf40b 615 builders="$dist-src"
897f56ee
ER
616fi
617
11270534
ER
618branch=${branch:-$default_branch}
619
e728b34c 620specs=`for s in $specs; do
9cc9841b 621 case "$s" in
218a4c96 622 ^)
da6bf40b 623 # skip marker - pass it along
218a4c96
ER
624 echo $s
625 ;;
9cc9841b 626 *:*) # package name with branch
e4d71c86
KK
627 _specfile=$(basename ${s%:*})
628 echo ${_specfile%.spec}.spec:${s##*:}
9cc9841b
ER
629 ;;
630 *) # just package name
d1ae5775 631 echo $(basename ${s%.spec}).spec:$branch
9cc9841b
ER
632 ;;
633 esac
878677a8 634done`
1344b6f1 635
41a0b4f6
ER
636if [ "$autotag" = "yes" ]; then
637 msg "Auto autotag build enabled"
638 specs=$(get_autotag $specs)
639fi
640
45d8ed70
ER
641if [ "$df_fetch" = "yes" ]; then
642 df_fetch $specs
643 exit 0
644fi
645
a166aeda 646if [ "$upgrade_macros" = "yes" ]; then
218a4c96 647 command="poldek --up; poldek -uv rpm-build-macros"
da6bf40b 648 builders="$dist-src"
a166aeda
ER
649 f_upgrade=no
650 build_mode=test
651fi
652
045b9f0b
KK
653if [ "$upgrade_scripts" = "yes" ]; then
654 command="cd ~/rpm/rpm-build-tools && git pull"
655 command_flags=as-builder
656 builders="$dist-src"
657 f_upgrade=no
658 build_mode=test
659fi
660
2f470d17 661if [[ "$requester" != *@* ]] ; then
b3d9fd17 662 requester="$requester@pld-linux.org"
2f470d17
MK
663fi
664
14b580de 665if [ -z "$builders" ] ; then
9cc9841b 666 builders="$default_builders"
a757e911
MM
667fi
668
544ca060 669if [ "$f_upgrade" = "yes" ] ; then
9cc9841b 670 flags="$flags upgrade"
a757e911
MM
671fi
672
e936beda 673if [ "$build_mode" = "test" ] ; then
9cc9841b
ER
674 if [ "$f_upgrade" = "yes" ] ; then
675 die "--upgrade and --test-build are mutually exclusive"
676 fi
677 flags="$flags test-build"
e936beda
MM
678fi
679
e728b34c
ER
680if [ -z "$build_mode" ] ; then
681 # missing build mode, builders go crazy when you proceed"
682 die "please specify build mode"
683fi
684
685
280b1afd 686ok=
e728b34c
ER
687for s in $specs; do
688 ok=1
280b1afd
MM
689done
690
d80e53cf
ER
691if [ -z "$specs" -a -z "$command" ]; then
692 die "no packages to build or command to invoke specified"
280b1afd
MM
693fi
694
1344b6f1
MM
695id=$(uuidgen)
696
697gen_req() {
9cc9841b
ER
698 echo "<group id='$id' no='0' flags='$flags'>"
699 echo " <time>$(date +%s)</time>"
c9f4704f 700 msg "Using priority $priority"
9cc9841b 701 echo " <priority>$priority</priority>"
d8f1c9c0 702 if [ -n "$jobs" ]; then
c9f4704f 703 msg "Using jobs $jobs"
d8f1c9c0
AM
704 echo " <maxjobs>$jobs</maxjobs>"
705 fi
fe7aaa44 706 if [ -z "$url" ]; then
c9f4704f 707 msg "Using email $builder_email"
fe7aaa44 708 else
c9f4704f 709 msg "Using URL $url"
fe7aaa44 710 fi
2aa9d23d
ER
711
712 if [ "$build_mode" = "ready" ]; then
713 msg "Build mode: $(tput setaf 2)$build_mode$c_norm"
714 else
715 msg "Build mode: $(tput setaf 3)$build_mode$c_norm"
716 fi
717
fab41d9b
JK
718 if [ -n "$requester_override" ] ; then
719 echo " <requester>$requester_override</requester>"
720 fi
721
c9f4704f 722 msg "Queue-ID: $id"
9cc9841b
ER
723 echo
724
d80e53cf
ER
725 # job to depend on
726 local depend=
0387e9e2 727 local b i=1 val
d80e53cf
ER
728 local name branch builders_xml
729
730 for b in $builders; do
55bfbaf6 731 msg "Builder: $(red $b)"
d80e53cf
ER
732 builders_xml="$builders_xml <builder>$b</builder>"
733 done
734
735 if [ "$command" ]; then
9cc9841b 736 bid=$(uuidgen)
e6aa37ec 737 echo -E >&2 "* Command: $command"
9cc9841b 738 echo " <batch id='$bid' depends-on=''>"
30ddd991 739 echo " <command flags='$command_flags'>"
8727819e 740 hsc "$command"
30ddd991 741 echo "</command>"
9cc9841b 742 echo " <info></info>"
d80e53cf 743 echo "$builders_xml"
9cc9841b 744 echo " </batch>"
d80e53cf
ER
745 depend=$bid
746 fi
9cc9841b 747
4156e476
ER
748 if [ "$f_upgrade" = "yes" ] ; then
749 msg "Upgrade mode: $f_upgrade"
750 fi
e728b34c 751
4156e476
ER
752 for s in $specs; do
753 # skip marker
754 if [ "$s" = "^" ]; then
755 depend=
756 continue
757 fi
758 if [ "$no_depend" = yes ]; then
759 depend=
760 fi
761 bid=$(uuidgen)
762 echo " <batch id='$bid' depends-on='$depend'>"
c4aa0539 763
4156e476
ER
764 name=$(echo "$s" | sed -e 's|:.*||')
765 branch=$(echo "$s" | sed -e 's|.*:||')
766 msg "Adding #$i $name:$branch${kernel:+ alt_kernel=$kernel}${target:+ target=$target}${depend:+ depends on $depend}"
767 echo " <spec>$name</spec>"
768 echo " <branch>$branch</branch>"
769 echo " ${kernel:+<kernel>$kernel</kernel>}"
770 echo " ${target:+<target>$target</target>}"
0387e9e2
ER
771
772 oIFS=$IFS; IFS=$cr
773 for b in $define; do
774 [ -z "$b" ] && continue
775 value=${b#*=}
776 b=${b%%=*}
777 echo " <define name='$(hsc $b)'>$(hsc "$value")</define>"
4e66252a 778 msg "- define $b=$value"
0387e9e2
ER
779 done
780 IFS=$oIFS
781
4156e476
ER
782 echo " <info></info>"
783 echo
784 for b in $with; do
785 echo " <with>$b</with>"
786 done
787 for b in $without; do
788 echo " <without>$b</without>"
218a4c96 789 done
4156e476
ER
790 echo
791 echo "$builders_xml"
792 echo " </batch>"
793 i=$((i+1))
794
795 # let next job depend on previous
796 depend=$bid
797 done
e728b34c 798
7b78b948
ER
799 if [ "$post_command" ]; then
800 bid=$(uuidgen)
ffcfade9
ER
801 if [ "$no_depend" = yes ]; then
802 depend=
803 fi
7b78b948
ER
804 echo -E >&2 "* Post-Command: $post_command"
805 echo " <batch id='$bid' depends-on='$depend'>"
806 echo " <command flags='$command_flags'>"
8727819e 807 hsc "$post_command"
7b78b948
ER
808 echo "</command>"
809 echo " <info></info>"
810 echo "$builders_xml"
811 echo " </batch>"
812 depend=$bid
813 fi
814
9cc9841b 815 echo "</group>"
1344b6f1
MM
816}
817
818gen_email () {
e728b34c 819 # make request first, so the STDERR/STDOUT streams won't be mixed
6d0cc702
ER
820 local tmp req
821 tmp=$(mktemp)
822 gen_req > $tmp
e728b34c 823
12151609 824 if [ "$verbose" = "yes" ]; then
6d0cc702 825 cat $tmp >&2
12151609 826 fi
6d0cc702
ER
827
828 cat <<-EOF
829 From: $requester
830 To: $builder_email
831 Subject: build request
832 Message-Id: <$id@$(hostname)>
833 X-New-PLD-Builder: request
834 X-Requester-Version: \$Id$
835
836 EOF
837
838 gpg --clearsign --default-key $default_key $gpg_opts --output=- $tmp
839 rm -f $tmp
1344b6f1
MM
840}
841
bfa10c0d 842gen_email | send_request
This page took 2.608441 seconds and 4 git commands to generate.