Files
John Ericson c8e1365d31 pypy: Stop the prebuilt interpreters depending on Tcl/Tk 8.5
`prebuilt.nix` (3.10, 3.11) asked for Tcl/Tk 8.5 on Linux, but the
`_tkinter` extension in those tarballs is linked against `libtcl8.6.so`
and `libtk8.6.so`. It resolved anyway, because the tarball vendors its own
copy of both under `lib/`. So the declared dependency was doing nothing,
and `tkinter` -- which is stdlib, not an optional extra -- was quietly
running against a bundled Tcl that we do not update.

Point it at our 8.6 instead, and delete the vendored libraries so it has
to. The vendored *script* libraries have to go too: `init.tcl` checks the
exact patchlevel, so our 8.6.16 rejects the bundled 8.6.14 copy as "not
usable" and `Tcl_Init` fails. Note that the existing `installCheckPhase`
does not catch that, as `import tkinter` never creates an interpreter;
`tkinter.Tcl()` does.

`prebuilt_2_7.nix` genuinely needs 8.5 -- its `tklib_cffi` asks for
`libtcl8.5.so` and its `installPhase` does not keep the bundled `lib/` --
but it exists only to bootstrap the source build of PyPy2, where nothing
imports `tkinter`. Let the module go unresolved and drop it from the
import check rather than keep an end-of-life Tcl alive for it.

Assisted-by: Claude Code (Claude Opus 5)
2026-08-22 21:37:53 -04:00
..