mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-11-05 04:10:19 +00:00
`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)