4
This document describes the processes for making and announcing a Bazaar
5
release, and managing the release process.
7
See also: `Bazaar Developer Document Catalog <index.html>`_.
16
To start a new release cycle:
18
#. Send mail to the list with the key dates, who will be the release
19
manager, and the main themes or targetted bugs. Ask people to nominate
20
objectives, or point out any high-risk things that are best done early,
21
or that interact with other changes.
23
#. Add a new "series" in Launchpad at <https://launchpad.net/bzr/+addseries>. There is one
24
series for every *x.y* release.
29
TODO: Things to cover:
31
* Early communication to downstream teams (e.g. Launchpad) about changes in dependencies.
32
* Reminder re lifecycle and where we're up to right now
33
* Summary of recent successes and pending work
34
* Reminder re release objectives
35
* Reminder re things needing attention, e.g. bug triage, reviews, testing of certain things, etc.
41
TODO: Get material from http://bazaar-vcs.org/FeatureFreeze.
45
Preparing the tree for release
46
------------------------------
48
.. Was previously at http://bazaar-vcs.org/ReleaseChecklist
50
.. TODO: Still needs more clarity on what's in a RC versus a final
53
This is the procedure for making a new bzr release:
55
#. If the release is the first candidate, make a new branch in PQM.
56
(Contact Robert Collins for this step).
58
Register the branch at https://launchpad.net/products/bzr/+addbranch
60
#. Run the automatic test suite and any non-automated tests. (For example, try a download over http; these should eventually be scripted though not automatically run.). Try to have all optional dependencies installed so that there are no tests skipped. Also make sure that you have the c extensions compiled (``make`` or ``python setup.py build_ext -i``).
62
#. In the release branch, update ``version_info`` in ``./bzrlib/__init__.py``
64
#. Add the date and release number to ``./NEWS``.
66
#. Commit these changes to the release branch, using a command like::
68
bzr commit -m "(jam) Release 0.12rc1."
70
The diff before you commit will be something like::
72
=== modified file 'NEWS'
73
--- NEWS 2006-10-23 13:11:17 +0000
74
+++ NEWS 2006-10-23 22:50:50 +0000
77
+bzr 0.12rc1 2006-10-23
82
=== modified file 'bzrlib/__init__.py'
83
--- bzrlib/__init__.py 2006-10-16 01:47:43 +0000
84
+++ bzrlib/__init__.py 2006-10-23 22:49:46 +0000
86
# Python version 2.0 is (2, 0, 0, 'final', 0)." Additionally we use a
87
# releaselevel of 'dev' for unreleased under-development code.
89
-version_info = (0, 12, 0, 'dev', 0)
90
+version_info = (0, 12, 0, 'candidate', 1)
92
if version_info[3] == 'final':
93
version_string = '%d.%d.%d' % version_info[:3]
95
#. Submit those changes to PQM for merge into the appropriate release
98
#. When PQM succeeds, pull down the master release branch.
100
Making the source tarball
101
-------------------------
103
#. Change into the source directory and run
107
#. Unpack the tarball into a temporary directory and run ``make check`` in
108
that directory, to check for packaging problems.
111
Publishing the release
112
----------------------
114
Now you have the releasable product. The next step is making it
115
available to the world.
117
#. In <https://launchpad.net/bzr/> click the "Release series" for this
118
series, to take you to e.g. <https://launchpad.net/bzr/1.1>. Then
119
click "Register a release", and add information about this release.
121
#. Within that release, upload the source tarball and the GPG signature.
123
#. Link from http://bazaar-vcs.org/Download to the tarball and signature.
125
#. Update http://doc.bazaar-vcs.org/ to have a directory of documentation
126
for this release. (Controlled by the ``update-bzr-docs`` script on
127
escudero, and also update the ``latest`` symlink in
128
``/srv/bazaar.canonical.com/doc/``.)
130
#. Announce on the `Bazaar home page`__
132
__ http://bazaar-vcs.org/
135
Announcing the release
136
----------------------
138
Now that the release is publicly available, tell people about it.
140
#. Announce to ``bazaar-announce`` and ``bazaar`` mailing lists.
141
The announce mail will look something like this:
143
| Subject: bzr 0.11 release candidate 1
145
| INTRO HERE. Mention the release number and date, and why the release. (i.e. release candidate for testing, final release of a version, backport/bugfix etc).
148
| http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz
150
| http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz.sig
152
| DESCRIBE-CHANGES-IN-OVERVIEW-HERE
154
| DESCRIBE-when the next release will be (if there is another - i.e. this is a release candidate)
156
| Many thanks to all the contributors to this release! I've included the
157
| contents of NEWS for VERSION below:
159
To generate the data from NEWS, just copy and paste the relevant news section and clean it up as appropriate. The main clean-up task is to confirm that all major changes are indeed covered. This can be done by running ``bzr log`` back to the point when the branch was opened and cross checking the changes against the NEWS entries.
161
(RC announcements should remind plugin maintainers to update their plugins.)
163
* For point releases (i.e. a release candidate, or an incremental fix
164
to a released version) take everything in the relevant NEWS section. For
165
example, for 0.11rc2 take everything in NEWS from the bzr 0.11rc2 line to the bzr 0.11rc1 line further down.
167
* For major releases (i.e. 0.11, 0.12 etc), take all the combined NEWS sections from within that version: for 0.11 take all of the 0.11 specific section, plus 0.11rc2, plus 0.11rc1 etc.
169
#. Update the IRC channel topic. Use the ``/topic`` command to do this, ensuring the new topic text keeps the project name, web site link, etc.
171
#. Announce on http://freshmeat.net/projects/bzr/
173
This should be done for both release candidates and final releases. If you do not have a Freshmeat account yet, ask one of the existing admins.
175
#. Update http://en.wikipedia.org/wiki/Bzr -- this should be done for final releases but not Release Candidates.
177
#. Package maintainers should update packages when they see the
182
#. Post to http://mail.python.org/mailman/listinfo/python-announce-list for major releases
184
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
187
python setup.py register
189
Remember to check the results afterwards.
192
Merging the released code back to trunk
193
---------------------------------------
195
Merge the release branch back into the trunk. Check that changes in NEWS
196
were merged into the right sections. If it's not already done, advance
197
the version number in ``bzr`` and ``bzrlib/__init__.py``. Submit this
198
back into pqm for bzr.dev.
201
Updating the PPA for a new release
202
----------------------------------
204
We build Ubuntu ``.deb`` packages for Bazaar as an important part of the release
205
process. These packages are hosted in a `Personal Package Archive (PPA)`__ on
206
Launchpad, at <https://launchpad.net/~bzr/+archive>.
208
__ https://help.launchpad.net/PPAQuickStart
210
We build packages for every supported Ubuntu release
211
<https://wiki.ubuntu.com/Releases>. Packages need no longer be updated
212
when the release passes end-of-life because all users should
215
The ``debian/`` directory containing the packaging information is kept in
216
branches on Launchpad, named like
217
<https://code.launchpad.net/~bzr/bzrtools/packaging-dapper>.
219
Preconditions for building these packages:
221
* You must have a Launchpad account and be a member of the `~bzr`__ team
223
__ https://edge.launchpad.net/~bzr/+members>
225
* You must have a GPG key registered to your Launchpad account.
227
* Configure ``dput`` to upload to our PPA with this section in your
231
fqdn = ppa.launchpad.net
233
incoming = ~bzr/ubuntu
235
allow_unsigned_uploads = 0
237
* You need a Ubuntu (or probably Debian) machine, and ::
239
sudo apt-get install build-essential devscripts dput
241
Here is the process; there are some steps which should be automated in
244
#. You will need a working directory for each supported release, such as
245
``~/bzr/Packaging/dapper``
247
#. Download the official tarball of the release to e.g. ``~/bzr/Releases``
249
#. Copy the original tarball into your per-disto directory, then untar it
250
and if necessary rename it::
252
cp -l ~/bzr/Releases/bzrtools-1.3.0.tar.gz bzrtools_1.3.0.orig.tar.gz
253
tar xfvz bzrtools_1.3.0.orig.tar.gz
254
mv bzrtools bzrtools-1.3.0
256
#. Change into that directory and check out the packaging branch::
260
bzr+ssh://bazaar.launchpad.net/~bzr/bzrtools/packaging-dapper \
263
#. For Bazaar plugins, change the ``debian/control`` file to express a
264
dependency on the correct version of ``bzr``.
266
For bzrtools this is typically::
268
Build-Depends-Indep: bzr (>= 1.3~), rsync
269
Depends: ${python:Depends}, bzr (>= 1.3~), bzr (<< 1.4~), patch
271
#. Make a new ``debian/changelog`` entry for the new release,
272
either by using ``dch`` or just editing the file::
274
dch -v '1.3.0-1~bazaar1~dapper1' -D dapper
276
dch will default to the distro you're working in and this isn't checked
277
against the version number (which is just our conversion), so make sure
280
**Caution:** Release candidates must insert a tilde to make them sort before the
281
final release, like this: ``bzr-1.4~rc2-1~bazaar1~dapper1``.
283
Make sure you have the correct email address for yourself, version
284
number, and distribution. It should look something like this::
286
bzrtools (1.3.0-1~bazaar1~dapper1) dapper; urgency=low
288
* New upstream release.
290
-- John Sample <sample@example.com> Mon, 31 Mar 2008 12:36:27 +1100
292
If you need to upload the package again to fix a problem, normally you
293
should increment the last number in the version number, following the
294
distro name. Make sure not to omit the initial ``-1``, and make sure
295
that the distro name in the version is consistent with the target name
296
outside the parenthesis.
298
#. Commit these changes into the packaging branch::
300
bzr ci -m '1.3.0-1~bazaar1~dapper1: New upstream release.' debian
302
#. Build a source package::
306
This will create a ``.changes`` file in the per-distro directory,
307
and should invoke gpg to sign it with your key.
308
Check that file is reasonable: it should be uploading to the intended
309
distribution, have a .orig file included, and the right version number.
311
#. Upload into the PPA::
313
dput bzr-ppa ../bzrtools__1.3.0-1\~bazaar1\~dapper1_source.changes
315
Don't forget the ``bzr-ppa`` component or dput will try to upload into
316
the main archive by default. You can disable this by adding this
317
section to your ``.dput.cf``::
320
fqdn = SPECIFY.A.PPA.NAME
322
#. You should soon get an "upload accepted" mail from Launchpad, which
323
means that your package is waiting to be built. You can then track its
324
progress in <https://launchpad.net/~bzr/+archive> and
325
<https://launchpad.net/~bzr/+archive/+builds>.