- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 338
SConsReleaseProcedure
        William Deegan edited this page Oct 2, 2025 
        ·
        14 revisions
      
    The procedure has been used for all releases since 4.3.0.
- Move work to a release branch. It's currently necessary to do this first as the build will use the branch name when building the REVISION string it substitutes into many of the files.
git fetch 
git checkout -b rel_<NAME> master
git clean -xfd- Validate and update all documentation files by calling:
python bin/docs-update-generated.py
python bin/docs-validate.py
python bin/docs-create-example-outputs.py-  Check if there's anything specific to this version in doc/man/scons.xmlthat should be updated.. For example, support for a particular Python version may be deprecated or dropped in this SCons release. In particular, look for the sequencerequires Python. It's worth rerunning thedocs-validate.pyscript if a change was made here.
-  Update date and copyright years on doc/user/main.xml
-  Check for any instances of NEXT_RELEASEin the code/docs and replace with the version being released. (TODO: Script this)
- Commit the auto-generated doc changes to current branch ("Regenerated docs for X.Y.Z release.")
- Update CHANGES.txt (should already be up to date)
- Update RELEASE.txt (should already be up to date)
- Update ReleaseConfig
-  Update default_versionin SConstruct
-  Build packages and doc: python scripts/scons.py >& build-XYZ.log(good idea to save build logfile somewhere)
You should now have the following in build/dist: 
SCons-$VERSION-py3-none-any.whl
SCons-$VERSION.tar.gz
SCons-$VERSION.zip
scons-doc-$VERSION.tar.gz
scons-local-$VERSION.tar.gz
scons-local-$VERSION.zip
- Commit the above changes to git and push.
- Tag and push tag
-  Run bin/upload-release-files.sh X.Y.Z mysfusername
- There is now a shell script to do this: bin/upload-release-files.sh X.Y.Z mysfusernameas long as SourceForge and scons.org have your ssh pub key and you're using SSH Agent Forwarding.
- It uploads all the packages to SF, uploads the doc to scons.org, unpacks it, and updates the doc symlinks.
- You will be prompted for your password numerous times.
 
- You may still have to tell SF that the new release dirs exist in its File Manager (it's a bit buggy).
- Use RELEASE.txt as blurb
| File | Changes | 
|---|---|
| versions.py | update SCONS_PRODUCTION_VERSION, SCONS_PRIOR_VERSION, SCONS_API_VERSIONS | 
| content/documentation/documentation.md | Update the version for each type of documentation | 
| content/releases/release-###.rst | add an announcement | 
- Commit the above changes to git and push.
- Tag and push tag
git tag #.#.#
git push --tags
- 
Update Sourceforge: 
- 
set default downloads for each win/linux/mac etc. appropriately, using the "info" link on the right of each download. - NOTE: it will take a minute or two for these changes to affect the README and default downloads you've just set.
 
- 
Announce to scons-users and scons-dev python list 
- 
Upload to testpypi # 
# If you have a ~/.pypirc
twine upload -r pypitest build/dist/scons-?.?.?.tar.gz build/dist/scons-?.?.?-py3-none-any.whl
# else this will prompt you for your pypi or test pypi username/password
twine upload --repository-url https://test.pypi.org/legacy/ build/dist/scons-?.?.?.tar.gz build/dist/scons-?.?.?-py3-none-any.whl- Test package:
# Be sure to do this on both windows and non-windows systems
virtualenv venv
. venv/bin/activate
pip install --index-url https://test.pypi.org/simple/ scons==4.9.0
scons --version- Upload to Pypi #
# This is now in dist 
twine upload  build/dist/scons-?.?.?.tar.gz build/dist/scons-?.?.?-py3-none-any.whl- On GitHub create a pull request from the branch. GitHub will give you a URL when you push and create the branch which will take you to a page to do just this.
- On Github create a release with RELEASE.txt using Github New Release Page
-  On master branch, run python bin/update-release-info.py postto go back to develop mode.
- Commit those changes after review