Log message:
py-scons: update to 4.9.1.
4.9.1
FIXES
New CacheDir initialization code failed on Python 3.7 for unknown
reason (worked on 3.8+). Adjusted the approach a bit. Fixes #4694.
Fixed a hang in wait_for_process_to_die() on Windows, affecting
clean-up of the SCons daemon used for Ninja builds.
4.9.0
CHANGED/ENHANCED EXISTING FUNCTIONALITY
Expose the extra_libs keyword argument in CheckLibWithHeader and 'CheckLib'
Removed Python 3.6 support.
Override environments, created when giving construction environment
keyword arguments to Builder calls (or manually, through the
undocumented Override method), were modified not to "leak" on item \
deletion.
The item will now not be deleted from the base environment.
Added support for tracking beamer themes in the LaTeX scanner.
MSVS: msvs project files are always generated before the corresponding
msvs solution files. This changes the behavior of clean for a project
generated with auto_build_solution disabled and explicit solution
generation: when the solution files are cleaned, the project files are
also cleaned. The tests for vs 6.0-7.1 were updated accordingly.
MSVS: Add an optional keyword argument, auto_filter_projects, to
MSVSSolution. Accepted values for auto_filter_projects are:
None [default]: raise an exception when solution file names or nodes
are detected in the projects argument list.
True or evaluates True: automatically remove solution file names and
nodes from the project argument list.
False or evaluates False: leave solution file names and nodes in the
project argument list. An exception is not raised.
Solution file names and/or nodes in the project argument list cause
erroneous Project records to be produced in the generated solution file.
As a convenience, a user may elect to ignore solution file names and nodes
in the projects argument list rather than manually removing solution file
names and nodes from the MSVSProject return values.
SCons C preprocessor:
Update the optional integer suffixes to include the z|Z and wb|WB
suffixes.
Add support for binary integer constants.
Add support for octal integer constants. Previously, octal integers
were evaluated as decimal integers. A literal zero (0) is treated as an
octal number.
Change the method for attempted conversion of a define expansion value
to an integer from a literal to a constant expression evaluation.
Add a tag to each CacheDir to let systems ignore backing it up
(per https://bford.info/cachedir/). Update the way a CacheDir
is created, since it now has to create two files.
The Dictionary method now has an as_dict flag. If true, Dictionary
always returns a dict. The default remains to return different
types depending on whether zero, one, or multiple construction
A Variables object now makes available a "defaulted" attribute,
a list of variable names that were set in the environment with
their values taken from the default in the variable description
(if a variable was set to the same value as the default in one
of the input sources, it is not included in this list).
If a build Variable is created with no aliases, the name of the
Variable is no longer listed in its aliases. Internally, the name
and aliases are considered together anyway so this should not have
any effect except for being visible to custom help text formatters.
FIXES
PackageVariable now does what the documentation always said it does
if the variable is used on the command line with one of the enabling
string as the value: the variable's default value is produced (previously
it always produced True in this case).
Temporary files created by TempFileMunge() are now cleaned up on
scons exit, instead of at the time they're used. Fixes #4595.
AddOption now correctly adds short (single-character) options.
Previously an added short option would always report as unknown,
while long option names for the same option worked. Short options
that take a value require the user to specify the value immediately
following the option, with no spaces (e.g. -j5 and not -j 5).
Fix a problem with compilation_db component initialization - the
entries for assembler files were not being set up correctly.
On Darwin, PermissionErrors are now handled while trying to access
/etc/paths.d. This may occur if SCons is invoked in a sandboxed environment
(such as Nix).
Added error handling when creating MSVC detection debug log file specified
by SCONS_MSCOMMON_DEBUG.
MSVS: Modify select msvs test scripts to run on platforms not supported by
the msvs/msvc tool implementation via a default host architecture for
unsupported platforms.
MSVS: Fixed early loop exit in select msvs test scripts. Select msvs test
scripts were being invoked for msvc version 8.0 only. Additional msvs
tool and test changes due to the msvs test scripts being run for all msvc
versions (i.e., minor test and tool issues went undetected).
MSVS: for variant build configurations, msvs solution files are
generated in the source directory and a placeholder file is generated in
the variant build directory. This mirrors the behavior of generated
msvs project files.
MSVS: msvs project files are generated before the corresponding msvs
solution file. User-specified project GUIDs should now be correctly
written to the solution file.
SCons C preprocessor: Preserve literals that contain valid integer
substring specifications. Previously, the integer suffix could be
stripped from a symbol that contained an integer and suffix substring.
SCons C preprocessor: Update the optional integer suffixes to include
support for the alternate orderings of unsigned with long or long long as
defined in the c/cpp grammar.
SCons C preprocessor: Update the optional integer suffixes for case
insensitive specifications as defined in the c/cpp grammar.
Fix nasm test for missing include file, cleanup.
Skip running a few validation tests if the user is root and the test is
not designed to work for the root user.
Make sure unknown variables from a Variables file are recognized
as such. Previously only unknowns from the command line were
recognized (issue #4645).
Update ninja tool to use ninja.BIN_DIR to find pypi packaged ninja binary.
python ninja package version 1.11.1.2 changed the location and previous
logic no longer worked.
The (optional) C Conditional Scanner now does limited macro
replacement on the contents of CPPDEFINES, to improve finding deps
that are conditionally included. Previously replacement was only
done on macro definitions found in the file being scanned.
Only object-like macros are replaced (not function-like), and
only on a whole-word basis; recursion is limited to five levels
and does not error out if that limit is reached (issue #4523).
Minor modernization: make use of stat object's st_mode, st_mtime
and other attributes rather than indexing into stat return.
Ninja's TEMPLATE rule pool changed from local_pool to install_pool
hoping it will fix a race condition that can occurs when Ninja defers
to SCons to build.
Renamed env.Help() & Help()'s argument keep_local to local_only, \
previously the documentation
specified local_only, but the code and tests were using keep_local. The \
functionality
more closely matches local only. NOTE: It doesn't seem like any code in the \
wild was using
local_only as we'd not received any reports of such until PR #4606 from hedger.
Fix Issue #2281, AddPreAction() & AddPostAction() were being ignored if \
no action
was specified when the Alias was initially created.
Handle case of "memoizer" as one member of a comma-separated
--debug string - this was previously missed.
IMPROVEMENTS
For consistency with the optparse "add_option" method, AddOption \
accepts
an SConsOption object as a single argument (this failed previously).
Calling AddOption with the full set of arguments (option names and
attributes) to set up the option is still the recommended approach.
Add clang and clang++ to the default tool search orders for POSIX
and Windows platforms. These will be searched for after gcc and g++,
respectively. Does not affect explicitly requested tool lists. Note:
on Windows, SCons currently only has builtin support for clang, not
for clang-cl, the version of the frontend that uses cl.exe-compatible
command line switches.
DOCUMENTATION
Some manpage cleanup for the gettext and pdf/ps builders.
Some clarifications in the User Guide "Environments" chapter.
Clarify documentation of Repository() in manpage and user guide.
Many grammatical and spelling fixes in the documentation.
Update Clean and NoClean documentation.
Improved Variables documentation.
Update the User Guide Command() example which now shows a target name
being created from '${SOURCE.base}.out' to use a valid special
attribute and to explain what's being done in the example.
DEVELOPMENT
Ruff/Mypy: Excluded items now synced.
Ruff: Linter includes new rules - FA, UP006, UP007, and UP037 - to
detect and upgrade legacy type-hint syntax.
Removed "SCons.Util.sctyping.py", as the functionality can now be \
substituted
via top-level from __future__ import annotations.
Implemented type hints for Nodes.
Added TestSCons.NINJA_BINARY to TestSCons to centralize logic to find ninja \
binary
Refactored SCons.Tool.ninja -> SCons.Tool.ninja_tool, and added alias so \
env.Tool('ninja')
will still work. This avoids conflicting with the pypi module ninja.
|
Log message:
py-scons: update to 4.8.0.
RELEASE 4.8.0 - Sun, 07 Jul 2024 17:22:20 -0700
From Joseph Brill:
- For msvc version specifications without an 'Exp' suffix, an express \
installation
is used when no other edition is detected for the msvc version. Similarly, an
express installation of the IDE binary is used when no other IDE edition is
detected.
- VS2015 Express (14.0Exp) does not support the sdk version argument. \
VS2015 Express
does not support the store argument for target architectures other than x86.
Script argument validation now takes into account these restrictions.
- VS2015 BuildTools (14.0) does not support the sdk version argument and does not
support the store argument. Script argument validation now takes into account
these restrictions.
- The Windows SDK for Windows 7 and .NET Framework 4" (SDK 7.1) \
populates the
registry keys in a manner in which the msvc detection would report that VS2010
(10.0) is installed when only the SDK was installed. The installed files are
intended to be used via the sdk batch file setenv.cmd. The installed msvc
batch files will fail. The msvc detection logic now ignores SDK-only VS2010
installations. Similar protection is implemented for the sdk-only \
installs that
populate the installation folder and registry keys for VS2008 (9.0), if \
necessary.
- For VS2005 (8.0) to VS2015 (14.0), vsvarsall.bat is employed to dispatch to a
dependent batch file when configuring the msvc environment. Previously, \
only the
existence of the compiler executable was verified. In certain \
installations, the
dependent batch file (e.g., vcvars64.bat) may not exist while the compiler
executable does exist resulting in build failures. The existence of \
vcvarsall.bat,
the dependent batch file, and the compiler executable are now validated.
- MSVC configuration data specific to versions VS2005 (8.0) to VS2008 (9.0) \
was added
as the dependent batch files have different names than the batch file \
names used
for VS2010 (10.0) and later. The VS2008 (9.0) Visual C++ For Python \
installation
is handled as a special case as the dependent batch files are: (a) not \
used and (b)
in different locations.
- When VS2008 (9.0) Visual C++ For Python is installed using the ALLUSERS=1 \
option
(i.e., msiexec /i VCForPython27.msi ALLUSERS=1), the registry keys are \
written to
HKEY_LOCAL_MACHINE rather than HKEY_CURRENT_USER. An entry was added to \
query the
Visual C++ For Python keys in HKLM following the HKCU query, if necessary.
- For VS2008, a full development edition (e.g., Professional) is now \
selected before
a Visual C++ For Python edition. Prior to this change, Visual C++ For \
Python was
selected before a full development edition when both editions are installed.
- The registry detection of VS2015 (14.0), and earlier, is now cached at \
runtime and
is only evaluated once for each msvc version.
- The vswhere executable is frozen upon initial detection. Specifying a \
different
vswhere executable via the construction variable VSWHERE after the initial
detection now results in an exception. Multiple bugs in the implementation of
specifying a vswhere executable via the construction variable VSWHERE have been
fixed. Previously, when a user specified vswhere executable detects new msvc
installations after the initial detection, the internal msvc installation cache
and the default msvc version based on the initial detection are no longer \
valid.
For example, when no vswhere executable is found for the initial detection
and then later an environment is constructed with a user specified vswhere
executable that detects new msvc installations.
- The vswhere detection of VS2017 (14.1), and later, is now cached at \
runtime and is
only evaluated once using a single vswhere invocation for all msvc versions.
Previously, the vswhere executable was invoked for each supported msvc version.
- The vswhere executable locations for the WinGet and Scoop package managers were
added to the default vswhere executable search list after the Chocolatey
installation location.
- Fix issue #4543: add support for msvc toolset versions 14.4X installed as the
latest msvc toolset versions for msvc buildtools v143. The v143 msvc \
buildtools
may contain msvc toolset versions from 14.30 to 14.4X.
From Thaddeus Crews:
- GetSConsVersion() to grab the latest SCons version without needing to
access SCons internals.
- Migrate setup.cfg logic to pyproject.toml; remove setup.cfg.
- Update .gitattributes to match .editorconfig; enforce eol settings.
- Replace black/flake8 with ruff for more efficient formatting & linting.
- When debugging (--debug=pdb), the filename SCsub is now recognized when
manipulating breakpoints.
From Raymond Li:
- Fix issue #3935: OSErrors are now no longer hidden during execution of
Actions. All exceptions during the execution of an Action are now
returned by value rather than by raising an exception, for more
consistent behavior.
NOTE: With this change, user created Actions should now catch and handle
expected exceptions (whereas previously many of these were silently
caught and suppressed by the SCons Action exection code).
From Ryan Carsten Schmidt:
- Teach ParseFlags to put a --stdlib=libname argument into CXXFLAGS.
If placed in CCFLAGS (the default location), it could be fed to the
C compiler (gcc, clang) where it is not applicable and causes a
warning message.
From Mats Wichmann:
- Updated Value Node docs and tests.
- Python 3.13 compat: re.sub deprecated count, flags as positional args,
caused update-release-info test to fail.
- Dump() with json format selected now recognizes additional compound types
(UserDict and UserList), which improves the detail of the display.
json output is also sorted, to match the default display.
- Python 3.13 (alpha) changes the behavior of isabs() on Windows. Adjust
SCons usage of in NodeInfo classes to match. Fixes #4502, #4504.
- Drop duplicated __getstate__ and __setstate__ methods in AliasNodeInfo,
FileNodeInfo and ValueNodeInfo classes, as they are identical to the
ones in parent NodeInfoBase and can just be inherited.
- Update manpage for Tools, and for TOOL, which also gets a minor
tweak for how it's handled (should be more accurate in a few situations).
- Test framework now uses a subdirectory named "scons" below the base
temporary directory. This gives something invariant to tell antivirus
to ignore without having to exclude tmpdir itself. Fixes #4509.
- MSVS "live" tests of project files adjusted to look for the generated
executable with an exe sufffix
- Documentation build now properly passes through skipping the PDF
(and EPUB) builds of manpage and user guide; this can also be done
manually if directly calling doc/man/SConstruct and doc/user/SConstruct
by adding SKIP_PDF=1. This should help with distro packaging of SCons,
which now does not need "fop" and other tools to be set up in \
order to
build pdf versions which are then ignored.
- Add the ability to print a Variables object for debugging purposes
(provides a __str__ method in the class).
- Mark Python 3.6 support as deprecated.
- Clean up Variables: more consistently call them variables (finish the
old change from Options) in docstrings, etc.; some typing and other
tweaks. Update manpage and user guide for Variables usage.
- Regularize internal usage of Python version strings and drop one
old Python 2-only code block in a test.
- scons-time tests now supply a "filter" argument to tarfile.extract
to quiet a warning which was added in Python 3.13 beta 1.
- Improved the conversion of a "foreign" exception from an action
into BuildError by making sure our defaults get applied even in
corner cases. Fixes #4530.
- Restructured API docs build (Sphinx) so main module contents appear
on a given page *before* the submodule docs, not after. Also
tweaked the Util package doc build so it's structured more like the
other packages (a missed part of the transition when it was split).
- Updated manpage description of Command "builder" and function.
- Framework for scons-time tests adjusted so a path with a long username
Windows has squashed doesn't get re-expanded. Fixes a problem seen
on GitHub Windows runner which uses a name "runneradmin".
- SCons.Environment.is_valid_construction_var() now returns a boolean to
match the convention that functions beginning with "is" have yes/no
answers (previously returned either None or an re.match object).
Now matches the annotation and docstring (which were prematurely
updated in 4.6). All SCons usage except unit test was already fully
consistent with a bool.
- When a variable is added to a Variables object, it can now be flagged
as "don't perform substitution" by setting the argument subst.
This allows variables to contain characters which would otherwise
cause expansion. Fixes #4241.
- The test runner now recognizes the unittest module's return code of 5,
which means no tests were run. SCons/Script/MainTests.py currently
has no tests, so this particular error code is expected - should not
cause runtest to give up with an "unknown error code".
- Updated the notes about reproducible builds with SCons and the example.
- The Clone() method now respects the variables argument (fixes #3590)
- is_valid_construction_var() (not part of the public API) moved from
SCons.Environment to SCons.Util to avoid the chance of import loops. Variables
and Environment both use the routine and Environment() uses a Variables()
object so better to move to a safer location.
- Performance tweak: the __setitem__ method of an Environment, used for
setting construction variables, now uses the string method isidentifier
to validate the name (updated from microbenchmark results).
- AddOption and the internal add_local_option which AddOption calls now
recognize a "settable" keyword argument to indicate a project-added
option can also be modified using SetOption. Fixes #3983.
NOTE: If you were using ninja and using SetOption() for ninja options
in your SConscripts prior to loading the ninja tool, you will now
see an error. The fix is to move the SetOption() to after you've loaded
the ninja tool.
- ListVariable now has a separate validator, with the functionality
that was previously part of the converter. The main effect is to
allow a developer to supply a custom validator, which previously
could be inhibited by the converter failing before the validator
is reached.
- Regularized header (copyright, licens) at top of documentation files
using SPDX.
- Updated introductory section of manual page.
- Minor cleanups in tests - drop unused "% locals()" stanzas.
|