Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions Lib/test/test_tcl.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Updated Windows builds to use Tcl/Tk 9.0.3.
20 changes: 10 additions & 10 deletions Misc/externals.spdx.json
Original file line number Diff line number Diff line change
Expand Up @@ -108,46 +108,46 @@
"versionInfo": "3.50.4.0"
},
{
"SPDXID": "SPDXRef-PACKAGE-tcl-core",
"SPDXID": "SPDXRef-PACKAGE-tcl",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "4c23f0dd3efcbe6f3a22c503a68d147617bb30c4f5290f1eb3eaacf0b460440b"
"checksumValue": "7a1d1f3a2b8f4484a9c2a027a157963c18f85a81785e85fcb5d1e3df6b6a4fd4"
}
],
"downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tcl-core-8.6.15.0.tar.gz",
"downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tcl-9.0.3.0.tar.gz",
"externalRefs": [
{
"referenceCategory": "SECURITY",
"referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:8.6.15.0:*:*:*:*:*:*:*",
"referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.3.0:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
}
],
"licenseConcluded": "NOASSERTION",
"name": "tcl-core",
"name": "tcl",
"primaryPackagePurpose": "SOURCE",
"versionInfo": "8.6.15.0"
"versionInfo": "9.0.3.0"
},
{
"SPDXID": "SPDXRef-PACKAGE-tk",
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "0ae56d39bca92865f338529557a1e56d110594184b6dc5a91339c5675751e264"
"checksumValue": "54fb59df12c489c6264f5b7d3d7444b150d1e3d6561fd59cdb11483440cec000"
}
],
"downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tk-8.6.15.0.tar.gz",
"downloadLocation": "https://github.com/python/cpython-source-deps/archive/refs/tags/tk-9.0.3.1.tar.gz",
"externalRefs": [
{
"referenceCategory": "SECURITY",
"referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:8.6.15.0:*:*:*:*:*:*:*",
"referenceLocator": "cpe:2.3:a:tcl_tk:tcl_tk:9.0.3.1:*:*:*:*:*:*:*",
"referenceType": "cpe23Type"
}
],
"licenseConcluded": "NOASSERTION",
"name": "tk",
"primaryPackagePurpose": "SOURCE",
"versionInfo": "8.6.15.0"
"versionInfo": "9.0.3.1"
},
{
"SPDXID": "SPDXRef-PACKAGE-xz",
Expand Down
6 changes: 3 additions & 3 deletions PCbuild/get_externals.bat
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
2 changes: 1 addition & 1 deletion PCbuild/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
4 changes: 2 additions & 2 deletions PCbuild/tcltk.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="pyproject.props" Condition="$(__PyProject_Props_Imported) != 'true'" />
<PropertyGroup>
<TclVersion Condition="$(TclVersion) == ''">8.6.15.0</TclVersion>
<TclVersion Condition="$(TclVersion) == ''">9.0.3.0</TclVersion>
<TkVersion Condition="$(TkVersion) == ''">$(TclVersion)</TkVersion>
<TclMajorVersion>$([System.Version]::Parse($(TclVersion)).Major)</TclMajorVersion>
<TclMinorVersion>$([System.Version]::Parse($(TclVersion)).Minor)</TclMinorVersion>
Expand All @@ -12,7 +12,7 @@
<TkMinorVersion>$([System.Version]::Parse($(TkVersion)).Minor)</TkMinorVersion>
<TkPatchLevel>$([System.Version]::Parse($(TkVersion)).Build)</TkPatchLevel>
<TkRevision>$([System.Version]::Parse($(TkVersion)).Revision)</TkRevision>
<tclDir Condition="$(tclDir) == ''">$(ExternalsDir)tcl-core-$(TclVersion)\</tclDir>
<tclDir Condition="$(tclDir) == ''">$(ExternalsDir)tcl-$(TclVersion)\</tclDir>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This directory name should be under our control, isn't it? Why would we change the pattern (and break anyone who might be trying to pin back to an earlier version)?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tcl vs tcl-core distinction comes from which package we start with from https://sourceforge.net/projects/tcl/files/Tcl/9.0.3/. For the past several versions, we've been actually using tclx.y.z-src.ext rather than tcl-corex.y.z-src.ext even though we've been tagging it as tcl-core-x.y.z.0. I'd rather tag it as it originated, and the distinction between the two doesn't seem as worth pursuing to me as it did back when we switched to the -core variant, so this time I imported the regular tcl9.0.3-src.tar.gz and tagged it as such.

I'm not too concerned about this breaking pins; this would only affect anyone building their own from source and there's a good chance that anyone doing that would already be overriding tclDir as a whole just like we do in our tcltk-build workflow. They'll be more broken by the 8->9 transition anyway, just like we were.

I'd rather keep the changed naming here, but as a transitional measure I could add some extra tags to cpython-source-deps to fill in missing -core/not for the past several Tcls?

<tkDir Condition="$(tkDir) == ''">$(ExternalsDir)tk-$(TkVersion)\</tkDir>
<tcltkDir Condition="$(tcltkDir) == ''">$(ExternalsDir)tcltk-$(TclVersion)\$(ArchName)\</tcltkDir>
<tcltkSuffix Condition="'$(TclMajorVersion)' == '8'">t</tcltkSuffix>
Expand Down
Loading