From 017756f494ec95fc22bd3f43ef03e53834105674 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Sat, 1 Oct 2016 17:27:31 +0200 Subject: 0.4.0 release updates --- release.txt | 304 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 206 insertions(+), 98 deletions(-) (limited to 'release.txt') diff --git a/release.txt b/release.txt index cd133a5..ad06109 100644 --- a/release.txt +++ b/release.txt @@ -1,14 +1,12 @@ TODO ==== -@@ Local Clang test is broken and disabled, using FreeBSD for Clang testing +@@ No upgrade testing (see old test-upgrade script). -Notes -===== - -* Be very careful with submodules if fixing anything, remember to update - build2-toolchain. +@@ Not saving in previous toolchains (see old install script). +@@ Using FreeBSD for Clang/libc++ testing, both 3.4 (earliest we support) + and 3.7. Setup ===== @@ -21,44 +19,214 @@ Setup For Mac OS: echo "boris ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers -- Boot cppget1, freebsd VMs, make sure data/time is correct. +- Boot freebsd VM, make sure data/time is correct. + +Notes +===== + +* Be very careful with submodules if fixing anything, remember to update + build2-toolchain. + +* Be very carefult with regenerating documentation, ODB files, both in + individual projects and build2-toolchain. + +Stage +===== + +- To stage build2 + + ~ make sure build2-toolchain is ready (submodules, doc/odb regen) + ~ update BUILD2_REPO URL in build2-toolchain/build* scripts if needed + + To stage to stage.build2.org: + + ~ to exclude baseutils/mingw, add -p + + etc/stage + + To stage to cppget.org/queue: + + ~ note: assuming brep running on queue can handle it + + etc/stage -q + +- To stage hello + + cd hello + ./stat + ./stage + + To run intro on staged: + + etc/intro -s https://build2.org/pkg/1/stage + +Test : + + + Local with cli disables + + + Local with Intel icc + ~ fails with ICE on build2 + + + Local with gcc 4.8 -+ Copy prerequisites into build2-X.Y/, generate sha256 sums in BINARY (-b) + + Local brep build: -+ Build new prerequisites (if any) on local, freebsd (install to /usr/local). + bpkg create -d brep cc config.cc.poptions="-I$(apxs -q includedir)" + cd brep + bpkg add https://stage.build2.org/1 + bpkg fetch + bpkg build brep ?sys:libapr1 ?sys:libpq -+ If new preprequisites/version, need to update manifests. +Cross: + + + Test VC cross-build + + + Test MinGW cross-build (build2 build fails on GC 4.8.2, using ODB cross) + + +Bootstrap (with upgrade procedures): + + + CentOS GCC 4.8 + + + FreeBSD 10 Clang 3.4 (clang++) + + + FreeBSD 10 Clang 3.7 (clang++37) with -W -Wall (mod build.sh) + brep: + + bpkg create -d brep cc config.cxx=clang++37 \ + config.cc.poptions="-I$(apxs -q includedir)" + cd brep + bpkg add https://stage.build2.org/1 + bpkg fetch + bpkg build brep ?sys:libapr1 ?sys:libpq + + + Windows7-64 VC14u2 + + + WindowsXP-32 MinGW (build2-mingw) + + + Windows MSYS2 + + + Mac OS Xcode/Clang (and g++ alias) + +Upgrade brep on stage Prelude ======= -+ Remove etc/ from modules in etc/git/modules. ++ Remove etc/, build2-toolchain from modules in etc/git/modules. + Review '@@' items [note: etc, private excluded] etc/review | less -R -+ Need to make sure Intro is still accurate wrt output, etc. Use -s switch - to etc/intro to compare: ++ Make sure Intro is still accurate wrt output, etc. Use -s -p switches to + etc/intro to compare (after running hello/stage): etc/intro -s `pwd`/hello/repository/1/ ++ If new preprequisites/version, need to update manifests. See + private/build2-projects.txt to review. + + Increment version to final. - * Need to update versions/dates for man generation (cli.sh in build2, - bpkg, brep, and built2-toolchain). + ~ update and use etc/version script - * Review manifests for any other changes (new entries/files, etc). + ~ update versions/dates for man generation (cli.sh in build2, bpkg, brep, + and built2-toolchain) + ++ Update BUILD2_REPO URL in build2-toolchain/build* scripts to alpha, also + grep docs for 'stage.' in case got copied. + Close schema versions, review schema changlog difference from previous release (tag) for any data migration that may be required (@@ would also need to test this; see upgrade test). -+ Need to update submodules? Remember to push first. ++ Update NEWS files. + ++ Need to update submodules? (remember to push first) + ++ Need to regenerate ODB files, CLI documentation, in build2-toolchin? + +Procession +========== + ++ Stage final packages (remove -p if need baseutils/mingw) + + etc/stage -p + +- Upgrade brep on lists.build2, lists.cppget from stage + + ~ assumming it can handle old repositories (should normally be the case) + + ~ backup config if changed + + cd private/ + scp -r lists.build2.org:/home/brep/config lists.build2.org/home/brep/ + scp -r lists.cppget.org:/home/brep/config lists.cppget.org/home/brep/ + + ~ note: on cppget we have queue: + + install/bin/brep-migrate -n brep_queue + install/bin/brep-load -n brep_queue config/brep-queue-load.conf + ++ Queue final packages + + etc/stage -p -q + ++ Smoke-test any last-minute changes -+ Need to regenerate ODB files, CLI documentation, in build2-toolchin! ++ Move packages from queue to alpha, cleanup obsolete, regenerate. -+ Update everything: + cd cppget.org + git -C repository status + ./update + ++ Publish to production (build2.org/cppget.org) + + etc/publish + ++ Smoke-test + ++ Publish hello repository + + cd hello + ./stage -p + + Test intro steps: + + etc/intro -s https://build2.org/pkg/1/hello + +- Commit and push git repositories: + ++ ~ cppget.org (commit individually and push) + + ~ hello project and respository (add & commit individual packages) + + cd hello + ./foreach-git stat + + ./foreach-git -x libhello-1.0 tag -a build2-X.Y -m "Tag for build2 version X.Y" + git -C libhello-1.0 tag -a 1.0/build2-X.Y -m "Tag for build2 version X.Y" + ./foreach-git push --tags + ++ Tag (review tag_modules) and push. + + etc/tag + ./push.sh + +- Tag and increment version for each published package (see + private/build2-projects.txt) + +============================================================================= + +@@ When copying to production need to make sure we don't override existing + versions of prerequisite packages that haven't changed (but which we still + stage/queue). + +============================================================================= + +@@ Move up. + +- Update everything: b libbutl/ build2/ libbpkg/ bpkg/ brep/ build2-toolchain-default/ @@ -74,24 +242,6 @@ Prelude ./test.sh -v --remote --fetch fetch --fetch-option --no-verify-peer \ --tar bsdtar --sha256 sha256-freebsd - * Update cppget repository (existing packages, not publishing yet): - - @@ What is the purpose of this step? It will mess up upgrade test - below. - - -t /home/boris/work/build2/etc1/install/0.2.0 -e queue - - cd cppget.org - git -C repository status - ./update repository/1/ - - This might not work in the early stage (backwards-incompatible) - - ./test -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/ - * Test dev integration of brep/ on hello and cppget repos First check if Apache2 configuration needs updating (INSTALL-DEV). Then @@ -114,54 +264,33 @@ Prelude Procession ========== -- Generate distribution (use -t for toolchain-only, without brep). The +X Generate distribution (use -t for toolchain-only, without brep). The result is placed into the queue. etc/dist 2>&1 | tee dist.log -- @@ Would be nice to test packages for missing files, etc., before upgrade. - -- Test upgrade from previous version (replace Y in 0.Y.0). +X Test upgrade from previous version (replace Y in 0.Y.0). etc/test-upgrade -c cxx \ -c config.cxx.loptions=-L/usr/local/lib \ -c config.cxx.poptions="-I/usr/include/apache2 -I/usr/include/apr-1.0" \ /home/boris/work/build2/etc1/install/0.Y.0 -- Update and test hello repository +X Update and test hello repository cd hello - for d in hello libhello libprint libformat repository; do \ - git -C $d status; done - ./release -a + ./foreach-git status + ./stage -p -- Test Intro steps on the local hello repository +X Test Intro steps on the local hello repository etc/intro `pwd`/hello/repository/1/ -- Publish hello repository, commit but don't push. - - [We need to publish now because etc/test uses it.] - - @@ Ideally we would want to stage it. - - ./release -p - -- Test Intro steps on the remote hello repository - - etc/intro https://build2.org/pkg/1/hello/ - -- Stage queue to cppget.org +X Stage queue to cppget.org etc/stage --dry-run etc/stage -- Regenerate other cppget.org sections with the new toolchain - - cd cppget.org - git -C repository status - ./update -e queue repository/1/ - - Determine the earliest supported backwards-compatible toolchain (see requires: in manifests), update etc/test @@ -170,21 +299,6 @@ Procession etc/test 2>&1 | tee test.log grep -i warning test.log -- Upgrade brep on build2.org (via package/queue upgrade if possible), - verify works. - - Backup configs if changed: - - cd private/ - scp -r lists.build2.org:/home/brep/config lists.build2.org/home/brep/ - -- Move packages from queue to alpha, regenerate repositories. - - ./update repository/1/ - -- Publish to production (build2.org/cppget.org). - - etc/publish - Test production and save a copy of toolchain in etc1/install/X.Y.Z @@ -205,51 +319,45 @@ Procession cd private/ scp -r lists.cppget.org:/home/brep/config lists.cppget.org/home/brep/ -- Tag (review tag_modules) - - etc/tag - ./push.sh - -- Commit and push cppget.org, hello git repositories - Release ======= -- Update style/ submodule in private/ ++ Update style/ submodule in private/ -- Write release notes, use placeholder for announcement URL. Add link to ++ Write release notes, use placeholder for announcement URL. Add link from the doc page. - Any new FAQ entries or any other updates (main page, etc)? -- Update download page. ++ Update download page. -- Regenerate (./cli.sh) all hosts. ++ Regenerate (./cli.sh) all hosts. -- Test local, publish, test production: ++ Test local, publish, test production: cd private/ ./publish --dry-run ./publish -- Write and send announcements ++ Write and send announcements Remember upgrade instructions. cat `ls -1 *.sha256` -- Patch the announcement URL in release notes, re-publish. ++ Patch the announcement URL in release notes, re-publish. - Announce on reddit and other places (doc/ann). Postlude ======== -- Need to regenerate/republish hello/ repository? - - Increment and open schema versions. Maybe not. Maybe we should only do that when there is a model change. -- Increment project versions to alpha1, open master for business ++ Increment project versions to alpha1, change BUILD2_REPO to staging, + open master for business. + +- Commit changes to etc/, add it back to etc/git/modules, and tag: -- Commit changes to etc/, add it back to etc/git/modules. + git tag -a X.Y.Z -m "Tag version X.Y.Z" -- cgit v1.1