ReleaseAnnouncement - SCons/scons GitHub Wiki
Table of Contents
[TOC]
Step-by-step instructions for preparing and releasing a new checkpoint release of SCons--that is, release numbered with X.Y.Z_d_YYYYMMDD or X.Y.Z_r_XXXX format, such as 0.97.0.d20070809, 0.97.1r2334, etc.
If you need to prepare a major release (X.Y, such as 0.97), see the Major_Release_HOWTO.
If you need to prepare a minor release (X.Y.Z, such as 0.97.1), see the Minor_Release_HOWTO.
Summarize the changes listed in the src/CHANGES.txt and reorganize them into something like the following template:
A new SCons checkpoint release, 0.XX.0dYYYYMMDD, is now available at the
SCons download page:
http://www.scons.org/download.php
A SCons "checkpoint release" is intended to provide early access to
new features so they can be tested in the field before being released
for adoption by other software distributions.
Note that a checkpoint release is developed using the same test-driven
development methdology as all SCons releases. Existing SCons
functionality should all work as it does in previous releases (except
for any changes identified in the release notes) and early adopters
should be able to use a checkpoint release safely for production work
with existing SConscript files. If not, it represents not only a bug
in SCons but also a hole in the regression test suite, and we want to
hear about it.
New features may be more lightly tested than in past releases,
especially as concerns their interaction with all of the other
functionality in SCons. We are especially interested in hearing bug
reports about new functionality.
We do not recommend that downstream distributions (Debian, Fedora,
etc.) package a checkpoint release, mainly to avoid confusing the
"public" release numbering with the long checkpoint release names.
Here is a summary of the changes since 0.XX:
NEW FUNCTIONALITY
- List new features (presumably why a checkpoint is being released)
DEPRECATED FUNCTIONALITY
- List anything that's been deprecated since the last release
CHANGED/ENHANCED EXISTING FUNCTIONALITY
- List modifications to existing features, where the previous behavior
wouldn't actually be considered a bug
FIXES
- List fixes of outright bugs
IMPROVEMENTS
- List improvements that wouldn't be visible to the user in the
documentation: performance improvements (describe the circumstances
under which they would be observed), or major code cleanups
PACKAGING
- List changes in the way SCons is packaged and/or released
DOCUMENTATION
- List any significant changes to the documentation (not individual
typo fixes, even if they're mentioned in src/CHANGES.txt to give
the contributor credit)
DEVELOPMENT
- List visible changes in the way SCons is developed
Thanks to LARRY, MOE and CURLY for their contributions to this release.
--SKFeel free to edit the opening paragraphs to draw attention to anything special or unusual about the release. For example, if we specifically want people to test a new feature, or there is a really horrendous problem that this checkpoint fixes, an extra paragraph or two highlighting that would be appropriate.
Since ths is an announcement, try to edit down the src/CHANGES.txt descriptions so that, ideally, each item fits on a single line. In general, get rid of examples and explanations. The idea is to pique the reader's interest, not provide full documentation. Still, use your judgment and feel free to leave in an explanation if it would be too confusing to shorten it.
Try to reorganize the items so that, within each section, all of the Visual Studio items are listed together, all of the Java items are together, etc. More "important" (or visible) items should appear towards the top of each section.
It's all right just to delete the description of something that's too difficult to explain and too minor to make much of a difference.
Whether or not a given item belongs in NEW FUNCTIONALITY vs. CHANGED/ENHANCED vs. FIXED vs. an IMPROVEMENT is a judgment call.
In the final "Thanks to" paragraph, at a minimum list everyone in the src/CHANGES.txt file who contributed to the release, plus anyone else who (in your judgment) merits a mention even if they didn't contribute an actual patch.
The src/CHANGES.txt and src/RELEASE.txt files have lines in them that identify the release name and the date. The date stamp should be the same in the two files, and in the format printed by the POSIX date -R command.
You should update these two files by hand and then commit the change:
$ svn diff
Index: src/CHANGES.txt
===================================================================
--- src/CHANGES.txt (revision 2520)
+++ src/CHANGES.txt (working copy)
@@ -8,7 +8,7 @@
-RELEASE 0.XX - XXX
+RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600
From John Doe:
Index: src/RELEASE.txt
===================================================================
--- src/RELEASE.txt (revision 2520)
+++ src/RELEASE.txt (working copy)
@@ -20,7 +20,7 @@
-RELEASE 0.97.0d200709XX - XXX
+RELEASE 0.97.0d20071212 - Wed, 12 Dec 2007 09:29:32 -0600
This is the eighth beta release of SCons. Please consult the
CHANGES.txt file for a list of specific changes since last release.
$ svn commit
Sending src/CHANGES.txt
Sending src/RELEASE.txt
Transmitting file data ..
Committed revision 2523.
$ Provided you have all of the necessary utilities installed, this should be a simple matter of:
$ export SVN=http://scons.tigris.org/svn/scons
$ svn co $SVN/branches/core
$ cd core
$ python bootstrap.py CHECKPOINT=dThe CHECKPOINT=d argument above will cause today's date to be used as the checkpoint identifier. If this checkpoint release should be identified by a revision number, then use CHECKPOINT=r instead.
If you need to re-generate a checkpoint release with a specific string, just supply it as the argument, including the d or r prefix: CHECKPOINT=d20070809.
This step will create the packages in the build/dist subdirectory. If everything built correctly, you should see the following:
scons-0.XX.0dYYYYMMDD-1.noarch.rpm
scons-0.XX.0dYYYYMMDD-1.src.rpm
scons-0.97.0dYYYYMMDD.linux-x86_64.tar.gz
scons-0.97.0dYYYYMMDD.linux-x86_64.zip
scons-0.XX.0dYYYYMMDD.tar.gz
scons-0.XX.0dYYYYMMDD.win32.exe
scons-0.XX.0dYYYYMMDD.zip
scons-doc-0.97.0dYYYYMMDD.tar.gz
scons-local-0.XX.0dYYYYMMDD.tar.gz
scons-local-0.XX.0dYYYYMMDD.zip
scons-src-0.XX.0dYYYYMMDD.tar.gz
scons-src-0.XX.0dYYYYMMDD.zipNote that the linux-x86_64 strings in some of the above file names may be different, depending on your local system architecture. That doesn't matter; those files don't go public.
The previous build step not only builds the packages but also unpacks all of them into subdirectories so that you can run the test suite against the packaged goods. This is intended to catch packaging problems such as not adding a new module to the packaging MANIFEST list(s). The runtest.py script supports a -p option and arguments that run the SCons tests against the different unpacked directories:
$ python runtest.py -a -p tar-gz
$ python runtest.py -a -p zip
$ python runtest.py -a -p local-tar-gz
$ python runtest.py -a -p local-zip
$ python runtest.py -a -p src-tar-gz
$ python runtest.py -a -p src-zip
$ python runtest.py -a -p rpmIf you want to be complete, test all of the packages.
To be quicker but still reasonably thorough, test tar-gz and zip, one each of local- and src- (probably do -tar-gz for one and -zip for the other), and rpm.
For a quick-and-dirty test, just test tar-gz or zip, and maybe rpm. Since all of the different packages use the same lists as input, it's pretty unlikely that the tests will pass on one package and fail for another.
(TBD -- this will probably be reworked to be part of the build step.)
python bin/scons-doc.py --diff
python bin/scons-doc.py --update svn commit $ ftp upload.sourceforge.net
.
.
.
Name (upload.sourceforge.net:<your login>): anonymous
331 Please specify the password.
Password: <your email>
ftp> lcd build/dist
ftp> cd incoming
ftp> bin
ftp> put scons-0.XX.0dYYYYMMDD-1.noarch.rpm
ftp> put scons-0.XX.0dYYYYMMDD-1.src.rpm
ftp> put scons-0.XX.0dYYYYMMDD.tar.gz
ftp> put scons-0.XX.0dYYYYMMDD.win32.exe
ftp> put scons-0.XX.0dYYYYMMDD.zip
ftp> put scons-local-0.XX.0dYYYYMMDD.tar.gz
ftp> put scons-local-0.XX.0dYYYYMMDD.zip
ftp> put scons-src-0.XX.0dYYYYMMDD.tar.gz
ftp> put scons-src-0.XX.0dYYYYMMDD.zip
ftp> quit
221 Goodbye.You can also put all of the files with less typing by doing:
ftp> mput *And answering the interactive prompts. If you do this, note that you should not upload the scons-0.97.0dYYYYMMDD.linux-x86_64.tar.gz, scons-0.97.0dYYYYMMDD.linux-x86_64.zip and scons-doc-0.97.0dYYYYMMDD.tar.gz files, so answer n when prompted for those file names. (If you make a mistake and they get uploaded, though, it's not a big deal--Sourceforge will delete them from the directory after an extended timeout period.)
- Pull down the
Adminmenu and selectFile Releases - Package Name:
scons - => Add Release
- New release name: 0.XX.0d_YYYYMMDD_
- Upload the
RELEASE.txtfile frombuild/scons/RELEASE.txt - Upload the
CHANGES.txtfile frombuild/scons/CHANGES.txt -
IMPORTANT! Check the
Preserve my pre-formatted text.box - Click
Submit/Refresh - Scroll down and check the
scons-*packages you uploaded - Click
Add Files and/or Refresh View - Edit the file info (NOTE: you must click
Update/Refreshfor each file; this must be done one at a time):
| File | Architecture | Extension |
|---|---|---|
scons-0.XX.0dYYYYMMDD-.noarch.rpm |
Any | .rpm |
scons-0.XX.0dYYYYMMDD-.src.rpm |
Any | Source .rpm |
scons-0.XX.0dYYYYMMDD-.tar.gz |
Any | .gz |
scons-0.XX.0dYYYYMMDD-.win32.exe |
i386 | .exe (32-bit Windows) |
scons-0.XX.0dYYYYMMDD-.zip |
Any | .zip |
- Check
I'm sureand clickSend Noticein theEmail Release Noticesection at the bottom.
- Pull down the
Adminmenu and selectFile Releases - Package Name:
scons-local - => Add Release
- New release name: 0.XX.0d_YYYYMMDD_
- Upload the
RELEASE.txtfile - Upload the
CHANGES.txtfile -
IMPORTANT! Check the
Preserve my pre-formatted text.box - Click
Submit/Refresh - Scroll down and check the
scons-local-*packages you uploaded - Click
Add Files and/or Refresh View - Edit the file info (NOTE: you must click
Update/Refreshfor each file; this must be done one at a time):
| File | Architecture | Extension |
|---|---|---|
scons-local-0.XX.0dYYYYMMDD.tar.gz |
Any | .gz |
scons-local-0.XX.0dYYYYMMDD.zip |
Any | .zip |
- Check
I'm sureand clickSend Noticein theEmail Release Noticesection at the bottom.
- Pull down the
Adminmenu and selectFile Releases - Package Name:
scons-src - => Add Release
- New release name: 0.XX.0d_YYYYMMDD_
- Upload the
RELEASE.txtfile - Upload the
CHANGES.txtfile -
IMPORTANT! Check the
Preserve my pre-formatted text.box - Click
Submit/Refresh - Scroll down and check the
scons-local-*packages you uploaded - Click
Add Files and/or Refresh View - Edit the file info (NOTE: you must click
Update/Refreshfor each file; this must be done one at a time):
| File | Architecture | Extension |
|---|---|---|
scons-src-0.XX.0dYYYYMMDD.tar.gz |
Any | .gz |
scons-src-0.XX.0dYYYYMMDD.zip |
Any | .zip |
- Check
I'm sureand clickSend Noticein theEmail Release Noticesection at the bottom.
- Click
Issue Trackeron the left-hand nav bar - Click
Configuration options - Click
Add/edit components - Under
scons, to the far right ofAdd ..., clickVersion - At the bottom of the list, to the right of "Add a new version", click
Add - Fill in the
Version:box with 0._XX.0d_YYYYMMDD**' - Check
Add this version to '''all''' components. - Click the
Addbutton
$ svn co $SVN/scons.org
$ cd scons.orgMake the following changes to the following files:
| File | Description |
|---|---|
CHANGES.txt |
copy the new file from build/scons/CHANGES.txt in your packaging directory |
includes/templates.php |
update $latestrelease to the value 0.XX.0dYYYYMMDD
|
includes/versions.php |
update $latestrelease to the value 0.XX.0dYYYYMMDDadd the new version number to the $docversions[] and $apiversions[] listsIMPORTANT: shift the index numbers BY HAND! |
index.php |
add an announcement for the home page remove any out-of-date announcements |
news-raw.xhtml |
add an announcement to the list (duplicate it from what you just added to index.php) |
RELEASE.txt |
copy the new file from build/scons/RELEASE.txt in your packaging directory |
$ mkdir doc/0.XX.0dYYYYMMDD
$ (cd doc/0.XX.0dYYYYMMDD && tar zxf build/dist/scons-doc-0.XX.0dYYYYMMDD.tar.gz)
$ svn add doc/0.XX.0dYYYYMMDD
$ (cd doc && rm -f latest && ln -s 0.XX.0dYYYYMMDD latest)
$ svn commitNow you have to go update the site:
$ ssh -l scons manam.pair.com
$ cd public_html
$ svn co http://scons.tigris.org/svn/scons/scons.org new
$ rm -rf previous
$ mv production previous && mv new production)
$ exitNow point your browser to http://www.scons.org/. If anything is amiss, fix it and commit the necessary changes.
$ svn co http://scons.tigris.org/svn/scons/trunk
$ cd trunk| File | Description |
|---|---|
www/project_highlights.html |
Add a short highlight announcement that will appear at the top of all of the scons.tigris.org pages. |
www/roadmap.html |
Update the text at the top to reflect that the latest available release is the new checkpoint release. |
$ svn commitNote that in the typical case of releasing a checkpoint from a branch, you can not update and commit these files from the directory in which you built the packages. These files must be checked in to the trunk for them to show up on our tigris.org project pages.
- Log in to your SourceForge account!
- Pull down
Project=>News - Click
Submit - Fill in the
Subject:box - Cut-and-paste the announcement text into the
Details:box - Click
Submit
- Log in to your
tigris.orgaccount! - Click
Announcements - Click
Add new announcement - Double-check the date (it's probably already set)
- Fill in the
Headlinebox - Fill in the
Bodybox (keep it short) - Click
Add new announcement
We don't do this for checkpoint releases.
We don't do this for checkpoint releases.