]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-34022: Stop forcing of hash-based invalidation with SOURCE_DATE_EPOCH (GH-9607)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 28 Nov 2018 17:45:36 +0000 (09:45 -0800)
committerGitHub <noreply@github.com>
Wed, 28 Nov 2018 17:45:36 +0000 (09:45 -0800)
commit24b51b1a4919e310d338629cc60371387f475a32
tree3ef588788db8cd82c15559d5032ff73c8612556b
parentf71a5922916abd6cc7bf7d99ed4715b6e96e5981
bpo-34022: Stop forcing of hash-based invalidation with SOURCE_DATE_EPOCH (GH-9607)

Unconditional forcing of ``CHECKED_HASH`` invalidation was introduced in
3.7.0 in bpo-29708.  The change is bad, as it unconditionally overrides
*invalidation_mode*, even if it was passed as an explicit argument to
``py_compile.compile()`` or ``compileall``.  An environment variable
should *never* override an explicit argument to a library function.
That change leads to multiple test failures if the ``SOURCE_DATE_EPOCH``
environment variable is set.

This changes ``py_compile.compile()`` to only look at
``SOURCE_DATE_EPOCH`` if no explicit *invalidation_mode* was specified.
I also made various relevant tests run with explicit control over the
value of ``SOURCE_DATE_EPOCH``.

While looking at this, I noticed that ``zipimport`` does not work
with hash-based .pycs _at all_, though I left the fixes for
subsequent commits.
(cherry picked from commit a6b3ec5b6d4f6387820fccc570eea08b9615620d)

Co-authored-by: Elvis Pranskevichus <elvis@magic.io>
Doc/library/compileall.rst
Doc/library/py_compile.rst
Lib/compileall.py
Lib/py_compile.py
Lib/test/test_compileall.py
Lib/test/test_importlib/source/test_file_loader.py
Lib/test/test_py_compile.py
Misc/NEWS.d/next/Library/2018-09-27-13-14-15.bpo-34022.E2cl0r.rst [new file with mode: 0644]