summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Deegan <bill@baddogconsulting.com>2023-02-15 19:13:45 -0800
committerWilliam Deegan <bill@baddogconsulting.com>2023-02-15 19:13:45 -0800
commit143882c3a228497267e0130463d31b3d93a6b852 (patch)
tree4ac319e1a6c93a050d81e8c4f1c754f6213621fd
parentd4c99290d1afb1a388f834ab3b66d13919259742 (diff)
downloadscons-git-143882c3a228497267e0130463d31b3d93a6b852.tar.gz
rewording of CHANGES.txt info. Changed versionadded to 4.5.0
-rw-r--r--CHANGES.txt21
-rw-r--r--RELEASE.txt8
-rw-r--r--SCons/Defaults.py2
-rw-r--r--SCons/Environment.py2
4 files changed, 14 insertions, 19 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index e10feab6f..4a2cb0d8e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -133,19 +133,14 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
Also added "unique" keyword, to control whether a library is added
or not if it is already in the $LIBS construction var in the
configure context. (issue #2768).
- - Special-case handling for CPPDEFINES in the Append/Prepend routines
- is split out into its own function to simplify the remaining code and
- fix problems. The e2e test test/CPPDEFINES/append.py is expanded
- to cover missed cases, and AppendUnique no longer mismatches
- with what Append does (#3876). Inconsistent handling of tuples
- to specify macro=value outputs is also cleaned up (#4254). The
- special handling now also works for Prepend/PrependUnique, and a
- corresponding e2e test test/CPPDEFINES/prepend.py was added to verify
- the behavior. A unit test for SCons.Util.processDefines, used to
- convert CPPDEFINES into a list of strings, is added. SCons used
- to sort keys set or appended via a dict type, in order to assure
- order of commandline flags did not change across runs. This behavior
- has been dropped since Python now assures consistent dict order.
+ - Completely refactored the CPPDEFINES logic in Append/AppendUnique/Prepend/PrependUnique
+ This change fixes the following GH Issues:
+ - GH Issue #3876 - Append() and AppendUnique() will handle CPPDEFINES the same
+ - GH Issue #4254 - Make handling tuples in CPPDEFINES consistent.
+ - We no longer sort the keys added to CPPDEFINES by their dictionary keys.
+ We take advantage that their order is now stable based on insertion order
+ in Python 3.5+
+ - Added/modifed unit and system tests to verify these changes.
RELEASE 4.4.0 - Sat, 30 Jul 2022 14:08:29 -0700
diff --git a/RELEASE.txt b/RELEASE.txt
index 7a431c221..756d674c1 100644
--- a/RELEASE.txt
+++ b/RELEASE.txt
@@ -17,10 +17,10 @@ NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher),
see unexpected rebuilds. This is due to Python internals changing which changed
the signature of a Python Action Function.
-NOTE: If you use a dictionary to specify your CPPDEFINES, the order of
- dictionary keys is now preserved when generating the command line.
- Previously these were sorted alphabecially: this may cause a change
- which leads to a rebuild.
+NOTE: If you use a dictionary to specify your CPPDEFINES, you may see unexpected build results
+ The insertion order of dictionary keys is now preserved when generating the command line.
+ Previously these were sorted alphabecially. This change to the command line,
+ while generating identical set of CPPDEFINES can change order and cause a rebuild.
NEW FUNCTIONALITY
diff --git a/SCons/Defaults.py b/SCons/Defaults.py
index 4ca7ab86d..b21ce4c4a 100644
--- a/SCons/Defaults.py
+++ b/SCons/Defaults.py
@@ -521,7 +521,7 @@ def processDefines(defs) -> List[str]:
Any prefix/suffix is handled elsewhere (usually :func:`_concat_ixes`).
- .. versionchanged:: 4.5
+ .. versionchanged:: 4.5.0
Bare tuples are now treated the same as tuple-in-sequence, assumed
to describe a valued macro. Bare strings are now split on space.
A dictionary is no longer sorted before handling.
diff --git a/SCons/Environment.py b/SCons/Environment.py
index 74c564174..9140d2726 100644
--- a/SCons/Environment.py
+++ b/SCons/Environment.py
@@ -223,7 +223,7 @@ def _add_cppdefines(
unique: whether to add *val* if it already exists.
delete_existing: if *unique* is true, add *val* after removing previous.
- .. versionadded:: 4.5
+ .. versionadded:: 4.5.0
"""
def _add_define(item, defines: deque, prepend: bool = False) -> None: