From: alm Date: Sat, 30 Aug 2025 21:21:25 +0000 (+0300) Subject: gh-138061: Exclude __pycache__ directory from the computed digest in the JIT stencil... X-Git-Tag: v3.15.0a1~564 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d3d94e0ed715829d9bf93ef9c35e04832962f19f;p=thirdparty%2FPython%2Fcpython.git gh-138061: Exclude __pycache__ directory from the computed digest in the JIT stencils (#138131) Exclude the __pycache__ directory when generating the digest in the JIT stencils --- diff --git a/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst b/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst new file mode 100644 index 000000000000..7af79d0b87ef --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-08-27-09-52-45.gh-issue-138061.fMVS9w.rst @@ -0,0 +1 @@ +Ensure reproducible builds by making JIT stencil header generation deterministic. diff --git a/Tools/jit/_targets.py b/Tools/jit/_targets.py index 7e261c9f8e29..c3ce24643fd4 100644 --- a/Tools/jit/_targets.py +++ b/Tools/jit/_targets.py @@ -71,6 +71,9 @@ class _Target(typing.Generic[_S, _R]): hasher.update(PYTHON_EXECUTOR_CASES_C_H.read_bytes()) hasher.update((self.pyconfig_dir / "pyconfig.h").read_bytes()) for dirpath, _, filenames in sorted(os.walk(TOOLS_JIT)): + # Exclude cache files from digest computation to ensure reproducible builds. + if dirpath.endswith("__pycache__"): + continue for filename in filenames: hasher.update(pathlib.Path(dirpath, filename).read_bytes()) return hasher.hexdigest()