UpdatePoint revision 275970
1#! /bin/sh
2
3# showusage is set to 1 on any command-line syntax error
4showusage=0
5# are we playing by stable or dev rules?
6repo=
7# test is set to 1 if -t/--test is given to prevent modifications
8test=0
9
10case "$#" 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    ;;
25esac
26
27case "$repo" in
28 dev|stable)
29    ;;
30 '')
31    showusage=1
32    ;;
33 *) echo "Unexpected repo type: <$repo>!"
34    showusage=1
35    ;;
36esac
37
38case "$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    ;;
43esac
44
45
46set -e
47 
48. ./packageinfo.sh
49
50case "$repotype" in
51 $repo)
52    ;;
53 *) echo "You indicated repo type <$repo> but packageinfo.sh"
54    echo "indicates <$repotype>."
55    exit 1
56    ;;
57esac
58
59ver_repo_mismatch=1
60
61case "$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    ;;
80esac
81
82case "$ver_repo_mismatch" in
83 1) echo "Minor version <$minor> mismatches repotype <$repo>."
84    exit 1
85    ;;
86esac
87
88# Do we want to bump the point?
89bp=1
90# Do we want to bump the beta point?
91bbp=0
92# Do we want to change the RC point? (n=no, z=empty rcpoint and zero
93# betapoint, i=incr)
94crcp=n
95# Do we want to change the prerelease value?
96setpr=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
115case "$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	case "$betapoint::$rcpoint::$point" in
131	 *::*::NEW)
132	    # new minor release (no p)
133	    crcp=z
134	    # bp=1
135	    ;;
136	 0::::*)
137	    # start of first beta cycle for the next point release
138	    setpr=1
139	    newpr=beta
140	    # bp=1
141	    bbp=1
142	    ;;
143	 0::[Gg][Oo]::*)
144	    # skip all -beta and -RC prereleases to the next point.
145	    crcp=z
146	    setpr=1
147	    newpr=
148	    # bp=1
149	    # bbp=0
150	    ;;
151	 *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
152	    echo "betapoint must be 0 and rcpoint must be empty to start the"
153	    echo "beta cycle."
154	    exit 1
155	    ;;
156	esac
157	;;
158     beta)
159	case "$betapoint::$rcpoint" in
160	 [1-9]*::*)
161	    bp=0
162	    bbp=1
163	    ;;
164	 0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
165	    echo "You probably intended prerelease=  (that is, empty).  It"
166	    echo "will then be changed to beta by this script, starting the"
167	    echo "first beta for the next point release."
168	    exit 1
169	    ;;
170	 *)
171	    bp=0
172	    bbp=1
173	    ;;
174	esac
175	case "$rcpoint" in
176	 [Gg][Oo])
177	    echo "prerelease is beta, rcpoint is GO, disallowed."
178	    echo "rcpoint GO is allowed only when prerelease is RC or empty."
179	    exit 1
180	    ;;
181	esac
182	;;
183     rc|RC)
184	case "$rcpoint" in
185	 '')
186	    case "$betapoint" in
187	     0) # bp=1
188		;;
189	     *) bp=0
190		;;
191	    esac
192	    crcp=i
193	    ;;
194	 [1-9]*)
195	    bp=0
196	    crcp=i
197	    ;;
198	 [Gg][Oo])
199	    bp=0
200	    crcp=z
201	    setpr=1
202	    newpr=
203	    ;;
204	 *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
205	    exit 1
206	    ;;
207	esac
208	;;
209     *)
210	echo "prerelease <$prerelease> unexpected"
211	exit 1
212	;;
213    esac
214    ;;
215 *) echo "impossible: repo <$repo>!"
216    exit 1
217    ;;
218esac
219
220case "$bp::$point" in
221 0::*)
222    newpoint=$point
223    ;;
224 1::[1-9]*)
225    newpoint=`expr $point + 1`
226    ;;
227 1::)
228    newpoint=1
229    ;;
230 1::[Nn][Ee][Ww])
231    newpoint=
232    ;;
233 *) echo "Unexpected value for 'point' <$point>!"
234    exit 1
235    ;;
236esac
237
238case "$bbp::$betapoint" in
239 0::*)
240    newbetapoint=$betapoint
241    ;;
242 1::[0-9]*)
243    newbetapoint=`expr $betapoint + 1`
244    ;;
245 *) echo "Unexpected value for 'betapoint' <$betapoint>!"
246    exit 1
247    ;;
248esac
249
250case "$crcp::$rcpoint" in
251 n::*)
252    newrcpoint=$rcpoint
253    ;;
254 i::)
255    newrcpoint=1
256    ;;
257 i::[0-9]*)
258    newrcpoint=`expr $rcpoint + 1`
259    ;;
260 z::*)
261    newrcpoint=
262    newbetapoint=0
263    ;;
264 *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
265    exit 1
266    ;;
267esac
268
269case "$setpr" in
270 0)
271    newpr=$prerelease
272esac
273
274# display results
275printf "prerelease		$prerelease"
276case "$newpr" in
277 $prerelease)
278    printf "\n"
279    ;;
280 *) printf " -> $newpr\n"
281    ;;
282esac
283printf "point			$point"
284case "$newpoint" in
285 $point)
286    printf "\n"
287    ;;
288 *) printf " -> $newpoint\n"
289    ;;
290esac
291printf "betapoint		$betapoint"
292case "$newbetapoint" in
293 $betapoint)
294    printf "\n"
295    ;;
296 *) printf " -> $newbetapoint\n"
297    ;;
298esac
299printf "rcpoint			$rcpoint"
300case "$newrcpoint" in
301 $rcpoint)
302    printf "\n"
303    ;;
304 *) printf " -> $newrcpoint\n"
305    ;;
306esac
307
308printf "Previous version: "
309scripts/build/VersionName
310
311# apply packageinfo.sh changes
312
313sed -e "s/^point=.*/point=$newpoint/"			\
314    -e "s/^betapoint=.*/betapoint=$newbetapoint/"	\
315    -e "s/^rcpoint=.*/rcpoint=$newrcpoint/"		\
316    -e "s/^prerelease=.*/prerelease=$newpr/"		\
317	< packageinfo.sh					\
318	> packageinfo.sh+
319
320case "$test" in
321 0)
322    mv packageinfo.sh+ packageinfo.sh
323    printf "Updated version: "
324    scripts/build/VersionName
325    ;;
326 *)
327    printf "Next version would be: "
328    scripts/build/VersionName -p ./packageinfo.sh+
329    rm packageinfo.sh+
330    ;;
331esac
332