]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
updated packageinfo.sh, VersionName, and UpdatePoint to use prerelease=
authorDave Hart <hart@ntp.org>
Wed, 16 Dec 2009 20:21:10 +0000 (20:21 +0000)
committerDave Hart <hart@ntp.org>
Wed, 16 Dec 2009 20:21:10 +0000 (20:21 +0000)
  from packageinfo.sh instead of releasecandidate= and added support for
  beta releases.

bk: 4b294136q_HHqK3hNQ91tACb1BaEQg

ChangeLog
packageinfo.sh
scripts/Makefile.am
scripts/UpdatePoint [new file with mode: 0644]
scripts/VersionName

index 6d7fc017e4d7633757ef1d291c35d89b591dd7e8..a0f8a12eed2bb5303643b4d11deda8c00219784d 100644 (file)
--- 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 <stenn@ntp.org>
 * Include (4.2.4p8) - [Sec 1331] DoS with mode 7 packets - CVE-2009-3563.
index bbd162ed3924b834f2e823a8a1bb4b545c0a399a..2dd1f195fb0b08fee6d8d7e5ea0c532d0fb46f5c 100644 (file)
@@ -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=
index 649b7c12d13a857dd316259793a8f88af0bb627f..ba3af17c5492007f9a310093e2fadfa58f5c9093 100644 (file)
@@ -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 (file)
index 0000000..7f2b4eb
--- /dev/null
@@ -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] <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
index f601cc34821e5cd64a56b21f5711b515f04473c1..dd3e3b793060fbcf08b4c1b5a940e68594609cc7 100755 (executable)
@@ -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