@@ No upgrade testing - Add new bot machines/configurations/options from stage to queue to public - Replace 0.6.0 and 0.6 in this document with the new version. - Remove etc/ and private/ from modules in etc/git/modules to reduce noise during stat. Also, review for any new modules. - Review '@@' items [private/ excluded, update with new modules, at least look for @@ TMP] etc/review | less -R - 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. - Update and test local builds: b test: build2/ bpkg/ bdep/ brep/ bbot/ libbutl/ libbpkg/ libbbot/ b msvc-linux/ - Stage hello projects and test: cd hello ./foreach-git pull ./foreach-git stat ./stage cd .. etc/intro -s `pwd`/hello/repository/1/ etc/intro -s https://hello.stage.build2.org/1 - Make sure all the bot builds are successful (drop build db). - Test bootstrap build2-toolchain using scripts/batch files (bot builds are using makefile). Need to test build.sh, build-*.bat. - Update NEWS files in all project that will have non-pre-release version. - Review documentation for (1) sample output changes and (2) still being relevant/making sense: - Testscript manual (for 1, see hello/hello-testscript). - Install guide for (for 1 & 2). - Introduction for (for 1 & 2). Use intro script to get output but watch out for stage (grep afterwards): etc/intro -s -p https://hello.stage.build2.org/1 - Change to final versions for all packages being released, some by hand, some with version scripts (see etc/stage for list + msvc-linux). - 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). - Push and update all submodules in buil2-toolchain - Regenerate all odb & docs (in both packages and inside build2-toolchain) - Bootstrap then update and test local cd build2 b clean git cout build2/version.hxx build2/b-options.?xx ./bootstrap.sh g++-6 cd .. b-boot '{clean update}(libbutl/ build2/)' b clean: bpkg/ bdep/ brep/ bbot/ libbpkg/ libbbot/ msvc-linux/ Then the local test step above. - Cleanup staging repo: rm -r staging/0/* rm -r staging/repository/1/*/ - Restage with -b: etc/stage -b - Check /0/ and /1/ for anything stray - restage hello (libstd-modules) - Upgrade brep on cppget.org (queue and main repo) using stage - Queue packages: - Change BUILD2_REPO in build2_toolchain build scripts to queue - Cleanup queue repo: rm -rf cppget.org/0/* rm -rf cppget.org/repository/1/queue/*/ - Queue etc/stage -q -b - check /0/ and /1/ for anything stray - Make sure bot builds are successful - Upgrade brep on build2.org (hello) using queue - Publish and test hello cd hello ./foreach-git stat ./stage -p cd .. etc/intro -s https://build2.org/pkg/1/hello - Drop build database (package versions do not change) - Make sure bot builds are successful - Publish and test toolchain - Change BUILD2_REPO in build2-toolchain build script to public - Regenerate build2-toolchain package in cppget.org/0/ etc/stage -p - Move packages (manually for now): - old/replaced/FTB packages either to legacy or delete - from queue to appropriate repositories (don't override existing) - Regenerate the repository cd cppget.org git -C repository add . git -C repository status ./update - Disable the queue toolchain on bbots (moved packages from queue/), delete distribution echo disabled | ssh build2.org tee >/dev/null \ /var/www/download.build2.org/public/queue/toolchain.sha256 ssh build2.org rm -r /var/www/download.build2.org/public/queue/*/ - Publish everything to build2.org/cppget.org etc/publish - Make sure bot builds are successful, drop hello build database again. - Release - Update submodules (style/) in private/. - 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)? Any new documentation to link from the doc page? - Update download page. cat `ls -1 *.sha256` - Regenerate documentation (./cli.sh) for all hosts. - Test locally, publish, test production cd private/ ./publish --dry-run ./publish - Write and send the announcement to mailing lists. cat `ls -1 *.sha256` - Remember upgrade instructions. - Add reply-to: header for users@ announcement. - Patch the announcement URL in release notes, re-publish. - Announce on reddit and other places (see doc/ann/). - Commit and tag private/ git tag -a 0.6.0 -m "Tag version 0.6.0" && git push --tags - 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.6.0 -m "Tag for build2 version 0.6.0" git -C libhello-1.0 tag -a 1.0/build2-0.6.0 -m "Tag for build2 version 0.6.0" ./foreach-git push --tags - Tag & Commit - commit cppget.org/repository/ (see commit history for procedure) - Tag and push all released packages, some by hand, some with tag scripts (see etc/stage for list). cd v="$(sed -n -re 's/version: ([^ ]+)/\1/p' manifest)"; echo $v; read; \ git tag -a $v -m "Tag version $v" && git push --tags For build2 projects, review tag_modules in etc/git/modules, then: ./tag.sh 0.6.0 ./push.sh - Increment versions and open master for business - Change to next development versions for all released packages, some by hand, some with version scripts (see etc/stage for list + msvc-linux). cd ~ edit manifest 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 - In build2-toolchain, update all submodules (including libodb*, etc), change BUILD2_REPO to staging. - Regenerate odb & cli docs everywhere (packages and build2-toolchain). New sequence: ~ rebuild ODB compiler b '{clean update}(build2/ libbutl/)' cd ../odb/builds/default/ b update # errors are ok b update b clean libbpkg/ cd bpkg/bpkg b clean b --match-only # errors are ok ./odb.sh cd .. b cd brep b clean b --match-only # errors are ok cd libbrep b hxx{version} ./odb.sh cd .. b ~ the rest is like in local test above - Update/test local (see early steps of this list). - 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. - Restage rm -r staging/0/* rm -r staging/repository/1/*/ etc/stage -b - Make sure bbot builds of the new development snapshot are successful. - Commit etc/ - Restore changes to etc/git/modules - Change all '+ ' back to '- '. - Commit and tag git tag -a 0.6.0 -m "Tag version 0.6.0" && git push --tags - Snapshot buildos-5 subvolume as buildos-5-0.6.0 btrfs subvolume snapshot buildos-5 buildos-5-0.6.0