From b22f2f86d4a7166b7098fc82944a198e6ad63748 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 5 May 2017 14:26:14 +0200 Subject: Updates for 0.5.0 release --- release.txt | 402 ++++++++++++++++++++++-------------------------------------- 1 file changed, 148 insertions(+), 254 deletions(-) (limited to 'release.txt') diff --git a/release.txt b/release.txt index ad06109..5bdead3 100644 --- a/release.txt +++ b/release.txt @@ -1,363 +1,257 @@ -TODO -==== +@@ No upgrade testing -@@ No upgrade testing (see old test-upgrade script). +- Replace 0.5.0 and 0.5 in this document with the new version. -@@ Not saving in previous toolchains (see old install script). +- Remove etc/ and private/ from modules in etc/git/modules to reduce + noise during stat. Also, review for any new modules. -@@ Using FreeBSD for Clang/libc++ testing, both 3.4 (earliest we support) - and 3.7. +- Review '@@' items [private/ excluded, at least look for @@ TMP] -Setup -===== - -* Make symlinks to development b, bpkg in /usr/local/bin/, used as the latest - toolchain. - -* Set passwordless sudo, logins to freebsd, cppget1, rbook (Mac OS) - - For Mac OS: - echo "boris ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers - -- 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 + etc/review | less -R - To stage to cppget.org/queue: +- Identify packages that will be released (see etc/stage). They should all be + staged and built successfully, including submodule-updated build2-toolchain + and baseutils/mingw. Review stageing/0/ and staging/1/ for anything stray. - ~ note: assuming brep running on queue can handle it +- Update and test local builds: - etc/stage -q + b test: build2/ bpkg/ brep/ bbot/ libbutl/ libbpkg/ libbbot/ + b msvc-linux/ -- To stage hello +- Stage hello projects and test: cd hello - ./stat + ./foreach-git pull + ./foreach-git 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 - - + Local brep build: - - 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 - -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/, build2-toolchain from modules in etc/git/modules. - -+ Review '@@' items [note: etc, private excluded] - - etc/review | less -R - -+ Make sure Intro is still accurate wrt output, etc. Use -s -p switches to - etc/intro to compare (after running hello/stage): - + cd .. etc/intro -s `pwd`/hello/repository/1/ + etc/intro -s https://build2.org/pkg/1/stage -+ If new preprequisites/version, need to update manifests. See - private/build2-projects.txt to review. - -+ Increment version to final. +- Update NEWS files in all project that will have non-pre-release version. - ~ update and use etc/version script +- Review documentation for (1) sample output changes and (2) still being + relevant/making sense: - ~ update versions/dates for man generation (cli.sh in build2, bpkg, brep, - and built2-toolchain) + - Testscript manual (for 1, see hello/hello-testscript). -+ Update BUILD2_REPO URL in build2-toolchain/build* scripts to alpha, also - grep docs for 'stage.' in case got copied. + - Install guide for (for 1 & 2). -+ 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). + - Introduction for (for 1 & 2). Use intro script to get output: -+ Update NEWS files. + etc/intro -s -p https://build2.org/pkg/1/stage -+ Need to update submodules? (remember to push first) +- Change to final versions for all packages being released, some by hand, + some with version scripts (see etc/stage for list + msvc-linux). -+ Need to regenerate ODB files, CLI documentation, in build2-toolchin? + - 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). -Procession -========== + - Push and update all submodules in buil2-toolchain -+ Stage final packages (remove -p if need baseutils/mingw) + - Regenerate all odb & docs (in both packages and inside build2-toolchain) - etc/stage -p + - Bootstrap then update and test local -- Upgrade brep on lists.build2, lists.cppget from stage + @@ Need to manually clean old the project builds because they + pick up old version.hxx (during dep extraction). - ~ assumming it can handle old repositories (should normally be the case) + cd build2 + b clean + git cout build2/version.hxx build2/b-options.?xx + ./bootstrap.sh g++-6 - ~ backup config if changed + cd .. + b-boot '{clean update}(libbutl/ build2/)' - 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/ + b clean: bpkg/ brep/ bbot/ libbpkg/ libbbot/ msvc-linux/ - ~ note: on cppget we have queue: + Then the local test step above. - install/bin/brep-migrate -n brep_queue - install/bin/brep-load -n brep_queue config/brep-queue-load.conf + - Cleanup staging repo: -+ Queue final packages + rm -r staging/0/* + rm -r staging/repository/1/*/ - etc/stage -p -q + - Restage (step 1 above, with -b): -+ Smoke-test any last-minute changes + etc/stage -b -+ Move packages from queue to alpha, cleanup obsolete, regenerate. + - Check /0/ and /1/ for anything stray - cd cppget.org - git -C repository status - ./update +- Upgrade brep on cppget.org (queue and main repo) using stage -+ Publish to production (build2.org/cppget.org) +- Queue packages: - etc/publish + - Change BUILD2_REPO in build2_toolchain build script to queue -+ Smoke-test + - Cleanup queue repo: -+ Publish hello repository + rm -rf cppget.org/0/* + rm -rf cppget.org/repository/1/queue/*/ - cd hello - ./stage -p + - Queue - Test intro steps: + etc/stage -q -b - etc/intro -s https://build2.org/pkg/1/hello + - check /0/ and /1/ for anything stray -- Commit and push git repositories: + - Make sure bot builds are successful -+ ~ cppget.org (commit individually and push) +- Upgrade brep on build2.org (hello) using queue - ~ hello project and respository (add & commit individual packages) +- Publish and test hello cd hello ./foreach-git stat + ./stage -p - ./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 + cd .. + etc/intro -s https://build2.org/pkg/1/hello -+ Tag (review tag_modules) and push. + - Drop build database (package versions do not change) - etc/tag - ./push.sh + - Make sure bot builds are successful -- Tag and increment version for each published package (see - private/build2-projects.txt) +- Publish and test toolchain -============================================================================= + - Change BUILD2_REPO in build2_toolchain build script to public -@@ 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). + - Regenerate build2-toolchain package in cppget.org/0/ -============================================================================= + etc/stage -p -@@ Move up. + - Move packages (manually for now): -- Update everything: + - old/replaced/FTB packages either to legacy or delete - b libbutl/ build2/ libbpkg/ bpkg/ brep/ build2-toolchain-default/ + - from queue to appropriate repositories (don't override existing) -- Run tests for each project: + - Regenerate the repository - * b 'test(libbutl/ libbpkg/)' + cd cppget.org + git -C repository add . + git -C repository status + ./update - * Manually in build2/ + - Disable the queue toolchain on bbots (moved packages from queue/), + delete distribution - * Manually in bpkg/; test (valgrind/asan), publish, test remote with -v, - FreeBSD tools: + echo disabled | ssh build2.org tee >/dev/null \ + /var/www/download.build2.org/public/queue/toolchain.sha256 - ./test.sh -v --remote --fetch fetch --fetch-option --no-verify-peer \ - --tar bsdtar --sha256 sha256-freebsd + ssh build2.org rm -r /var/www/download.build2.org/public/queue/*/ - * Test dev integration of brep/ on hello and cppget repos + - Publish everything to build2.org/cppget.org - First check if Apache2 configuration needs updating (INSTALL-DEV). Then - from build2/ work root: + etc/publish - # This will have broken links since we are not running it as /pkg/hello. - # - brep/migrate/brep-migrate --recreate - brep/load/brep-load hello/brep-loader-home.conf - sudo /etc/init.d/apache2 restart + - Make sure bot builds are successful, drop hello build database again. - brep/migrate/brep-migrate --recreate - brep/load/brep-load cppget.org/brep-loader-home.conf - sudo /etc/init.d/apache2 restart +- Release - If need to drop the entire database, one way to do it is by executing: + - Update submodules (style/) in private/. - DROP OWNED BY ; + - Write release notes, use placeholder for announcement URL. Add link from + the doc page. -Procession -========== + - Any new FAQ entries or any other updates (main page, etc)? Any new + documentation to link from the doc page? -X Generate distribution (use -t for toolchain-only, without brep). The - result is placed into the queue. + - Update download page. - etc/dist 2>&1 | tee dist.log + cat `ls -1 *.sha256` -X Test upgrade from previous version (replace Y in 0.Y.0). + - Regenerate documentation (./cli.sh) for all hosts. - 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 + - Test locally, publish, test production -X Update and test hello repository + cd private/ + ./publish --dry-run + ./publish - cd hello - ./foreach-git status - ./stage -p + - Write and send the announcement to mailing lists. -X Test Intro steps on the local hello repository + Remember upgrade instructions. - etc/intro `pwd`/hello/repository/1/ + cat `ls -1 *.sha256` -X Stage queue to cppget.org + - Patch the announcement URL in release notes, re-publish. - etc/stage --dry-run - etc/stage + - Announce on reddit and other places (see doc/ann/). -- Determine the earliest supported backwards-compatible toolchain (see - requires: in manifests), update etc/test + - Commit and tag private/ -- Test + git tag -a 0.5.0 -m "Tag version 0.5.0" && git push --tags - etc/test 2>&1 | tee test.log - grep -i warning test.log +- Tag & Commit hello + + - commit hello/repository/ (see commit history for procedure) + + cd hello + ./foreach-git stat + ./foreach-git -x libhello-1.0 tag -a build2-0.5.0 -m "Tag for build2 version 0.5.0" + git -C libhello-1.0 tag -a 1.0/build2-0.5.0 -m "Tag for build2 version 0.5.0" + ./foreach-git push --tags -- Test production and save a copy of toolchain in etc1/install/X.Y.Z +- Tag & Commit - etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \ - https://download.build2.org/0.Y/build2-toolchain-0.Y.0.tar.gz \ - https://pkg.cppget.org/1/alpha + - commit cppget.org/repository/ (see commit history for procedure) -- Upgrade brep on cppget.org (via package/alpha upgrade if possible), - verify works. + - Tag and push all released packages, some by hand, some with tag scripts + (see etc/stage for list). - Note that here we also have queue: + cd - install/bin/brep-migrate -n brep_queue - install/bin/brep-load -n brep_queue config/brep-queue-load.conf + v="$(sed -n -re 's/version: ([^ ]+)/\1/p' manifest)"; echo $v; read; \ + git tag -a $v -m "Tag version $v" && git push --tags - Backup configs if changed: + For build2 projects, review tag_modules in etc/git/modules, then: - cd private/ - scp -r lists.cppget.org:/home/brep/config lists.cppget.org/home/brep/ + ./tag.sh 0.5.0 + ./push.sh -Release -======= +- Increment versions and open master for business -+ Update style/ submodule in private/ + - Change to next development versions for all released packages, some by + hand, some with version scripts (see etc/stage for list + msvc-linux). -+ Write release notes, use placeholder for announcement URL. Add link from - the doc page. + cd -- Any new FAQ entries or any other updates (main page, etc)? + ~ edit manifest -+ Update download page. + v="$(sed -n -re 's/version: ([^ ]+)/\1/p' manifest)"; echo $v; read; \ + git ci -a -m "Bump version to $v, master is open for business" && git push -+ Regenerate (./cli.sh) all hosts. + - In build2-toolchain, update all submodules (including libodb*, etc), + change BUILD2_REPO to staging. -+ Test local, publish, test production: + - Regenerate odb & cli docs everywhere (packages and build2-toolchain). - cd private/ - ./publish --dry-run - ./publish + - Update/test local (see early steps of this list). -+ Write and send announcements + - Make symlinks for new version in baseutils (for both baseutils and mingw, + the idea is that we will start with those and maybe upgrade during + development). Update version file. - Remember upgrade instructions. + - Restage - cat `ls -1 *.sha256` + rm -r staging/0/* + rm -r staging/repository/1/*/ -+ Patch the announcement URL in release notes, re-publish. + etc/stage -b -- Announce on reddit and other places (doc/ann). + - Make sure bbot builds of the new development snapshot are successful. -Postlude -======== +- Commit etc/ -- Increment and open schema versions. Maybe not. Maybe we should only do that - when there is a model change. + - Restore changes to etc/git/modules -+ Increment project versions to alpha1, change BUILD2_REPO to staging, - open master for business. + - Change all '+ ' back to '- '. -- Commit changes to etc/, add it back to etc/git/modules, and tag: + - Commit and tag - git tag -a X.Y.Z -m "Tag version X.Y.Z" + git tag -a 0.5.0 -m "Tag version 0.5.0" && git push --tags -- cgit v1.1