summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJuro Bystricky <juro.bystricky@intel.com>2017-08-19 10:21:57 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-08-23 12:06:51 +0100
commit07348bb76f6617477e164db9245a1a98f1a18569 (patch)
treef61d516f8d9222c636a74acbf9f523623a346636 /meta
parent924b5365297f679a2f45677f191e696cd2b2c7c3 (diff)
downloadpoky-07348bb76f6617477e164db9245a1a98f1a18569.tar.gz
python2.7: improve reproducibility
The compiled .pyc files contain time stamp corresponding to the compile time. This prevents binary reproducibility. This patch allows to achieve binary reproducibility by overriding the build time stamp by the value exported via SOURCE_DATE_EPOCH. Patch by Bernhard M. Wiedemann, backported from https://github.com/python/cpython/pull/296 [YOCTO#11241] (From OE-Core rev: 2a044f1e4f5c63e11e631b31f741c7aabfa6f601) Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch34
-rw-r--r--meta/recipes-devtools/python/python_2.7.13.bb1
2 files changed, 35 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch b/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch
new file mode 100644
index 0000000000..12651798ee
--- /dev/null
+++ b/meta/recipes-devtools/python/python/support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch
@@ -0,0 +1,34 @@
1The compiled .pyc files contain time stamp corresponding to the compile time.
2This prevents binary reproducibility. This patch allows to achieve binary
3reproducibility by overriding the build time stamp by the value
4exported via SOURCE_DATE_EPOCH.
5
6Patch by Bernhard M. Wiedemann
7
8Upstream-Status: Backport
9
10Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
11
12Fri Feb 24 17:08:25 UTC 2017 - bwiedemann@suse.com
13
14- Add reproducible.patch to allow reproducible builds of various
15 python packages like python-amqp
16 Upstream: https://github.com/python/cpython/pull/296
17
18
19@@ -0,0 +1,15 @@
20Index: Python-2.7.13/Lib/py_compile.py
21===================================================================
22--- Python-2.7.13.orig/Lib/py_compile.py
23+++ Python-2.7.13/Lib/py_compile.py
24@@ -108,6 +108,10 @@ def compile(file, cfile=None, dfile=None
25 timestamp = long(os.fstat(f.fileno()).st_mtime)
26 except AttributeError:
27 timestamp = long(os.stat(file).st_mtime)
28+ sde = os.environ.get('SOURCE_DATE_EPOCH')
29+ if sde and timestamp > int(sde):
30+ timestamp = int(sde)
31+ os.utime(file, (timestamp, timestamp))
32 codestring = f.read()
33 try:
34 codeobject = __builtin__.compile(codestring, dfile or file,'exec')
diff --git a/meta/recipes-devtools/python/python_2.7.13.bb b/meta/recipes-devtools/python/python_2.7.13.bb
index 98bc8ada8b..4d73cd25c8 100644
--- a/meta/recipes-devtools/python/python_2.7.13.bb
+++ b/meta/recipes-devtools/python/python_2.7.13.bb
@@ -28,6 +28,7 @@ SRC_URI += "\
28 file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \ 28 file://add-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
29 file://Don-t-use-getentropy-on-Linux.patch \ 29 file://Don-t-use-getentropy-on-Linux.patch \
30 file://pass-missing-libraries-to-Extension-for-mul.patch \ 30 file://pass-missing-libraries-to-Extension-for-mul.patch \
31 file://support_SOURCE_DATE_EPOCH_in_py_compile_2.7.patch \
31" 32"
32 33
33S = "${WORKDIR}/Python-${PV}" 34S = "${WORKDIR}/Python-${PV}"