]>
Commit | Line | Data |
---|---|---|
1344b6f1 MM |
1 | #!/bin/sh |
2 | ||
864cdeb5 MM |
3 | builders= |
4 | specs= | |
5 | with= | |
6 | without= | |
7 | flags= | |
8 | command= | |
9 | command_flags= | |
544ca060 MM |
10 | |
11 | if [ -f "$HOME/.requestrc" ]; then | |
12 | . $HOME/.requestrc | |
13 | else | |
14 | echo "Creating config file ~/.requestrc. You *must* edit it." | |
4c7c7bfd | 15 | cat >$HOME/.requestrc <<EOF |
1344b6f1 | 16 | priority=2 |
544ca060 MM |
17 | requester=deviloper |
18 | default_key=deviloper@pld-linux.org | |
19 | builder_email=builder-ac@pld-linux.org | |
1344b6f1 | 20 | mailer="/usr/sbin/sendmail -t" |
544ca060 | 21 | default_builders="ac-*" |
1344b6f1 | 22 | |
a757e911 MM |
23 | # defaults: |
24 | build_mode=ready | |
25 | f_upgrade=yes | |
26 | ||
544ca060 MM |
27 | EOF |
28 | exit | |
29 | fi | |
30 | ||
a757e911 MM |
31 | die () { |
32 | echo "$0: $*" 1>&2 | |
33 | exit 1 | |
34 | } | |
1344b6f1 MM |
35 | |
36 | while [ $# -gt 0 ] ; do | |
37 | case "$1" in | |
a757e911 | 38 | --builder | -b ) |
1344b6f1 MM |
39 | builders="$builders $2" |
40 | shift | |
41 | ;; | |
c4aa0539 | 42 | |
1344b6f1 MM |
43 | --with ) |
44 | with="$with $2" | |
45 | shift | |
46 | ;; | |
47 | ||
48 | --without ) | |
49 | without="$without $2" | |
50 | shift | |
51 | ;; | |
a757e911 MM |
52 | |
53 | --test-build | -t ) | |
54 | build_mode=test | |
544ca060 | 55 | f_upgrade=no |
a757e911 MM |
56 | ;; |
57 | ||
58 | --ready-build | -r ) | |
59 | build_mode=ready | |
60 | ;; | |
61 | ||
62 | --upgrade | -u ) | |
63 | f_upgrade=yes | |
64 | ;; | |
65 | ||
66 | --no-upgrade | -n ) | |
544ca060 | 67 | f_upgrade=no |
a757e911 MM |
68 | ;; |
69 | ||
5d25d4e4 MM |
70 | --no-install-br | -ni ) |
71 | flags="$flags no-install-br" | |
72 | ;; | |
73 | ||
a757e911 MM |
74 | --flag | -f ) |
75 | flags="$flags $2" | |
76 | shift | |
77 | ;; | |
c4aa0539 MM |
78 | |
79 | --command-flags | -cf ) | |
80 | command_flags="$2" | |
81 | shift | |
82 | ;; | |
83 | ||
84 | --command | -c ) | |
85 | command="$2" | |
86 | shift | |
87 | ;; | |
1344b6f1 MM |
88 | |
89 | -* ) | |
a757e911 | 90 | die "unknown knob: $1" |
1344b6f1 | 91 | ;; |
c4aa0539 | 92 | |
1344b6f1 MM |
93 | *:* ) |
94 | specs="$specs $1" | |
95 | ;; | |
96 | ||
97 | * ) | |
98 | specs="$specs $1:HEAD" | |
99 | ;; | |
100 | esac | |
101 | shift | |
102 | done | |
103 | ||
104 | ||
a757e911 MM |
105 | if [ "$builders" = "" ] ; then |
106 | builders="$default_builders" | |
107 | fi | |
108 | ||
544ca060 | 109 | if [ "$f_upgrade" = "yes" ] ; then |
a757e911 MM |
110 | flags="$flags upgrade" |
111 | fi | |
112 | ||
113 | if [ "$build_mode" = "test" ] ; then | |
544ca060 | 114 | if [ "$f_upgrade" = "yes" ] ; then |
a757e911 MM |
115 | die "--upgrade and --test-build are mutually exclusive" |
116 | fi | |
117 | flags="$flags test-build" | |
1344b6f1 MM |
118 | fi |
119 | ||
280b1afd MM |
120 | ok= |
121 | for s in $specs ; do | |
122 | ok=1 | |
123 | done | |
124 | ||
125 | if [ "$ok" = "" ] ; then | |
c4aa0539 MM |
126 | if [ "$command" = "" ] ; then |
127 | die "no specs passed" | |
128 | fi | |
129 | else | |
130 | if [ "$command" != "" ] ; then | |
131 | die "cannot pass specs and --command" | |
132 | fi | |
280b1afd MM |
133 | fi |
134 | ||
1344b6f1 MM |
135 | id=$(uuidgen) |
136 | ||
137 | gen_req() { | |
a757e911 | 138 | echo "<group id='$id' no='0' flags='$flags'>" |
1344b6f1 MM |
139 | echo " <time>$(date +%s)</time>" |
140 | echo " <priority>$priority</priority>" | |
141 | echo | |
142 | ||
c4aa0539 MM |
143 | if [ "$command" != "" ] ; then |
144 | bid=$(uuidgen) | |
145 | echo " <batch id='$bid' depends-on=''>" | |
146 | echo " <command flags='$command_flags'>$command</command>" | |
147 | echo " <info></info>" | |
148 | for b in $builders ; do | |
149 | echo " <builder>$b</builder>" | |
150 | done | |
151 | echo " </batch>" | |
152 | else | |
153 | ||
30dbf6a3 MM |
154 | # first id: |
155 | fid= | |
1344b6f1 | 156 | for s in $specs ; do |
30dbf6a3 MM |
157 | bid=$(uuidgen) |
158 | echo " <batch id='$bid' depends-on='$fid'>" | |
159 | [ "$fid" = "" ] && fid="$bid" | |
1344b6f1 MM |
160 | name=$(echo "$s" | sed -e 's|:.*||') |
161 | branch=$(echo "$s" | sed -e 's|.*:||') | |
162 | echo " <spec>$name</spec>" | |
163 | echo " <branch>$branch</branch>" | |
864cdeb5 | 164 | echo " <info></info>" |
1344b6f1 MM |
165 | echo |
166 | for b in $with ; do | |
167 | echo " <with>$b</with>" | |
168 | done | |
169 | for b in $without ; do | |
170 | echo " <without>$b</without>" | |
171 | done | |
172 | echo | |
173 | for b in $builders ; do | |
174 | echo " <builder>$b</builder>" | |
175 | done | |
176 | echo " </batch>" | |
177 | done | |
c4aa0539 MM |
178 | |
179 | fi | |
30dbf6a3 | 180 | |
1344b6f1 MM |
181 | echo "</group>" |
182 | } | |
183 | ||
184 | gen_email () { | |
185 | cat <<EOF | |
186 | From: $requester@pld-linux.org | |
187 | To: $builder_email | |
188 | Subject: build request | |
189 | Message-Id: <$id@$(hostname)> | |
190 | X-New-PLD-Builder: request | |
191 | X-Requester-Version: $Id$ | |
192 | ||
193 | $(gen_req | gpg --clearsign --default-key $default_key) | |
194 | EOF | |
195 | } | |
196 | ||
8454c165 | 197 | gen_email | $mailer |