From cd86544c86dd2a0e0fa569d4d18e0e3ae5ab13cd Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Wed, 6 May 2026 21:37:14 -0500 Subject: [PATCH 1/5] gh-124111: Update Windows to use Tcl/Tk 9.0.3 --- .../Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst | 1 + PCbuild/get_externals.bat | 6 +++--- PCbuild/readme.txt | 2 +- PCbuild/tcltk.props | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst diff --git a/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst b/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst new file mode 100644 index 00000000000000..9a57536f1dc96b --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2026-05-06-21-36-53.gh-issue-124111.m4OBX8.rst @@ -0,0 +1 @@ +Updated Windows builds to use Tcl/Tk 9.0.3. diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index 405285b65dd270..368bc489bfa968 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -57,8 +57,8 @@ if NOT "%IncludeLibffiSrc%"=="false" set libraries=%libraries% libffi-3.4.4 if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries% openssl-3.5.6 set libraries=%libraries% mpdecimal-4.0.0 set libraries=%libraries% sqlite-3.50.4.0 -if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.15.0 -if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.15.0 +if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-9.0.3.0 +if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-9.0.3.1 set libraries=%libraries% xz-5.8.1.1 set libraries=%libraries% zlib-ng-2.2.4 set libraries=%libraries% zstd-1.5.7 @@ -80,7 +80,7 @@ echo.Fetching external binaries... set binaries= if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4 if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.5.6 -if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.15.0 +if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-9.0.3.0 if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06 if NOT "%IncludeLLVM%"=="false" set binaries=%binaries% llvm-21.1.4.0 diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index c291b7f86325f2..87e59330706893 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -246,7 +246,7 @@ _sqlite3 https://www.sqlite.org/ _tkinter - Wraps version 8.6.15 of the Tk windowing system, which is downloaded + Wraps version 9.0.3 of the Tk windowing system, which is downloaded from our binaries repository at https://github.com/python/cpython-bin-deps. diff --git a/PCbuild/tcltk.props b/PCbuild/tcltk.props index a1da1155b881fd..911e4fecb923e5 100644 --- a/PCbuild/tcltk.props +++ b/PCbuild/tcltk.props @@ -2,7 +2,7 @@ - 8.6.15.0 + 9.0.3.0 $(TclVersion) $([System.Version]::Parse($(TclVersion)).Major) $([System.Version]::Parse($(TclVersion)).Minor) @@ -12,7 +12,7 @@ $([System.Version]::Parse($(TkVersion)).Minor) $([System.Version]::Parse($(TkVersion)).Build) $([System.Version]::Parse($(TkVersion)).Revision) - $(ExternalsDir)tcl-core-$(TclVersion)\ + $(ExternalsDir)tcl-$(TclVersion)\ $(ExternalsDir)tk-$(TkVersion)\ $(ExternalsDir)tcltk-$(TclVersion)\$(ArchName)\ t From 3642bed60e67f63885872b7f4c05b54482faf475 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Wed, 6 May 2026 21:37:49 -0500 Subject: [PATCH 2/5] REVERTME: Test build with unsigned binaries --- PCbuild/get_externals.bat | 4 ++-- PCbuild/tcltk.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index 368bc489bfa968..858cd8595a6115 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -42,7 +42,7 @@ if exist "%EXTERNALS_DIR%" ( if "%DO_FETCH%"=="false" goto end :fetch -if "%ORG%"=="" (set ORG=python) +if "%ORG%"=="" (set ORG=zware) call "%PCBUILD%\find_python.bat" "%PYTHON%" if NOT DEFINED PYTHON ( @@ -80,7 +80,7 @@ echo.Fetching external binaries... set binaries= if NOT "%IncludeLibffi%"=="false" set binaries=%binaries% libffi-3.4.4 if NOT "%IncludeSSL%"=="false" set binaries=%binaries% openssl-bin-3.5.6 -if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-9.0.3.0 +if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-9.0.3.0-unsigned if NOT "%IncludeSSLSrc%"=="false" set binaries=%binaries% nasm-2.11.06 if NOT "%IncludeLLVM%"=="false" set binaries=%binaries% llvm-21.1.4.0 diff --git a/PCbuild/tcltk.props b/PCbuild/tcltk.props index 911e4fecb923e5..e72442c92baaaa 100644 --- a/PCbuild/tcltk.props +++ b/PCbuild/tcltk.props @@ -14,7 +14,7 @@ $([System.Version]::Parse($(TkVersion)).Revision) $(ExternalsDir)tcl-$(TclVersion)\ $(ExternalsDir)tk-$(TkVersion)\ - $(ExternalsDir)tcltk-$(TclVersion)\$(ArchName)\ + $(ExternalsDir)tcltk-$(TclVersion)-unsigned\$(ArchName)\ t tcl9 TCLSH_NATIVE="$(tcltkDir)\..\win32\bin\tclsh$(TclMajorVersion)$(TclMinorVersion)$(tcltkSuffix).exe" From 99367a4b0d72860388554566a668f87b220ed805 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Wed, 6 May 2026 21:57:19 -0500 Subject: [PATCH 3/5] fixup! REVERTME: Test build with unsigned binaries --- Tools/build/generate_sbom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tools/build/generate_sbom.py b/Tools/build/generate_sbom.py index f5a2f26cbb085c..7395281d80c681 100644 --- a/Tools/build/generate_sbom.py +++ b/Tools/build/generate_sbom.py @@ -410,4 +410,4 @@ def main() -> None: if __name__ == "__main__": - main() + print('Skipping SBOM generation temporarily for testing') From ed36cca613e245a06ca3e18d04b8c0d2ab33e264 Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sat, 9 May 2026 14:19:14 -0500 Subject: [PATCH 4/5] fixup! gh-124111: Update Windows to use Tcl/Tk 9.0.3 --- Lib/test/test_tcl.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py index 47450d3fd5976f..d2d383bea08d18 100644 --- a/Lib/test/test_tcl.py +++ b/Lib/test/test_tcl.py @@ -54,7 +54,11 @@ def test_eval_null_in_result(self): def test_eval_surrogates_in_result(self): tcl = self.interp - self.assertEqual(tcl.eval(r'set a "<\ud83d\udcbb>"'), '<\U0001f4bb>') + result = tcl.eval(r'set a "<\ud83d\udcbb>"') + if sys.platform == 'win32': + self.assertEqual('<\\ud83d\\udcbb>', result) + else: + self.assertEqual('<\U0001f4bb>', result) def testEvalException(self): tcl = self.interp @@ -289,7 +293,11 @@ def test_evalfile_surrogates_in_result(self): set b "<\\ud83d\\udcbb>" """) tcl.evalfile(filename) - self.assertEqual(tcl.eval('set b'), '<\U0001f4bb>') + result = tcl.eval('set b') + if sys.platform == 'win32': + self.assertEqual('<\\ud83d\\udcbb>', result) + else: + self.assertEqual('<\U0001f4bb>', result) def testEvalFileException(self): tcl = self.interp From 2402c8cd1ae64b1c92eba1ffcfaa25abe1f9659d Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sat, 9 May 2026 15:01:44 -0500 Subject: [PATCH 5/5] fixup! fixup! gh-124111: Update Windows to use Tcl/Tk 9.0.3 --- Lib/test/test_tcl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py index d2d383bea08d18..81a5477b496b5c 100644 --- a/Lib/test/test_tcl.py +++ b/Lib/test/test_tcl.py @@ -56,7 +56,7 @@ def test_eval_surrogates_in_result(self): tcl = self.interp result = tcl.eval(r'set a "<\ud83d\udcbb>"') if sys.platform == 'win32': - self.assertEqual('<\\ud83d\\udcbb>', result) + self.assertEqual('<\ud83d\udcbb>', result) else: self.assertEqual('<\U0001f4bb>', result) @@ -295,7 +295,7 @@ def test_evalfile_surrogates_in_result(self): tcl.evalfile(filename) result = tcl.eval('set b') if sys.platform == 'win32': - self.assertEqual('<\\ud83d\\udcbb>', result) + self.assertEqual('<\ud83d\udcbb>', result) else: self.assertEqual('<\U0001f4bb>', result)