Merged revisions 2136-2200,2202-2290,2292-2301 via svnmerge from
[scons.git] / HOWTO / release.txt
index 6e1eaac916b3cb9c6b6337b45ef75bef47547a97..5fbbfc7b38ee20cff44e4fe8a71b005b602977ad 100644 (file)
-Things to do to release a new version of SCons:
+__COPYRIGHT__
 
-       Build and test candidate packages
+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.
 
-               test on Linux
+If you need to prepare a specific subrelease (X.Y.Z, such as 0.94.1),
+then see the document HOWTO/subrelease.txt.
 
-               test on Windows NT
+Things to do to release a new X.Y version of SCons:
 
-                       1) tar zxf scons-src-{version}.tar.gz
-                          cd scons-src-{version}
-                          python runtest.py -a
+    Prepare the describe-the-release section for the announcements
 
-                       2) tar zxf scons-{version}.tar.gz
-                          cd scons-{version}
-                          python setup.py install
-                          cd scons-src-{version}
-                          python runtest.py -a -x C:\Python15\scons.bat
+        summarize changes from src/CHANGES.txt
 
-                       3) scons-{verson}.win32.exe
-                          cd scons-src-{version}
-                          python runtest.py -a -x C:\Python15\scons.bat
+        template is below, search for "describe-the-release"
 
-       Read through the README and src/README.txt files for any updates
+        send this out for review while you get the rest of the
+        release ready!
 
-       Prepare src/CHANGES.txt
+    Build and test candidate packages
 
-               date -R the latest release
+        test on Linux
 
-               should be current if this has been updated as each
-               change went in.
+        test on Windows NT
 
-       Prepare src/RELEASE.txt
+            1) tar zxf scons-src-{version}.tar.gz
+               cd scons-src-{version}
+               python runtest.py -a
 
-               date -R the latest release
+            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
 
-               Read through to make sure it's okay and edit appropriately.
+            3) scons-{verson}.win32.exe
+               cd scons-src-{version}
+               python runtest.py -a -X -x C:\Python20\scons.bat
 
-               Can probably keep most of the existing text
+            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
 
-               Add any new known problems
+        Check in any changes necessary to make everything work
 
-       Prepare debian/changelog
+    Update the user's guide
 
-               date -R the latest release
+        sh bin/docdiff
 
+        sh bin/docupdate
 
+    END THE CURRENT DEVELOPMENT BRANCH
 
-       END THE BRANCH
+        ae_p scons.0
 
-               ae_p scons.0
+        aede {96}
 
-               aede {7}
+        aerpass {96}
 
-               aerpass {7}
+        aeib {96}
 
-               aeib {7}
+        aed
 
-               aeb
+        aeb
 
-               aet
+        aet
 
-               aet -reg
+        aet -reg
 
-               aed
+        aeipass
 
-               aeipass
+    START THE NEW BRANCH FOR RELEASE
 
-       START THE NEW BRANCH
+        aenbr -p scons.0 {97}
 
-               aenbr -p scons.0 {8}
+        aenc -p scons.0.{97}
 
-               aenc -p scons.0.{8}
+            Call it something like,
+            "Initialize the new branch for release."
+            Cause = internal_enhancement.
+            Exempt it from all tests (*_exempt = true).
 
-                        Call it something like, "Initialize the new
-                        branch."  Cause = internal_enhancement.  Exempt
-                        it from all tests (*_exempt = true).
+        ae_p scons.0.{97}
 
-               ae_p scons.0.{8}
+        aedb 100
 
-               aedb 100
+        aecd
 
-               aecd
+        # Change the hard-coded package version numbers
+        # in the following files.
+        aecp README
+        vi README
 
-               # Change the hard-coded package version numbers
-               # in the following files.
-               aecp README SConstruct debian/changelog rpm/scons.spec
+        aecp SConstruct
+        vi SConstruct
 
-               vi README SConstruct debian/changelog rpm/scons.spec
+        aecp QMTest/TestSCons.py
+        vi QMTest/TestSCons.py
 
-               # Optionally, do the same in the following:
-               [optional] aecp HOWTO/change.txt
-               [optional] aecp HOWTO/release.txt
-               [optional] aecp debian/scons.postinst
+        # Read through and update the README files if necessary
+        [optional] aecp README
+        [optional] vi README
 
-               [optional] vi HOWTO/change.txt
-               [optional] vi HOWTO/release.txt
-               [optional] vi debian/scons.postinst
+        [optional] aecp src/README.txt
+        [optional] vi src/README.txt
 
-               aeb
+        # Prepare src/CHANGES.txt
+        aecp src/CHANGES.txt
+        vi src/CHANGES.txt
 
