From 2b5d3bbceba658b72cca1a54f7adf71643d3bffc Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 14 Aug 2017 13:11:27 +0200 Subject: Update instructions for bugfix-only release --- publish | 58 +++++++++++++++++++++++++++++++++++++++---------- release-bugfix-only.txt | 55 +++++++++++++++++++++------------------------- release.txt | 2 +- 3 files changed, 72 insertions(+), 43 deletions(-) diff --git a/publish b/publish index 1d218f5..1f3571e 100755 --- a/publish +++ b/publish @@ -5,9 +5,13 @@ # The distribution is taken from cppget.org/0/ and packages from # cppget.org/repository/. # -# Usage: publish [] +# -d +# Only publish the distribution. # -usage="$0 []" +# -p +# Only publish the packages. +# +usage="$0 [options] -- []" owd=`pwd` trap "{ cd $owd; exit 1; }" ERR @@ -16,28 +20,58 @@ set -o errtrace # Trap in functions. function info () { echo "$*" 1>&2; } function error () { info "$*"; exit 1; } -v="$(sed -n -re 's/^version: ([^.]+\.[^.]+\.[^-]+(-[ab]\.[^.+]+)?).*$/\1/p' build2-toolchain/manifest)" +pkg_only= +dist_only= + +while [ $# -gt 0 ]; do + case $1 in + -d) + dist_only=true + shift + ;; + -p) + pkg_only=true + shift + ;; + --) + shift + break + ;; + *) + error "unexpected $1" + ;; + esac +done + +if [ -z "$pkg_only" ]; then + v="$(sed -n -re 's/^version: ([^.]+\.[^.]+\.[^-]+(-[ab]\.[^.+]+)?).*$/\1/p' build2-toolchain/manifest)" -if [ -z "$v" ]; then - error "unable to extract version build2-toolchain/manifest" + if [ -z "$v" ]; then + error "unable to extract version build2-toolchain/manifest" + fi fi + function sync () { - info "build2.org:" + if [ -z "$pkg_only" ]; then + info "build2.org:" - rsync -v -rlpt -c --copy-unsafe-links --prune-empty-dirs --delete-after \ + rsync -v -rlpt -c --copy-unsafe-links --prune-empty-dirs --delete-after \ "${@}" "cppget.org/0/$v/" "build2.org:/var/www/download.build2.org/public/$v/" - rsync -v -rlpt -c --copy-unsafe-links --prune-empty-dirs --delete-after \ + rsync -v -rlpt -c --copy-unsafe-links --prune-empty-dirs --delete-after \ "${@}" "cppget.org/0/toolchain.sha256" "build2.org:/var/www/download.build2.org/public/" + fi - info "cppget.org:" - etc/rep-publish cppget.org/repository/1/ cppget.org:/var/bpkg/1/ "${@}" + if [ -z "$dist_only" ]; then + info "cppget.org:" + etc/rep-publish cppget.org/repository/1/ cppget.org:/var/bpkg/1/ "${@}" - info "brep.cppget.org:" - etc/rep-publish cppget.org/repository/1/ brep.cppget.org:/var/bpkg/1/ \ + info "brep.cppget.org:" + etc/rep-publish cppget.org/repository/1/ brep.cppget.org:/var/bpkg/1/ \ "${@}" + fi } sync --dry-run "${@}" diff --git a/release-bugfix-only.txt b/release-bugfix-only.txt index 7b7f44f..caae114 100644 --- a/release-bugfix-only.txt +++ b/release-bugfix-only.txt @@ -1,51 +1,46 @@ -@@ Probably outdated (compare to release.txt). +- Create X.Y branch if first bugfix release -- See if makes sense to cherry-pick other fixes/changes - -- Update NEWS + git branch X.Y X.Y.0 + git checkout X.Y -- Update version in vesion, manifest, build/bootstrap.build, version.hxx - -- Regenerate odb.sh, cli.sh - -- b 'dist(-default/)' +- See if makes sense to cherry-pick other fixes/changes - sha256sum -b ... - copy to build-0.X, cppget.org/.../queue +- Update NEWS if anything major, commit -- Regenerate queue using current release toolchain +- Update version in manifest, cli.sh, commit: - cd cppget.org - ./update -t ../etc1/install/0.X.0 repository/1/queue/ + git ci -a -m "Bump version to X.Y.N" - ./test -t ../etc1/install/0.X.0 -c cxx \ - -c config.cxx.loptions=-L/usr/local/lib \ - -c config.cxx.poptions="-I/usr/include/apache2 -I/usr/include/apr-1.0" \ - repository/1/queue/ +- Regenerate odb.sh, cli.sh -- Stage queue +- Dist to queue: - etc/stage + etc/stage-pkg -q -d -c -- Perform any additional tests on queue (depending on the project) +- @@ TODO: Test queue. -- Move packages from queue to alpha, regenerate repositories. +- @@ TODO: Might need to rebuild build2-toolchain. - cd cppget.org - ./update -t ../etc1/install/0.X.0 repository/1/ +- Move package from queue to the appropriate repository, normally + replacing the old package. -- Publish to production (build2.org/cppget.org). +- Regenerate the repository and publish (remove -p if also publishing + build2-toolchain): - etc/publish 0.X + cd cppget.org + git -C repository add . + git -C repository status + ./update -- Might need to rebuild a copy of the toolchain (see release.txt) + cd .. + etc/publish -p -- Commit, tag, and push project +- Tag the bugfix release: git tag -a X.Y.Z -m "Tag version X.Y.Z" -- Commit and push cppget.org +- Commit cppget.org/repository/ (see history for procedure) - Write and send announcements, remember to include checksum. -- Checkout master, regenerate odb.sh, cli.sh +- Switch back to master and regenerate cli.sh/odb.sh diff --git a/release.txt b/release.txt index fcf4bb0..d60e5c3 100644 --- a/release.txt +++ b/release.txt @@ -122,7 +122,7 @@ - Publish and test toolchain - - Change BUILD2_REPO in build2_toolchain build script to public + - Change BUILD2_REPO in build2-toolchain build script to public - Regenerate build2-toolchain package in cppget.org/0/ -- cgit v1.1