summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorJoshua Watt <jpewhacker@gmail.com>2019-06-21 08:35:54 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-06-24 10:36:28 +0100
commit10ce84dd195cb1f2bfcc48dc07ed1019e30ec68e (patch)
treeffe890a2a8d020b1065deb3b332d3dbba4132ef0 /meta
parentbb2b83a6ac0c81780b688db9e737397b88517005 (diff)
downloadpoky-10ce84dd195cb1f2bfcc48dc07ed1019e30ec68e.tar.gz
python3: Reformat sysconfig
Reformats the sysconfig file when packaging. This file is output by using the python pprint function. This function will wrap long lines at 80 characters by default, and will even split strings at whitespace boundaries to do so, e.g.: 'A': 'B is really' ' long' This causes a problem for reproducibility however because there might be lines of differing lengths depending on the build path. These non-reproducible paths are removed, but their effect on string wrapping from pprint remains. To correct this, reformat the entire sysconfig file by re-printing using pprint with an (effectively) unlimited line length. (From OE-Core rev: ec8a2b310d5f0b42f60898a5c6d239949842b34c) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py21
-rw-r--r--meta/recipes-devtools/python/python3_3.7.3.bb7
2 files changed, 28 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
new file mode 100644
index 0000000000..c4164313e8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
@@ -0,0 +1,21 @@
1#! /usr/bin/env python3
2#
3# SPDX-License-Identifier: MIT
4#
5# Copyright 2019 by Garmin Ltd. or its subsidiaries
6#
7# A script to reformat python sysconfig
8
9import sys
10import pprint
11l = {}
12g = {}
13with open(sys.argv[1], 'r') as f:
14 exec(f.read(), g, l)
15
16with open(sys.argv[1], 'w') as f:
17 for k in sorted(l.keys()):
18 f.write('%s = ' % k)
19 pprint.pprint(l[k], stream=f, width=sys.maxsize)
20 f.write('\n')
21
diff --git a/meta/recipes-devtools/python/python3_3.7.3.bb b/meta/recipes-devtools/python/python3_3.7.3.bb
index 8e77dbe959..3409d94ba0 100644
--- a/meta/recipes-devtools/python/python3_3.7.3.bb
+++ b/meta/recipes-devtools/python/python3_3.7.3.bb
@@ -25,6 +25,7 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
25 file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \ 25 file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
26 file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \ 26 file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
27 file://crosspythonpath.patch \ 27 file://crosspythonpath.patch \
28 file://reformat_sysconfig.py \
28 " 29 "
29 30
30SRC_URI_append_class-native = " \ 31SRC_URI_append_class-native = " \
@@ -165,6 +166,12 @@ py_package_preprocess () {
165 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \ 166 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
166 ${PKGD}/${bindir}/python${PYTHON_BINABI}-config 167 ${PKGD}/${bindir}/python${PYTHON_BINABI}-config
167 168
169 # Reformat _sysconfigdata after modifying it so that it remains
170 # reproducible
171 for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
172 python3 ${WORKDIR}/reformat_sysconfig.py $c
173 done
174
168 # Recompile _sysconfigdata after modifying it 175 # Recompile _sysconfigdata after modifying it
169 cd ${PKGD} 176 cd ${PKGD}
170 sysconfigfile=`find . -name _sysconfigdata_*.py` 177 sysconfigfile=`find . -name _sysconfigdata_*.py`