checklist for doing a release:

1. Check to make sure weewx.conf doesn't have any local changes.
    In particular, check to make sure:
     1. WEEWX_ROOT points to /home/weewx
     2. Debug set to zero.
2. Make sure the correct version has been entered in weewx.__init__.py
3. Make sure the correct version has been entered in weewx.conf
4. Make sure all changes have been logged in docs/changes.txt
5. Make sure the upgrading guide has been updated if necessary.
6. Make sure the customizing.htm and usersguide.htm have the correct
    version number at the top.
7. If working off a branch, commit all changes.
8. Switch to main trunk
9. Right click on the top level weewx, select Team | Merge. Select
    "Reintegrate" and enter the branch as the URL. 
10. After looking things over, commit changes back to the trunk.
11. Right click top level weewx, select Team | Tag and create a new tag
     with a name similar to tags/v1.3.1.  Comment should read something
     like "Version 1.3.1 release"
12. Using a terminal, run "./setup.py sdist" to create a tarball.
13. As a final sanity check, go to the production machine, unpack the
     tarball, install, run.
14. Uploading to SourceForge:
     1. Upload tarball
     2. Select the new tarball as the Mac, Linux, and BSD distribution
     3. Copy docs/changes.txt to a directory, change name to README.txt, 
        then change to DOS CRLF convention. Upload to the files area.
15. Run a backup on condor
16. Run Microsoft Expression Web on the PC.
     1. Copy all the new docs to the weewx web folder, subdirectory docs.
     2. Add to the "What's New" section on the front page.
     3. Upload everything to the web server.
17. Announce the release to the weewx user's group.




create README.txt for sourceforge:
  make readme

how to update the version number:
  modify __version__ in bin/weewx/__init__.py     # canonical version location
  make version                  # this propagates the version number everywhere
  svn commit -m "..."           # commit the change to the repository

how to build source package:
  make src-package

how to build debian package:
  make deb-changelog
  emacs pkg/debian/changelog    # add any package-specific changes, if any
  svn commit -m "update deb changelog"
  make deb-package

how to build redhat package:
  make rpm-changelog
  emacs pkg/changelog.rpm       # add any package-specific changes, if any
  svn commit -m "update rpm changelog"
  make rpm-package

to generate gpg key used for signing packages:
  gpg --gen-key
  gpg --list-keys

for signing rpm packages:
~/.rpmmacros
  %_signature gpg
  %_gpg_name  Matthew Wall



notes:

there are multiple changelogs:
  docs/changes.txt - definitive changelog for the application
  pkg/debian/changelog - changes to the debian packaging
  pkg/changelog.rpm - changes to the redhat packaging
  README.txt - copy of changes.txt uploaded to sourceforge files directory

when signing, gpg info must match the name and email in the latest package
changelog entry.

the debian changelog *must* have a version number that matches the app version.
the redhat package will build if the version numbers do not match.  use the
rpm-changelog and deb-changelog targets to ensure that changelog versions match
the application version for a release.

there are many ways to build a debian package.  first tried dpkg (uses DEBIAN
dir and is fairly low-level) but that does not create changes and source diffs.
then dried dpkg-buildpackage (uses debian dir and is higher level) but misses
the config and templates.  ended up using dpkg-buildpackage with some manual
(scripted) file manipulation.

what to test when creating debian and redhat packages:
  install, upgrade, remove, purge
  install, modify files, remove
  install, modify files, upgrade



how to install/remove using various approaches:

source install:
  setup.py install
  setup.py install home=/opt/weewx-x.y.z

debian install/remove:
  dpkg -i weewx_x.y.z-r.deb           # install
  (apt-get install weewx)             # finish install if dependencies failed
  dpkg -r weewx                       # remove
  dpkg -P weewx                       # purge

redhat install/remove:
  yum install weewx-x.y.z-r.rpm [--nogpgcheck]    # install with yum
  yum remove weewx                                # remove with yum
  rpm -i weewx-x.y.z-r.rpm                        # install with rpm directly
  rpm -e weewx                                    # remove with rpm
