Please note:The SCons wiki is in read-only mode due to ongoing spam/DoS issues. Also, new account creation is currently disabled. We are looking into alternative wiki hosts.

Build Candidate Packages

Provided you have all of the necessary utilities installed, this should be a simple matter of:

  $ rm -rf build bootstrap
  $ python bootstrap.py

While you're waiting for the candidate packages to be built, open another shell window and proceed with preparing the test script. Make sure that $SVN and $VERSION are set up as shell variables as described above.

Test

Prepare test script

The script to run the tests is in the source in bin/fill_me_in. Make a copy and edit it according to the instructions below.

  # report skipped tests as successful
  export TESTCOMMON_PASS_SKIPS=yes
  set -e       # stop on error
  #
  python runtest.py -a
  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 rpm

The regression suite exercises a wide range of functionality. There are around a thousand tests in the suite, so each test run can take a while.

Regression tests of source tree

Normally, the SCons BuildBot monitors this branch, so it probably started running regression tests as soon as you checked in the changes above. If your machine is covered by one of the BuildBot machines (particularly if your machine is one of the BuildBot machines), you can remove the first runtest in the script.

Regression tests of candidate packages

The build step above 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.

Edit the script to include the tests you want to include. If 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-n-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.

Once the script is prepared, save it and return to the window creating the packages.

Check the Build

The build creates the packages in the build/dist subdirectory. If everything built correctly, you should see files that look like the following:

  scons-$VERSION-1.noarch.rpm
  scons-$VERSION-1.src.rpm
  scons-$VERSION.linux-x86_64.tar.gz
  scons-$VERSION.linux-x86_64.zip
  scons-$VERSION.tar.gz
  scons-$VERSION.win32.exe
  scons-$VERSION.zip
  scons-doc-$VERSION.tar.gz
  scons-local-$VERSION.tar.gz
  scons-local-$VERSION.zip
  scons-src-$VERSION.tar.gz
  scons-src-$VERSION.zip

Note that the linux-x86_64 strings in some of the file names above may be different, depending on your local system architecture. That doesn't matter; those files don't go public. Go ahead and remove them.

Run Test Script

FIXME

If the build succeeded, run the test script:

  $ sh path/to/copy-of-script

The tests can run a very long time. While you're waiting, go back to your other shell window and prepare what you can on the assumption that the tests will succeed.

Download SCons Home

From within your base directory, run these commands:

  $ svn co $SVN/scons.org
  $ cd scons.org

The scons.org checkout is pretty large. If you don't want to wait, open another shell window and proceed. Make sure the new shell is set up with the SVN and VERSION shell variables as described above.

Prepare Blurb

Prepare the blurb by starting with a copy of build/scons/RELEASE.txt. It should be pretty much good-to-go, but look over it and see if there are any changes that should be made to make it more suitable as a blurb rather than release notes in a distribution. In general, use your own judgment as to what to keep and what to cut.

FIXME HTML copy of blurb by inserting <br/><br/><br/> instead of double blank lines, <br/><br/> instead of single blank lines, and <br/> in front of items in a list. Not perfect, but more readable.

FIXME Source of beta and final blurbs are different.

Prepare Tigris Announcement

Note that these files must be checked in to the trunk for them to show up on our tigris.org project pages; you can not update and commit these files from the directory in which you built the packages.

From within the www subdirectory of your trunk directory, edit these files:

project_highlights.html

Add a short highlight announcement that will appear at the top of all of the scons.tigris.org pages. Trim the list to remove any entries that are now obsolete.

roadmap.html

Update the text at the top to reflect that this release is now the latest available release.

Prepare scons.org

If you opened another window to do the prep above, move back to the window downloading scons.org; it should be done by now. If you didn't, change back to the scons.org subdirectory of your base directory.

Web site

Make the following changes to the following files: FIXME The destination names aren't CHANGES.txt or RELEASE.txt and the explanation needs to be tweaked. And the source for RELEASE.txt could be either RELEASE.txt or Announce.txt.

CHANGES.txt

copy the new file from build/scons/CHANGES.txt in your packaging directory

RELEASE.txt

copy the new file from build/scons/RELEASE.txt in your packaging directory

includes/versions.php

update $latestrelease to the value $VERSION FIXME
add the new version number to the $docversions[] list
add the new version number to the $apiversions[] list

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)

Install documentation

To unpack the release documentation into where it can be used by the web pages, just run this script:

FIXME When this script is checked in, it will allow arguments on the command line
  $ sh bin/FillMeIn [ $VERSION [ $SVN ] ]
or something similar. In the meantime, copy the script and run it.

  mkdir doc/$VERSION
  (cd doc/$VERSION && tar zxf build/dist/scons-doc-$RELEASE.tar.gz)
  svn add doc/$VERSION
  (cd doc && rm -f latest && ln -s $VERSION latest)
  case $VERSION in *.0.final.*)
      # This is a 'final' release on the main branch
      (cd doc && rm -f production && ln -s $VERSION production)
  esac

FIXME If any of the candidate packages fail, fix the problem in trunk following your usual development practices and go and do another dry run.

ReleaseHOWTO/BuildTestPrep (last edited 2010-06-21 17:50:05 by ip68-7-77-81)