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

https://scons.org/pages/download.html

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:

NEW FUNCTIONALITY

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

DEPRECATED FUNCTIONALITY

  • 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.

CHANGED/ENHANCED EXISTING FUNCTIONALITY

  • 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.

FIXES

  • 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.

DEVELOPMENT

  • 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