/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/HACKING.txt

  • Committer: Aaron Bentley
  • Date: 2008-02-24 16:42:13 UTC
  • mfrom: (3234 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3235.
  • Revision ID: aaron@aaronbentley.com-20080224164213-eza1lzru5bwuwmmj
Merge with bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
1755
1755
Starting a Release
1756
1756
------------------
1757
1757
 
1758
 
TODO: Things to cover:
1759
 
 
1760
 
* RFI on release objectives
1761
 
* RFI on higher risk things that are best done early, e.g. changes to file
1762
 
  format defaults
1763
 
* Communication of proposed dates
1764
 
 
 
1758
To start a new release cycle:
 
1759
 
 
1760
#. Send mail to the list with the key dates, who will be the release
 
1761
   manager, and the main themes or targetted bugs.  Ask people to nominate
 
1762
   objectives, or point out an high-risk things that are best done early,
 
1763
   or that interact with other changes.
 
1764
 
 
1765
#. Add a new "series" in Launchpad at <https://launchpad.net/bzr/+addseries>.  There is one 
 
1766
   series for every *x.y* release.
1765
1767
 
1766
1768
Weekly Status Updates
1767
1769
---------------------
1781
1783
TODO: Get material from http://bazaar-vcs.org/FeatureFreeze.
1782
1784
 
1783
1785
 
1784
 
Release Candidates
1785
 
------------------
1786
 
 
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.
1789
 
 
1790
 
 
1791
 
The Final Release
1792
 
-----------------
1793
 
 
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.
 
1786
 
 
1787
Making a Release or Release Candidate
 
1788
-------------------------------------
 
1789
 
 
1790
.. Was previously at http://bazaar-vcs.org/ReleaseChecklist
 
1791
 
 
1792
.. TODO: Still needs more clarity on what's in a RC versus a final
 
1793
.. release?
 
1794
 
 
1795
.. TODO: Too much of this is manual but could be automated...
 
1796
 
 
1797
This is the procedure for making a new bzr release:
 
1798
 
 
1799
#. If the release is the first candidate, make a new branch in PQM. (Contact RobertCollins for this step).
 
1800
 
 
1801
   Register the branch at https://launchpad.net/products/bzr/+addbranch
 
1802
 
 
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``).
 
1804
 
 
1805
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``
 
1806
 
 
1807
#. Add the date and release number to ``./NEWS``.
 
1808
 
 
1809
#. Update the release number in the README. (It's not there as of 0.15, but please check).
 
1810
 
 
1811
#. Commit these changes to the release branch, using a command like::
 
1812
    
 
1813
     bzr commit -m "(jam) Release 0.12rc1." 
 
1814
   
 
1815
   The diff before you commit will be something like::
 
1816
 
 
1817
       === modified file 'NEWS'
 
1818
       --- NEWS        2006-10-23 13:11:17 +0000
 
1819
       +++ NEWS        2006-10-23 22:50:50 +0000
 
1820
       @@ -1,4 +1,4 @@
 
1821
       -IN DEVELOPMENT
 
1822
       +bzr 0.12rc1  2006-10-23
 
1823
 
 
1824
          IMPROVEMENTS:
 
1825
 
 
1826
 
 
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
 
1830
       @@ -35,7 +35,7 @@
 
1831
        # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
 
1832
        # releaselevel of 'dev' for unreleased under-development code.
 
1833
 
 
1834
       -version_info = (0, 12, 0, 'dev', 0)
 
1835
       +version_info = (0, 12, 0, 'candidate', 1)
 
1836
 
 
1837
        if version_info[3] == 'final':
 
1838
            version_string = '%d.%d.%d' % version_info[:3]
 
1839
 
 
1840
#. Send the changes to PQM, to update the official master branch.
 
1841
 
 
1842
#. When PQM succeeds, pull down the master release branch.
 
1843
 
 
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.
 
1845
 
 
1846
#. Make a distribution directory by running e.g. ``bzr export /tmp/bzr-<version>/`` in the working directory.
 
1847
 
 
1848
#. Run make in /tmp/bzr-<version>. This creates the extensions from the pyrex source.
 
1849
 
 
1850
#. Run the test suite in the distribution directory
 
1851
 
 
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. ::
 
1853
 
 
1854
    python setup.py install --root=installed
 
1855
    PYTHONPATH=installed/usr/lib/python2.4/site-packages installed/usr/bin/bzr
 
1856
 
 
1857
#. Clean the tree to get rid of .pyc files etc: make clean && rm -rf build && rm bzrlib/_*.c bzrlib/_*.so
 
1858
 
 
1859
#. Generate the reference documentation in text format: make doc/en/user-reference/bzr_man.txt.
 
1860
 
 
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. 
 
1862
   
 
1863
   ``find . -name "*.c"`` will tell you which files you need.
 
1864
 
 
1865
#. Create the release tarball::
 
