Home | History | Annotate | Line # | Download | only in build
UpdatePoint revision 1.1.1.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 "$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
    338