Skip to content

Update pypy#21036

Merged
tianon merged 1 commit intodocker-library:masterfrom
docker-library-bot:pypy
Mar 16, 2026
Merged

Update pypy#21036
tianon merged 1 commit intodocker-library:masterfrom
docker-library-bot:pypy

Conversation

@yosifkit
Copy link
Member

@yosifkit yosifkit commented Mar 13, 2026

Changes:

@yosifkit yosifkit requested a review from a team as a code owner March 13, 2026 22:04
@github-actions

This comment has been minimized.

@tianon
Copy link
Member

tianon commented Mar 13, 2026

Hold for docker-library/pypy#93

Changes:

- docker-library/pypy@3c1c348: Merge pull request docker-library/pypy#93 from infosiftr/tkinter
- docker-library/pypy@c143e77: Update 3.11 to 7.3.21
- docker-library/pypy@13e63d2: Update 2.7 to 7.3.21
@github-actions
Copy link

Diff for afd67a9:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index 9c5ed8b..f3427e7 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1,72 +1,72 @@
 Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon), Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
 GitRepo: https://github.com/docker-library/pypy.git
 
-Tags: 2.7-7.3.20-bookworm, 2.7-7.3-bookworm, 2.7-7-bookworm, 2.7-bookworm, 2-7.3.20-bookworm, 2-7.3-bookworm, 2-7-bookworm, 2-bookworm
+Tags: 2.7-7.3.21-bookworm, 2.7-7.3-bookworm, 2.7-7-bookworm, 2.7-bookworm, 2-7.3.21-bookworm, 2-7.3-bookworm, 2-7-bookworm, 2-bookworm
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 2.7/bookworm
 
-Tags: 2.7-7.3.20-slim, 2.7-7.3-slim, 2.7-7-slim, 2.7-slim, 2-7.3.20-slim, 2-7.3-slim, 2-7-slim, 2-slim, 2.7-7.3.20-slim-trixie, 2.7-7.3-slim-trixie, 2.7-7-slim-trixie, 2.7-slim-trixie, 2-7.3.20-slim-trixie, 2-7.3-slim-trixie, 2-7-slim-trixie, 2-slim-trixie
+Tags: 2.7-7.3.21-slim, 2.7-7.3-slim, 2.7-7-slim, 2.7-slim, 2-7.3.21-slim, 2-7.3-slim, 2-7-slim, 2-slim, 2.7-7.3.21-slim-trixie, 2.7-7.3-slim-trixie, 2.7-7-slim-trixie, 2.7-slim-trixie, 2-7.3.21-slim-trixie, 2-7.3-slim-trixie, 2-7-slim-trixie, 2-slim-trixie
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 2.7/slim-trixie
 
-Tags: 2.7-7.3.20-slim-bookworm, 2.7-7.3-slim-bookworm, 2.7-7-slim-bookworm, 2.7-slim-bookworm, 2-7.3.20-slim-bookworm, 2-7.3-slim-bookworm, 2-7-slim-bookworm, 2-slim-bookworm
+Tags: 2.7-7.3.21-slim-bookworm, 2.7-7.3-slim-bookworm, 2.7-7-slim-bookworm, 2.7-slim-bookworm, 2-7.3.21-slim-bookworm, 2-7.3-slim-bookworm, 2-7-slim-bookworm, 2-slim-bookworm
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 2.7/slim-bookworm
 
-Tags: 2.7-7.3.20-trixie, 2.7-7.3-trixie, 2.7-7-trixie, 2.7-trixie, 2-7.3.20-trixie, 2-7.3-trixie, 2-7-trixie, 2-trixie
-SharedTags: 2.7-7.3.20, 2.7-7.3, 2.7-7, 2.7, 2-7.3.20, 2-7.3, 2-7, 2
+Tags: 2.7-7.3.21-trixie, 2.7-7.3-trixie, 2.7-7-trixie, 2.7-trixie, 2-7.3.21-trixie, 2-7.3-trixie, 2-7-trixie, 2-trixie
+SharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 2.7/trixie
 
-Tags: 2.7-7.3.20-windowsservercore-ltsc2022, 2.7-7.3-windowsservercore-ltsc2022, 2.7-7-windowsservercore-ltsc2022, 2.7-windowsservercore-ltsc2022, 2-7.3.20-windowsservercore-ltsc2022, 2-7.3-windowsservercore-ltsc2022, 2-7-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022
-SharedTags: 2.7-7.3.20, 2.7-7.3, 2.7-7, 2.7, 2-7.3.20, 2-7.3, 2-7, 2, 2.7-7.3.20-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.20-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore
+Tags: 2.7-7.3.21-windowsservercore-ltsc2022, 2.7-7.3-windowsservercore-ltsc2022, 2.7-7-windowsservercore-ltsc2022, 2.7-windowsservercore-ltsc2022, 2-7.3.21-windowsservercore-ltsc2022, 2-7.3-windowsservercore-ltsc2022, 2-7-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022
+SharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2, 2.7-7.3.21-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.21-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore
 Architectures: windows-amd64
-GitCommit: 29ecc5a68bdd0a4643ca2b5495956f541a3ceb72
+GitCommit: 13e63d2b45ddbc8da8bafdb517e564f5385b7994
 Directory: 2.7/windows/windowsservercore-ltsc2022
 Constraints: windowsservercore-ltsc2022
 
