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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
@@ No upgrade testing
- Replace 0.5.0 and 0.5 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, 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/ 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://build2.org/pkg/1/stage
- 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:
etc/intro -s -p https://build2.org/pkg/1/stage
- 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
@@ Need to manually clean old the project builds because they
pick up old version.hxx (during dep extraction).
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/ 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 (step 1 above, with -b):
etc/stage -b
- Check /0/ and /1/ for anything stray
- Upgrade brep on cppget.org (queue and main repo) using stage
- Queue packages:
- Change BUILD2_REPO in build2_toolchain build script 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.
Remember upgrade instructions.
cat `ls -1 *.sha256`
- 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.5.0 -m "Tag version 0.5.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.5.0 -m "Tag for build2 version 0.5.0"
git -C libhello-1.0 tag -a 1.0/build2-0.5.0 -m "Tag for build2 version 0.5.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 <proj>
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.5.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 <proj>
~ 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).
- 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.5.0 -m "Tag version 0.5.0" && git push --tags
|