UpdatePoint revision 1.1.1.2.14.1 1 #! /bin/sh
2
3 # showusage is set to 1 on any command-line syntax error
4 showusage=0
5 # are we playing by stable or dev rules?
6 repo=
7 # test is set to 1 if -t/--test is given to prevent modifications
8 test=0
9
10 case "$#" in
11 1) repo=$1
12 ;;
13 2) repo=$2
14 case $1 in
15 -t|--test)
16 test=1
17 ;;
18 *)
19 showusage=1
20 ;;
21 esac
22 ;;
23 *) showusage=1
24 ;;
25 esac
26
27 case "$repo" in
28 dev|stable)
29 ;;
30 '')
31 showusage=1
32 ;;
33 *) echo "Unexpected repo type: <$repo>!"
34 showusage=1
35 ;;
36 esac
37
38 case "$showusage" in
39 1) echo "Usage: $0 [-t] <stable|dev>"
40 echo "No changes are made to packageinfo.sh if -t is given."
41 exit 1
42 ;;
43 esac
44
45
46 set -e
47
48 . ./packageinfo.sh
49
50 case "$repotype" in
51 $repo)
52 ;;
53 *) echo "You indicated repo type <$repo> but packageinfo.sh"
54 echo "indicates <$repotype>."
55 exit 1
56 ;;
57 esac
58
59 ver_repo_mismatch=1
60
61 case "$minor" in
62 1|3|5|7|9)
63 case "$repo" in
64 dev)
65 ver_repo_mismatch=0
66 ;;
67 stable)
68 ;;
69 esac
70 ;;
71 0|2|4|6|8)
72 case "$repo" in
73 dev)
74 ;;
75 stable)
76 ver_repo_mismatch=0
77 ;;
78 esac
79 ;;
80 esac
81
82 case "$ver_repo_mismatch" in
83 1) echo "Minor version <$minor> mismatches repotype <$repo>."
84 exit 1
85 ;;
86 esac
87
88 # Do we want to bump the point?
89 bp=1
90 # Do we want to bump the beta point?
91 bbp=0
92 # Do we want to change the RC point? (n=no, z=empty rcpoint and zero
93 # betapoint, i=incr)
94 crcp=n
95 # Do we want to change the prerelease value?
96 setpr=0
97
98 # for stable:
99 # if we are not in a beta or RC state, enter beta unless point is NEW.
100 # if we are in a beta state:
101 # - bump the beta point
102 # else if we are in an RC state:
103 # - if rcpoint is GO:
104 # - - set rcpoint= (empty)
105 # - - set prerelease= (empty)
106 # - - set betapoint=0
107 # - else
108 # - - if rcpoint==(empty)
109 # - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
110 # - - bump the RC point
111
112 # for dev, we only want to bump-point and possibly clear prerelease,
113 # but we do not modify rcpoint nor betapoint.
114
115 case "$repo" in
116 dev)
117 case "$point" in
118 [Nn][Ee][Ww])
119 crcp=z
120 ;;
121 *)
122 # crcp=n
123 ;;
124 esac
125 # bp=1
126 ;;
127 stable)
128 case "$prerelease" in
129 '')
130 # echo "Checking <$betapoint::$rcpoint::$point>"
131 case "$betapoint::$rcpoint::$point" in
132 *::*::NEW)
133 # new minor release (no p)
134 crcp=z
135 # bp=1
136 ;;
137 0::::*)
138 # start of first beta cycle for the next point release
139 setpr=1
140 newpr=beta
141 # bp=1
142 bbp=1
143 ;;
144 0::[Gg][Oo]::*)
145 # skip all -beta and -RC prereleases to the next point.
146 crcp=z
147 setpr=1
148 newpr=
149 # bp=1
150 # bbp=0
151 ;;
152 ::[Gg][Oo]::*)
153 # echo "Good - betapoint is empty. Look in $0 and figure out what's going on here."
154 crcp=z
155 ;;
156 *::[Gg][Oo]::*)
157 echo "betapoint is NOT empty. Look in $0 and figure out what's going on here."
158 test=1
159 ;;
160 *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
161 echo "betapoint must be 0 and rcpoint must be empty to start the"
162 echo "beta cycle."
163 exit 1
164 ;;
165 esac
166 ;;
167 beta)
168 case "$betapoint::$rcpoint" in
169 [1-9]*::*)
170 bp=0
171 bbp=1
172 ;;
173 0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
174 echo "You probably intended prerelease= (that is, empty). It"
175 echo "will then be changed to beta by this script, starting the"
176 echo "first beta for the next point release."
177 exit 1
178 ;;
179 *)
180 bp=0
181 bbp=1
182 ;;
183 esac
184 case "$rcpoint" in
185 [Gg][Oo])
186 echo "prerelease is beta, rcpoint is GO, disallowed."
187 echo "rcpoint GO is allowed only when prerelease is RC or empty."
188 exit 1
189 ;;
190 esac
191 ;;
192 rc|RC)
193 case "$rcpoint" in
194 '')
195 case "$betapoint" in
196 0) # bp=1
197 ;;
198 *) bp=0
199 ;;
200 esac
201 crcp=i
202 ;;
203 [1-9]*)
204 bp=0
205 crcp=i
206 ;;
207 [Gg][Oo])
208 bp=0
209 crcp=z
210 setpr=1
211 newpr=
212 ;;
213 *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
214 exit 1
215 ;;
216 esac
217 ;;
218 *)
219 echo "prerelease <$prerelease> unexpected"
220 exit 1
221 ;;
222 esac
223 ;;
224 *) echo "impossible: repo <$repo>!"
225 exit 1
226 ;;
227 esac
228
229 case "$repo::$bp::$point" in
230 *::0::*)
231 newpoint=$point
232 ;;
233 dev::1::0)
234 newpoint=`expr $point + 1`
235 ;;
236 *::1::[1-9]*)
237 newpoint=`expr $point + 1`
238 ;;
239 dev::1::)
240 newpoint=0
241 ;;
242 stable::1::)
243 newpoint=1
244 ;;
245 *::1::[Nn][Ee][Ww])
246 newpoint=
247 ;;
248 *) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)"
249 exit 1
250 ;;
251 esac
252
253 case "$bbp::$betapoint" in
254 0::*)
255 newbetapoint=$betapoint
256 ;;
257 1::[0-9]*)
258 newbetapoint=`expr $betapoint + 1`
259 ;;
260 *) echo "Unexpected value for 'betapoint' <$betapoint>!"
261 exit 1
262 ;;
263 esac
264
265 case "$crcp::$rcpoint" in
266 n::*)
267 newrcpoint=$rcpoint
268 ;;
269 i::)
270 newrcpoint=1
271 ;;
272 i::[0-9]*)
273 newrcpoint=`expr $rcpoint + 1`
274 ;;
275 z::*)
276 newrcpoint=
277 case "$repo" in
278 dev)
279 newbetapoint=0
280 ;;
281 stable)
282 newbetapoint=
283 ;;
284 *)
285 echo "crcp::rcpoint - bogus repo <$repo>"
286 exit 1
287 ;;
288 esac
289 ;;
290 *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
291 exit 1
292 ;;
293 esac
294
295 case "$setpr" in
296 0)
297 newpr=$prerelease
298 esac
299
300 # display results
301 printf "prerelease $prerelease"
302 case "$newpr" in
303 $prerelease)
304 printf "\n"
305 ;;
306 *) printf " -> $newpr\n"
307 ;;
308 esac
309 printf "point $point"
310 case "$newpoint" in
311 $point)
312 printf "\n"
313 ;;
314 *) printf " -> $newpoint\n"
315 ;;
316 esac
317 printf "betapoint $betapoint"
318 case "$newbetapoint" in
319 $betapoint)
320 printf "\n"
321 ;;
322 *) printf " -> $newbetapoint\n"
323 ;;
324 esac
325 printf "rcpoint $rcpoint"
326 case "$newrcpoint" in
327 $rcpoint)
328 printf "\n"
329 ;;
330 *) printf " -> $newrcpoint\n"
331 ;;
332 esac
333
334 printf "Previous version: "
335 scripts/build/VersionName
336
337 # apply packageinfo.sh changes
338
339 sed -e "s/^point=.*/point=$newpoint/" \
340 -e "s/^betapoint=.*/betapoint=$newbetapoint/" \
341 -e "s/^rcpoint=.*/rcpoint=$newrcpoint/" \
342 -e "s/^prerelease=.*/prerelease=$newpr/" \
343 < packageinfo.sh \
344 > packageinfo.sh+
345
346 case "$test" in
347 0)
348 mv packageinfo.sh+ packageinfo.sh
349 printf "Updated version: "
350 scripts/build/VersionName
351 ;;
352 *)
353 printf "Next version would be: "
354 scripts/build/VersionName -p ./packageinfo.sh+
355 rm packageinfo.sh+
356 ;;
357 esac
358