Copyright (c) 2001, 2002, 2003, 2004 The SCons Foundation

This document covers how to prepare major releases of SCons--that is,
releases numbered with X.Y format, such as 0.93, 1.0, etc.

If you need to prepare a specific subrelease (X.Y.Z, such as 0.94.1),
then see the document HOWTO/subrelease.txt.

Things to do to release a new X.Y version of SCons:

        Prepare the describe-the-release section for the announcements

                summarize changes from src/CHANGES.txt

                template is below, search for "describe-the-release"

                send this out for review while you get the rest of the
                release ready!

        Build and test candidate packages

                test on Linux

                test on Windows NT

                        1) tar zxf scons-src-{version}.tar.gz
                           cd scons-src-{version}
                           python runtest.py -a

                        2) tar zxf scons-{version}.tar.gz
                           cd scons-{version}
                           python setup.py install
                           cd scons-src-{version}
                           python runtest.py -a -X -x C:\Python20\scons.bat

                        3) scons-{verson}.win32.exe
                           cd scons-src-{version}
                           python runtest.py -a -X -x C:\Python20\scons.bat

                        4) mkdir temporary_directory
                           cd temporary_directory
                           tar zxf scons-local-{version}.tar.gz
                           cd scons-src-{version}
                           python runtest.py -a -x C:\temporary_directory\scons.py

                Checkin any changes necessary to make everything work

        END THE CURRENT DEVELOPMENT BRANCH

                ae_p scons.0

                aede {96}

                aerpass {96}

                aeib {96}

                aed

                aeb

                aet

                aet -reg

                aeipass

        START THE NEW BRANCH FOR RELEASE

                aenbr -p scons.0 {97}

                aenc -p scons.0.{97}

                        Call it something like,
                        "Initialize the new branch for release."
                        Cause = internal_enhancement.
                        Exempt it from all tests (*_exempt = true).

                ae_p scons.0.{97}

                aedb 100

                aecd

                # Change the hard-coded package version numbers
                # in the following files.
                aecp README
                vi README

                aecp SConstruct
                vi SConstruct

                aecp rpm/scons.spec.in
                vi rpm/scons.spec.in

                aecp src/test_setup.py
                vi src/test_setup.py

                # Read through and update the README files if necessary
                [optional] aecp README
                [optional] vi README

                [optional] aecp src/README.txt
                [optional] vi src/README.txt

                # Prepare src/CHANGES.txt
                aecp src/CHANGES.txt
                vi src/CHANGES.txt

                        date -R the latest release

                        should be current if this has been updated
                        as each change went in.

                # Prepare src/RELEASE.txt
                aecp src/RELEASE.txt
                vi src/RELEASE.txt

                        date -R the latest release

                        Read through and edit appropriately.

                        Can probably keep most of the existing text

                        Add any new known problems

                # Prepare debian/changelog
                aecp debian/changelog
                vi debian/changelog

                        date -R the latest release

                # Now build and prepare the release itself.
                aeb

                aed

                aet -reg

                aede

                etc.



        Read through the FAQ for any updates



        Upload the packages to the SourceForge incoming FTP:

                ftp upload.sourceforge.net
                anonymous
                <your email>
                cd incoming
                bin
                put scons-0.{97}-1.noarch.rpm
                put scons-0.{97}-1.src.rpm
                put scons-0.{97}.tar.gz
                put scons-0.{97}.win32.exe
                put scons-0.{97}.zip
                put scons-local-0.{97}.tar.gz
                put scons-local-0.{97}.zip
                put scons-src-0.{97}.tar.gz
                put scons-src-0.{97}.zip
                put scons_0.{97}-1_all.deb

        Create the new release at the SourceForge project page:

                Go to the File Release page

                Package Name:  scons

                => Add Release

                New release name:  0.{97}

                Cut-and-paste or upload the RELEASE.txt file.

                Cut-and-paste or upload the CHANGES.txt file.

                (If you cut-and-paste, check the "Preserve my
                pre-formatted text." box!)

                Click "Submit/Refresh"  (IMPORTANT!)

                Check the SCons files you uploaded

                Click "Add Files and/or Refresh View"

                Edit the file info:

                        scons-0.{97}-1.noarch.rpm       Any     .rpm
                        scons-0.{97}-1.src.rpm          Any     Source .rpm
                        scons-0.{97}.tar.gz             Any     .gz
                        scons-0.{97}.win32.exe          i386    .exe (32-bit Windows)
                        scons-0.{97}.zip                Any     .zip
                        scons_0.{97}-1_all.deb          Any     .deb

                Click "Update/Refresh" for each file; this must be done
                one at a time.

                Check "I'm sure." and click "Send Notice" in the Email
                Release Notice section.


                Go to the File Release page

                Package Name:  scons-local

                => Add Release

                New release name:  0.{97}

                Cut-and-paste or upload the RELEASE.txt file.

                Cut-and-paste or upload the CHANGES.txt file.

                (If you cut-and-paste, check the "Preserve my
                pre-formatted text." box!)

                Click "Submit/Refresh"  (IMPORTANT!)

                Check the SCons files you uploaded

                Click "Add Files and/or Refresh View"

                Edit the file info:

                        scons-local-0.{97}.tar.gz       Any     .gz
                        scons-local-0.{97}.zip          Any     .zip

                Click "Update/Refresh" for each file; this must be done
                one at a time.

                Check "I'm sure." and click "Send Notice" in the Email
                Release Notice section.


                Go to the File Release page

                Package Name:  scons-src

                => Add Release

                New release name:  0.{97}

                Cut-and-paste or upload the RELEASE.txt file.

                Cut-and-paste or upload the CHANGES.txt file.

                (If you cut-and-paste, check the "Preserve my
                pre-formatted text." box!)

                Click "Submit/Refresh"  (IMPORTANT!)

                Check the SCons files you uploaded

                Click "Add Files and/or Refresh View"

                Edit the file info:

                        scons-src-0.{97}.tar.gz                Any      .gz
                        scons-src-0.{97}.zip                   Any      .zip

                Click "Update/Refresh" for each file; this must be done
                one at a time.

                Check "I'm sure." and click "Send Notice" in the Email
                Release Notice section.


        Hide release 0.{95} at the SourceForge download page:

                Go to the Admin page

                => Edit/Add File Releases

                Package Name:  scons

                => Edit Releases

                Release Name: 0.{95}

                => Edit This Release

                Status: => Hidden

                Click Submit/Refresh


                Go to the Admin page

                => Edit/Add File Releases

                Package Name:  scons-local

                => Edit Releases

                Release Name: 0.{95}

                => Edit This Release

                Status: => Hidden

                Click Submit/Refresh


                Go to the Admin page

                => Edit/Add File Releases

                Package Name:  scons-src

                => Edit Releases

                Release Name: 0.{95}

                => Edit This Release

                Status: => Hidden

                Click Submit/Refresh



        In the Bugs Tracker, add a Group for the new release 0.{97}



        Test downloading from the SourceForge project page

                You may need to wait a good bit; they seem to update
                this on half-hour cycles.



        Update the web site:

                template:  new version number

                src/doc.py:  new version number

                src/download.py:  new version number

                src/index.py:  announcement on the home page

                src/scons-doc.tar.gz:  update

                src/CHANGES.txt:  update

        Test downloading from the web site download page



        Add news item to the SourceForge project page



        Announce to the following mailing lists (template below):

                announce@scons.tigris.org
                users@scons.tigris.org
                devel@scons.tigris.org

                        [right away]

                python-announce@python.org

                        [right away, it's moderated and will take
                        some time to get through]

                linux-announce@news.ornl.gov

                        [right away, it's moderated and will take
                        some time to get through]

                [optional] cons-discuss@gnu.org

                        [only if it's a really big announcement,
                        I said we wouldn't bug this list]

                python-list@python.org

                        [wait until business hours so the announcement
                        hits mailboxes while U.S. workers are active]

        Notify Gentoo Linux of the update

                For now, we will do this by entering a bug report, and
                attaching the files in build/gentoo to the report.  Go
                to:

                        http://bugs.gentoo.org/

                This requires an account (based on your email address)
                and a certain amount of Bugzilla-based navigation,
                but nothing that's too difficult.

                This is just my best stab at a process that will work
                for Gentoo.  This process may change if the Gentoo
                developers come back and want something submitted in
                some other form.

        Notify www.cmtoday.com/contribute.html

                [This guy wants an announcement no more frequently than
                once a month, so save it for a future release if it's
                been too soon since the previous one.]

        Notify freshmeat.net

                [Wait until the morning so the announcement hits the
                main freshmeat.net page while people in the U.S. are
                awake and working]



        Checkin another change to prepare for development on this branch.

                # Prep the following files to track the changes
                # made during the next development cycle
                aecp src/CHANGES.txt src/RELEASE.txt
                vi src/CHANGES.txt src/RELEASE.txt

                # Optionally, update release numbers in the following:
                [optional] aecp HOWTO/change.txt
                [optional] vi HOWTO/change.txt

                [optional] aecp HOWTO/release.txt
                [optional] vi HOWTO/release.txt




=======================
Template describe-the-release section:

IMPORTANT:  Release 0.95 contains the following interface changes:

  - XXX

  See the release notes for more information about these changes.

This release adds the following features:

  - XXX

This release enhances the following existing features:

  - XXX

The following fixes have been added:

  - XXX

Performance has been improved as follows:

  - XXX

The following changes have been made to the SCons packaging:

  - XXX

The documentation has been improved:

  - XXX
=======================
Template scons-devel announcement:

SConspirators--

SCons beta release 0.95 is now available for download.

XXX Template describe-the-release section goes here XXX

Special thanks to XXX, XXX, and XXX for their contributions to this
release.

        --SK
=======================
Template scons-users + scons-announce announcement:

Version 0.95 of SCons has been released and is available for download
from the SCons web site:

        http://www.scons.org/

Or through the download link at the SCons project page at SourceForge:

        http://sourceforge.net/projects/scons/

RPM and Debian packages and a Win32 installer are all available, in
addition to the traditional .tar.gz and .zip files.


WHAT'S NEW IN THIS RELEASE?

XXX Template describe-the-release section goes here XXX


ACKNOWLEDGEMENTS

Special thanks to XXX, XXX, and XXX for their contributions to this
release.

On behalf of the SCons team,

        --SK
=======================
Template python-announce, linux-announce and python-list announcement:

SCons is a software construction tool (build tool, or make tool) written
in Python.  It is based on the design which won the Software Carpentry
build tool competition in August 2000.

Version 0.95 of SCons has been released and is available for download
from the SCons web site:

        http://www.scons.org/

Or through the download link at the SCons project page at SourceForge:

        http://sourceforge.net/projects/scons/

RPM and Debian packages and a Win32 installer are all available, in
addition to the traditional .tar.gz and .zip files.


WHAT'S NEW IN THIS RELEASE?

XXX Template describe-the-release section goes here XXX


ABOUT SCONS

Distinctive features of SCons include:

  - a global view of all dependencies; no multiple passes to get
    everything built properly
  - configuration files are Python scripts, allowing the full use of a
    real scripting language to solve difficult build problems
  - a modular architecture allows the SCons Build Engine to be
    embedded in other Python software
  - the ability to scan files for implicit dependencies (#include files);
  - improved parallel build (-j) support that provides consistent
    build speedup regardless of source tree layout
  - use of MD5 signatures to decide if a file has really changed; no
    need to "touch" files to fool make that something is up-to-date
  - easily extensible through user-defined Builder and Scanner objects
  - build actions can be Python code, as well as external commands

An scons-users mailing list is available for those interested in getting
started using SCons.  You can subscribe by sending mail to:

        users-subscribe@scons.tigris.org

Alternatively, we invite you to subscribe to the low-volume
scons-announce mailing list to receive notification when new versions of
SCons become available:

        announce-subscribe@scons.tigris.org


ACKNOWLEDGEMENTS

Special thanks to XXX, XXX, and XXX for their contributions to this
release.

On behalf of the SCons team,

        --SK
