summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2017-08-14 13:11:27 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2017-08-14 13:11:27 +0200
commit2b5d3bbceba658b72cca1a54f7adf71643d3bffc (patch)
tree5601912f2357525d069f88fd6c3e783ab086b81d
parent5c138ea1178b53d6cf2d6c80032e1762d51e4ea1 (diff)
Update instructions for bugfix-only release
-rwxr-xr-xpublish58
-rw-r--r--release-bugfix-only.txt55
-rw-r--r--release.txt2
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 [<rsync-options>]
+# -d
+# Only publish the distribution.
#
-usage="$0 [<rsync-options>]"
+# -p
+# Only publish the packages.
+#
+usage="$0 [options] -- [<rsync-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(<proj>-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 <group> <proj>
-- 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/