Releases: SCons/scons
4.2.0 Release is available.
A new SCons release, 4.2.0, is now available
on the SCons download page:
https://scons.org/pages/download.html
Here is a summary of the changes since 4.1.0:
NOTE: The 4.2.0 Release of SCons will deprecate Python 3.5 Support. Python 3.5 support will be dropped in the next major release.
NEW FUNCTIONALITY
- Add support for the (TARGET,SOURCE,TARGETS,SOURCES,CHANGED_TARGETS,CHANGED_SOURCES}.relpath property.
This will provide a path relative to the top of the build tree (where the SConstruct is located)
Fixes #396
- Added --experimental flag, to enable various experimental features/tools. You can specify
'all', 'none', or any combination of available experimental features.
- Added affect_signature flag to _concat function. If set to False, it will prepend and append $( and $).
That way the various Environment variables can use that rather than "$( _concat(...) $)".
DEPRECATED FUNCTIONALITY
- Deprecate Python 3.5 as a supported version.
CHANGED/ENHANCED EXISTING FUNCTIONALITY
- SCons now supports the command-line parameter `--hash-format` to override the default
hash format that SCons uses. It can also be set via `SetOption('hash_format')`. Supported
values are: `md5`, `sha1`, and `sha256`. For all hash formats other than
the default of `md5`, the SConsign database will include the name of the hash format.
For example, `--hash-format=sha256` will create a SConsign with name
`.sconsign_sha256.dblite.`.
- Improve Subst()'s logic to check for proper callable function or class's argument list.
It will now allow callables with expected args, and any extra args as long as they
have default arguments. Additionally functions with no defaults for extra arguments
as long as they are set using functools.partial to create a new callable which set them.
- Internal has_key methods removed from SCons' dictionary-like objects
SubstitutionEnvironment and OverrideEnvironment - in other words,
an env - to match Python 3 which no longer has dict.has_key.
- Removed long-deprecated construction variables PDFCOM, WIN32_INSERT_DEF,
WIN32DEFPREFIX, WIN32DEFSUFFIX, WIN32EXPPREFIX, WIN32EXPSUFFIX.
All have been replaced by other names since at least 1.0.
- Added CACHEDIR_CLASS construction variable and expanded CacheDir method args
to support SCons invoking CacheDir derived classes for CacheDir customization.
Moved copy_from_cache attribute from the Environment class to CacheDir class.
Code contributed by MongoDB.
- Update BuildTask to pass all targets to the progress object fixing an issue
where multi-target build nodes only got the first target passed to the progress
object.
- Change SConscript() missing SConscript behavior - if must_exist=False,
the warning is suppressed.
FIXES
- The command-line parameter `--md5-chunksize` is now deprecated. Use `--hash-chunksize`
instead.
- Fix Issue #3906 - `IMPLICIT_COMMAND_DEPENDENCIES` was not properly disabled when
set to any string value (For example ['none','false','no','off'])
Also previously 'All' wouldn't have the desired affect.
- DocbookXslt tool: The XSLT stylesheet file is now initialized to an env.File() Node,
such that dependencies work correctly in hierarchical builds (eg when using
DocbookXslt in SConscript('subdir/SConscript') context.
- The Install builder will now set the writable mode on the file(s) it
copies. This restores the (previously undocumented) SCons behavior
that regressed as of 4.0.0.
- Fix issue #3790: Generators in CPPDEFINES now have access to populated source
and target lists
- Fix a potential race condition in shared cache environments where the permissions are
not writeable for a moment after the file has been renamed and other builds (users) will copy
it out of the cacheSmall reorganization of logic to copy files from cachedir. Moved CacheDir
writeable permission code for copy to cache behind the atomic rename operation.
- Fixed intermediate and and multi target nodes generated from SConf tests not being marked
as is_conftest().
Thanks to the following contributors listed below for their contributions to this release.
.. code-block:: text
git shortlog --no-merges -ns 4.1.0..HEAD
177 William Deegan
101 Daniel Moody
95 Mats Wichmann
25 Adam Gross
4 greenbender
4 Daniel
4 Henrik Maier
4 Mathew Robinson
3 Andrew Morrow
3 Ivan Kravets
3 Dillan Mills
1 WholesomeIsland
1 dependabot[bot]
1 djh
1 Joseph Brill
4.1.0 Release
SCons 4.1.0 is available
Here is a summary of the changes since 4.0.1:
NEW FUNCTIONALITY
- Add
COMPILATIONDB_PATH_FILTER
env option for CompilationDatabase() builder which allows
filtering of entries based on the output file paths using glob style file matching (issue #3742). - Add
ZIP_OVERRIDE_TIMESTAMP
env option to Zip builder which allows for overriding of the file
modification times in the archive. - Raise an error if an option (not otherwise consumed) is used which
looks like an abbreviation of one one added by AddOption. (#3653)
CHANGED/ENHANCED EXISTING FUNCTIONALITY
-
Completely rewrote versioned shared libraries logic.
Added support forSOVERSION
via dmoody's initial PR #3733 -
No longer automatically disable setting SONAME on shared libraries on OpenBSD.
-
Environment.SideEffect()
no longer adds duplicate side effects.
NOTE: The list of returned side effect Nodes will not include any
duplicate side effect Nodes. -
/snap/bin is added to the default search path for the 'posix' platform.
-
Completely rewrote versioned shared libraries logic.
-
Added support for
SOVERSION
-
No longer automatically disable setting
SONAME
on shared libraries on OpenBSD. -
Switch to use ctypes instead of pywin32 (requiring an extra pip install) - Fixes Github Issue #2291
- pywin32 no longer necessary for SCons install. (pip install SCons will no longer also require pywin32 on win32)
- Remove pywin32 usage from SCons.Util where it was used for accessing the registry. Python native winreg
library already includes this functionality. - Remove using pywin32 to retrieve peak memory usage on Win32 for
--debug=memory
-
Tool module not found will now raise a UserError to more clearly indicate this is
probably an SConscript problem, and to make the traceback more relevant. -
Fix three issues with MergeFlags:
-
Only try to initialize the wix tool by default (or when tool
default
is explicitly installed)
on Windows based systems. -
Add
/snap/bin
toenv['PATH']
on POSIX, although this is only
really useful for a subset of POSIX systems that use snaps.
Was needed for CI builds, which run on Ubuntu LTS images.
FIXES
- Fix yacc tool, not respecting
YACC
set at time of tool initialization. - Fix race condition bug when initializing a scons cache directory at the
same time from multiple threads or processes. Problem described in PR #3114.
This is a simpler fix which should avoid some problems identified with the initial PR.
(Credit to Fredrik Medley for reporting the issue, the initial PR, and discussing and testing
this solution) - Fix incorrect cache hits and/or misses when running in interactive mode by having
SCons.Node.Node.clear() clear out all caching-related state. - Fix Zip builder not rebuilding when
ZIPROOT
env option was changed. - Fix python3 crash when Value node get_text_content when child content does not have decode()
NOTE: If you depend on Value node's get_text_content returning concatenated contents of it's
children. This may break your code. It now concatenates the csig() of all children. - Fix Zip tool to respect ZIPCOMSTR. Previously all zip builder calls would yield something
like zip(["test.zip"], ["zip_scons.py"]) and ignoreZIPCOMSTR
ifZIPCOM
andZIPCOMSTR
weren't set after the Environment/Tool is initialized. (Explained in PR #3659) - Fix issue where java parsed a class incorrectly from lambdas used after a new.
- Fix using
TEMPFILE
in multiple actions in an action list. Previously a builder, or command
with an action list like the following could yield a single tempfile with the first TEMPFILE's contents, used by both steps
in the action list.
.. code-block:: text
['${TEMPFILE("xxx.py -otempfile $SOURCE")}', '${TEMPFILE("yyy.py -o$TARGET tempfile")}']
- Cleanup in SCons.Util.AddMethod. If called with an environment instance
as the object to modify, the method would not be correctly set up in
any Clone of that instance. Now tries to detect this and calls
MethodWrapper to set up the method the same way env.AddMethod does.
MethodWrapper moved to Util to avoid a circular import. Fixes #3028. - Fix Issue #3014 - Empty file and missing file have same csig
PACKAGING
- Fix Issue #3759 - include scons.1, sconsign.1, scons-time.1 manpages in sdist and wheel packages.
- Pick a better "Topic" Trove classifier for SCons: SW Dev / Build Tools
DOCUMENTATION
- Include previously-excluded SideEffect section in User Guide.
DEVELOPMENT
- Rework runtest.py to use argparse for arg handling (was a mix
of hand-coded and optparse, with a stated intent to "gradually port"). - Add options to runtest to generate/not generate a log of failed tests,
and to rerun such tests. Useful when an error cascades through several
tests, can quickly try if a change improves all the fails. Dropped
runtest test for fallback from qmtest, not needed; added new tests.
Thanks to the following contributors listed below for their contributions to this release.
.. code-block:: text
git shortlog --no-merges -ns 4.0.1..HEAD
115 Mats Wichmann
83 William Deegan
14 Adam Gross
4 Joseph Brill
3 Joachim Kuebart
2 GIT
2 Daniel Moody
2 James Benton
1 Unknown
1 Daniel
1 anatoly techtonik
1 Dirk Baechle
1 dependabot[bot]
1 David H
1 Michał Górny
1 Simon Tegelid
.. _page: http://sourceforge.net/projects/scons/files/scons/4.1.0/
.. _ChangeLog: https://raw.githubusercontent.com/SCons/scons/rel_4.1.0/CHANGES.txt
3.0.5a2
This is an alpha release for the Mesa project to try to ensure their windows build issue with MD5-timestamp decider has been resolved.
This should resolve: https://bugs.freedesktop.org/show_bug.cgi?id=109443