+---
+
+* Build infrastructure updates to enable beta releases of ntp-stable.
+
---
(4.2.6) 2009/12/09 Released by Harlan Stenn <stenn@ntp.org>
* Include (4.2.4p8) - [Sec 1331] DoS with mode 7 packets - CVE-2009-3563.
-repotype=dev
+#
+# packageinfo.sh - set shell variables with version components
+#
+# This file is sourced by other scripts and does not need execute
+# permission or the #! shell selector.
+#
+# Most changes to this file are fully or semi-automated using the
+# UpdatePoint script on the ntp.org tarball build machine. Changes
+# required by the typical ntp.org release sequences are below.
+#
+# To bump the -dev point (p) number, UpdatePoint needs no changes here.
+# To start a -RC cycle in -dev leading to the next -stable release,
+# set prerelease=rc.
+# To move from dev -RC to new -stable and -dev major/minor version, set
+# minor and/or major to the new version, repotype to match the new
+# minor version, empty prerelease, and set point=NEW. UpdatePoint
+# will empty point and rcpoint, and set betapoint=0.
+# To start a -stable beta cycle, which normally occurs before a -stable
+# -RC1 during the runup to a -stable point release, UpdatePoint needs
+# no changes here. Both betapoint and point will be incremented, and
+# prerelease will be set to beta.
+# To move on from -stable beta to RC set prerelease=rc.
+# To fall back from -stable RC to beta set prerelease=beta.
+# To skip over -stable beta1 directly to -RC1, set prerelease=rc.
+# To skip all -stable prereleases and move from one primary or point
+# release directly to the next point release, set rcpoint=GO.
+#
+# To see what UpdatePoint will do without modifying packageinfo.sh as it
+# does by default, use the -t/--test option before the repo type:
+#
+# shell# scripts/UpdatePoint -t stable
+#
+
+# repotype must be stable or dev
+repotype=stable
+
# version=Protocol.Major.Minor
# odd minor numbers are for -dev, even minor numbers are for -stable
+# UpdatePoint will fail if repotype is inconsistent with minor.
proto=4
major=2
minor=6
version=${proto}.${major}.${minor}
-# Point. 3 cases:
-# - Numeric values increment
-# - empty 'increments' to 1
-# - NEW 'increments' to empty
-point=
+
# Special. Normally unused. A suffix.
#special=ag
special=
-# ReleaseCandidate. 'yes' or 'no'.
-#releasecandidate=yes
-releasecandidate=no
-# ChangeLog tag
+
+# prerelease can be empty, 'beta', or 'rc'.
+prerelease=
+
+# ChangeLog starting tag (see also CommitLog-4.1.0)
CLTAG=NTP_4_2_0
-###
-# The following is for ntp-stable. 2 cases:
+
+### Point number, after "p", normally modified by script.
+# 3 cases:
+# - Numeric values increment
+# - empty 'increments' to 1
+# - NEW 'increments' to empty
+point=
+
+### betapoint is normally modified by script.
+# ntp-stable Beta number (betapoint)
+# Should be zeroed at release, and left at zero until first beta.
+# The first beta is -beta1.
+# betapoint is always zero in ntp-dev.
+betapoint=0
+
+### rcpoint is normally modified by script except for GO.
+# RC number (rcpoint)
+# for ntp-dev, always empty as RC numbers are not used, nor is GO.
+# For ntp-stable:
+# if prerelease is 'rc':
# - Numeric values increment
# - GO triggers a release
-# - - rcpoint gets set to 0
-# - - releasecandidate gets set to no
-# - GRONK is for -dev
-rcpoint=1
+# - - rcpoint is emptied
+# - - betapoint is set to 0
+# - - prerelease is emptied
+# else (not in RC)
+# - rcpoint is empty and unused (for now).
+rcpoint=
-bin_SCRIPTS= ntp-wait ntptrace
-noinst_SCRIPTS= calc_tickadj checktime freq_adj html2man mkver ntpsweep ntpver plot_summary summary
-EXTRA_DIST = VersionName cvo.sh fixautomakedepsmagic genCommitLog \
- genver hpadjtime.sh monitoring ntp-close ntp-groper ntp-restart \
- ntp-status rc1 rc2 stats
+NULL=
+
+bin_SCRIPTS = \
+ ntp-wait \
+ ntptrace \
+ $(NULL)
+
+noinst_SCRIPTS = \
+ calc_tickadj \
+ checktime \
+ freq_adj \
+ html2man \
+ mkver \
+ ntpsweep \
+ ntpver \
+ plot_summary \
+ summary \
+ $(NULL)
+
+EXTRA_DIST = \
+ cvo.sh \
+ fixautomakedepsmagic \
+ genCommitLog \
+ genver \
+ hpadjtime.sh \
+ monitoring \
+ ntp-close \
+ ntp-groper \
+ ntp-restart \
+ ntp-status \
+ rc1 \
+ rc2 \
+ stats \
+ UpdatePoint \
+ VersionName \
+ $(NULL)
--- /dev/null
+#! /bin/sh
+
+# showusage is set to 1 on any command-line syntax error
+showusage=0
+# are we playing by stable or dev rules?
+repo=
+# test is set to 1 if -t/--test is given to prevent modifications
+test=0
+
+case "$#" in
+ 1) repo=$1
+ ;;
+ 2) repo=$2
+ case $1 in
+ -t|--test)
+ test=1
+ ;;
+ *)
+ showusage=1
+ ;;
+ esac
+ ;;
+ *) showusage=1
+ ;;
+esac
+
+case "$repo" in
+ dev|stable)
+ ;;
+ '')
+ showusage=1
+ ;;
+ *) echo "Unexpected repo type: <$repo>!"
+ showusage=1
+ ;;
+esac
+
+case "$showusage" in
+ 1) echo "Usage: $0 [-t] <stable|dev>"
+ echo "No changes are made to packageinfo.sh if -t is given."
+ exit 1
+ ;;
+esac
+
+
+set -e
+
+. packageinfo.sh
+
+case "$repotype" in
+ $repo)
+ ;;
+ *) echo "You indicated repo type <$repo> but packageinfo.sh"
+ echo "indicates <$repotype>."
+ exit 1
+ ;;
+esac
+
+ver_repo_mismatch=1
+
+case "$minor" in
+ 1|3|5|7|9)
+ case "$repo" in
+ dev)
+ ver_repo_mismatch=0
+ ;;
+ stable)
+ ;;
+ esac
+ ;;
+ 0|2|4|6|8)
+ case "$repo" in
+ dev)
+ ;;
+ stable)
+ ver_repo_mismatch=0
+ ;;
+ esac
+ ;;
+esac
+
+case "$ver_repo_mismatch" in
+ 1) echo "Minor version <$minor> mismatches repotype <$repo>."
+ exit 1
+ ;;
+esac
+
+# Do we want to bump the point?
+bp=1
+# Do we want to bump the beta point?
+bbp=0
+# Do we want to change the RC point? (n=no, z=empty rcpoint and zero
+# betapoint, i=incr)
+crcp=n
+# Do we want to change the prerelease value?
+setpr=0
+
+# for stable:
+# if we are not in a beta or RC state, enter beta unless point is NEW.
+# if we are in a beta state:
+# - bump the beta point
+# else if we are in an RC state:
+# - if rcpoint is GO:
+# - - set rcpoint= (empty)
+# - - set prerelease= (empty)
+# - - set betapoint=0
+# - else
+# - - if rcpoint==(empty)
+# - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
+# - - bump the RC point
+
+# for dev, we only want to bump-point and possibly clear prerelease,
+# but we do not modify rcpoint nor betapoint.
+
+case "$repo" in
+ dev)
+ case "$point" in
+ [Nn][Ee][Ww])
+ crcp=z
+ ;;
+ *)
+ # crcp=n
+ ;;
+ esac
+ # bp=1
+ ;;
+ stable)
+ case "$prerelease" in
+ '')
+ case "$betapoint::$rcpoint::$point" in
+ *::*::NEW)
+ # new minor release (no p)
+ crcp=z
+ # bp=1
+ ;;
+ 0::::*)
+ # start of first beta cycle for the next point release
+ setpr=1
+ newpr=beta
+ # bp=1
+ bbp=1
+ ;;
+ 0::[Gg][Oo]::*)
+ # skip all -beta and -RC prereleases to the next point.
+ crcp=z
+ setpr=1
+ newpr=
+ # bp=1
+ # bbp=0
+ ;;
+ *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
+ echo "betapoint must be 0 and rcpoint must be empty to start the"
+ echo "beta cycle."
+ exit 1
+ ;;
+ esac
+ ;;
+ beta)
+ case "$betapoint" in
+ 0) echo "betapoint is 0 and prerelease is beta, you probably intended"
+ echo "prerelease= (that is, empty). It will then be changed to"
+ echo "beta by this script, starting the first beta for the next"
+ echo "point release."
+ exit 1
+ ;;
+ [1-9]*)
+ bp=0
+ bbp=1
+ ;;
+ esac
+ case "$rcpoint" in
+ [Gg][Oo])
+ echo "prerelease is beta, rcpoint is GO, disallowed."
+ echo "rcpoint GO is allowed only when prerelease is RC or empty."
+ exit 1
+ ;;
+ esac
+ ;;
+ rc|RC)
+ case "$rcpoint" in
+ ''|[1-9]*)
+ case "$betapoint" in
+ 0) # bp=1
+ ;;
+ *) bp=0
+ ;;
+ esac
+ crcp=i
+ ;;
+ [Gg][Oo])
+ bp=0
+ crcp=z
+ setpr=1
+ newpr=
+ ;;
+ *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
+ exit 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "prerelease <$prerelease> unexpected"
+ exit 1
+ ;;
+ esac
+ ;;
+ *) echo "impossible: repo <$repo>!"
+ exit 1
+ ;;
+esac
+
+case "$bp::$point" in
+ 0::*)
+ newpoint=$point
+ ;;
+ 1::[1-9]*)
+ newpoint=`expr $point + 1`
+ ;;
+ 1::)
+ newpoint=1
+ ;;
+ 1::[Nn][Ee][Ww])
+ newpoint=
+ ;;
+ *) echo "Unexpected value for 'point' <$point>!"
+ exit 1
+ ;;
+esac
+
+case "$bbp::$betapoint" in
+ 0::*)
+ newbetapoint=$betapoint
+ ;;
+ 1::[0-9]*)
+ newbetapoint=`expr $betapoint + 1`
+ ;;
+ *) echo "Unexpected value for 'betapoint' <$betapoint>!"
+ exit 1
+ ;;
+esac
+
+case "$crcp::$rcpoint" in
+ n::*)
+ newrcpoint=$rcpoint
+ ;;
+ i::)
+ newrcpoint=1
+ ;;
+ i::[0-9]*)
+ newrcpoint=`expr $rcpoint + 1`
+ ;;
+ z::*)
+ newrcpoint=
+ newbetapoint=0
+ ;;
+ *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
+ exit 1
+ ;;
+esac
+
+case "$setpr" in
+ 0)
+ newpr=$prerelease
+esac
+
+# display results
+printf "prerelease $prerelease"
+case "$newpr" in
+ $prerelease)
+ printf "\n"
+ ;;
+ *) printf " -> $newpr\n"
+ ;;
+esac
+printf "point $point"
+case "$newpoint" in
+ $point)
+ printf "\n"
+ ;;
+ *) printf " -> $newpoint\n"
+ ;;
+esac
+printf "betapoint $betapoint"
+case "$newbetapoint" in
+ $betapoint)
+ printf "\n"
+ ;;
+ *) printf " -> $newbetapoint\n"
+ ;;
+esac
+printf "rcpoint $rcpoint"
+case "$newrcpoint" in
+ $rcpoint)
+ printf "\n"
+ ;;
+ *) printf " -> $newrcpoint\n"
+ ;;
+esac
+
+printf "Previous version: "
+scripts/VersionName
+
+# apply packageinfo.sh changes
+
+sed -e "s/^point=.*/point=$newpoint/" \
+ -e "s/^betapoint=.*/betapoint=$newbetapoint/" \
+ -e "s/^rcpoint=.*/rcpoint=$newrcpoint/" \
+ -e "s/^prerelease=.*/prerelease=$newpr/" \
+ < packageinfo.sh \
+ > packageinfo.sh+
+
+case "$test" in
+ 0)
+ mv packageinfo.sh+ packageinfo.sh
+ printf "Updated version: "
+ scripts/VersionName
+ ;;
+ *)
+ printf "Next version would be: "
+ scripts/VersionName -p packageinfo.sh+
+ rm packageinfo.sh+
+ ;;
+esac
#! /bin/sh
+packageinfo=packageinfo.sh
+case "$#" in
+ 2)
+ case "$1" in
+ -p|--packageinfo)
+ packageinfo=$2
+ esac
+ ;;
+ 0)
+ ;;
+ *) echo "Usage: $0 [-p packageinfo.sh]"
+ exit 1
+ ;;
+esac
+
# This script must be executed from the TLD of the source tree...
-. ./packageinfo.sh
+. $packageinfo
NAME="$version"
case $point in
- [0-9]*)
- NAME="${NAME}p$point"
+ [1-9]*)
+ NAME="${NAME}p${point}"
;;
NEW) ;;
'') ;;
case $special in
'') ;;
- *) NAME="${NAME}-$special" ;;
+ *) NAME="${NAME}-${special}" ;;
esac
-case $releasecandidate in
- [Nn][Oo]) ;;
- [Yy][Ee][Ss]) NAME="${NAME}-RC" ;;
- *) echo "Unexpected value for 'releasecandidate' <$releasecandidate>!"
- exit 1
+case "$prerelease::$repotype" in
+ ''::*)
;;
-esac
-
-case $repotype in
- stable)
- case $rcpoint in
- [0-9]*)
- NAME="${NAME}$rcpoint"
- ;;
- esac
+ beta::stable)
+ NAME="${NAME}-beta${betapoint}"
+ ;;
+ rc::dev|RC::dev)
+ NAME="${NAME}-RC"
+ ;;
+ rc::stable|RC::stable)
+ NAME="${NAME}-RC${rcpoint}"
+ ;;
+ *) echo "Unexpected value for 'prerelease::repotype' <$prerelease::$repotype>!"
+ exit 1
;;
esac