1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
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
|