
SPAMASSASSIN DEVELOPMENT SNAPSHOT PROCEDURE
===========================================

- cd to the directory for the codebase you want the devel tree to
  come from

    ssh minotaur.apache.org
    cd [checkedoutdir]

- ensure the required code and data is available for the build scripts:

    ~/sabuildtools
    ~/sasigningkey
    ~/perl584

  All can be copied from ~jm on minotaur if required.

- run "./build/update_devel" to build the tar.gz files

- by default, they're written to ~/spamassassin.taint.org/devel/ .  This
  Works For Me (tm), as it's my local cvs checkout of the SpamAssassin
  website.  Copy them to wherever you want, yourself.


SPAMASSASSIN RELEASE PROCEDURE
==============================

- cd to the directory for the codebase you want the release to
  come from

    ssh minotaur.apache.org
    cd [checkedoutdir]

- ensure the required code and data is available for the build scripts:
  see above.

- edit lib/Mail/SpamAssassin.pm and comment the $IS_DEVEL_BUILD
  line.   Ensure the correct version number is present in $VERSION
  and $EXTRA_VERSION.

  [NOTE: when editing files in these instructions, you may have to
  use another checkout somewhere else, check in the changes there,
  then 'svn update' in the release account -- since I think it
  builds from a read-only checkout.]

- Ensure the new version number takes hold:

    make clean ; perl Makefile.PL < /dev/null ; make
    ./spamassassin -L -t < sample-nonspam.txt | grep X-Spam-

  Verify that the X-Spam-* headers use the correct version string,
  without an SVN revision number (those are only for dev builds).

- create the Changes file.  There are two options here:

  - For releases on a maintainance branch (e.g. 3.0.1, .2, etc.):

      TZ=UTC svn log --non-interactive --stop-on-copy > Changes

    This will output all of the changes since the .0 release in the current
    branch.

  - For releases on the trunk (e.g. a .0 release):

      TZ=UTC svn log -r HEAD:5810 --non-interactive --stop-on-copy > Changes

    r5810 was the start of the 3.0.0 work; replace with the correct rev
    number for the point you want to start at.

- run "make distcheck" to ensure all files are included in the
  distribution that should be, and to ensure all files that are listed
  in the MANIFEST also exist in SVN.

    make distcheck

- run "make disttest" to ensure all tests pass once the distribution
  is fully packaged.  (this'll take a minute or two.)

    make disttest < /dev/null

- run "./build/update_stable" to build the tar.gz files.

    ./build/update_stable

- by default, they're written to ~/spamassassin.taint.org/released/ .
  This Works For Me (tm), as it's my local cvs checkout of the
  SpamAssassin website.  Copy them to wherever you want, yourself.

- take a copy of the MD5sum line output.

- test the tar.gz and zip files!  redo until they work!! ;)

- SVN commit the release files, including 'Changes':

	svn commit -m "X.YZ RELEASED"

- SVN tag the release files.  This is done using "svn copy".
  For a maintainance release (x.y.1, x.y.2):

    repo=https://svn.apache.org/repos/asf/spamassassin
    svn copy -m "creating tag for release 2.62" \
	$repo/branches/b2_6_0 \
	$repo/tags/spamassassin_release_2_6_2

  For a trunk release (x.y.0):

    repo=https://svn.apache.org/repos/asf/spamassassin
    svn copy -m "creating tag for release 3.0.0" \
	$repo/trunk \
	$repo/tags/spamassassin_release_3_0_0

  This will do a completely server-side tagging (which is the same as
  a branch really) of whatever the latest branch revision to be the new
  base of the tag release.

- Now, start the new development codebase.  For minor updates of a 2.x
  tree (e.g. 2.x1, 2.x2), you don't need to branch; for major updates
  (2.x0) you should use a new development branch, off HEAD.

    repo=https://svn.apache.org/repos/asf/incubator/spamassassin
    svn copy $repo/trunk \
           $repo/branches/b3_0_0

  "trunk" is SVN's concept of head.  Typically, our branches are named
  for their minor version number.  In the example above, b3_0_0 is the
  branch for the stable 3.0.x releases.

- In the new development codeline, edit lib/Mail/SpamAssassin.pm, bump the
  $VERSION line to the correct version, and uncomment the $IS_DEVEL_BUILD
  line.

- then, commit the new version number to the new branch:

        svn commit -m "X.Y.N devel cycle started"

	(where X.Y.N is the new version number)

- edit SpamAssassin site through WebMake, change released_version item
  at top of file to be X.Y.Z, then run "webmake" or hit "Build Fully"
  in the Web interface

- run this to update the mirrors:

    ~/lib/html_spamassassin_put.rsync

- upload to CPAN at http://pause.cpan.org/

  ( https://pause.perl.org/pause/authenquery?ACTION=add_uri )

- Before doing the next step, run through the Changes file, and write up a
  quick summary of the important changes in human-readable format.  This
  should be less than 600 chars to fit into Freshmeat's format, and
  to be easily understandable.

- announce to Freshmeat at http://freshmeat.net/

  ( http://freshmeat.net/add-release/14876/ may work )

- announce on SpamAssassin-Talk, SpamAssassin-Devel, and
  SpamAssassin-Announce.  Be sure to include the MD5 checksums
  in this mail, so paranoid folks can check the tarball's integrity.

- Approve the posting to SpamAssassin-Announce (the list admins
  will get a mail indicating how to do this.)

lastmod: Jul  9 2004 jm

// vim:tw=74:
