]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/scripts/build/UpdatePoint
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / scripts / build / UpdatePoint
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         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     ;;
218 esac
219
220 case "$repo::$bp::$point" in
221  *::0::*)
222     newpoint=$point
223     ;;
224  dev::1::0)
225     newpoint=`expr $point + 1`
226     ;;
227  *::1::[1-9]*)
228     newpoint=`expr $point + 1`
229     ;;
230  dev::1::)
231     newpoint=0
232     ;;
233  stable::1::)
234     newpoint=1
235     ;;
236  *::1::[Nn][Ee][Ww])
237     newpoint=
238     ;;
239  *) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)"
240     exit 1
241     ;;
242 esac
243
244 case "$bbp::$betapoint" in
245  0::*)
246     newbetapoint=$betapoint
247     ;;
248  1::[0-9]*)
249     newbetapoint=`expr $betapoint + 1`
250     ;;
251  *) echo "Unexpected value for 'betapoint' <$betapoint>!"
252     exit 1
253     ;;
254 esac
255
256 case "$crcp::$rcpoint" in
257  n::*)
258     newrcpoint=$rcpoint
259     ;;
260  i::)
261     newrcpoint=1
262     ;;
263  i::[0-9]*)
264     newrcpoint=`expr $rcpoint + 1`
265     ;;
266  z::*)
267     newrcpoint=
268     newbetapoint=0
269     ;;
270  *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
271     exit 1
272     ;;
273 esac
274
275 case "$setpr" in
276  0)
277     newpr=$prerelease
278 esac
279
280 # display results
281 printf "prerelease              $prerelease"
282 case "$newpr" in
283  $prerelease)
284     printf "\n"
285     ;;
286  *) printf " -> $newpr\n"
287     ;;
288 esac
289 printf "point                   $point"
290 case "$newpoint" in
291  $point)
292     printf "\n"
293     ;;
294  *) printf " -> $newpoint\n"
295     ;;
296 esac
297 printf "betapoint               $betapoint"
298 case "$newbetapoint" in
299  $betapoint)
300     printf "\n"
301     ;;
302  *) printf " -> $newbetapoint\n"
303     ;;
304 esac
305 printf "rcpoint                 $rcpoint"
306 case "$newrcpoint" in
307  $rcpoint)
308     printf "\n"
309     ;;
310  *) printf " -> $newrcpoint\n"
311     ;;
312 esac
313
314 printf "Previous version: "
315 scripts/build/VersionName
316
317 # apply packageinfo.sh changes
318
319 sed -e "s/^point=.*/point=$newpoint/"                   \
320     -e "s/^betapoint=.*/betapoint=$newbetapoint/"       \
321     -e "s/^rcpoint=.*/rcpoint=$newrcpoint/"             \
322     -e "s/^prerelease=.*/prerelease=$newpr/"            \
323         < packageinfo.sh                                        \
324         > packageinfo.sh+
325
326 case "$test" in
327  0)
328     mv packageinfo.sh+ packageinfo.sh
329     printf "Updated version: "
330     scripts/build/VersionName
331     ;;
332  *)
333     printf "Next version would be: "
334     scripts/build/VersionName -p ./packageinfo.sh+
335     rm packageinfo.sh+
336     ;;
337 esac