mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
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.
This commit is contained in:
parent
6f6eb35f9b
commit
ccbe5818af
4 changed files with 22 additions and 1 deletions
|
@ -98,6 +98,18 @@ class PyCompileTests(unittest.TestCase):
|
|||
self.assertFalse(os.path.exists(
|
||||
importlib.util.cache_from_source(bad_coding)))
|
||||
|
||||
def test_source_date_epoch(self):
|
||||
testtime = 123456789
|
||||
with support.EnvironmentVarGuard() as env:
|
||||
env["SOURCE_DATE_EPOCH"] = str(testtime)
|
||||
py_compile.compile(self.source_path, self.pyc_path)
|
||||
self.assertTrue(os.path.exists(self.pyc_path))
|
||||
self.assertFalse(os.path.exists(self.cache_path))
|
||||
with open(self.pyc_path, 'rb') as fp:
|
||||
flags = importlib._bootstrap_external._classify_pyc(
|
||||
fp.read(), 'test', {})
|
||||
self.assertEqual(flags, 0b11)
|
||||
|
||||
@unittest.skipIf(sys.flags.optimize > 0, 'test does not work with -O')
|
||||
def test_double_dot_no_clobber(self):
|
||||
# http://bugs.python.org/issue22966
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue