Home | History | Annotate | Line # | Download | only in build
UpdatePoint revision 1.1.1.1.16.2
      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 "$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     ;;
    236 esac
    237 
    238 case "$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     ;;
    248 esac
    249 
    250 case "$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     ;;
    267 esac
    268 
    269 case "$setpr" in
    270  0)
    271     newpr=$prerelease
    272 esac
    273 
    274 # display results
    275 printf "prerelease		$prerelease"
    276 case "$newpr" in
    277  $prerelease)
    278     printf "\n"
    279     ;;
    280  *) printf " -> $newpr\n"
    281     ;;
    282 esac
    283 printf "point			$point"
    284 case "$newpoint" in
    285  $point)
    286     printf "\n"
    287     ;;
    288  *) printf " -> $newpoint\n"
    289     ;;
    290 esac
    291 printf "betapoint		$betapoint"
    292 case "$newbetapoint" in
    293  $betapoint)
    294     printf "\n"
    295     ;;
    296  *) printf " -> $newbetapoint\n"
    297     ;;
    298 esac
    299 printf "rcpoint			$rcpoint"
    300 case "$newrcpoint" in
    301  $rcpoint)
    302     printf "\n"
    303     ;;
    304  *) printf " -> $newrcpoint\n"
    305     ;;
    306 esac
    307 
    308 printf "Previous version: "
    309 scripts/build/VersionName
    310 
    311 # apply packageinfo.sh changes
    312 
    313 sed -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 
    320 case "$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     ;;
    331 esac
    332