File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / scripts / UpdatePoint
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 1 month ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    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/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/VersionName
  325:     ;;
  326:  *)
  327:     printf "Next version would be: "
  328:     scripts/VersionName -p ./packageinfo.sh+
  329:     rm packageinfo.sh+
  330:     ;;
  331: esac

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>