-Tags: 2.7-7.3.20-windowsservercore-ltsc2025, 2.7-7.3-windowsservercore-ltsc2025, 2.7-7-windowsservercore-ltsc2025, 2.7-windowsservercore-ltsc2025, 2-7.3.20-windowsservercore-ltsc2025, 2-7.3-windowsservercore-ltsc2025, 2-7-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025
-SharedTags: 2.7-7.3.20, 2.7-7.3, 2.7-7, 2.7, 2-7.3.20, 2-7.3, 2-7, 2, 2.7-7.3.20-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.20-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore
+Tags: 2.7-7.3.21-windowsservercore-ltsc2025, 2.7-7.3-windowsservercore-ltsc2025, 2.7-7-windowsservercore-ltsc2025, 2.7-windowsservercore-ltsc2025, 2-7.3.21-windowsservercore-ltsc2025, 2-7.3-windowsservercore-ltsc2025, 2-7-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025
+SharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2, 2.7-7.3.21-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.21-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore
 Architectures: windows-amd64
-GitCommit: 29ecc5a68bdd0a4643ca2b5495956f541a3ceb72
+GitCommit: 13e63d2b45ddbc8da8bafdb517e564f5385b7994
 Directory: 2.7/windows/windowsservercore-ltsc2025
 Constraints: windowsservercore-ltsc2025
 
-Tags: 3.11-7.3.20-bookworm, 3.11-7.3-bookworm, 3.11-7-bookworm, 3.11-bookworm, 3-7.3.20-bookworm, 3-7.3-bookworm, 3-7-bookworm, 3-bookworm, bookworm
+Tags: 3.11-7.3.21-bookworm, 3.11-7.3-bookworm, 3.11-7-bookworm, 3.11-bookworm, 3-7.3.21-bookworm, 3-7.3-bookworm, 3-7-bookworm, 3-bookworm, bookworm
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/bookworm
 
-Tags: 3.11-7.3.20-slim, 3.11-7.3-slim, 3.11-7-slim, 3.11-slim, 3-7.3.20-slim, 3-7.3-slim, 3-7-slim, 3-slim, slim, 3.11-7.3.20-slim-trixie, 3.11-7.3-slim-trixie, 3.11-7-slim-trixie, 3.11-slim-trixie, 3-7.3.20-slim-trixie, 3-7.3-slim-trixie, 3-7-slim-trixie, 3-slim-trixie, slim-trixie
+Tags: 3.11-7.3.21-slim, 3.11-7.3-slim, 3.11-7-slim, 3.11-slim, 3-7.3.21-slim, 3-7.3-slim, 3-7-slim, 3-slim, slim, 3.11-7.3.21-slim-trixie, 3.11-7.3-slim-trixie, 3.11-7-slim-trixie, 3.11-slim-trixie, 3-7.3.21-slim-trixie, 3-7.3-slim-trixie, 3-7-slim-trixie, 3-slim-trixie, slim-trixie
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/slim-trixie
 
-Tags: 3.11-7.3.20-slim-bookworm, 3.11-7.3-slim-bookworm, 3.11-7-slim-bookworm, 3.11-slim-bookworm, 3-7.3.20-slim-bookworm, 3-7.3-slim-bookworm, 3-7-slim-bookworm, 3-slim-bookworm, slim-bookworm
+Tags: 3.11-7.3.21-slim-bookworm, 3.11-7.3-slim-bookworm, 3.11-7-slim-bookworm, 3.11-slim-bookworm, 3-7.3.21-slim-bookworm, 3-7.3-slim-bookworm, 3-7-slim-bookworm, 3-slim-bookworm, slim-bookworm
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/slim-bookworm
 
-Tags: 3.11-7.3.20-trixie, 3.11-7.3-trixie, 3.11-7-trixie, 3.11-trixie, 3-7.3.20-trixie, 3-7.3-trixie, 3-7-trixie, 3-trixie, trixie
-SharedTags: 3.11-7.3.20, 3.11-7.3, 3.11-7, 3.11, 3-7.3.20, 3-7.3, 3-7, 3, latest
+Tags: 3.11-7.3.21-trixie, 3.11-7.3-trixie, 3.11-7-trixie, 3.11-trixie, 3-7.3.21-trixie, 3-7.3-trixie, 3-7-trixie, 3-trixie, trixie
+SharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest
 Architectures: amd64, arm64v8, i386
-GitCommit: 8908818e3c253a09864223f7c148db765684135f
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/trixie
 
-Tags: 3.11-7.3.20-windowsservercore-ltsc2022, 3.11-7.3-windowsservercore-ltsc2022, 3.11-7-windowsservercore-ltsc2022, 3.11-windowsservercore-ltsc2022, 3-7.3.20-windowsservercore-ltsc2022, 3-7.3-windowsservercore-ltsc2022, 3-7-windowsservercore-ltsc2022, 3-windowsservercore-ltsc2022, windowsservercore-ltsc2022
-SharedTags: 3.11-7.3.20, 3.11-7.3, 3.11-7, 3.11, 3-7.3.20, 3-7.3, 3-7, 3, latest, 3.11-7.3.20-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.20-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore
+Tags: 3.11-7.3.21-windowsservercore-ltsc2022, 3.11-7.3-windowsservercore-ltsc2022, 3.11-7-windowsservercore-ltsc2022, 3.11-windowsservercore-ltsc2022, 3-7.3.21-windowsservercore-ltsc2022, 3-7.3-windowsservercore-ltsc2022, 3-7-windowsservercore-ltsc2022, 3-windowsservercore-ltsc2022, windowsservercore-ltsc2022
+SharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest, 3.11-7.3.21-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.21-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore
 Architectures: windows-amd64
