summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt4
-rw-r--r--RELEASE.txt1
-rw-r--r--SCons/ActionTests.py18
-rw-r--r--setup.cfg2
-rw-r--r--test/rebuild-generated.py2
5 files changed, 24 insertions, 3 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 279ef2e7d..a110bd1e3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -106,6 +106,10 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER
not be cached because the emitted filename contained a '$' and when
looked up through a node ended up generating a Python SyntaxError
because it was passed through scons_subst().
+ - Add Python 3.12 support, and indicate 3.11/3.12 support in package.
+ 3.12 is in alpha for this SCons release, the bytecode sequences
+ embedded in SCons/ActionTests.py may need to change later, but
+ based on what is known now, 3.12 itself should work with this release.
RELEASE 4.4.0 - Sat, 30 Jul 2022 14:08:29 -0700
diff --git a/RELEASE.txt b/RELEASE.txt
index 35fd845ff..6c4cd53b0 100644
--- a/RELEASE.txt
+++ b/RELEASE.txt
@@ -43,6 +43,7 @@ CHANGED/ENHANCED EXISTING FUNCTIONALITY
octal modes using the modern Python syntax (0o755 rather than 0755).
- Migrated logging logic for --taskmastertrace to use Python's logging module. Added logging
to NewParallel Job class (Andrew Morrow's new parallel job implementation)
+- Preliminary support for Python 3.12.
FIXES
diff --git a/SCons/ActionTests.py b/SCons/ActionTests.py
index 101953bd6..88bb36fc2 100644
--- a/SCons/ActionTests.py
+++ b/SCons/ActionTests.py
@@ -1541,6 +1541,7 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
(3, 9): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 10): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 11): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
+ (3, 12): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
}
meth_matches = [
@@ -1719,6 +1720,7 @@ class FunctionActionTestCase(unittest.TestCase):
(3, 9): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 10): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 11): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
+ (3, 12): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
}
@@ -1730,6 +1732,7 @@ class FunctionActionTestCase(unittest.TestCase):
(3, 9): bytearray(b'1, 1, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 10): bytearray(b'1, 1, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 11): bytearray(b'1, 1, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
+ (3, 12): bytearray(b'1, 1, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
}
def factory(act, **kw):
@@ -1974,6 +1977,7 @@ class LazyActionTestCase(unittest.TestCase):
(3, 9): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 10): bytearray(b'0, 0, 0, 0,(),(),(d\x00S\x00),(),()'),
(3, 11): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
+ (3, 12): bytearray(b'0, 0, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()'),
}
meth_matches = [
@@ -2039,6 +2043,7 @@ class ActionCallerTestCase(unittest.TestCase):
(3, 9): b'd\x00S\x00',
(3, 10): b'd\x00S\x00',
(3, 11): b'\x97\x00d\x00S\x00',
+ (3, 12): b'\x97\x00d\x00S\x00',
}
af = SCons.Action.ActionFactory(GlobalFunc, strfunc)
@@ -2250,6 +2255,7 @@ class ObjectContentsTestCase(unittest.TestCase):
bytearray(b'3, 3, 0, 0,(),(),(|\x00S\x00),(),()'),
), # 3.10.1, 3.10.2
(3, 11): bytearray(b'3, 3, 0, 0,(),(),(\x97\x00|\x00S\x00),(),()'),
+ (3, 12): bytearray(b'3, 3, 0, 0,(),(),(\x97\x00|\x00S\x00),(),()'),
}
c = SCons.Action._function_contents(func1)
@@ -2288,7 +2294,11 @@ class ObjectContentsTestCase(unittest.TestCase):
b"{TestClass:__main__}[[[(<class \'object\'>, ()), [(<class \'__main__.TestClass\'>, (<class \'object\'>,))]]]]{{1, 1, 0, 0,(a,b),(a,b),(d\x01|\x00_\x00d\x02|\x00_\x01d\x00S\x00),(),(),2, 2, 0, 0,(),(),(d\x00S\x00),(),()}}{{{a=a,b=b}}}"
),
(3, 11): bytearray(
- b"{TestClass:__main__}[[[(<class \'object\'>, ()), [(<class \'__main__.TestClass\'>, (<class \'object\'>,))]]]]{{1, 1, 0, 0,(a,b),(a,b),(\x97\x00d\x01|\x00_\x00\x00\x00\x00\x00\x00\x00\x00\x00d\x02|\x00_\x01\x00\x00\x00\x00\x00\x00\x00\x00d\x00S\x00),(),(),2, 2, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()}}{{{a=a,b=b}}}"),
+ b"{TestClass:__main__}[[[(<class \'object\'>, ()), [(<class \'__main__.TestClass\'>, (<class \'object\'>,))]]]]{{1, 1, 0, 0,(a,b),(a,b),(\x97\x00d\x01|\x00_\x00\x00\x00\x00\x00\x00\x00\x00\x00d\x02|\x00_\x01\x00\x00\x00\x00\x00\x00\x00\x00d\x00S\x00),(),(),2, 2, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()}}{{{a=a,b=b}}}"
+ ),
+ (3, 12): bytearray(
+ b"{TestClass:__main__}[[[(<class \'object\'>, ()), [(<class \'__main__.TestClass\'>, (<class \'object\'>,))]]]]{{1, 1, 0, 0,(a,b),(a,b),(\x97\x00d\x01|\x00_\x00\x00\x00\x00\x00\x00\x00\x00\x00d\x02|\x00_\x01\x00\x00\x00\x00\x00\x00\x00\x00d\x00S\x00),(),(),2, 2, 0, 0,(),(),(\x97\x00d\x00S\x00),(),()}}{{{a=a,b=b}}}"
+ ),
}
assert c == expected[sys.version_info[:2]], f"Got\n{c!r}\nExpected\n" + repr(
@@ -2322,7 +2332,11 @@ class ObjectContentsTestCase(unittest.TestCase):
b'0, 0, 0, 0,(Hello, World!),(print),(e\x00d\x00\x83\x01\x01\x00d\x01S\x00)'
),
(3, 11): bytearray(
- b'0, 0, 0, 0,(Hello, World!),(print),(\x97\x00\x02\x00e\x00d\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00d\x01S\x00)'),
+ b'0, 0, 0, 0,(Hello, World!),(print),(\x97\x00\x02\x00e\x00d\x00\xa6\x01\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00d\x01S\x00)'
+ ),
+ (3, 12): bytearray(
+ b'0, 0, 0, 0,(Hello, World!),(print),(\x97\x00\x02\x00e\x00d\x00\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00d\x01S\x00)'
+ ),
}
assert c == expected[sys.version_info[:2]], f"Got\n{c!r}\nExpected\n" + repr(
diff --git a/setup.cfg b/setup.cfg
index 941db3419..f177d6f11 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -31,6 +31,8 @@ classifiers =
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
+ Programming Language :: Python :: 3.12
Environment :: Console
Intended Audience :: Developers
License :: OSI Approved :: MIT License
diff --git a/test/rebuild-generated.py b/test/rebuild-generated.py
index 0b3659ea4..91b4e1e7c 100644
--- a/test/rebuild-generated.py
+++ b/test/rebuild-generated.py
@@ -83,7 +83,7 @@ env = Environment()
kernelDefines = env.Command("header.hh", "header.hh.in", Copy('$TARGET', '$SOURCE'))
kernelImporterSource = env.Command("generated.cc", ["%s"], "%s")
kernelImporter = env.Program(kernelImporterSource + ["main.cc"])
-kernelImports = env.Command("KernelImport.hh", kernelImporter, ".%s$SOURCE > $TARGET")
+kernelImports = env.Command("KernelImport.hh", kernelImporter, r".%s$SOURCE > $TARGET")
osLinuxModule = env.StaticObject(["target.cc"])
""" % (generator_name, kernel_action, sep))