A new SCons release, 4.3.0, is now available on the SCons download page:


NOTE: 4.3.0 now requires Python 3.6.0 and above. Python 3.5.x is no longer supported

Here is a summary of the changes since 4.2.0:


  • Ninja - Added ninja API 'NINJA_FORCE_SCONS_BUILD' to force a node to callback to scons.
  • Add support for Visual Studio 2022.


  • The qt tool, which targets Qt version 3, is deprecated. Qt3 has been unsupported by upstream for many years. Qt4 and Qt5 tools are available from scons-contrib.


  • Ninja - Expanded ninja Mkdir to also support Mkdir actions.
  • Further PCH updates. It's now recommended that env['PCH'] should always be a File node. Either via return value from env.PCH() or by explicitly using File('StdAfx.pch').
  • Change SCons.Platform.win32.get_architecture() to return platform.platform() when run in an environment where neither: PROCESSOR_ARCHITEW6432 nor PROCESSOR_ARCHITECTURE is set. This should fix platform tests which started failing when HOST_OS/HOST_ARCH changes introduced by Aaron Franke (listed below) were merged.
  • The Java tool now accepts more versions (up to 17.0), and is better able to detect the many builds of OpenJDK available since it became designated the reference Java implementation.


  • Fix reproducible builds. Restore logic respecting SOURCE_DATE_EPOCH when set.
  • Small fix to ensure CLVar default value is an empty list. See MongoDB bug report: https://jira.mongodb.org/browse/SERVER-59656 Code contributed by MongoDB.
  • Ninja - Fix ninja tool to never use for_sig substitution because ninja does not use signatures. This issue affected CommandGeneratorAction function actions specifically.
  • Fix PCH not being evaluated by subst() where necessary.
  • Fix issue #4021. Change the way subst() is used in Textfile() to not evaluate '$$(' -> '$', but instead it should yield '$('.
  • Ninja - Fix command line escaping for ninja dollar sign escape. Without escaping ninja properly,
  • Fix MSVS tests (vs-N.N-exec.py) for MSVS 6.0, 7.0, and 7.1 (import missing module).
  • Fix command line escaping for ninja dollar sign escape. Without escaping ninja properly, the ninja file scons regenerate and callback invocations will lose the $ characters used in the scons command line which ninja uses itself for escaping. For Example: scons BUILD=xyz OTHERVAR=$BUILD Prior to this fix, it would cause ninja to fail to escape the dollar sign, leading to the single dollar sign being used as a ninja escape character in the ninja file.
  • Ninja - Fixed an issue where if you control-c and/or killed ninja while it was running scons to regenerate build.ninja you would end up with no build.ninja file and have to rerun scons from scratch. Code contributed by MongoDB.


  • Added --no-ignore-skips to runtest.py. Changed default to ignore skips when setting runtest.py's exit status. Previously would exit 2 if any tests were skipped. Now will only exit 2 if user specifies --no-ignore-skips and some tests were skipped.

Thanks to the following contributors listed below for their contributions to this release.

git shortlog --no-merges -ns 4.2.0..HEAD
47  Mats Wichmann
46  William Deegan
14  Jacob Cassagnol
11  Daniel Moody
 8  Ryan Egesdahl
 5  Joseph Brill
 4  Omar Polo
 2  Brian Quistorff
 1  Aaron Franke