| From 08f5d27308092c951e08729552fe21f762f6c153 Mon Sep 17 00:00:00 2001 |
| From: Jack Rosenthal <jrosenth@chromium.org> |
| Date: Fri, 13 Oct 2023 10:41:35 -0600 |
| Subject: [PATCH] [CrOS] Default hash-based invalidation mode |
| |
| Timestamp invalidation mode results in non-reproducible builds. |
| Default to hash-based invalidation mode, and yell at those who try to |
| do otherwise. |
| |
| BUG=b:305052110 |
| --- |
| Lib/py_compile.py | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| diff --git a/Lib/py_compile.py b/Lib/py_compile.py |
| index a81f493731..feb1362edb 100644 |
| --- a/Lib/py_compile.py |
| +++ b/Lib/py_compile.py |
| @@ -70,10 +70,7 @@ class PycInvalidationMode(enum.Enum): |
| |
| |
| def _get_default_invalidation_mode(): |
| - if os.environ.get('SOURCE_DATE_EPOCH'): |
| - return PycInvalidationMode.CHECKED_HASH |
| - else: |
| - return PycInvalidationMode.TIMESTAMP |
| + return PycInvalidationMode.CHECKED_HASH |
| |
| |
| def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1, |
| @@ -123,6 +120,11 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1, |
| """ |
| if invalidation_mode is None: |
| invalidation_mode = _get_default_invalidation_mode() |
| + if invalidation_mode == PycInvalidationMode.TIMESTAMP: |
| + raise ValueError( |
| + "Do not use TIMESTAMP invalidation mode for CrOS: it results in " |
| + "non-reproducible builds." |
| + ) |
| if cfile is None: |
| if optimize >= 0: |
| optimization = optimize if optimize >= 1 else '' |
| -- |
| 2.42.0.655.g421f12c284-goog |
| |