summaryrefslogtreecommitdiff
path: root/release.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release.txt')
-rw-r--r--release.txt176
1 files changed, 123 insertions, 53 deletions
diff --git a/release.txt b/release.txt
index 6f9aec8..cb941fd 100644
--- a/release.txt
+++ b/release.txt
@@ -1,62 +1,62 @@
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
+* 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
+* 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)
+* 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)
+- Boot cppget1, freebsd VMs, make sure data/time is correct.
+
++ Copy prerequisites into build2-X.Y/, generate sha256 sums in BINARY (-b)
-- Build new prerequisites (if any) on local, freebsd (install to /usr/local).
++ Build new prerequisites (if any) on local, freebsd (install to /usr/local).
++ If new preprequisites/version, need to update manifests.
Prelude
=======
-- Review '@@' items [note: etc, private excluded]
++ Remove etc/ from modules in etc/git/modules.
+
++ Review '@@' items [note: etc, private excluded]
etc/review | less -R
-- Increment version to final.
++ Need to make sure Intro is still accurate wrt output, etc. Use -s switch
+ to etc/intro to compare.
- * Need to update versions/dates for man generation.
++ Increment version to final.
-- 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 versions/dates for man generation (cli.sh in build2,
+ bpkg, brep, and built2-toolchain).
-- Need to update submodules? Remember to push first.
+ * Review manifests for any other changes (new entries/files, etc).
-- 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; see upgrade test).
-- Update everything:
++ 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/
@@ -66,20 +66,18 @@ Prelude
* Manually in build2/
- * Manually in bpkg/; test valgrind, publish, test remote with -v, FreeBSD
- tools:
+ * Manually in bpkg/; test (valgrind/asan), 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:
+ * Update cppget repository (existing packages, not publishing yet):
- cd hello
- for d in hello libhello libprint libformat repository; do \
- git -C $d status; done
- ./release -a
+ @@ What is the purpose of this step? It will mess up upgrade test
+ below.
- * Update cppget repository (existing packages, not publishing yet):
+ -t /home/boris/work/build2/etc1/install/0.2.0 -e queue
cd cppget.org
git -C repository status
@@ -87,8 +85,9 @@ Prelude
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" \
+ ./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
@@ -106,49 +105,93 @@ Prelude
brep/load/brep-load cppget.org/brep-loader-home.conf
sudo /etc/init.d/apache2 restart
+ If need to drop the entire database, one way to do it is by executing:
+
+ DROP OWNED BY <user>;
+
Procession
==========
-- Generate distribution (use -t for toolchain-only, without brep)
+- Generate distribution (use -t for toolchain-only, without brep). The
+ result is placed into the queue.
etc/dist 2>&1 | tee dist.log
-- Stage packages to cppget1 host
+- @@ Would be nice to test packages for missing files, etc., before upgrade.
- etc/stage
+- 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
+
+ cd hello
+ for d in hello libhello libprint libformat repository; do \
+ git -C $d status; done
+ ./release -a
+
+- 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.]
-- Determine the earliest supported toolchain (see requires: in manifests),
- update etc/test
+ @@ Ideally we would want to stage it.
-- Publish hello repository [@@ Ideally we would want to stage it. Perhaps
- on cppget1?]
+ ./release -p
-- Test Intro steps:
+- Test Intro steps on the remote hello repository
etc/intro https://build2.org/pkg/1/hello/
+- 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
+
- Test
etc/test 2>&1 | tee test.log
grep -i warning test.log
-- Upgrade brep on cppget1 (using pkg.cppget1), verify works
+- Upgrade brep on build2.org (via package/queue upgrade if possible),
+ verify works.
-- Publish to production (build2.org/cppget.org)
+- 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
etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \
- https://download.build2.org/0.Y/build2-toolchain-0.2.0.tar.gz \
+ https://download.build2.org/0.Y/build2-toolchain-0.Y.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 (via package/alpha upgrade if possible),
+ verify works.
-- Upgrade brep on cppget.org (using pkg.cppget.org), verify works
+ Note that here we also have queue:
+
+ install/bin/brep-migrate -n brep_queue
+ install/bin/brep-load -n brep_queue config/brep-queue-load.conf
- Tag (review tag_modules)
@@ -160,7 +203,32 @@ etc/install -t -i "etc1/install/`cat build2-toolchain/version`" \
Release
=======
-cat `ls -1 *.sha256`
+- Update style/ submodule in private/
+
+- Write release notes, use placeholder for announcement URL. Add link to
+ the doc page.
+
+- Any new FAQ entries or any other updates (main page, etc)?
+
+- Update download page.
+
+- Regenerate (./cli.sh) all hosts.
+
+- Test local, publish, test production:
+
+ cd private/
+ ./publish --dry-run
+ ./publish
+
+- Write and send announcements
+
+ Remember upgrade instructions.
+
+ cat `ls -1 *.sha256`
+
+- Patch the announcement URL in release notes, re-publish.
+
+- Announce on reddit and other places (doc/ann).
Postlude
========
@@ -170,4 +238,6 @@ Postlude
- Increment and open schema versions. Maybe not. Maybe we should only do that
when there is a model change.
-- Increment project versions to alpha1
+- Increment project versions to alpha1, open master for business
+
+- Commit changes to etc/, add it back to etc/git/modules.