summaryrefslogtreecommitdiff
path: root/Lib/py_compile.py
diff options
context:
space:
mode:
authorBernhard M. Wiedemann <githubbmw@lsmod.de>2018-01-24 22:26:18 +0100
committerBrett Cannon <brettcannon@users.noreply.github.com>2018-01-24 13:26:18 -0800
commitccbe5818af20f8c12043f5c30c277a74714405e0 (patch)
tree5ca77fca24e3ec927647334dfb5e882560546039 /Lib/py_compile.py
parent6f6eb35f9bee18f54945f09664344f2d118ed89f (diff)
downloadcpython-git-ccbe5818af20f8c12043f5c30c277a74714405e0.tar.gz
bpo-29708: Setting SOURCE_DATE_EPOCH forces hash-based .pyc files (GH-5200)
To support reproducible builds, the setting of of SOURCE_DATE_EPOCH triggers the py_compile module -- and by extension, compileall -- to forcibly compile with hash-based .pyc files. This eliminates the possibility of timestamp-based .pyc files which vary between builds.
Diffstat (limited to 'Lib/py_compile.py')
-rw-r--r--Lib/py_compile.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
index a0f4defdce..16dc0a011f 100644
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -112,6 +112,8 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1,
the resulting file would be regular and thus not the same type of file as
it was previously.
"""
+ if os.environ.get('SOURCE_DATE_EPOCH'):
+ invalidation_mode = PycInvalidationMode.CHECKED_HASH
if cfile is None:
if optimize >= 0:
optimization = optimize if optimize >= 1 else ''