https://github.com/python/cpython/commit/7621bbd828bb42e3b54aae45bd33563cfa9e5ccb
commit: 7621bbd828bb42e3b54aae45bd33563cfa9e5ccb
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: savannahostrowski <[email protected]>
date: 2025-12-09T18:50:53Z
summary:

[3.14] gh-142454: Make the JIT digest more deterministic by sorting the files 
in Tools/jit (GH-142455) (#142485)

gh-142454: Make the JIT digest more deterministic by sorting the files in 
Tools/jit (GH-142455)
(cherry picked from commit bcf90de8ba2ea087540a5f632656ef880ee46b5c)

Co-authored-by: Miro HronĨok <[email protected]>
Co-authored-by: Ken Jin <[email protected]>

files:
A Misc/NEWS.d/next/Build/2025-12-09-13-33-46.gh-issue-142454.cqUxzQ.rst
M Tools/jit/_targets.py

diff --git 
a/Misc/NEWS.d/next/Build/2025-12-09-13-33-46.gh-issue-142454.cqUxzQ.rst 
b/Misc/NEWS.d/next/Build/2025-12-09-13-33-46.gh-issue-142454.cqUxzQ.rst
new file mode 100644
index 00000000000000..4de16866f28851
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2025-12-09-13-33-46.gh-issue-142454.cqUxzQ.rst
@@ -0,0 +1,4 @@
+When calculating the digest of the JIT stencils input, sort the hashed files
+by filenames before adding their content to the hasher. This ensures
+deterministic hash input and hence deterministic hash, independent on
+filesystem order.
diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py
index d7c9aed1191c10..f1085cc9bf081d 100644
--- a/Tools/jit/_targets.py
+++ b/Tools/jit/_targets.py
@@ -72,7 +72,7 @@ def _compute_digest(self) -> str:
             # Exclude cache files from digest computation to ensure 
reproducible builds.
             if dirpath.endswith("__pycache__"):
                 continue
-            for filename in filenames:
+            for filename in sorted(filenames):
                 hasher.update(pathlib.Path(dirpath, filename).read_bytes())
         return hasher.hexdigest()
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to