SCons: Restore compatibility with SCons < 4.0.0 #92041
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Environment
values when updatingVariables
#91792.I'm not familiar with the Python semantics of
{**a, **b}
(I literally learned about it when working on #91792), but it seems like SCons Environment before 4.0.0 doesn't automatically expose its internal dictionary to this operator.Calling
SubstitutionEnvironment.Dictionary()
explicitly seems to do the trick and it still works for the following versions I could test:I couldn't test 3.0.x because this version requires the
imp
module, which has been removed in Python 3.12. I'll see if I can add a CI build using SCons 3.0.0 on Python 3.11 so we can properly test its support, until we eventually decide to bump our minimum required version.Edit: I could test 3.0.0 in a
python:3.6
podman container, works fine with this PR.Edit 2: On the other hand, testing on CI showed that SCons 3.0.0 still has breaking issues, so we're bumping the min version to
3.1.03.1.2 in #92043.CC @Repiteo @AThousandShips