TODO ==== @@ Need to test upgradability via bpkg (create config with previous version of toolchain, upgrade). @@ Looks like we need a public staging host. @@ Local Clang test is broken and disabled, using FreeBSD for Clang testing Notes ==== - Be very careful with submodules if fixing anything, remember to update build2-toolchain. Setup ===== - Make symlinks to development b, bpkg in /usr/local/bin/, used as the latest toolchain. - Boot cppget1, freebsd VMs, make sure data/time is correct. - Set passwordless sudo, logins to freebsd, cppget1, rbook (Mac OS) For Mac OS: echo "boris ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers #echo "192.168.111.103 cppget1 pkg.cppget1" >>/etc/hosts #echo "192.168.0.19 protem" >>/etc/hosts curl --resolve 'pkg.cppget1:8080:192.168.0.19' http://pkg.cppget1:8080/1/ iptables -t nat -A PREROUTING -d 192.168.0.19 -p tcp --dport 8080 -j DNAT --to-destination 192.168.111.103:80 - Copy prerequisites into build2-X.Y/, generate sha256 sums in BINARY (-b) - Build new prerequisites (if any) on local, freebsd (install to /usr/local). Prelude ======= - Review '@@' items [note: etc, private excluded] etc/review | less -R - Increment version to final. * Need to update versions/dates for man generation. - 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). - Need to update submodules? Remember to push first. - Need to regenerate ODB files, CLI documentation, in build2-toolchin! - Update everything: b libbutl/ build2/ libbpkg/ bpkg/ brep/ build2-toolchain-default/ - Run tests for each project: * b 'test(libbutl/ libbpkg/)' * Manually in build2/ * Manually in bpkg/; test valgrind, publish, test remote with -v, FreeBSD tools: ./test.sh -v --remote --fetch fetch --fetch-option --no-verify-peer \ --tar bsdtar --sha256 sha256-freebsd * Update hello repository: cd hello for d in hello libhello libprint libformat repository; do \ git -C $d status; done ./release -a * Update cppget repository (existing packages, not publishing yet): 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 from build2/ work root: # 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 brep/migrate/brep-migrate --recreate brep/load/brep-load cppget.org/brep-loader-home.conf sudo /etc/init.d/apache2 restart Procession ========== - Generate distribution (use -t for toolchain-only, without brep) etc/dist 2>&1 | tee dist.log - Stage packages to cppget1 host etc/stage - Determine the earliest supported toolchain (see requires: in manifests), update etc/test - Publish hello repository [@@ Ideally we would want to stage it. Perhaps on cppget1?] - Test Intro steps: etc/intro https://build2.org/pkg/1/hello/ - Test etc/test 2>&1 | tee test.log grep -i warning test.log - Upgrade brep on cppget1 (using pkg.cppget1), verify works - Publish to production (build2.org/cppget.org) etc/publish - Test production and save a copy of toolchain in etc1/install/X.Y.Z etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \ https://download.build2.org/0.Y/build2-toolchain-0.2.0.tar.gz \ https://pkg.cppget.org/1/alpha etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \ https://download.build2.org/0.2/build2-toolchain-0.2.0.tar.gz \ https://pkg.cppget.org/1/alpha - Upgrade brep on cppget.org (using pkg.cppget.org), verify works - Tag (review tag_modules) etc/tag ./push.sh - Commit and push cppget.org, hello git repositories Release ======= cat `ls -1 *.sha256` 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