-GitCommit: b32ca0567b9856e21c607610254748a24439a956
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/windows/windowsservercore-ltsc2022
 Constraints: windowsservercore-ltsc2022
 
-Tags: 3.11-7.3.20-windowsservercore-ltsc2025, 3.11-7.3-windowsservercore-ltsc2025, 3.11-7-windowsservercore-ltsc2025, 3.11-windowsservercore-ltsc2025, 3-7.3.20-windowsservercore-ltsc2025, 3-7.3-windowsservercore-ltsc2025, 3-7-windowsservercore-ltsc2025, 3-windowsservercore-ltsc2025, windowsservercore-ltsc2025
-SharedTags: 3.11-7.3.20, 3.11-7.3, 3.11-7, 3.11, 3-7.3.20, 3-7.3, 3-7, 3, latest, 3.11-7.3.20-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.20-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore
+Tags: 3.11-7.3.21-windowsservercore-ltsc2025, 3.11-7.3-windowsservercore-ltsc2025, 3.11-7-windowsservercore-ltsc2025, 3.11-windowsservercore-ltsc2025, 3-7.3.21-windowsservercore-ltsc2025, 3-7.3-windowsservercore-ltsc2025, 3-7-windowsservercore-ltsc2025, 3-windowsservercore-ltsc2025, windowsservercore-ltsc2025
+SharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest, 3.11-7.3.21-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.21-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore
 Architectures: windows-amd64
-GitCommit: b32ca0567b9856e21c607610254748a24439a956
+GitCommit: c143e77415cba18f450910d83e27faa755307b8a
 Directory: 3.11/windows/windowsservercore-ltsc2025
 Constraints: windowsservercore-ltsc2025
diff --git a/_bashbrew-list b/_bashbrew-list
index 5aec244..0112bc7 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -17,15 +17,15 @@ pypy:2-7.3-trixie
 pypy:2-7.3-windowsservercore
 pypy:2-7.3-windowsservercore-ltsc2022
 pypy:2-7.3-windowsservercore-ltsc2025
-pypy:2-7.3.20
-pypy:2-7.3.20-bookworm
-pypy:2-7.3.20-slim
-pypy:2-7.3.20-slim-bookworm
-pypy:2-7.3.20-slim-trixie
-pypy:2-7.3.20-trixie
-pypy:2-7.3.20-windowsservercore
-pypy:2-7.3.20-windowsservercore-ltsc2022
-pypy:2-7.3.20-windowsservercore-ltsc2025
+pypy:2-7.3.21
+pypy:2-7.3.21-bookworm
+pypy:2-7.3.21-slim
+pypy:2-7.3.21-slim-bookworm
+pypy:2-7.3.21-slim-trixie
+pypy:2-7.3.21-trixie
+pypy:2-7.3.21-windowsservercore
+pypy:2-7.3.21-windowsservercore-ltsc2022
+pypy:2-7.3.21-windowsservercore-ltsc2025
 pypy:2-bookworm
 pypy:2-slim
 pypy:2-slim-bookworm
@@ -53,15 +53,15 @@ pypy:2.7-7.3-trixie
 pypy:2.7-7.3-windowsservercore
 pypy:2.7-7.3-windowsservercore-ltsc2022
 pypy:2.7-7.3-windowsservercore-ltsc2025
-pypy:2.7-7.3.20
-pypy:2.7-7.3.20-bookworm
-pypy:2.7-7.3.20-slim
-pypy:2.7-7.3.20-slim-bookworm
-pypy:2.7-7.3.20-slim-trixie
-pypy:2.7-7.3.20-trixie
-pypy:2.7-7.3.20-windowsservercore
-pypy:2.7-7.3.20-windowsservercore-ltsc2022
-pypy:2.7-7.3.20-windowsservercore-ltsc2025
+pypy:2.7-7.3.21
+pypy:2.7-7.3.21-bookworm
+pypy:2.7-7.3.21-slim
+pypy:2.7-7.3.21-slim-bookworm
+pypy:2.7-7.3.21-slim-trixie
+pypy:2.7-7.3.21-trixie
+pypy:2.7-7.3.21-windowsservercore
+pypy:2.7-7.3.21-windowsservercore-ltsc2022
+pypy:2.7-7.3.21-windowsservercore-ltsc2025
 pypy:2.7-bookworm
 pypy:2.7-slim
 pypy:2.7-slim-bookworm
@@ -89,15 +89,15 @@ pypy:3-7.3-trixie
 pypy:3-7.3-windowsservercore
 pypy:3-7.3-windowsservercore-ltsc2022
 pypy:3-7.3-windowsservercore-ltsc2025
-pypy:3-7.3.20
-pypy:3-7.3.20-bookworm
-pypy:3-7.3.20-slim
-pypy:3-7.3.20-slim-bookworm
-pypy:3-7.3.20-slim-trixie
-pypy:3-7.3.20-trixie
-pypy:3-7.3.20-windowsservercore
-pypy:3-7.3.20-windowsservercore-ltsc2022
-pypy:3-7.3.20-windowsservercore-ltsc2025
+pypy:3-7.3.21
+pypy:3-7.3.21-bookworm
+pypy:3-7.3.21-slim
+pypy:3-7.3.21-slim-bookworm
+pypy:3-7.3.21-slim-trixie
+pypy:3-7.3.21-trixie
+pypy:3-7.3.21-windowsservercore
+pypy:3-7.3.21-windowsservercore-ltsc2022
+pypy:3-7.3.21-windowsservercore-ltsc2025
 pypy:3-bookworm
 pypy:3-slim
 pypy:3-slim-bookworm
