1781
1783
TODO: Get material from http://bazaar-vcs.org/FeatureFreeze.
1787
TODO: Get material from http://bazaar-vcs.org/ReleaseChecklist and clean
1788
it up to make it clearer what the RC vs final vs both tasks are.
1794
TODO: Get material from http://bazaar-vcs.org/ReleaseChecklist and clean
1795
it up to make it clearer what the RC vs final vs both tasks are.
1787
Making a Release or Release Candidate
1788
-------------------------------------
1790
.. Was previously at http://bazaar-vcs.org/ReleaseChecklist
1792
.. TODO: Still needs more clarity on what's in a RC versus a final
1795
.. TODO: Too much of this is manual but could be automated...
1797
This is the procedure for making a new bzr release:
1799
#. If the release is the first candidate, make a new branch in PQM. (Contact RobertCollins for this step).
1801
Register the branch at https://launchpad.net/products/bzr/+addbranch
1803
#. 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``).
1805
#. In the release branch, update ``version_info`` in ``./bzrlib/__init__.py``
1807
#. Add the date and release number to ``./NEWS``.
1809
#. Update the release number in the README. (It's not there as of 0.15, but please check).
1811
#. Commit these changes to the release branch, using a command like::
1813
bzr commit -m "(jam) Release 0.12rc1."
1815
The diff before you commit will be something like::
1817
=== modified file 'NEWS'
1818
--- NEWS 2006-10-23 13:11:17 +0000
1819
+++ NEWS 2006-10-23 22:50:50 +0000
1822
+bzr 0.12rc1 2006-10-23
1827
=== modified file 'bzrlib/__init__.py'
1828
--- bzrlib/__init__.py 2006-10-16 01:47:43 +0000
1829
+++ bzrlib/__init__.py 2006-10-23 22:49:46 +0000
1831
# Python version 2.0 is (2, 0, 0, 'final', 0)." Additionally we use a
1832
# releaselevel of 'dev' for unreleased under-development code.
1834
-version_info = (0, 12, 0, 'dev', 0)
1835
+version_info = (0, 12, 0, 'candidate', 1)
1837
if version_info[3] == 'final':
1838
version_string = '%d.%d.%d' % version_info[:3]
1840
#. Send the changes to PQM, to update the official master branch.
1842
#. When PQM succeeds, pull down the master release branch.
1844
#. Merge the release branch back into the trunk. Check that changes in NEWS were merged into the right sections. If it's not already done, advance the version number in bzr and bzrlib/__init__.py Submit this back into pqm for bzr.dev.
1846
#. Make a distribution directory by running e.g. ``bzr export /tmp/bzr-<version>/`` in the working directory.
1848
#. Run make in /tmp/bzr-<version>. This creates the extensions from the pyrex source.
1850
#. Run the test suite in the distribution directory
1852
#. Run ``setup.py install`` --root=prefix to do a test install into your system directory, home directory, or some other prefix. Check the install worked and that the installed version is usable. (run the bzr script from the installed path with PYTHONPATH set to the site-packages directory it created). i.e. ::
1854
python setup.py install --root=installed
1855
PYTHONPATH=installed/usr/lib/python2.4/site-packages installed/usr/bin/bzr
1857
#. Clean the tree to get rid of .pyc files etc: make clean && rm -rf build && rm bzrlib/_*.c bzrlib/_*.so
1859
#. Generate the reference documentation in text format: make doc/en/user-reference/bzr_man.txt.
1861
#. Change back to your original branch and then run: make clean && make to create the compiled pyrex extensions. You then need to copy the .c files over to the exported directory.
1863
``find . -name "*.c"`` will tell you which files you need.
1865
#. Create the release tarball::
1867
cd /tmp && tar czf bzr-<version>.tar.gz bzr-<version>
1869
#. Sign the tarball with e.g. ``gpg --detach-sign -a bzr-0.10rc1.tar.gz``
1872
Publishing the release
1873
----------------------
1875
Now you have the releasable product. The next step is making it
1876
available to the world.
1878
#. In <https://launchpad.net/bzr/> click the "Release series" for this
1879
series, to take you to e.g. <https://launchpad.net/bzr/1.1>. Then
1880
click "Register a release", and add information about this release.
1882
#. Within that release, upload the source tarball and the GPG signature.
1884
(These used to also be uploaded to
1885
<sftp://escudero.ubuntu.com/srv/bazaar.canonical.com/www/releases/src>
1886
but that's not accessible to all developers, and gets some mime types
1889
#. Link from http://bazaar-vcs.org/Download to the tarball and signature.
1891
#. Update http://doc.bazaar-vcs.org/ to have a directory of documentation
1892
for this release. (Controlled by the ``update-bzr-docs`` script on
1893
escudero, and also update the ``latest`` symlink in
1894
``/srv/bazaar.canonical.com/doc/``.)
1896
#. Announce on the `Bazaar home page`__
1898
__ http://bazaar-vcs.org/
1901
Announcing the release
1902
----------------------
1904
Now that the release is publicly available, tell people about it.
1906
#. Announce to ``bazaar-announce`` and ``bazaar`` mailing lists.
1907
The announce mail will look something like this:
1909
| Subject: bzr 0.11 release candidate 1
1911
| 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).
1914
| http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz
1915
| and GPG signature:
1916
| http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz.sig
1918
| DESCRIBE-CHANGES-IN-OVERVIEW-HERE
1920
| DESCRIBE-when the next release will be (if there is another - i.e. this is a release candidate)
1922
| Many thanks to all the contributors to this release! I've included the
1923
| contents of NEWS for VERSION below:
1925
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.
1927
(RC announcements should remind plugin maintainers to update their plugins.)
1929
* For point releases (i.e. a release candidate, or an incremental fix to a released version) take everything in the relevant NEWS secion : for 0.11rc2 take everything in NEWS from the bzr 0.11rc2 line to the bzr 0.11rc1 line further down.
1931
* 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.
1933
#. Update the `news side menu`__ -- this currently requires downloading the file, editing it, deleting it, and uploading a replacement.
1935
__ http://bazaar-vcs.org/site/menu?action=AttachFile&do=view&target=news.html
1937
#. 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.
1939
#. Announce on http://freshmeat.net/projects/bzr/
1941
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.
1943
#. Update http://en.wikipedia.org/wiki/Bzr -- this should be done for final releases but not Release Candidates.
1945
#. Package maintainers should update packages when they see the
1950
#. Post to http://mail.python.org/mailman/listinfo/python-announce-list for major releases
1952
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
1955
python setup.py register
1957
Remember to check the results afterwards.
1960
Making Win32 installers
1961
-----------------------
1963
**XXX:** This information is now probably obsolete, as Alexander uploads
1964
direct to Launchpad. --mbp 20080116
1966
Alexander Belchenko has been very good about getting packaged installers compiled (see Win32ReleaseChecklist for details). He generally e-mails John Arbash Meinel when they are ready. This is just a brief checklist of what needs to be done.
1968
#. Download and verify the sha1 sums and gpg signatures. Frequently the sha1 files are in dos mode, and need to be converted to unix mode (strip off the trailing ``\r``) before they veryify correctly.
1970
#. Upload to the Launchpad page for this release.
1972
#. Upload to escudero (to the b.c.c/www/releases/win32 directory) using sftp, lftp or rsync
1974
#. Cat the contents of the .sha1 files into the SHA1SUM.
1976
#. Update the SHA1SUM and MD5SUM files using something like ``md5sum bzr-0.14.0.win32.exe >> MD5SUM``. Make sure you use append (>>) rather than overwrite (>).
1978
#. Verify once again that everything is correct with ``sha1sum -c SHA1SUM`` and ``md5sum -c MD5SUM``.
1980
#. Update ``.htaccess`` so that the 'bzr-latest.win32.exe' links point to the latest release. This is not done for candidate releases, only for final releases. (example: bzr-0.14.0, but not bzr-0.14.0rc1).
1982
#. Make sure these urls work as expected:
1984
http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.5.exe
1986
http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.5.exe.asc
1988
http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.4.exe
1990
http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.4.exe.asc
1992
http://bazaar-vcs.org/releases/win32/bzr-setup-latest.exe
1994
http://bazaar-vcs.org/releases/win32/bzr-setup-latest.exe.asc
1996
They should all try to download a file with the correct version number.
1998
#. Update http://bazaar-vcs.org/Download to indicate the newly available versions.
2000
#. Update http://bazaar-vcs.org/WindowsDownloads to have the correct version number as well as the correct sha1sum displayed.
1798
2004
vim: ft=rst tw=74 ai