@@ Need to sync hello/* projects with latest bdep-new output (and re-tag) @@ No upgrade testing - Add new bot machines/configurations/options from stage to queue to public @@ See paper in Build OS filder. @@ Might have to be done at release if things are incompatible. Maybe better/cleaner to always do this at release. - Replace 0.7.0 and 0.7 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; also check the review script for any new modules]: 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. Now test via automated install files: see private/install/testing.txt for details. - 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: ./intro2-tldr 2>&1 | tee intro2-tldr.out ./intro2-tour 2>&1 | tee intro2-tour.out - 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 @@ Add extra packages (cli, libcutl, mysql/mariadb). - 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 @@ Remove *-queue install scripts. - 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 # Review changes. ./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. @@ First test automated install scripts. - Release - Update submodules (style/) in private/. - Write release notes, use placeholder for announcement URL (or guess). 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` - Update install page. cat toolchain.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/verify the announcement URL in release notes, re-publish. - Announce on reddit and other places (see doc/ann/). - Commit and tag private/ and style/ git tag -a 0.7.0 -m "Tag version 0.7.0" && git push --follow-tags - Tag & Commit hello cd hello ./foreach-git stat - commit hello/repository/ (see commit history for procedure) git tag -a build2-0.7.0 -m "Tag for build2 version 0.7.0" && git push --follow-tags - Tag & Commit - commit & push cppget.org/repository/ (see commit history for procedure; commit big chunks first, then reorder with rebase). - Tag and push all released packages, some by hand, some with tag scripts (see etc/stage for list but also packages added ad hoc with etc/stage-pkg). @@ Use vX.Y.Z tag for packages that are bpkg/bdep-ready (i.e., have suitable repositories.manifest if required). cd # X.Y.Z v="$(sed -n -re 's/version: ([^ ]+)/\1/p' manifest)"; echo $v; read; \ git tag -a $v -m "Tag version $v" && git push --follow-tags # vX.Y.Z v="$(sed -n -re 's/version: ([^ ]+)/\1/p' manifest)"; echo v$v; read; \ git tag -a v$v -m "Tag version $v" && git push --follow-tags For build2 projects, review tag_modules in etc/git/modules, then: ./tag.sh 0.7.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 @@ bdep sync -fura @@ b hxx{version} # first lib*, then projects, then odb.sh - 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). - 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.7.0 -m "Tag version 0.7.0" && git push --follow-tags - Snapshot buildos subvolumes as buildos-0.7.0 btrfs subvolume snapshot buildos-3 buildos-3-0.7.0 btrfs subvolume snapshot buildos-6 buildos-6-0.7.0