new file mode 100644
@@ -0,0 +1,15 @@
+Index: Python-3.10.0/Makefile.pre.in
+===================================================================
+--- Python-3.10.0.orig/Makefile.pre.in
++++ Python-3.10.0/Makefile.pre.in
+@@ -791,8 +791,8 @@ Modules/getbuildinfo.o: $(PARSER_OBJS) \
+
+ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
+ $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
+- -DPREFIX='"$(prefix)"' \
+- -DEXEC_PREFIX='"$(exec_prefix)"' \
++ -DPREFIX='"/non/existent"' \
++ -DEXEC_PREFIX='"/non/existent"' \
+ -DVERSION='"$(VERSION)"' \
+ -DVPATH='"$(VPATH)"' \
+ -o $@ $(srcdir)/Modules/getpath.c
@@ -40,6 +40,7 @@ SRC_URI:append:class-native = " \
file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
file://12-distutils-prefix-is-inside-staging-area.patch \
file://0001-Don-t-search-system-for-headers-libraries.patch \
+ file://determinism.patch \
"
SRC_URI[sha256sum] = "5a99f8e7a6a11a7b98b4e75e0d1303d3832cada5534068f69c7b6222a7b1b002"
@@ -79,6 +80,8 @@ DEPENDS:append:class-nativesdk = " python3-native"
# force to use the mutex+cond implementation (https://bugs.python.org/issue41710)
CFLAGS += "-DHAVE_BROKEN_POSIX_SEMAPHORES"
+CFLAGS:append:class-native = " -ffile-prefix-map=${WORKDIR}=/usr/src"
+
EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
@@ -94,6 +97,7 @@ CACHED_CONFIGUREVARS = " \
ac_cv_file__dev_ptc=no \
ac_cv_working_tzset=yes \
"
+CACHED_CONFIGUREVARS:append:class-native = " ac_cv_prog_cc_g=no"
# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
PACKAGECONFIG:class-target ??= "readline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
@@ -180,6 +184,8 @@ do_install:append() {
# More info: http://benno.id.au/blog/2013/01/15/python-determinism
rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
+
+ find ${D}${libdir}/python${PYTHON_MAJMIN} -name __pycache__ | xargs -n1 rm -r
}
do_install:append:class-nativesdk () {
@@ -398,3 +404,5 @@ SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
py3_sysroot_cleanup () {
rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
}
+
+EXTRA_STAGING_FIXMES:append:class-native = " RPATH_PADDING WORKDIR"
Lots of hacks to get python reproduce in different build paths: * Avoid encoding build-specific paths in the resulting binaries * Build without debug information * Remove __pycache__/ since the cached files seem to depend on the run-paths Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com> --- .../python/python3/determinism.patch | 15 +++++++++++++++ meta/recipes-devtools/python/python3_3.10.0.bb | 8 ++++++++ 2 files changed, 23 insertions(+) create mode 100644 meta/recipes-devtools/python/python3/determinism.patch