@@ -125,15 +125,15 @@ pypy:3.11-7.3-trixie
 pypy:3.11-7.3-windowsservercore
 pypy:3.11-7.3-windowsservercore-ltsc2022
 pypy:3.11-7.3-windowsservercore-ltsc2025
-pypy:3.11-7.3.20
-pypy:3.11-7.3.20-bookworm
-pypy:3.11-7.3.20-slim
-pypy:3.11-7.3.20-slim-bookworm
-pypy:3.11-7.3.20-slim-trixie
-pypy:3.11-7.3.20-trixie
-pypy:3.11-7.3.20-windowsservercore
-pypy:3.11-7.3.20-windowsservercore-ltsc2022
-pypy:3.11-7.3.20-windowsservercore-ltsc2025
+pypy:3.11-7.3.21
+pypy:3.11-7.3.21-bookworm
+pypy:3.11-7.3.21-slim
+pypy:3.11-7.3.21-slim-bookworm
+pypy:3.11-7.3.21-slim-trixie
+pypy:3.11-7.3.21-trixie
+pypy:3.11-7.3.21-windowsservercore
+pypy:3.11-7.3.21-windowsservercore-ltsc2022
+pypy:3.11-7.3.21-windowsservercore-ltsc2025
 pypy:3.11-bookworm
 pypy:3.11-slim
 pypy:3.11-slim-bookworm
diff --git a/pypy_2-bookworm/Dockerfile b/pypy_2-bookworm/Dockerfile
index 86a146a..7203483 100644
--- a/pypy_2-bookworm/Dockerfile
+++ b/pypy_2-bookworm/Dockerfile
@@ -14,23 +14,23 @@ ENV LANG C.UTF-8
 ENV PATH /opt/pypy/bin:$PATH
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux64.tar.bz2'; \
-			sha256='aa3bb92dbb529fa2d4920895b16d67a810b0c709207857d56cfe4a6e3b41e02a'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux64.tar.bz2'; \
+			sha256='d560f4043180b0df5826396af17d060bd731e4fee34755167040924ece876f3e'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-aarch64.tar.bz2'; \
-			sha256='f22a1be607deeaa4f9be6bc63aae09fe4fb5b990d6a23aa4e7c5960dc5d93c96'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-aarch64.tar.bz2'; \
+			sha256='8aaed1e612e6874235ee9d5bd545a8dcc7b86c867d305351df37969390b0c47b'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux32.tar.bz2'; \
-			sha256='9d554c5efcb6ef80146bb82965f5d8404d6848e6f04b25c378852a095768a69c'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux32.tar.bz2'; \
+			sha256='14cb624e60b3012b4e5605571ab1477cea732a04e1c1385cc492d99f427a477f'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -50,6 +50,9 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy' /usr/local/bin/; \
 	\
 # smoke test
diff --git a/pypy_2-slim-bookworm/Dockerfile b/pypy_2-slim-bookworm/Dockerfile
index 3b0093e..36616d8 100644
--- a/pypy_2-slim-bookworm/Dockerfile
+++ b/pypy_2-slim-bookworm/Dockerfile
@@ -19,23 +19,23 @@ ENV LANG C.UTF-8
 ENV PATH /opt/pypy/bin:$PATH
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux64.tar.bz2'; \
-			sha256='aa3bb92dbb529fa2d4920895b16d67a810b0c709207857d56cfe4a6e3b41e02a'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux64.tar.bz2'; \
+			sha256='d560f4043180b0df5826396af17d060bd731e4fee34755167040924ece876f3e'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-aarch64.tar.bz2'; \
-			sha256='f22a1be607deeaa4f9be6bc63aae09fe4fb5b990d6a23aa4e7c5960dc5d93c96'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-aarch64.tar.bz2'; \
+			sha256='8aaed1e612e6874235ee9d5bd545a8dcc7b86c867d305351df37969390b0c47b'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux32.tar.bz2'; \
-			sha256='9d554c5efcb6ef80146bb82965f5d8404d6848e6f04b25c378852a095768a69c'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux32.tar.bz2'; \
+			sha256='14cb624e60b3012b4e5605571ab1477cea732a04e1c1385cc492d99f427a477f'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -57,6 +57,9 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy' /usr/local/bin/; \
 	\
 # smoke test
diff --git a/pypy_2-slim-trixie/Dockerfile b/pypy_2-slim-trixie/Dockerfile
index 0f2bedb..3a337fc 100644
--- a/pypy_2-slim-trixie/Dockerfile
+++ b/pypy_2-slim-trixie/Dockerfile
@@ -19,23 +19,23 @@ ENV LANG C.UTF-8
 ENV PATH /opt/pypy/bin:$PATH
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux64.tar.bz2'; \
-			sha256='aa3bb92dbb529fa2d4920895b16d67a810b0c709207857d56cfe4a6e3b41e02a'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux64.tar.bz2'; \
+			sha256='d560f4043180b0df5826396af17d060bd731e4fee34755167040924ece876f3e'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-aarch64.tar.bz2'; \
-			sha256='f22a1be607deeaa4f9be6bc63aae09fe4fb5b990d6a23aa4e7c5960dc5d93c96'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-aarch64.tar.bz2'; \
+			sha256='8aaed1e612e6874235ee9d5bd545a8dcc7b86c867d305351df37969390b0c47b'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux32.tar.bz2'; \
-			sha256='9d554c5efcb6ef80146bb82965f5d8404d6848e6f04b25c378852a095768a69c'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux32.tar.bz2'; \
+			sha256='14cb624e60b3012b4e5605571ab1477cea732a04e1c1385cc492d99f427a477f'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -57,6 +57,9 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy' /usr/local/bin/; \
 	\
 # smoke test