-               aet -reg
+            date -R the latest release
 
-               aed
+            should be current if this has been updated
+            as each change went in.
 
-               aede
+        # Prepare src/RELEASE.txt
+        aecp src/RELEASE.txt
+        vi src/RELEASE.txt
 
-               etc.
+            date -R the latest release
 
+            Read through and edit appropriately.
 
+            Can probably keep most of the existing text
 
-       Read through the FAQ for any updates
+            Add any new known problems
 
+        # Prepare debian/changelog
+        aecp debian/changelog
+        vi debian/changelog
 
+            date -R the latest release
 
-       Upload the packages to the SourceForge incoming FTP:
+        # Now build and prepare the release itself.
+        aeb
 
-               ftp upload.sourceforge.net
-               anonymous
-               <your email>
-               cd incoming
-               bin
-               put scons-0.07-1.noarch.rpm
-               put scons-0.07-1.src.rpm
-               put scons-0.07.tar.gz
-               put scons-0.07.win32.exe
-               put scons-0.07.zip
-               put scons-src-0.07.tar.gz
-               put scons-src-0.07.zip
-               put scons_0.07-1_all.deb
+        aed
 
-       Create the new release at the SourceForge project page:
+        aet -reg
 
-               Go to the Admin page
+        aede
 
-               => Edit/Add File Releases
+        etc.
 
-               Package Name:  scons
 
-               => Add Release
 
-               New release name:  0.07
+    Read through the FAQ for any updates
 
-               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!)
+    Upload the packages to the SourceForge incoming FTP:
 
-               Click "Submit/Refresh"  (IMPORTANT!)
+        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
 
-               Check the SCons files you uploaded
+    Create the new release at the SourceForge project page:
 
-               Click "Add Files and/or Refresh View"
+        Pull down the "Admin" menu and select "File Releases"
 
-               Edit the file info:
+        Package Name:  scons
 
-                       scons-0.07-1.noarch.rpm         Any     .rpm
-                       scons-0.07-1.src.rpm            Any     Source .rpm
-                       scons-0.07.tar.gz               Any     .gz
-                       scons-0.07.win32.exe            i386    .exe (32-bit Windows)
-                       scons-0.07.zip                  Any     .zip
-                       scons_0.07-1_all.deb            Any     .deb
+        => Add Release
 
-                Click "Update/Refresh" for each file; this must be done
-                one at a time.
+        New release name:  0.{97}
 
-               => Edit/Add File Releases
+        Upload the RELEASE.txt file.
 
-               Package Name:  scons-src
+        Upload the CHANGES.txt file.
 
-               => Add Release
+        Check the "Preserve my pre-formatted text." box  (IMPORTANT!)
 
-               New release name:  0.07
+        Click "Submit/Refresh"  (IMPORTANT!)
 
-               Cut-and-paste or upload the RELEASE.txt file.
+        Check the SCons files you uploaded
 
-               Cut-and-paste or upload the CHANGES.txt file.
+        Click "Add Files and/or Refresh View"
 
