Building Releases
=================

Roundup is currently a source-only release - it has no binary components. I
want it to stay that way, too. This document describes how to build a
source release. Users of Roundup should read the doc/installation.txt file
to find out how to install this software.

Building and distributing a release of Roundup is done by running:

1.  Make sure the unit tests run! "./run_tests.py"
python2.5 Ran 752 tests in 563.089s
python2.4 Ran 747 tests in 534.659s
python2.3 Ran 369 tests in 28.420s

2.  Edit roundup/__init__.py and doc/announcement.txt to reflect the new
    version and appropriate announcements. Add truncated announcement to
    setup.py description field.
Done.
3.  Note the SVN revision in the CHANGES.txt file.
Done.
4.  Clean out all *.orig, *.rej, .#* files from the source.
Done.
5.  python setup.py clean --all
Done.
6.  Edit setup.py to ensure that all information therein (version, contact
    information etc) is correct.
Done.
7.  python setup.py sdist --manifest-only
Done.
8.  Check the MANIFEST to make sure that any new files are included. If
    they are not, edit MANIFEST.in to include them. "Documentation" for
    MANIFEST.in may be found in disutils.filelist._parse_template_line.
Done, checked with svn log -v that no new files were added.
9.  python setup.py sdist
    (if you find sdist a little verbose, add "--quiet" to the end of the
     command)
Done.
10. Unpack the new dist file in /tmp then a) run_test.py and b) demo.py
    with all available Python versions.
python2.5 Ran 752 tests in 583.658s
python2.4 Ran 747 tests in 582.317s
python2.3 Ran 369 tests in 29.526s
demo works, nuking fails sometimes.

11. Generate gpg signature with "gpg -a --detach-sign"
12. python setup.py bdist_rpm
13. python setup.py bdist_wininst
14. Send doc/announcement.txt to python-announce@python.org

So, those commands in a nice, cut'n'pasteable form::

 find . -name '*.orig' -exec rm {} \;
 find . -name '*.rej' -exec rm {} \;
 find . -name '.#*' -exec rm {} \;
 python setup.py clean --all
 python setup.py sdist --manifest-only
 python setup.py sdist --quiet
 python setup.py bdist_rpm
 python setup.py bdist_wininst
 python setup.py register
 python setup.py sdist upload --sign
 python setup.py bdist_wininst upload --sign

(if the last two fail make sure you're using python2.5+)
