GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — gh-124111: Update tkinter for compatibility with Tcl/Tk 9.0.0 by culler · Pull Request #124156 · python/cpython Conversation
|
|
Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool. If this change has little impact on Python users, wait for a maintainer to apply the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Do you know why your generated files look like they're completely changed? It is line endings being bad? (I believe our regen scripts assume you're using autocrlf on Windows.)
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
I have no idea. I committed those by mistake, since I am used to using git commit -a. It has something to do with Windows - those files were not changed by other platforms. I think I have now restored the autogenerated files that I committed by mistake. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Looking good! I have some comments that are mostly style nits, and I think we may want to hold off on the changes to PCbuild/. I don't think we'll be able to move the Windows builds for <=3.13 to Tcl/Tk 9 (at least not immediately), so it will make backporting the other changes easier to leave the 3.14 PCbuild/ updates to a separate PR.
Thanks!
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
…pped and _no_round.
|
I think I have now addressed all issues raised in the comments. Is there anything else that is needed? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
8072c54 to
ec56443
Compare
|
We don't want example files in the build directory. To "save" the changes for later, they could either be a draft PR, comments in the file (not preferred), or you could add the changes with Footnotes
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sure. I will attempt to modify _tkinter.vcxproj to allow building against either 8.6.14 or 9.0.0. (Note that 8.6.15 has been released, but the binaries are not available to get_externals.bat yet.) |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…ersion by setting the TclVersion environment variable
|
I think this PR is finished. The PR checks test against Tcl/Tk 8.6.14, and they are showing no failures. I have tested against Tcl/Tk 8.6.15 and Tcl/Tk 9.0.0 (rc2) on my own machines, running Ubuntu 22.04, Windows 11, and macOS 14. There are no failures in those 6 cases. The issue reported in #124378 with 8.6.15 has been resolved here. The release of Tcl/Tk 9.0.0 is expected within a week, and surely will happen by the end of next week. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This is great, thank you! I'm satisfied with this change overall, but I think we should get a once-over from @serhiy-storchaka for the tkinter changes and a final confirmation from @zooba that the PCbuild/ changes match his expectations.
With your permission, I'd like to extract your ttk Notebook test fixes to a separate PR so that we can go ahead with it and get it backported. (If you would prefer to make that split yourself, that works for me.)
I expect that we will eventually be backporting this whole PR even if we don't start shipping 9.0 with our <3.14 binaries because at some point our non-Windows CI systems will inevitably update to 9.0, but I'm not sure how quickly that will happen and want to be sure we get 8.6.15 supported as soon as we can.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
|
||
| pix_re = re.compile(r'[0-9]*\.?[0-9]*[cimp]{1}') | ||
| def is_pixel_str(x): | ||
| return pix_re.fullmatch(x) != None |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Nit: this doesn't seem to be used anymore.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Thanks! That sounds good,
By all means. I would prefer to have you handle the split.
Great! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
According to this email the release of Tcl/Tk 9.0.0.0 will happen tomorrow. Addendum: Tcl/Tk 9.0.0.0 were in fact released today 2/26/2024 as scheduled. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Along with the MSI changes (and possibly under PC/layout as well, I haven't checked), we need to make sure that we're okay with redistributing libtommath.dll and also that there isn't a static linking option for it. zlib unfortunately causes us trouble, but static linking here is impossible (because Tcl/Tk doesn't allow for it in their build scripts - I suspect the same will apply to tommath).
I'm okay with merging without the MSI changes, but we then cannot update any releases until it's done. As annoying as it is for backports, I'd require a comment in get_externals.bat to this effect.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
| <tcltkDir Condition="$(tcltkDir) == ''">$(ExternalsDir)tcltk-$(TclVersion)\$(ArchName)\</tcltkDir> | ||
| <tclWin32Exe Condition="$(Platform) == 'Win32'">$(tcltkDir)\bin\tclsh$(TclMajorVersion)$(TclMinorVersion)t.exe</tclWin32Exe> | ||
| <tclWin32Exe Condition="$(Platform) != 'Win32'">$(tcltkDir)\..\win32\bin\tclsh$(TclMajorVersion)$(TclMinorVersion)t.exe</tclWin32Exe> | ||
| <tclExternalTommath Condition="$(TclMajorVersion) == '9'">TCL_WITH_EXTERNAL_TOMMATH;</tclExternalTommath> |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This is not used anywhere, just remove it.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Actually, the TCL_WITH_EXTERNAL_TOMMATH constant is used when building against TclTk 9.0; although it is not used by 8.6. With 9.0, if it is not defined then all of the symbols defined in libtommath.dll are reported by the linker as being undefined. I believe that this is related to how the Tcl stubs library works; it is not a straightforward linker error since libtommath.dll is being passed to the linker.
One might hope that the existence of a constant named TCL_WITH_EXTERNAL_TOMMATH indicates that one could choose not to have an external libtommath.dlll and instead arrange for libtommath to be statically linked into libtcl.dll, as is the case with Tcl 8.6. However, I was not able to find a combination of build options which accomplished that. I will try to find out if it is possible.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
@zooba: As far as I can tell. the following command uses MSVC to build a static library tcl90s.lib which has both zlib and (part of) libtommath built-in:
nmake -f makefile.vc TCL_WITH_INTERNAL_ZLIB=1 TCL_WITH_EXTERNAL_TOMMATH=0 STATIC_BUILD=1
According to dumpbin, the tclsh90s.exe executable built by that command does not have libtommath.dll or zlib.dll as dependencies. So presumably the same would be true of the _tkinter extension if it were linked against tcl90s.lib.
If you are willing to use gcc in msys64 then configure --disable-static seems to do the equivalent thing.
Reference: https://core.tcl-lang.org/tips/doc/trunk/tip/538.md
Sorry, something went wrong.
There was an error while loading. Please reload this page.
It's not really the place to call out TclVersion particularly. We probably should have a note about environment variables somewhere, but I don't have a good wording for it at the moment. We can add that later on.
|
Big applause to Marc for this big bunch of work. I am sure, the TkInter community will enjoy tk 9.0, as it has a better look and scaling ability of the whole gui. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
GH-127364 is a backport of this pull request to the 3.13 branch. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…ythonGH-124156) (cherry picked from commit 47cbf03)
|
I propose to backport this change to Python 3.13, see: #127364. See the discussion on the issue for the backport rationale. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…3484) Backport the test-only parts of the Tcl/Tk 8.7/9.0/9.1 test adaptations so that test_tkinter and test_ttk pass when Python 3.13 is built against Tcl/Tk 9.0 (for example the Homebrew build used on macOS), while still passing against the Tcl/Tk 8.6 that 3.13 ships. Combines the test changes from: * gh-124111: Update tkinter for compatibility with Tcl/Tk 9.0.0 (GH-124156) * gh-124111: test macOS CI with Tk 9 (GH-137424) * gh-145736: Fix Tkinter tests for Tk 8.7, 9.0 and 9.1 (GH-145738) The corresponding non-test changes (Modules/_tkinter.c, Lib/tkinter/ttk.py, PCbuild and CI configuration) are not backported.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.