-               (If you cut-and-paste, check the "Preserve my
-               pre-formatted text." box!)
+        Edit the file info:
 
-               Click "Submit/Refresh"  (IMPORTANT!)
+            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
 
-               Check the SCons files you uploaded
+        Click "Update/Refresh" for each file; this must be done
+        one at a time.
 
-               Click "Add Files and/or Refresh View"
+        Check "I'm sure." and click "Send Notice" in the Email
+        Release Notice section.
 
-               Edit the file info:
 
-                       scons-src-0.07.tar.gz           Any     .gz
-                       scons-src-0.07.zip              Any     .zip
+        Pull down the "Admin" menu and select "File Releases"
 
-                Click "Update/Refresh" for each file; this must be done
-                one at a time.
+        Package Name:  scons-local
 
-       Test downloading from the SourceForge project page
+        => Add Release
 
-                You may need to wait a good bit; they seem to update
-                this on half-hour cycles.
+        New release name:  0.{97}
 
+        Upload the RELEASE.txt file.
 
+        Upload the CHANGES.txt file.
 
-       Update the web site:
+        Check the "Preserve my pre-formatted text." box  (IMPORTANT!)
 
-               template:  new version number
+        Click "Submit/Refresh"  (IMPORTANT!)
 
-               src/index.in:  announcement on the home page
+        Check the SCons files you uploaded
 
-               src/scons-doc.tar.gz:  update
+        Click "Add Files and/or Refresh View"
 
-               src/CHANGES.txt:  update
+        Edit the file info:
 
-       Test downloading from the web site download page
+            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.
 
-       Add news item to the SourceForge project page
 
+        Pull down the "Admin" menu and select "File Releases"
 
+        Package Name:  scons-src
 
-       In the Bugs Tracker, add a Group for the new release (0.07)
+        => Add Release
 
+        New release name:  0.{97}
 
+        Upload the RELEASE.txt file.
 
-       Announce to the following mailing lists (template below):
+        Upload the CHANGES.txt file.
 
-               scons-announce@lists.sourceforge.net
-               scons-users@lists.sourceforge.net
-               scons-devel@lists.sourceforge.net
+        Check the "Preserve my pre-formatted text." box  (IMPORTANT!)
 
-                       [right away]
+        Click "Submit/Refresh"  (IMPORTANT!)
 
-               python-announce@python.org
+        Check the SCons files you uploaded
 
-                       [right away, it's moderated and will take
-                       some time to get through]
+        Click "Add Files and/or Refresh View"
 
-               linux-announce@news.ornl.gov
+        Edit the file info:
 
-                       [right away, it's moderated and will take
-                       some time to get through]
+            scons-src-0.{97}.tar.gz                Any        .gz
+            scons-src-0.{97}.zip                   Any        .zip
 
-               [optional] cons-discuss@gnu.org
+        Click "Update/Refresh" for each file; this must be done
+        one at a time.
 
-                       [only if it's a really big announcement,
-                       I said we wouldn't bug this list]
+        Check "I'm sure." and click "Send Notice" in the Email
+        Release Notice section.
 
-               python-list@python.org
 
-                        [wait until business hours so the announcement
-                       hits mailboxes while U.S. workers are active]
+    Hide release 0.{95} at the SourceForge download page:
 
-       Notify www.cmtoday.com/contribute.html
+        Pull down the "Admin" menu and select "File Releases"
 
-                [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.]
+        Package Name:  scons
 
-       Notify freshmeat.net
+        => Edit Releases
 
-                [Wait until the morning so the announcement hits the
-                main freshmeat.net page while people in the U.S. are
-                awake and working]
+        Release Name: 0.{95}
 
+        => Edit This Release
 
+        Status: => Hidden
 
+        Click Submit/Refresh
 
-=======================
-Template scons-devel announcement:
 
-SConspirators--
+        Pull down the "Admin" menu and select "File Releases"
 
-SCons alpha release 0.07 is now available for download.
+        Package Name:  scons-local
 
-IMPORTANT:  This release contains the following interface changes:
-  - XXX
+        => Edit Releases
 
-This release adds the following features:
-  - XXX
+        Release Name: 0.{95}
 
-The following fixes have been added:
-  - XXX
+        => Edit This Release
 
-Performance has been improved as follows:
-  - XXX
+        Status: => Hidden
 
-The following changes have been made to the SCons packaging:
-  - XXX
+        Click Submit/Refresh
 
-The documentation has been improved:
-  - XXX
 
-Thanks to XXX, XXX, and XXX for contributing to this release.
+        Pull down the "Admin" menu and select "File Releases"
 
-       --SK
-=======================
-Template scons-users + scons-announce announcement:
+        Package Name:  scons-src
 
-Version 0.07 of SCons has been released and is available for download
-from the SCons web site:
+        => Edit Releases
 
-       http://www.scons.org/
+        Release Name: 0.{95}
 
-Or through the download link at the SCons project page at SourceForge:
+        => Edit This Release
 
-       http://sourceforge.net/projects/scons/
+        Status: => Hidden
 
-RPM and Debian packages and a Win32 installer are all available, in
-addition to the traditional .tar.gz and .zip files.
+        Click Submit/Refresh
+
+
+
+    Add a new release for 0.{97} in the Issue Tracker at tigris.org:
+
+        Click "Issue Tracker" on the left-hand nav bar
+
+        Click "Configuration options"
+
+        Click "Add/edit components"
+
+        Under "scons"
+        To the right of "Add ..."
+        Click "Version"
+
+        At the bottom of the list click "Add"
+
+        Fill in the "Version:" box with 0.{97}
+
+        Check "Add this version to *all* components."
+
+        Click the "Add" button
+
+
+
+    Update the scons.org web site:
+
+        svn co http://scons.tigris.org/svn/scons/scons.org
+
+        cd scons.org
+
+            CHANGES.txt:    copy new version from built source tree
+
+            download.php:   new version number
+
+            includes/templates.php:
+                            update $latestrelease
+
+            includes/versions.php:
+                            update $stablerelease and/or $latestrelease
+                            add new version number to $docversions[],
+                            IMPORTANT:  SHIFT $docversions[] INDEX NUMBERS :-(
+
+            index.php:      announcement on the home page
+                            remove out-of-date announcements
+
+            news-raw.xhtml: add announcement to list (dup from home page)
+
+            RELEASE.txt:    copy new version from built source tree
+
+        mkdir doc/0.{97}
+
+        (cd doc/0.{97} && tar zxf scons-doc-0.{97}.tar.gz)
+
+        svn add doc/0.{97}
+
+        svn commit
+
+        ssh -l scons manam.pair.com
+
+            cd public_html
+
+            mkdir new
+
+            svn co http://scons.tigris.org/svn/scons/scons.org new
+
+            mv production previous && mv new production
+
+        [point your browser to http://www.scons.org/]
+
+
+    Update the project pages at tigris.org:
+
+        svn co http://scons.tigris.org/svn/scons/trunk
+
+        cd trunk
+
+            www/project_highlights.html
+
+            www/roadmap.html
+
+        svn commit
+
+
+
+
+    Test downloading from the SourceForge project page
+
+        You may need to wait a good bit; they seem to update
+        this on half-hour cycles.
+
+
+    Test downloading from the web site download page
+
+
+
+    Add news item to the SourceForge project page
+
+        Pull down "Project => News"
+
+        Click "Submit"
+
+        Fill in the "Subject:" box
+
+        Cut-and-paste the announcement text into the "Details:" box
+
+        Click "submit"
+
+
+
+    Add news item to the tigris.org project page
+
+        Click "Announcements"
+
+        Click "Add new announcement"
+
+        Double-check the date (probably already set)
+
+        Fill in the "Headline" box
+
+        Fill in the "Body" box (probably short)
+
+        Click "Add new announcement"
 
 
-WHAT'S NEW IN THIS RELEASE?
 
-IMPORTANT:  Version 0.07 contains the following interface changes:
+    Announce to the following mailing lists (template below):
+
+        scons-announce@lists.sourceforge.net
+        scons-users@lists.sourceforge.net
+        scons-devel@lists.sourceforge.net
+
+            [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--
 
-ACKNOWLEDGEMENTS
+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.
 
-On behalf of the SCons team,
-
-       --SK
+        --SK
 =======================
-Template python-announce, linux-announce and python-list announcement:
+Template scons-users + scons-announce announcement:
 
-Version 0.07 of SCons has been released and is available for download
+Version 0.95 of SCons has been released and is available for download
 from the SCons web site:
 
-       http://www.scons.org/
+        http://www.scons.org/
 
 Or through the download link at the SCons project page at SourceForge:
 
-       http://sourceforge.net/projects/scons/
+        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.
@@ -357,56 +580,70 @@ addition to the traditional .tar.gz and .zip files.
 
 WHAT'S NEW IN THIS RELEASE?
 
-IMPORTANT:  Version 0.07 contains the following interface changes:
-  - XXX
+XXX Template describe-the-release section goes here XXX
 
-This release adds the following features:
-  - XXX
 
-The following fixes have been added:
-  - XXX
+ACKNOWLEDGEMENTS
 
-Performance has been improved as follows:
-  - XXX
+Special thanks to XXX, XXX, and XXX for their contributions to this
+release.
 
-The following changes have been made to the SCons packaging:
-  - XXX
+On behalf of the SCons team,
 
-The documentation has been improved:
-  - XXX
+        --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.
 
-WHAT IS SCONS?
+Version 0.95 of SCons has been released and is available for download
+from the SCons web site:
 
-SCons is a software construction tool (build tool, or make tool) written
-in Python.  Its design is based on the design which won the Software
-Carpentry build tool competition in August 2000 (in turn derived from
-the Perl-based Cons build tool).
+        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 build problems
+    real scripting language to solve difficult build problems
   - a modular architecture allows the SCons Build Engine to be
     embedded in other Python software
-  - a global view of all dependencies; no multiple passes to get
-    everything built
   - the ability to scan files for implicit dependencies (#include files);
-  - improved parallel build (-j) support
-  - use of MD5 signatures to decide if a file has changed
+  - 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 has been created for those interested in
-getting started using SCons.  You can subscribe at:
+An scons-users mailing list is available for those interested in getting
+started using SCons.  You can subscribe at:
 
-       http://lists.sourceforge.net/lists/listinfo/scons-users
+        http://lists.sourceforge.net/lists/listinfo/scons-users
 
 Alternatively, we invite you to subscribe to the low-volume
 scons-announce mailing list to receive notification when new versions of
 SCons become available:
 
-       http://lists.sourceforge.net/lists/listinfo/scons-announce
+        http://lists.sourceforge.net/lists/listinfo/scons-announce
 
 
 ACKNOWLEDGEMENTS
@@ -416,4 +653,4 @@ release.
 
 On behalf of the SCons team,
 
-       --SK
+        --SK