python,python3: add support for SOURCE_DATE_EPOCH var

See:
https://github.com/openwrt/packages/issues/5278

This should make Python & Python3 packages reproducible
when building.
In my local tests, I got the same sha256 for a sample
.pyc file, so likely this is the solution that should address
this.

Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
This commit is contained in:
Alexandru Ardelean
2017-12-19 22:29:52 +02:00
parent c4fa84cc21
commit 1b6dd4781f
4 changed files with 25 additions and 2 deletions

View File

@@ -0,0 +1,13 @@
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -137,8 +137,9 @@ def compile(file, cfile=None, dfile=None
except FileExistsError:
pass
source_stats = loader.path_stats(file)
+ mtime = int(os.getenv('SOURCE_DATE_EPOCH', source_stats['mtime']))
bytecode = importlib._bootstrap_external._code_to_bytecode(
- code, source_stats['mtime'], source_stats['size'])
+ code, mtime, source_stats['size'])
mode = importlib._bootstrap_external._calc_mode(file)
importlib._bootstrap_external._write_atomic(cfile, bytecode, mode)
return cfile