From: Dave Hart Date: Wed, 16 Dec 2009 20:21:10 +0000 (+0000) Subject: updated packageinfo.sh, VersionName, and UpdatePoint to use prerelease= X-Git-Tag: NTP_4_2_6P1_RC1~8^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d833c2dc65aa3c5164cc919f5dd2b14f9e0f87c5;p=thirdparty%2Fntp.git updated packageinfo.sh, VersionName, and UpdatePoint to use prerelease= from packageinfo.sh instead of releasecandidate= and added support for beta releases. bk: 4b294136q_HHqK3hNQ91tACb1BaEQg --- diff --git a/ChangeLog b/ChangeLog index 6d7fc017e..a0f8a12ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +--- + +* Build infrastructure updates to enable beta releases of ntp-stable. + --- (4.2.6) 2009/12/09 Released by Harlan Stenn * Include (4.2.4p8) - [Sec 1331] DoS with mode 7 packets - CVE-2009-3563. diff --git a/packageinfo.sh b/packageinfo.sh index bbd162ed3..2dd1f195f 100644 --- a/packageinfo.sh +++ b/packageinfo.sh @@ -1,28 +1,81 @@ -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= diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 649b7c12d..ba3af17c5 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,5 +1,36 @@ -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) diff --git a/scripts/UpdatePoint b/scripts/UpdatePoint new file mode 100644 index 000000000..7f2b4eb27 --- /dev/null +++ b/scripts/UpdatePoint @@ -0,0 +1,323 @@ +#! /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] " + 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 diff --git a/scripts/VersionName b/scripts/VersionName index f601cc348..dd3e3b793 100755 --- a/scripts/VersionName +++ b/scripts/VersionName @@ -1,12 +1,27 @@ #! /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) ;; '') ;; @@ -17,24 +32,23 @@ esac 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