diff --git a/pypy_2-trixie/Dockerfile b/pypy_2-trixie/Dockerfile
index 32f9177..f9462e7 100644
--- a/pypy_2-trixie/Dockerfile
+++ b/pypy_2-trixie/Dockerfile
@@ -14,23 +14,23 @@ ENV LANG C.UTF-8
 ENV PATH /opt/pypy/bin:$PATH
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux64.tar.bz2'; \
-			sha256='aa3bb92dbb529fa2d4920895b16d67a810b0c709207857d56cfe4a6e3b41e02a'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux64.tar.bz2'; \
+			sha256='d560f4043180b0df5826396af17d060bd731e4fee34755167040924ece876f3e'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-aarch64.tar.bz2'; \
-			sha256='f22a1be607deeaa4f9be6bc63aae09fe4fb5b990d6a23aa4e7c5960dc5d93c96'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-aarch64.tar.bz2'; \
+			sha256='8aaed1e612e6874235ee9d5bd545a8dcc7b86c867d305351df37969390b0c47b'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy2.7-v7.3.20-linux32.tar.bz2'; \
-			sha256='9d554c5efcb6ef80146bb82965f5d8404d6848e6f04b25c378852a095768a69c'; \
+			url='https://downloads.python.org/pypy/pypy2.7-v7.3.21-linux32.tar.bz2'; \
+			sha256='14cb624e60b3012b4e5605571ab1477cea732a04e1c1385cc492d99f427a477f'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -50,6 +50,9 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy' /usr/local/bin/; \
 	\
 # smoke test
diff --git a/pypy_2-windowsservercore-ltsc2022/Dockerfile b/pypy_2-windowsservercore-ltsc2022/Dockerfile
index cb51089..f6d2345 100644
--- a/pypy_2-windowsservercore-ltsc2022/Dockerfile
+++ b/pypy_2-windowsservercore-ltsc2022/Dockerfile
@@ -48,13 +48,13 @@ RUN $url = 'https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81C
 	Write-Host 'Complete.'
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
-RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.20-win64.zip'; \
+RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.21-win64.zip'; \
 	Write-Host ('Downloading {0} ...' -f $url); \
 	Invoke-WebRequest -Uri $url -OutFile 'pypy.zip'; \
 	\