1866
   
 
1867
     cd /tmp && tar czf bzr-<version>.tar.gz bzr-<version>
 
1868
 
 
1869
#. Sign the tarball with e.g. ``gpg --detach-sign -a bzr-0.10rc1.tar.gz``
 
1870
 
 
1871
 
 
1872
Publishing the release
 
1873
----------------------
 
1874
 
 
1875
Now you have the releasable product.  The next step is making it
 
1876
available to the world.
 
1877
 
 
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.
 
1881
 
 
1882
#. Within that release, upload the source tarball and the GPG signature.
 
1883
 
 
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
 
1887
   wrong...)
 
1888
 
 
1889
#. Link from http://bazaar-vcs.org/Download to the tarball and signature.
 
1890
 
 
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/``.)
 
1895
 
 
1896
#. Announce on the `Bazaar home page`__
 
1897
   
 
1898
 __ http://bazaar-vcs.org/
 
1899
 
 
1900
 
 
1901
Announcing the release
 
1902
----------------------
 
1903
 
 
1904
Now that the release is publicly available, tell people about it.
 
1905
 
 
1906
#. Announce to ``bazaar-announce`` and ``bazaar`` mailing lists. 
 
1907
   The announce mail will look something like this:
 
1908
   
 
1909
    | Subject: bzr 0.11 release candidate 1
 
1910
    | 
 
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).
 
1912
    | 
 
1913
    | Tarballs:
 
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
 
1917
    | 
 
1918
    | DESCRIBE-CHANGES-IN-OVERVIEW-HERE
 
1919
    | 
 
1920
    | DESCRIBE-when the next release will be (if there is another - i.e. this is a release candidate)
 
1921
    | 
 
1922
    | Many thanks to all the contributors to this release! I've included the
 
1923
    | contents of NEWS for VERSION below:
 
1924
 
 
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.
 
1926
 
 
1927
   (RC announcements should remind plugin maintainers to update their plugins.)
 
1928
 
 
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.
 
1930
 
 
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.
 
1932
 
 
1933
#. Update the `news side menu`__ -- this currently requires downloading the file, editing it, deleting it, and uploading a replacement.
 
1934
 
 
1935
   __ http://bazaar-vcs.org/site/menu?action=AttachFile&do=view&target=news.html
 
1936
 
 
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.
 
1938
 
 
1939
#. Announce on http://freshmeat.net/projects/bzr/
 
1940
   
 
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.
 
1942
 
 
1943
#. Update http://en.wikipedia.org/wiki/Bzr -- this should be done for final releases but not Release Candidates.
 
1944
 
 
1945
#. Package maintainers should update packages when they see the
 
1946
   announcement.
 
1947
 
 
1948
#. Blog about it.
 
1949
 
 
1950
#. Post to http://mail.python.org/mailman/listinfo/python-announce-list for major releases
 
1951
 
 
1952
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
 
1953
   done by running ::
 
1954
 
 
1955
       python setup.py register
 
1956
 
 
1957
   Remember to check the results afterwards.
 
1958
 
 
1959
 
 
1960
Making Win32 installers
 
1961
-----------------------
 
1962
 
 
1963
**XXX:** This information is now probably obsolete, as Alexander uploads
 
1964
direct to Launchpad.  --mbp 20080116
 
1965
 
 
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.
 
1967
 
 
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.
 
1969
 
 
1970
#. Upload to the Launchpad page for this release.
 
1971
 
 
1972
#. Upload to escudero (to the b.c.c/www/releases/win32 directory) using sftp, lftp or rsync
 
1973
 
 
1974
#. Cat the contents of the .sha1 files into the SHA1SUM.
 
1975
 
 
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 (>).
 
1977
 
 
1978
#. Verify once again that everything is correct with ``sha1sum -c SHA1SUM`` and ``md5sum -c MD5SUM``.
 
1979
 
 
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).
 
1981
 
 
1982
#. Make sure these urls work as expected:
 
1983
 
 
1984
   http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.5.exe
 
1985
 
 
1986
   http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.5.exe.asc
 
1987
 
 
1988
   http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.4.exe
 
1989
 
 
1990
   http://bazaar-vcs.org/releases/win32/bzr-latest.win32-py2.4.exe.asc
 
1991
 
 
1992
   http://bazaar-vcs.org/releases/win32/bzr-setup-latest.exe
 
1993
 
 
1994
   http://bazaar-vcs.org/releases/win32/bzr-setup-latest.exe.asc
 
1995
   
 
1996
They should all try to download a file with the correct version number.
 
1997
 
 
1998
#. Update http://bazaar-vcs.org/Download to indicate the newly available versions.
 
1999
 
 
2000
#. Update http://bazaar-vcs.org/WindowsDownloads to have the correct version number as well as the correct sha1sum displayed.
 
2001
 
1796
2002
 
1797
2003
..
1798
2004
   vim: ft=rst tw=74 ai