-	$sha256 = '76d02853601ef8d3c9dd821a9faa84cabf9bc469d6b77797b21ed311b25d5419'; \
+	$sha256 = '05db49d2ede174e48c8603f7d12c4b64e40c564e273c6f397c45ccf7c85af4ab'; \
 	Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \
 	if ((Get-FileHash pypy.zip -Algorithm sha256).Hash -ne $sha256) { \
 		Write-Host 'FAILED!'; \
@@ -68,7 +68,7 @@ RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.20-win64.zip'; \
 	Remove-Item pypy.zip -Force; \
 	\
 	Write-Host 'Renaming ...'; \
-	Rename-Item -Path C:\pypy2.7-v7.3.20-win64 -NewName C:\pypy; \
+	Rename-Item -Path C:\pypy2.7-v7.3.21-win64 -NewName C:\pypy; \
 	\
 	Write-Host 'Verifying install ("pypy --version") ...'; \
 	pypy --version; \
diff --git a/pypy_2-windowsservercore-ltsc2025/Dockerfile b/pypy_2-windowsservercore-ltsc2025/Dockerfile
index 64a3a76..92ac5f9 100644
--- a/pypy_2-windowsservercore-ltsc2025/Dockerfile
+++ b/pypy_2-windowsservercore-ltsc2025/Dockerfile
@@ -48,13 +48,13 @@ RUN $url = 'https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81C
 	Write-Host 'Complete.'
 
 # Python 2.7.18
-ENV PYPY_VERSION 7.3.20
+ENV PYPY_VERSION 7.3.21
 
-RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.20-win64.zip'; \
+RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.21-win64.zip'; \
 	Write-Host ('Downloading {0} ...' -f $url); \
 	Invoke-WebRequest -Uri $url -OutFile 'pypy.zip'; \
 	\
-	$sha256 = '76d02853601ef8d3c9dd821a9faa84cabf9bc469d6b77797b21ed311b25d5419'; \
+	$sha256 = '05db49d2ede174e48c8603f7d12c4b64e40c564e273c6f397c45ccf7c85af4ab'; \
 	Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \
 	if ((Get-FileHash pypy.zip -Algorithm sha256).Hash -ne $sha256) { \
 		Write-Host 'FAILED!'; \
@@ -68,7 +68,7 @@ RUN $url = 'https://downloads.python.org/pypy/pypy2.7-v7.3.20-win64.zip'; \
 	Remove-Item pypy.zip -Force; \
 	\
 	Write-Host 'Renaming ...'; \
-	Rename-Item -Path C:\pypy2.7-v7.3.20-win64 -NewName C:\pypy; \
+	Rename-Item -Path C:\pypy2.7-v7.3.21-win64 -NewName C:\pypy; \
 	\
 	Write-Host 'Verifying install ("pypy --version") ...'; \
 	pypy --version; \
diff --git a/pypy_bookworm/Dockerfile b/pypy_bookworm/Dockerfile
index 93e5855..0df5ce8 100644
--- a/pypy_bookworm/Dockerfile
+++ b/pypy_bookworm/Dockerfile
@@ -22,24 +22,24 @@ ENV LANG C.UTF-8
 # ensure local pypy3 is preferred over distribution pypy3
 ENV PATH /opt/pypy/bin:$PATH
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux64.tar.bz2'; \
-			sha256='1410db3a7ae47603e2b7cbfd7ff6390b891b2e041c9eb4f1599f333677bccb3e'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux64.tar.bz2'; \
+			sha256='43f27af8ee6673932493f2696ab407321cbf79dbed94c03d8b39e603f8f5f765'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-aarch64.tar.bz2'; \
-			sha256='9347fe691a07fd9df17a1b186554fb9d9e6210178ffef19520a579ce1f9eb741'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-aarch64.tar.bz2'; \
+			sha256='6141f5c64dd96faf87e0a3f7f362521eadd26d5e3f851f90fc386a72208f8c18'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux32.tar.bz2'; \
-			sha256='d08ce15dd61e9ace5e010b047104f0137110a258184e448ea8239472f10cf99b'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux32.tar.bz2'; \
+			sha256='0c449ff3f20589e331f163807a0200a9bf5dd375c95f513a0f60bf7524795f02'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -59,29 +59,36 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy3' /usr/local/bin/; \
 	\
 # smoke test
 	pypy3 --version; \
 	\
+# rebuild several cffi modules for compatibility
 	cd /opt/pypy/lib/pypy3.11; \
-# on pypy3, rebuild gdbm ffi bits for compatibility with Debian Stretch+
 	if [ -f _gdbm_build.py ]; then \
 		pypy3 _gdbm_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 	if [ -f _ssl_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 		pypy3 _ssl_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/42
 	if [ -f _lzma_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/42
 		pypy3 _lzma_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/68
 	if [ -f _sqlite3_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/68
 		pypy3 _sqlite3_build.py; \
 	fi; \
-# TODO rebuild other cffi modules here too? (other _*_build.py files)
+	if [ -f _tkinter/tklib_build.py ]; then \
+		apt-get install -y --no-install-recommends tk-dev; \
+		pypy3 _tkinter/tklib_build.py; \
+	fi; \
+# TODO rebuild other cffi modules here too? (other _*_build.py files; see https://github.com/pypy/pypy/blob/0f013f041fff7fb9a23b22dae8437e82beb6a279/lib_pypy/pypy_tools/build_cffi_imports.py#L25-L40)
 	\
 	apt-mark auto '.*' > /dev/null; \
 	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
diff --git a/pypy_slim-bookworm/Dockerfile b/pypy_slim-bookworm/Dockerfile
index 27b58d2..4aba429 100644
--- a/pypy_slim-bookworm/Dockerfile
+++ b/pypy_slim-bookworm/Dockerfile
@@ -18,24 +18,24 @@ ENV LANG C.UTF-8
 # ensure local pypy3 is preferred over distribution pypy3
 ENV PATH /opt/pypy/bin:$PATH
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux64.tar.bz2'; \
-			sha256='1410db3a7ae47603e2b7cbfd7ff6390b891b2e041c9eb4f1599f333677bccb3e'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux64.tar.bz2'; \
+			sha256='43f27af8ee6673932493f2696ab407321cbf79dbed94c03d8b39e603f8f5f765'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-aarch64.tar.bz2'; \
-			sha256='9347fe691a07fd9df17a1b186554fb9d9e6210178ffef19520a579ce1f9eb741'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-aarch64.tar.bz2'; \
+			sha256='6141f5c64dd96faf87e0a3f7f362521eadd26d5e3f851f90fc386a72208f8c18'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux32.tar.bz2'; \
-			sha256='d08ce15dd61e9ace5e010b047104f0137110a258184e448ea8239472f10cf99b'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux32.tar.bz2'; \
+			sha256='0c449ff3f20589e331f163807a0200a9bf5dd375c95f513a0f60bf7524795f02'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -57,33 +57,40 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy3' /usr/local/bin/; \
 	\
 # smoke test
 	pypy3 --version; \
 	\
+# rebuild several cffi modules for compatibility
 	cd /opt/pypy/lib/pypy3.11; \
-# on pypy3, rebuild gdbm ffi bits for compatibility with Debian Stretch+
 	if [ -f _gdbm_build.py ]; then \
 		apt-get install -y --no-install-recommends gcc libc6-dev libgdbm-dev; \
 		pypy3 _gdbm_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 	if [ -f _ssl_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 		apt-get install -y --no-install-recommends gcc libc6-dev libssl-dev; \
 		pypy3 _ssl_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/42
 	if [ -f _lzma_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/42
 		apt-get install -y --no-install-recommends gcc libc6-dev liblzma-dev; \
 		pypy3 _lzma_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/68
 	if [ -f _sqlite3_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/68
 		apt-get install -y --no-install-recommends gcc libc6-dev libsqlite3-dev; \
 		pypy3 _sqlite3_build.py; \
 	fi; \
-# TODO rebuild other cffi modules here too? (other _*_build.py files)
+	if [ -f _tkinter/tklib_build.py ]; then \
+		apt-get install -y --no-install-recommends gcc libc6-dev tk-dev; \
+		pypy3 _tkinter/tklib_build.py; \
+	fi; \
+# TODO rebuild other cffi modules here too? (other _*_build.py files; see https://github.com/pypy/pypy/blob/0f013f041fff7fb9a23b22dae8437e82beb6a279/lib_pypy/pypy_tools/build_cffi_imports.py#L25-L40)
 	\
 	apt-mark auto '.*' > /dev/null; \
 	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
diff --git a/pypy_slim-trixie/Dockerfile b/pypy_slim-trixie/Dockerfile
index c906c6d..dc89118 100644
--- a/pypy_slim-trixie/Dockerfile
+++ b/pypy_slim-trixie/Dockerfile
@@ -18,24 +18,24 @@ ENV LANG C.UTF-8
 # ensure local pypy3 is preferred over distribution pypy3
 ENV PATH /opt/pypy/bin:$PATH
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux64.tar.bz2'; \
-			sha256='1410db3a7ae47603e2b7cbfd7ff6390b891b2e041c9eb4f1599f333677bccb3e'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux64.tar.bz2'; \
+			sha256='43f27af8ee6673932493f2696ab407321cbf79dbed94c03d8b39e603f8f5f765'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-aarch64.tar.bz2'; \
-			sha256='9347fe691a07fd9df17a1b186554fb9d9e6210178ffef19520a579ce1f9eb741'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-aarch64.tar.bz2'; \
+			sha256='6141f5c64dd96faf87e0a3f7f362521eadd26d5e3f851f90fc386a72208f8c18'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux32.tar.bz2'; \
-			sha256='d08ce15dd61e9ace5e010b047104f0137110a258184e448ea8239472f10cf99b'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux32.tar.bz2'; \
+			sha256='0c449ff3f20589e331f163807a0200a9bf5dd375c95f513a0f60bf7524795f02'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -57,33 +57,40 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy3' /usr/local/bin/; \
 	\
 # smoke test
 	pypy3 --version; \
 	\
+# rebuild several cffi modules for compatibility
 	cd /opt/pypy/lib/pypy3.11; \
-# on pypy3, rebuild gdbm ffi bits for compatibility with Debian Stretch+
 	if [ -f _gdbm_build.py ]; then \
 		apt-get install -y --no-install-recommends gcc libc6-dev libgdbm-dev; \
 		pypy3 _gdbm_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 	if [ -f _ssl_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 		apt-get install -y --no-install-recommends gcc libc6-dev libssl-dev; \
 		pypy3 _ssl_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/42
 	if [ -f _lzma_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/42
 		apt-get install -y --no-install-recommends gcc libc6-dev liblzma-dev; \
 		pypy3 _lzma_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/68
 	if [ -f _sqlite3_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/68
 		apt-get install -y --no-install-recommends gcc libc6-dev libsqlite3-dev; \
 		pypy3 _sqlite3_build.py; \
 	fi; \
-# TODO rebuild other cffi modules here too? (other _*_build.py files)
+	if [ -f _tkinter/tklib_build.py ]; then \
+		apt-get install -y --no-install-recommends gcc libc6-dev tk-dev; \
+		pypy3 _tkinter/tklib_build.py; \
+	fi; \
+# TODO rebuild other cffi modules here too? (other _*_build.py files; see https://github.com/pypy/pypy/blob/0f013f041fff7fb9a23b22dae8437e82beb6a279/lib_pypy/pypy_tools/build_cffi_imports.py#L25-L40)
 	\
 	apt-mark auto '.*' > /dev/null; \
 	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
diff --git a/pypy_trixie/Dockerfile b/pypy_trixie/Dockerfile
index c5363d1..2c8768a 100644
--- a/pypy_trixie/Dockerfile
+++ b/pypy_trixie/Dockerfile
@@ -22,24 +22,24 @@ ENV LANG C.UTF-8
 # ensure local pypy3 is preferred over distribution pypy3
 ENV PATH /opt/pypy/bin:$PATH
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
 RUN set -eux; \
 	\
 	dpkgArch="$(dpkg --print-architecture)"; \
 	case "${dpkgArch##*-}" in \
 		'amd64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux64.tar.bz2'; \
-			sha256='1410db3a7ae47603e2b7cbfd7ff6390b891b2e041c9eb4f1599f333677bccb3e'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux64.tar.bz2'; \
+			sha256='43f27af8ee6673932493f2696ab407321cbf79dbed94c03d8b39e603f8f5f765'; \
 			;; \
 		'arm64') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-aarch64.tar.bz2'; \
-			sha256='9347fe691a07fd9df17a1b186554fb9d9e6210178ffef19520a579ce1f9eb741'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-aarch64.tar.bz2'; \
+			sha256='6141f5c64dd96faf87e0a3f7f362521eadd26d5e3f851f90fc386a72208f8c18'; \
 			;; \
 		'i386') \
-			url='https://downloads.python.org/pypy/pypy3.11-v7.3.20-linux32.tar.bz2'; \
-			sha256='d08ce15dd61e9ace5e010b047104f0137110a258184e448ea8239472f10cf99b'; \
+			url='https://downloads.python.org/pypy/pypy3.11-v7.3.21-linux32.tar.bz2'; \
+			sha256='0c449ff3f20589e331f163807a0200a9bf5dd375c95f513a0f60bf7524795f02'; \
 			;; \
 		*) echo >&2 "error: current architecture ($dpkgArch) does not have a corresponding PyPy $PYPY_VERSION binary release"; exit 1 ;; \
 	esac; \
@@ -59,29 +59,36 @@ RUN set -eux; \
 	find /opt/pypy/lib* -depth -type d -a \( -name test -o -name tests \) -exec rm -rf '{}' +; \
 	rm pypy.tar.bz2; \
 	\
+# delete a few (sometimes) problematic bundled libraries
+	rm -v /opt/pypy/lib/libtk*.so /opt/pypy/lib/libz.so*; \
+	\
 	ln -sv '/opt/pypy/bin/pypy3' /usr/local/bin/; \
 	\
 # smoke test
 	pypy3 --version; \
 	\
+# rebuild several cffi modules for compatibility
 	cd /opt/pypy/lib/pypy3.11; \
-# on pypy3, rebuild gdbm ffi bits for compatibility with Debian Stretch+
 	if [ -f _gdbm_build.py ]; then \
 		pypy3 _gdbm_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 	if [ -f _ssl_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/24#issuecomment-409408657
 		pypy3 _ssl_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/42
 	if [ -f _lzma_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/42
 		pypy3 _lzma_build.py; \
 	fi; \
-# https://github.com/docker-library/pypy/issues/68
 	if [ -f _sqlite3_build.py ]; then \
+# https://github.com/docker-library/pypy/issues/68
 		pypy3 _sqlite3_build.py; \
 	fi; \
-# TODO rebuild other cffi modules here too? (other _*_build.py files)
+	if [ -f _tkinter/tklib_build.py ]; then \
+		apt-get install -y --no-install-recommends tk-dev; \
+		pypy3 _tkinter/tklib_build.py; \
+	fi; \
+# TODO rebuild other cffi modules here too? (other _*_build.py files; see https://github.com/pypy/pypy/blob/0f013f041fff7fb9a23b22dae8437e82beb6a279/lib_pypy/pypy_tools/build_cffi_imports.py#L25-L40)
 	\
 	apt-mark auto '.*' > /dev/null; \
 	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
diff --git a/pypy_windowsservercore-ltsc2022/Dockerfile b/pypy_windowsservercore-ltsc2022/Dockerfile
index 2c7937d..2450854 100644
--- a/pypy_windowsservercore-ltsc2022/Dockerfile
+++ b/pypy_windowsservercore-ltsc2022/Dockerfile
@@ -44,14 +44,14 @@ RUN $url = 'https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81C
 	\
 	Write-Host 'Complete.'
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
-RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.20-win64.zip'; \
+RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.21-win64.zip'; \
 	Write-Host ('Downloading {0} ...' -f $url); \
 	Invoke-WebRequest -Uri $url -OutFile 'pypy.zip'; \
 	\
-	$sha256 = 'a8d36f6ceb1d9be6cf24a73b0ba103e7567e396b2f7a33426b05e4a06330755b'; \
+	$sha256 = 'a1a2b069533b838f465157025e58933199f311f5f3f58549ccaf9872ee90fa53'; \
 	Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \
 	if ((Get-FileHash pypy.zip -Algorithm sha256).Hash -ne $sha256) { \
 		Write-Host 'FAILED!'; \
@@ -65,7 +65,7 @@ RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.20-win64.zip'; \
 	Remove-Item pypy.zip -Force; \
 	\
 	Write-Host 'Renaming ...'; \
-	Rename-Item -Path C:\pypy3.11-v7.3.20-win64 -NewName C:\pypy; \
+	Rename-Item -Path C:\pypy3.11-v7.3.21-win64 -NewName C:\pypy; \
 	\
 	Write-Host 'Verifying install ("pypy --version") ...'; \
 	pypy --version; \
diff --git a/pypy_windowsservercore-ltsc2025/Dockerfile b/pypy_windowsservercore-ltsc2025/Dockerfile
index 244e56f..2945e88 100644
--- a/pypy_windowsservercore-ltsc2025/Dockerfile
+++ b/pypy_windowsservercore-ltsc2025/Dockerfile
@@ -44,14 +44,14 @@ RUN $url = 'https://download.microsoft.com/download/6/A/A/6AA4EDFF-645B-48C5-81C
 	\
 	Write-Host 'Complete.'
 
-# Python 3.11.13
-ENV PYPY_VERSION 7.3.20
+# Python 3.11.15
+ENV PYPY_VERSION 7.3.21
 
-RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.20-win64.zip'; \
+RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.21-win64.zip'; \
 	Write-Host ('Downloading {0} ...' -f $url); \
 	Invoke-WebRequest -Uri $url -OutFile 'pypy.zip'; \
 	\
-	$sha256 = 'a8d36f6ceb1d9be6cf24a73b0ba103e7567e396b2f7a33426b05e4a06330755b'; \
+	$sha256 = 'a1a2b069533b838f465157025e58933199f311f5f3f58549ccaf9872ee90fa53'; \
 	Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \
 	if ((Get-FileHash pypy.zip -Algorithm sha256).Hash -ne $sha256) { \
 		Write-Host 'FAILED!'; \
@@ -65,7 +65,7 @@ RUN $url = 'https://downloads.python.org/pypy/pypy3.11-v7.3.20-win64.zip'; \
 	Remove-Item pypy.zip -Force; \
 	\
 	Write-Host 'Renaming ...'; \
-	Rename-Item -Path C:\pypy3.11-v7.3.20-win64 -NewName C:\pypy; \
+	Rename-Item -Path C:\pypy3.11-v7.3.21-win64 -NewName C:\pypy; \
 	\
 	Write-Host 'Verifying install ("pypy --version") ...'; \
 	pypy --version; \

Relevant Maintainers:

@tianon tianon merged commit f52e253 into docker-library:master Mar 16, 2026
30 of 31 checks passed
@tianon tianon deleted the pypy branch March 16, 2026 18:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants