<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">That's something I can try to investigate.<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">Am 14.11.2018 um 11:47 schrieb Burton, Ross &lt;<a href="mailto:ross.burton@intel.com" class="">ross.burton@intel.com</a>&gt;:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Getting reports that this breaks cross builds, for example python3-dbus.<br class=""><br class=""><blockquote style="margin:0 0 0 40px;border:none;padding:0px" class="">tmp-glibc/work/cortexa7hf-neon-vfpv4-oe-linux-gnueabi/python3-dbus/1.2.6-r0/recipe-sysroot-native/usr/lib/<a href="http://libpython3.7m.so/" class="">libpython3.7m.so</a>: file not recognized: File format not recognized<br class="">With 3.5.6 the python3-dbus do_configure lokks like "-L/home/dev/medusa/build/yocto/build/tmp-glibc/work/cortexa7hf-neon-vfpv4-oe-linux-gnueabi/python3-dbus/1.2.6-r0/recipe-sysroot/usr/lib -lpython3.5m"<br class="">With the patch 3.7.1 from the ml, it looks like "L/home/dev/medusa-test/build/yocto/build/tmp-glibc/work/cortexa7hf-neon-vfpv4-oe-linux-gnueabi/python3-dbus/1.2.6-r0/recipe-sysroot-native/usr/lib -lpython3.7m"</blockquote><div class=""><br class=""></div>Looks like the cross/sysconfig/etc code regressed and it's picking up the native sysroot libraries for a cross build.<div class=""><br class=""></div><div class="">Ross<br class=""><br class=""><br class=""></div></div><br class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Fri, 2 Nov 2018 at 17:28, Jens Rehsack &lt;<a href="mailto:sno@netbsd.org" class="">sno@netbsd.org</a>&gt; wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Update python3 to recent 3.7.1 release.<br class="">
<br class="">
Details about new features and bug-fixes can be taken from<br class="">
* <a href="https://docs.python.org/3/whatsnew/3.7.html" rel="noreferrer" target="_blank" class="">https://docs.python.org/3/whatsnew/3.7.html</a><br class="">
* <a href="https://docs.python.org/3/whatsnew/3.6.html" rel="noreferrer" target="_blank" class="">https://docs.python.org/3/whatsnew/3.6.html</a><br class="">
<br class="">
Remove patches when they were fixed upstream and rebase the<br class="">
remaining ones. If necessary, the patches are adopted to<br class="">
keep the idea when upstream code was changed. Also remove<br class="">
backports from 3.6 and 3.7 into 3.5.6 codebase for TLS<br class="">
and multiprocessing.<br class="">
<br class="">
Open TODO: track patches in a -STABLE rebased git branch for<br class="">
easier rebasing or upstream submitting.<br class="">
<br class="">
Enhancement requests for Yocto project<br class="">
* <a href="https://bugzilla.yoctoproject.org/show_bug.cgi?id=12375" rel="noreferrer" target="_blank" class="">https://bugzilla.yoctoproject.org/show_bug.cgi?id=12375</a><br class="">
* <a href="https://bugzilla.yoctoproject.org/show_bug.cgi?id=12901" rel="noreferrer" target="_blank" class="">https://bugzilla.yoctoproject.org/show_bug.cgi?id=12901</a><br class="">
are solved by this.<br class="">
<br class="">
Rebased until e349b239c8833bcdad9b1ff1a0702ace2db71959<br class="">
<br class="">
Signed-off-by: Jens Rehsack &lt;<a href="mailto:sno@netbsd.org" target="_blank" class="">sno@netbsd.org</a>&gt;<br class="">
---<br class="">
&nbsp;meta/classes/python3-dir.bbclass&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp;6 +-<br class="">
&nbsp;.../python/<a href="http://python3-native_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.5.6.bb</a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 100 ------<br class="">
&nbsp;.../python/<a href="http://python3-native_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.7.1.bb</a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 73 ++++<br class="">
&nbsp;meta/recipes-devtools/python/python3.inc&nbsp; &nbsp; &nbsp; |&nbsp; 65 +++-<br class="">
&nbsp;...hell-version-of-python-config-that-w.patch |&nbsp; 21 +-<br class="">
&nbsp;..._sysconfigdata.py-to-initialize-dist.patch |&nbsp; 66 ----<br class="">
&nbsp;...ontext-has-improved-default-settings.patch | 272 ---------------<br class="">
&nbsp;...d-target-to-split-profile-generation.patch |&nbsp; 40 ---<br class="">
&nbsp;...S-1.3-cipher-suites-and-OP_NO_TLSv1_.patch | 227 ------------<br class="">
&nbsp;...for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch | 173 ---------<br class="">
&nbsp;....3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch | 110 ------<br class="">
&nbsp;...ALPN-changes-for-OpenSSL-1.1.0f-2305.patch |&nbsp; 68 ----<br class="">
&nbsp;.../python3/03-fix-tkinter-detection.patch&nbsp; &nbsp; |&nbsp; 12 +-<br class="">
&nbsp;.../python3/030-fixup-include-dirs.patch&nbsp; &nbsp; &nbsp; |&nbsp; &nbsp;9 -<br class="">
&nbsp;.../080-distutils-dont_adjust_files.patch&nbsp; &nbsp; &nbsp;|&nbsp; &nbsp;4 +-<br class="">
&nbsp;.../python/python3/150-fix-setupterm.patch&nbsp; &nbsp; |&nbsp; 17 -<br class="">
&nbsp;...GS-for-extensions-when-cross-compili.patch |&nbsp; 53 ++-<br class="">
&nbsp;.../python3/avoid-ncursesw-include-path.patch |&nbsp; 18 +-<br class="">
&nbsp;.../python3/avoid_warning_about_tkinter.patch |&nbsp; 18 +-<br class="">
&nbsp;.../python3/configure.ac-fix-LIBPL.patch&nbsp; &nbsp; &nbsp; |&nbsp; 21 +-<br class="">
&nbsp;.../python/python3/float-endian.patch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; &nbsp;9 +-<br class="">
&nbsp;.../python/python3/ftplib.patch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; 60 ----<br class="">
&nbsp;...ssing-libraries-to-Extension-for-mul.patch |&nbsp; 26 +-<br class="">
&nbsp;.../python/python3/python-3.3-multilib.patch&nbsp; | 241 +++++++------<br class="">
&nbsp;.../python/python3/python3-manifest.json&nbsp; &nbsp; &nbsp; |&nbsp; 36 +-<br class="">
&nbsp;...CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch |&nbsp; 17 +-<br class="">
&nbsp;.../python/python3/regen-all.patch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 25 --<br class="">
&nbsp;.../python/python3/signal.patch&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; 56 ---<br class="">
&nbsp;...port_SOURCE_DATE_EPOCH_in_py_compile.patch |&nbsp; 97 ------<br class="">
&nbsp;.../python3/sysroot-include-headers.patch&nbsp; &nbsp; &nbsp;|&nbsp; 23 +-<br class="">
&nbsp;.../python3/uuid_when_cross_compiling.patch&nbsp; &nbsp;|&nbsp; 24 ++<br class="">
&nbsp;meta/recipes-devtools/python/<a href="http://python3_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3_3.5.6.bb</a> | 329 ------------------<br class="">
&nbsp;meta/recipes-devtools/python/<a href="http://python3_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3_3.7.1.bb</a> | 298 ++++++++++++++++<br class="">
&nbsp;33 files changed, 704 insertions(+), 1910 deletions(-)<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/<a href="http://python3-native_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.5.6.bb</a><br class="">
&nbsp;create mode 100644 meta/recipes-devtools/python/<a href="http://python3-native_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.7.1.bb</a><br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/150-fix-setupterm.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/ftplib.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/regen-all.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/signal.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/python3/support_SOURCE_DATE_EPOCH_in_py_compile.patch<br class="">
&nbsp;create mode 100644 meta/recipes-devtools/python/python3/uuid_when_cross_compiling.patch<br class="">
&nbsp;delete mode 100644 meta/recipes-devtools/python/<a href="http://python3_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3_3.5.6.bb</a><br class="">
&nbsp;create mode 100644 meta/recipes-devtools/python/<a href="http://python3_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3_3.7.1.bb</a><br class="">
<br class="">
diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass<br class="">
index 06bb046d9c..ad7ea8dd9a 100644<br class="">
--- a/meta/classes/python3-dir.bbclass<br class="">
+++ b/meta/classes/python3-dir.bbclass<br class="">
@@ -1,4 +1,8 @@<br class="">
-PYTHON_BASEVERSION = "3.5"<br class="">
+PYTHON_BASEVERSION = "3.7"<br class="">
+# [d][m][u]<br class="">
+# d: py_debug<br class="">
+# m: my_malloc<br class="">
+# u: wide-char unicode<br class="">
&nbsp;PYTHON_ABI = "m"<br class="">
&nbsp;PYTHON_DIR = "python${PYTHON_BASEVERSION}"<br class="">
&nbsp;PYTHON_PN = "python3"<br class="">
diff --git a/meta/recipes-devtools/python/<a href="http://python3-native_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.5.6.bb</a> b/meta/recipes-devtools/python/<a href="http://python3-native_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.5.6.bb</a><br class="">
deleted file mode 100644<br class="">
index d5953cf4bb..0000000000<br class="">
--- a/meta/recipes-devtools/python/<a href="http://python3-native_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.5.6.bb</a><br class="">
+++ /dev/null<br class="">
@@ -1,100 +0,0 @@<br class="">
-require recipes-devtools/python/python3.inc<br class="">
-<br class="">
-DISTRO_SRC_URI ?= "<a href="file://sitecustomize.py" class="">file://sitecustomize.py</a>"<br class="">
-DISTRO_SRC_URI_linuxstdbase = ""<br class="">
-SRC_URI = "<a href="http://www.python.org/ftp/python/$%7BPV%7D/Python-$%7BPV%7D.tar.xz" rel="noreferrer" target="_blank" class="">http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz</a> \<br class="">
-<a href="file://12-distutils-prefix-is-inside-staging-area.patch" class="">file://12-distutils-prefix-is-inside-staging-area.patch</a> \<br class="">
-<a href="file://python-config.patch" class="">file://python-config.patch</a> \<br class="">
-<a href="file://030-fixup-include-dirs.patch" class="">file://030-fixup-include-dirs.patch</a> \<br class="">
-<a href="file://070-dont-clean-ipkg-install.patch" class="">file://070-dont-clean-ipkg-install.patch</a> \<br class="">
-<a href="file://080-distutils-dont_adjust_files.patch" class="">file://080-distutils-dont_adjust_files.patch</a> \<br class="">
-<a href="file://130-readline-setup.patch" class="">file://130-readline-setup.patch</a> \<br class="">
-<a href="file://150-fix-setupterm.patch" class="">file://150-fix-setupterm.patch</a> \<br class="">
-<a href="file://python-3.3-multilib.patch" class="">file://python-3.3-multilib.patch</a> \<br class="">
-<a href="file://03-fix-tkinter-detection.patch" class="">file://03-fix-tkinter-detection.patch</a> \<br class="">
-<a href="file://avoid_warning_about_tkinter.patch" class="">file://avoid_warning_about_tkinter.patch</a> \<br class="">
-<a href="file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch" class="">file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch</a> \<br class="">
-<a href="file://sysroot-include-headers.patch" class="">file://sysroot-include-headers.patch</a> \<br class="">
-<a href="file://unixccompiler.patch" class="">file://unixccompiler.patch</a> \<br class="">
-${DISTRO_SRC_URI} \<br class="">
-<a href="file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch" class="">file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch</a> \<br class="">
-<a href="file://setup.py-check-cross_compiling-when-get-FLAGS.patch" class="">file://setup.py-check-cross_compiling-when-get-FLAGS.patch</a> \<br class="">
-<a href="file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch" class="">file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch</a> \<br class="">
-<a href="file://support_SOURCE_DATE_EPOCH_in_py_compile.patch" class="">file://support_SOURCE_DATE_EPOCH_in_py_compile.patch</a> \<br class="">
-<a href="file://regen-all.patch" class="">file://regen-all.patch</a> \<br class="">
-<a href="file://0001-Issue-28043-SSLContext-has-improved-default-settings.patch" class="">file://0001-Issue-28043-SSLContext-has-improved-default-settings.patch</a> \<br class="">
-<a href="file://0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch" class="">file://0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch</a> \<br class="">
-<a href="file://0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch" class="">file://0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch</a> \<br class="">
-<a href="file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch" class="">file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch</a> \<br class="">
-<a href="file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch" class="">file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch</a> \<br class="">
-"<br class="">
-<br class="">
-EXTRANATIVEPATH += "bzip2-native"<br class="">
-DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native sqlite3-native gdbm-native"<br class="">
-<br class="">
-inherit native<br class="">
-<br class="">
-EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --without-ensurepip"<br class="">
-<br class="">
-EXTRA_OEMAKE = '\<br class="">
-&nbsp; LIBC="" \<br class="">
-&nbsp; STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \<br class="">
-&nbsp; STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \<br class="">
-&nbsp; LIB=${baselib} \<br class="">
-&nbsp; ARCH=${TARGET_ARCH} \<br class="">
-'<br class="">
-<br class="">
-do_configure_append() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's,#define HAVE_GETRANDOM 1,/\* #undef HAVE_GETRANDOM \*/,' ${B}/pyconfig.h<br class="">
-}<br class="">
-<br class="">
-# Regenerate all of the generated files<br class="">
-# This ensures that pgen and friends get created during the compile phase<br class="">
-#<br class="">
-do_compile_prepend() {<br class="">
-&nbsp; &nbsp; # Assuming <a href="https://bugs.python.org/issue33080" rel="noreferrer" target="_blank" class="">https://bugs.python.org/issue33080</a> has been addressed in Makefile.<br class="">
-&nbsp; &nbsp; oe_runmake regen-all<br class="">
-}<br class="">
-<br class="">
-do_install() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/pkgconfig<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;oe_runmake 'DESTDIR=${D}' install<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if [ -e ${WORKDIR}/sitecustomize.py ]; then<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${bindir}/${PN}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0755 Parser/pgen ${D}${bindir}/${PN}<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# Make sure we use /usr/bin/env python<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;done<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; # Add a symlink to the native Python so that scripts can just invoke<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; # "nativepython" and get the right one without needing absolute paths<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; # (these often end up too long for the #! parser in the kernel as the<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; # buffer is 128 bytes long).<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; ln -s python3-native/python3 ${D}${bindir}/nativepython3<br class="">
-}<br class="">
-<br class="">
-python(){<br class="">
-<br class="">
-&nbsp; &nbsp; # Read JSON manifest<br class="">
-&nbsp; &nbsp; import json<br class="">
-&nbsp; &nbsp; pythondir = d.getVar('THISDIR',True)<br class="">
-&nbsp; &nbsp; with open(pythondir+'/python3/python3-manifest.json') as manifest_file:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; python_manifest=json.load(manifest_file)<br class="">
-<br class="">
-&nbsp; &nbsp; rprovides = d.getVar('RPROVIDES').split()<br class="">
-<br class="">
-&nbsp; &nbsp; # Hardcoded since it cant be python3-native-foo, should be python3-foo-native<br class="">
-&nbsp; &nbsp; pn = 'python3'<br class="">
-<br class="">
-&nbsp; &nbsp; for key in python_manifest:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; pypackage = pn + '-' + key + '-native'<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; if pypackage not in rprovides:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rprovides.append(pypackage)<br class="">
-<br class="">
-&nbsp; &nbsp; d.setVar('RPROVIDES', ' '.join(rprovides))<br class="">
-}<br class="">
diff --git a/meta/recipes-devtools/python/<a href="http://python3-native_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.7.1.bb</a> b/meta/recipes-devtools/python/<a href="http://python3-native_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.7.1.bb</a><br class="">
new file mode 100644<br class="">
index 0000000000..3ef9f0a5e3<br class="">
--- /dev/null<br class="">
+++ b/meta/recipes-devtools/python/<a href="http://python3-native_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3-native_3.7.1.bb</a><br class="">
@@ -0,0 +1,73 @@<br class="">
+require recipes-devtools/python/python3.inc<br class="">
+<br class="">
+SRC_URI += "\<br class="">
+&nbsp; &nbsp; <a href="file:///12-distutils-prefix-is-inside-staging-area.patch" class="">file://12-distutils-prefix-is-inside-staging-area.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///0001-Do-not-use-the-shell-version-of-python-config-that-w.patch" class="">file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch</a> \<br class="">
+"<br class="">
+<br class="">
+EXTRANATIVEPATH += "bzip2-native"<br class="">
+DEPENDS = "openssl-native libffi-native bzip2-replacement-native zlib-native \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;util-linux-native readline-native sqlite3-native gdbm-native \<br class="">
+"<br class="">
+<br class="">
+inherit native<br class="">
+<br class="">
+EXTRA_OECONF_append = " --bindir=${bindir}/${PN} --without-ensurepip"<br class="">
+<br class="">
+EXTRA_OEMAKE = '\<br class="">
+&nbsp; LIBC="" \<br class="">
+&nbsp; STAGING_LIBDIR=${STAGING_LIBDIR_NATIVE} \<br class="">
+&nbsp; STAGING_INCDIR=${STAGING_INCDIR_NATIVE} \<br class="">
+&nbsp; LIB=${baselib} \<br class="">
+&nbsp; ARCH=${TARGET_ARCH} \<br class="">
+'<br class="">
+<br class="">
+# Regenerate all of the generated files<br class="">
+# This ensures that pgen and friends get created during the compile phase<br class="">
+#<br class="">
+do_compile_prepend() {<br class="">
+&nbsp; &nbsp; # Assuming <a href="https://bugs.python.org/issue33080" rel="noreferrer" target="_blank" class="">https://bugs.python.org/issue33080</a> has been addressed in Makefile.<br class="">
+&nbsp; &nbsp; oe_runmake regen-all<br class="">
+}<br class="">
+<br class="">
+do_install() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/pkgconfig<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;oe_runmake 'DESTDIR=${D}' install<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if [ -e ${WORKDIR}/sitecustomize.py ]; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${bindir}/${PN}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0755 Parser/pgen ${D}${bindir}/${PN}<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# Make sure we use /usr/bin/env python<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;done<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; # Add a symlink to the native Python so that scripts can just invoke<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; # "nativepython" and get the right one without needing absolute paths<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; # (these often end up too long for the #! parser in the kernel as the<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; # buffer is 128 bytes long).<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; ln -s python3-native/python3 ${D}${bindir}/nativepython3<br class="">
+}<br class="">
+<br class="">
+python(){<br class="">
+<br class="">
+&nbsp; &nbsp; # Read JSON manifest<br class="">
+&nbsp; &nbsp; import json<br class="">
+&nbsp; &nbsp; pythondir = d.getVar('THISDIR',True)<br class="">
+&nbsp; &nbsp; with open(pythondir+'/python3/python3-manifest.json') as manifest_file:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; python_manifest=json.load(manifest_file)<br class="">
+<br class="">
+&nbsp; &nbsp; rprovides = d.getVar('RPROVIDES').split()<br class="">
+<br class="">
+&nbsp; &nbsp; # Hardcoded since it cant be python3-native-foo, should be python3-foo-native<br class="">
+&nbsp; &nbsp; pn = 'python3'<br class="">
+<br class="">
+&nbsp; &nbsp; for key in python_manifest:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; pypackage = pn + '-' + key + '-native'<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; if pypackage not in rprovides:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rprovides.append(pypackage)<br class="">
+<br class="">
+&nbsp; &nbsp; d.setVar('RPROVIDES', ' '.join(rprovides))<br class="">
+}<br class="">
diff --git a/meta/recipes-devtools/python/python3.inc b/meta/recipes-devtools/python/python3.inc<br class="">
index f565b3f171..7ad11d3d1d 100644<br class="">
--- a/meta/recipes-devtools/python/python3.inc<br class="">
+++ b/meta/recipes-devtools/python/python3.inc<br class="">
@@ -3,41 +3,74 @@ HOMEPAGE = "<a href="http://www.python.org/" rel="noreferrer" target="_blank" class="">http://www.python.org</a>"<br class="">
&nbsp;LICENSE = "PSFv2"<br class="">
&nbsp;SECTION = "devel/python"<br class="">
<br class="">
-# TODO Remove this when we upgrade<br class="">
-INC_PR = "r1"<br class="">
-PR = "${INC_PR}.0"<br class="">
+PYTHON_MAJMIN = "3.7"<br class="">
+DISTRO_SRC_URI ?= "<a href="file://sitecustomize.py" class="">file://sitecustomize.py</a>"<br class="">
+DISTRO_SRC_URI_linuxstdbase = ""<br class="">
+SRC_URI = "<a href="http://www.python.org/ftp/python/$%7BPV%7D/Python-$%7BPV%7D.tar.xz" rel="noreferrer" target="_blank" class="">http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///python-config.patch" class="">file://python-config.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///python-3.3-multilib.patch" class="">file://python-3.3-multilib.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///03-fix-tkinter-detection.patch" class="">file://03-fix-tkinter-detection.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///avoid_warning_about_tkinter.patch" class="">file://avoid_warning_about_tkinter.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///uuid_when_cross_compiling.patch" class="">file://uuid_when_cross_compiling.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///unixccompiler.patch" class="">file://unixccompiler.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///sysroot-include-headers.patch" class="">file://sysroot-include-headers.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///sysconfig.py-add-_PYTHON_PROJECT_SRC.patch" class="">file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///setup.py-check-cross_compiling-when-get-FLAGS.patch" class="">file://setup.py-check-cross_compiling-when-get-FLAGS.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///030-fixup-include-dirs.patch" class="">file://030-fixup-include-dirs.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///070-dont-clean-ipkg-install.patch" class="">file://070-dont-clean-ipkg-install.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///080-distutils-dont_adjust_files.patch" class="">file://080-distutils-dont_adjust_files.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///130-readline-setup.patch" class="">file://130-readline-setup.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch" class="">file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch</a> \<br class="">
+&nbsp; &nbsp; ${DISTRO_SRC_URI} \<br class="">
+&nbsp; &nbsp; <a href="file:///Use-correct-CFLAGS-for-extensions-when-cross-compili.patch" class="">file://Use-correct-CFLAGS-for-extensions-when-cross-compili.patch</a> \<br class="">
+"<br class="">
<br class="">
-LIC_FILES_CHKSUM = "<a href="file://LICENSE;md5=b6ec515b22618f55fa07276b897bacea" class="">file://LICENSE;md5=b6ec515b22618f55fa07276b897bacea</a>"<br class="">
+SRC_URI[md5sum] = "0a57e9022c07fad3dadb2eef58568edb"<br class="">
+SRC_URI[sha256sum] = "fa7e2b8e8c9402f192ad56dc4f814089d1c4466c97d780f5e5acc02c04243d6d"<br class="">
<br class="">
-# TODO consolidate patch set<br class="">
-SRC_URI[md5sum] = "f5a99f765e765336a3ebbb2a24ca2be3"<br class="">
-SRC_URI[sha256sum] = "f55cde04f521f273c7cba08912921cc5642cfc15ca7b22d5829f0aff4371155f"<br class="">
+LIC_FILES_CHKSUM = "<a href="file://LICENSE;md5=f257cc14f81685691652a3d3e1b5d754" class="">file://LICENSE;md5=f257cc14f81685691652a3d3e1b5d754</a>"<br class="">
<br class="">
&nbsp;# exclude pre-releases for both python 2.x and 3.x<br class="">
&nbsp;UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P&lt;pver&gt;\d+(\.\d+)+).tar"<br class="">
<br class="">
-CVE_PRODUCT = "python"<br class="">
-<br class="">
-PYTHON_MAJMIN = "3.5"<br class="">
-PYTHON_BINABI = "${PYTHON_MAJMIN}m"<br class="">
-<br class="">
&nbsp;S = "${WORKDIR}/Python-${PV}"<br class="">
<br class="">
-inherit autotools bluetooth pkgconfig<br class="">
+CVE_PRODUCT = "python"<br class="">
+<br class="">
+inherit autotools bluetooth pkgconfig python3-dir<br class="">
<br class="">
&nbsp;EXTRA_OECONF = "\<br class="">
-&nbsp; --with-threads \<br class="">
&nbsp; &nbsp;--with-pymalloc \<br class="">
&nbsp; &nbsp;--without-cxx-main \<br class="">
-&nbsp; --with-signal-module \<br class="">
&nbsp; &nbsp;--enable-shared \<br class="">
&nbsp; &nbsp;--<a href="mailto:enable-ipv6=${@bb.utils.contains" class="">enable-ipv6=${@bb.utils.contains</a>('DISTRO_FEATURES', 'ipv6', 'yes', 'no', d)} \<br class="">
&nbsp;"<br class="">
<br class="">
&nbsp;PACKAGECONFIG[bluetooth] = ",ac_cv_header_bluetooth_bluetooth_h=no ac_cv_header_bluetooth_h=no,${BLUEZ}"<br class="">
<br class="">
+do_configure_prepend() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;libdirleaf="$(echo ${libdir} | sed -e 's:${prefix}/::')"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e "s:SEDMELIBLEAF:${libdirleaf}:g" \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${S}/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+}<br class="">
+<br class="">
+do_install_prepend() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;MAKESETTINGS="$(egrep '^(ABIFLAGS|MULTIARCH)=' ${B}/Makefile | sed -E -e 's/[[:space:]]//g' -e 's/=/="/' -e 's/$/"/')"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;eval ${MAKESETTINGS}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if test "${ABIFLAGS}" != "${PYTHON_ABI}"; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;die "do_install: configure determined ABIFLAGS '${ABIFLAGS}' != '${PYTHON_ABI}' from python3-dir.bbclass"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if test "x${BUILD_OS}" = "x${TARGET_OS}"; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# no cross-compile at all<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_PYTHON_SYSCONFIGDATA_NAME=${PYTHON_ABI}_${TARGET_OS}_${MULTIARCH}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;else<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# at the very moment, it's the only available target<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_PYTHON_SYSCONFIGDATA_NAME=${PYTHON_ABI}_linux_${MULTIARCH}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+}<br class="">
+<br class="">
&nbsp;do_install_append () {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; sed -i -e 's:${HOSTTOOLS_DIR}/install:install:g' \<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -e 's:${HOSTTOOLS_DIR}/mkdir:mkdir:g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata_${_PYTHON_SYSCONFIGDATA_NAME}.py<br class="">
&nbsp;}<br class="">
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch<br class="">
index 8ea3f03fe0..aac34533ef 100644<br class="">
--- a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch<br class="">
@@ -14,25 +14,22 @@ Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank" class="">alex.kanavin@gmail.com</a>&gt;<br class="">
&nbsp; 1 file changed, 3 insertions(+), 6 deletions(-)<br class="">
<br class="">
&nbsp;diff --git a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-index 236f005..5c4337f 100644<br class="">
+index 31b4bcabb3..7da6d6941e 100644<br class="">
&nbsp;--- a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
&nbsp;+++ b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-@@ -1348,12 +1348,9 @@ python-config: $(srcdir)/Misc/<a href="http://python-config.in/" rel="noreferrer" target="_blank" class="">python-config.in</a> Misc/python-config.sh<br class="">
+@@ -1415,12 +1415,9 @@ python-config: $(srcdir)/Misc/<a href="http://python-config.in/" rel="noreferrer" target="_blank" class="">python-config.in</a> Misc/python-config.sh<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," &lt; $(srcdir)/Misc/<a href="http://python-config.in/" rel="noreferrer" target="_blank" class="">python-config.in</a> &gt;python-config.py<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# Replace makefile compat. variable references with shell script compat. ones; $(VAR) -&gt; ${VAR}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;@ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -&gt; ${VAR}<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' &lt; Misc/python-config.sh &gt;python-config<br class="">
--&nbsp; &nbsp; &nbsp; # On Darwin, always use the python version of the script, the shell<br class="">
--&nbsp; &nbsp; &nbsp; # version doesn't use the compiler customizations that are provided<br class="">
--&nbsp; &nbsp; &nbsp; # in python (_osx_support.py).<br class="">
--&nbsp; &nbsp; &nbsp; if test `uname -s` = Darwin; then \<br class="">
+-&nbsp; &nbsp; &nbsp; @ # On Darwin, always use the python version of the script, the shell<br class="">
+-&nbsp; &nbsp; &nbsp; @ # version doesn't use the compiler customizations that are provided<br class="">
+-&nbsp; &nbsp; &nbsp; @ # in python (_osx_support.py).<br class="">
+-&nbsp; &nbsp; &nbsp; @if test `uname -s` = Darwin; then \<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cp python-config.py python-config; \<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; fi<br class="">
-+&nbsp; &nbsp; &nbsp; # In OpenEmbedded, always use the python version of the script, the shell<br class="">
-+&nbsp; &nbsp; &nbsp; # version is broken in multiple ways, and doesn't return correct directories<br class="">
++&nbsp; &nbsp; &nbsp; @ # In OpenEmbedded, always use the python version of the script, the shell<br class="">
++&nbsp; &nbsp; &nbsp; @ # version is broken in multiple ways, and doesn't return correct directories<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; cp python-config.py python-config<br class="">
<br class="">
<br class="">
&nbsp; # Install the include files<br class="">
--- <br class="">
-2.11.0<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch b/meta/recipes-devtools/python/python3/0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch<br class="">
deleted file mode 100644<br class="">
index d1c92e9eed..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch<br class="">
+++ /dev/null<br class="">
@@ -1,66 +0,0 @@<br class="">
-From bcddbf40c7f1b80336268cdddacc17369fb0ccea Mon Sep 17 00:00:00 2001<br class="">
-From: Libin Dang &lt;<a href="mailto:libin.dang@windriver.com" target="_blank" class="">libin.dang@windriver.com</a>&gt;<br class="">
-Date: Tue, 11 Apr 2017 14:12:15 +0800<br class="">
-Subject: [PATCH] Issue #21272: Use _sysconfigdata.py to initialize<br class="">
- distutils.sysconfig<br class="">
-<br class="">
-Backport upstream commit<br class="">
-<a href="https://github.com/python/cpython/commit/409482251b06fe75c4ee56e85ffbb4b23d934159" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/409482251b06fe75c4ee56e85ffbb4b23d934159</a><br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-<br class="">
-Signed-off-by: Li Zhou &lt;<a href="mailto:li.zhou@windriver.com" target="_blank" class="">li.zhou@windriver.com</a>&gt;<br class="">
----<br class="">
- Lib/distutils/sysconfig.py | 35 ++++-------------------------------<br class="">
- 1 file changed, 4 insertions(+), 31 deletions(-)<br class="">
-<br class="">
-diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py<br class="">
-index 6d5cfd0..9925d24 100644<br class="">
---- a/Lib/distutils/sysconfig.py<br class="">
-+++ b/Lib/distutils/sysconfig.py<br class="">
-@@ -424,38 +424,11 @@ _config_vars = None<br class="">
- <br class="">
- def _init_posix():<br class="">
-&nbsp; &nbsp; &nbsp;"""Initialize the module as appropriate for POSIX systems."""<br class="">
--&nbsp; &nbsp; g = {}<br class="">
--&nbsp; &nbsp; # load the installed Makefile:<br class="">
--&nbsp; &nbsp; try:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; filename = get_makefile_filename()<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; parse_makefile(filename, g)<br class="">
--&nbsp; &nbsp; except OSError as msg:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; my_msg = "invalid Python installation: unable to open %s" % filename<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if hasattr(msg, "strerror"):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_msg = my_msg + " (%s)" % msg.strerror<br class="">
--<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; raise DistutilsPlatformError(my_msg)<br class="">
--<br class="">
--&nbsp; &nbsp; # load the installed pyconfig.h:<br class="">
--&nbsp; &nbsp; try:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; filename = get_config_h_filename()<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; with open(filename) as file:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parse_config_h(file, g)<br class="">
--&nbsp; &nbsp; except OSError as msg:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; my_msg = "invalid Python installation: unable to open %s" % filename<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if hasattr(msg, "strerror"):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; my_msg = my_msg + " (%s)" % msg.strerror<br class="">
--<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; raise DistutilsPlatformError(my_msg)<br class="">
--<br class="">
--&nbsp; &nbsp; # On AIX, there are wrong paths to the linker scripts in the Makefile<br class="">
--&nbsp; &nbsp; # -- these paths are relative to the Python source, but when installed<br class="">
--&nbsp; &nbsp; # the scripts are in another directory.<br class="">
--&nbsp; &nbsp; if python_build:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; g['LDSHARED'] = g['BLDSHARED']<br class="">
--<br class="">
-+&nbsp; &nbsp; # _sysconfigdata is generated at build time, see the sysconfig module<br class="">
-+&nbsp; &nbsp; from _sysconfigdata import build_time_vars<br class="">
-&nbsp; &nbsp; &nbsp;global _config_vars<br class="">
--&nbsp; &nbsp; _config_vars = g<br class="">
-+&nbsp; &nbsp; _config_vars = {}<br class="">
-+&nbsp; &nbsp; _config_vars.update(build_time_vars)<br class="">
- <br class="">
- <br class="">
- def _init_nt():<br class="">
--- <br class="">
-1.8.3.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch b/meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch<br class="">
deleted file mode 100644<br class="">
index 321b4afa12..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0001-Issue-28043-SSLContext-has-improved-default-settings.patch<br class="">
+++ /dev/null<br class="">
@@ -1,272 +0,0 @@<br class="">
-From 758e7463c104f71b810c8588166747eeab6148d7 Mon Sep 17 00:00:00 2001<br class="">
-From: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-Date: Sat, 10 Sep 2016 22:43:48 +0200<br class="">
-Subject: [PATCH 1/4] Issue 28043: SSLContext has improved default settings<br class="">
-<br class="">
-The options OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE, OP_NO_SSLv2 (except for PROTOCOL_SSLv2), and OP_NO_SSLv3 (except for PROTOCOL_SSLv3) are set by default. The initial cipher suite list contains only HIGH ciphers, no NULL ciphers and MD5 ciphers (except for PROTOCOL_SSLv2).<br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-[<a href="https://github.com/python/cpython/commit/358cfd426ccc0fcd6a7940d306602138e76420ae" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/358cfd426ccc0fcd6a7940d306602138e76420ae</a>]<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- Doc/library/ssl.rst&nbsp; |&nbsp; 9 ++++++-<br class="">
- Lib/ssl.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 30 +++++----------------<br class="">
- Lib/test/test_ssl.py | 62 +++++++++++++++++++++++---------------------<br class="">
- Modules/_ssl.c&nbsp; &nbsp; &nbsp; &nbsp;| 31 ++++++++++++++++++++++<br class="">
- 4 files changed, 78 insertions(+), 54 deletions(-)<br class="">
-<br class="">
-diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst<br class="">
-index a2f008346b..14f2d68217 100644<br class="">
---- a/Doc/library/ssl.rst<br class="">
-+++ b/Doc/library/ssl.rst<br class="">
-@@ -1151,7 +1151,14 @@ to speed up repeated connections from the same clients.<br class="">
- <br class="">
-&nbsp; &nbsp; .. versionchanged:: 3.5.3<br class="">
- <br class="">
--&nbsp; &nbsp; &nbsp; :data:`PROTOCOL_TLS` is the default value.<br class="">
-+&nbsp; &nbsp; &nbsp; The context is created with secure default values. The options<br class="">
-+&nbsp; &nbsp; &nbsp; :data:`OP_NO_COMPRESSION`, :data:`OP_CIPHER_SERVER_PREFERENCE`,<br class="">
-+&nbsp; &nbsp; &nbsp; :data:`OP_SINGLE_DH_USE`, :data:`OP_SINGLE_ECDH_USE`,<br class="">
-+&nbsp; &nbsp; &nbsp; :data:`OP_NO_SSLv2` (except for :data:`PROTOCOL_SSLv2`),<br class="">
-+&nbsp; &nbsp; &nbsp; and :data:`OP_NO_SSLv3` (except for :data:`PROTOCOL_SSLv3`) are<br class="">
-+&nbsp; &nbsp; &nbsp; set by default. The initial cipher suite list contains only ``HIGH``<br class="">
-+&nbsp; &nbsp; &nbsp; ciphers, no ``NULL`` ciphers and no ``MD5`` ciphers (except for<br class="">
-+&nbsp; &nbsp; &nbsp; :data:`PROTOCOL_SSLv2`).<br class="">
- <br class="">
- <br class="">
- :class:`SSLContext` objects have the following methods and attributes:<br class="">
-diff --git a/Lib/ssl.py b/Lib/ssl.py<br class="">
-index e1913904f3..4d302a78fa 100644<br class="">
---- a/Lib/ssl.py<br class="">
-+++ b/Lib/ssl.py<br class="">
-@@ -446,32 +446,16 @@ def create_default_context(purpose=Purpose.SERVER_AUTH, *, cafile=None,<br class="">
-&nbsp; &nbsp; &nbsp;if not isinstance(purpose, _ASN1Object):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;raise TypeError(purpose)<br class="">
- <br class="">
-+&nbsp; &nbsp; # SSLContext sets OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION,<br class="">
-+&nbsp; &nbsp; # OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE and OP_SINGLE_ECDH_USE<br class="">
-+&nbsp; &nbsp; # by default.<br class="">
-&nbsp; &nbsp; &nbsp;context = SSLContext(PROTOCOL_TLS)<br class="">
- <br class="">
--&nbsp; &nbsp; # SSLv2 considered harmful.<br class="">
--&nbsp; &nbsp; context.options |= OP_NO_SSLv2<br class="">
--<br class="">
--&nbsp; &nbsp; # SSLv3 has problematic security and is only required for really old<br class="">
--&nbsp; &nbsp; # clients such as IE6 on Windows XP<br class="">
--&nbsp; &nbsp; context.options |= OP_NO_SSLv3<br class="">
--<br class="">
--&nbsp; &nbsp; # disable compression to prevent CRIME attacks (OpenSSL 1.0+)<br class="">
--&nbsp; &nbsp; context.options |= getattr(_ssl, "OP_NO_COMPRESSION", 0)<br class="">
--<br class="">
-&nbsp; &nbsp; &nbsp;if purpose == Purpose.SERVER_AUTH:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# verify certs and host name in client mode<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context.verify_mode = CERT_REQUIRED<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context.check_hostname = True<br class="">
-&nbsp; &nbsp; &nbsp;elif purpose == Purpose.CLIENT_AUTH:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; # Prefer the server's ciphers by default so that we get stronger<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; # encryption<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; context.options |= getattr(_ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)<br class="">
--<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; # Use single use keys in order to improve forward secrecy<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; context.options |= getattr(_ssl, "OP_SINGLE_DH_USE", 0)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; context.options |= getattr(_ssl, "OP_SINGLE_ECDH_USE", 0)<br class="">
--<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; # disallow ciphers with known vulnerabilities<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context.set_ciphers(_RESTRICTED_SERVER_CIPHERS)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;if cafile or capath or cadata:<br class="">
-@@ -497,12 +481,10 @@ def _create_unverified_context(protocol=PROTOCOL_TLS, *, cert_reqs=None,<br class="">
-&nbsp; &nbsp; &nbsp;if not isinstance(purpose, _ASN1Object):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;raise TypeError(purpose)<br class="">
- <br class="">
-+&nbsp; &nbsp; # SSLContext sets OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION,<br class="">
-+&nbsp; &nbsp; # OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE and OP_SINGLE_ECDH_USE<br class="">
-+&nbsp; &nbsp; # by default.<br class="">
-&nbsp; &nbsp; &nbsp;context = SSLContext(protocol)<br class="">
--&nbsp; &nbsp; # SSLv2 considered harmful.<br class="">
--&nbsp; &nbsp; context.options |= OP_NO_SSLv2<br class="">
--&nbsp; &nbsp; # SSLv3 has problematic security and is only required for really old<br class="">
--&nbsp; &nbsp; # clients such as IE6 on Windows XP<br class="">
--&nbsp; &nbsp; context.options |= OP_NO_SSLv3<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;if cert_reqs is not None:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context.verify_mode = cert_reqs<br class="">
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py<br class="">
-index ffb7314f57..f91af7bd05 100644<br class="">
---- a/Lib/test/test_ssl.py<br class="">
-+++ b/Lib/test/test_ssl.py<br class="">
-@@ -73,6 +73,12 @@ NULLBYTECERT = data_file("nullbytecert.pem")<br class="">
- DHFILE = data_file("dh1024.pem")<br class="">
- BYTES_DHFILE = os.fsencode(DHFILE)<br class="">
- <br class="">
-+# Not defined in all versions of OpenSSL<br class="">
-+OP_NO_COMPRESSION = getattr(ssl, "OP_NO_COMPRESSION", 0)<br class="">
-+OP_SINGLE_DH_USE = getattr(ssl, "OP_SINGLE_DH_USE", 0)<br class="">
-+OP_SINGLE_ECDH_USE = getattr(ssl, "OP_SINGLE_ECDH_USE", 0)<br class="">
-+OP_CIPHER_SERVER_PREFERENCE = getattr(ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)<br class="">
-+<br class="">
- <br class="">
- def handle_error(prefix):<br class="">
-&nbsp; &nbsp; &nbsp;exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))<br class="">
-@@ -839,8 +845,9 @@ class ContextTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# OP_ALL | OP_NO_SSLv2 | OP_NO_SSLv3 is the default value<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if not IS_LIBRESSL and ssl.OPENSSL_VERSION_INFO &gt;= (1, 1, 0):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; default |= ssl.OP_NO_COMPRESSION<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; # SSLContext also enables these by default<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; default |= (OP_NO_COMPRESSION | OP_CIPHER_SERVER_PREFERENCE |<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(default, ctx.options)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx.options |= ssl.OP_NO_TLSv1<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(default | ssl.OP_NO_TLSv1, ctx.options)<br class="">
-@@ -1205,16 +1212,29 @@ class ContextTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stats["x509"] += 1<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.cert_store_stats(), stats)<br class="">
- <br class="">
-+&nbsp; &nbsp; def _assert_context_options(self, ctx):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if OP_NO_COMPRESSION != 0:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; OP_NO_COMPRESSION,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OP_NO_COMPRESSION)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if OP_SINGLE_DH_USE != 0:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; OP_SINGLE_DH_USE,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OP_SINGLE_DH_USE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if OP_SINGLE_ECDH_USE != 0:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; OP_SINGLE_ECDH_USE,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OP_SINGLE_ECDH_USE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if OP_CIPHER_SERVER_PREFERENCE != 0:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; OP_CIPHER_SERVER_PREFERENCE,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OP_CIPHER_SERVER_PREFERENCE)<br class="">
-+<br class="">
-&nbsp; &nbsp; &nbsp;def test_create_default_context(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl.create_default_context()<br class="">
-+<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertTrue(ctx.check_hostname)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.options &amp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
-+<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with open(SIGNING_CA) as f:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cadata = f.read()<br class="">
-@@ -1222,40 +1242,24 @@ class ContextTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cadata=cadata)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.options &amp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.options &amp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(ssl, "OP_NO_COMPRESSION", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.options &amp; getattr(ssl, "OP_SINGLE_DH_USE", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(ssl, "OP_SINGLE_DH_USE", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ctx.options &amp; getattr(ssl, "OP_SINGLE_ECDH_USE", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getattr(ssl, "OP_SINGLE_ECDH_USE", 0),<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test__create_stdlib_context(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl._create_stdlib_context()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertFalse(ctx.check_hostname)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cert_reqs=ssl.CERT_REQUIRED,<br class="">
-@@ -1263,12 +1267,12 @@ class ContextTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_TLSv1)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_REQUIRED)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertTrue(ctx.check_hostname)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl._create_stdlib_context(purpose=ssl.Purpose.CLIENT_AUTH)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.protocol, ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(ctx.verify_mode, ssl.CERT_NONE)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(ctx.options &amp; ssl.OP_NO_SSLv2, ssl.OP_NO_SSLv2)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self._assert_context_options(ctx)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test_check_hostname(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)<br class="">
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c<br class="">
-index 86482677ae..0d5c121d2c 100644<br class="">
---- a/Modules/_ssl.c<br class="">
-+++ b/Modules/_ssl.c<br class="">
-@@ -2330,6 +2330,7 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version)<br class="">
-&nbsp; &nbsp; &nbsp;PySSLContext *self;<br class="">
-&nbsp; &nbsp; &nbsp;long options;<br class="">
-&nbsp; &nbsp; &nbsp;SSL_CTX *ctx = NULL;<br class="">
-+&nbsp; &nbsp; int result;<br class="">
- #if defined(SSL_MODE_RELEASE_BUFFERS)<br class="">
-&nbsp; &nbsp; &nbsp;unsigned long libver;<br class="">
- #endif<br class="">
-@@ -2393,8 +2394,38 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;options |= SSL_OP_NO_SSLv2;<br class="">
-&nbsp; &nbsp; &nbsp;if (proto_version != PY_SSL_VERSION_SSL3)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;options |= SSL_OP_NO_SSLv3;<br class="">
-+&nbsp; &nbsp; /* Minimal security flags for server and client side context.<br class="">
-+&nbsp; &nbsp; &nbsp;* Client sockets ignore server-side parameters. */<br class="">
-+#ifdef SSL_OP_NO_COMPRESSION<br class="">
-+&nbsp; &nbsp; options |= SSL_OP_NO_COMPRESSION;<br class="">
-+#endif<br class="">
-+#ifdef SSL_OP_CIPHER_SERVER_PREFERENCE<br class="">
-+&nbsp; &nbsp; options |= SSL_OP_CIPHER_SERVER_PREFERENCE;<br class="">
-+#endif<br class="">
-+#ifdef SSL_OP_SINGLE_DH_USE<br class="">
-+&nbsp; &nbsp; options |= SSL_OP_SINGLE_DH_USE;<br class="">
-+#endif<br class="">
-+#ifdef SSL_OP_SINGLE_ECDH_USE<br class="">
-+&nbsp; &nbsp; options |= SSL_OP_SINGLE_ECDH_USE;<br class="">
-+#endif<br class="">
-&nbsp; &nbsp; &nbsp;SSL_CTX_set_options(self-&gt;ctx, options);<br class="">
- <br class="">
-+&nbsp; &nbsp; /* A bare minimum cipher list without completly broken cipher suites.<br class="">
-+&nbsp; &nbsp; &nbsp;* It's far from perfect but gives users a better head start. */<br class="">
-+&nbsp; &nbsp; if (proto_version != PY_SSL_VERSION_SSL2) {<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; result = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!eNULL:!MD5");<br class="">
-+&nbsp; &nbsp; } else {<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; /* SSLv2 needs MD5 */<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; result = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!eNULL");<br class="">
-+&nbsp; &nbsp; }<br class="">
-+&nbsp; &nbsp; if (result == 0) {<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; Py_DECREF(self);<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ERR_clear_error();<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; PyErr_SetString(PySSLErrorObject,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "No cipher can be selected.");<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; return NULL;<br class="">
-+&nbsp; &nbsp; }<br class="">
-+<br class="">
- #if defined(SSL_MODE_RELEASE_BUFFERS)<br class="">
-&nbsp; &nbsp; &nbsp;/* Set SSL_MODE_RELEASE_BUFFERS. This potentially greatly reduces memory<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; usage for no cost at all. However, don't do this for OpenSSL versions<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch b/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch<br class="">
deleted file mode 100644<br class="">
index 2b4ba316e4..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0002-Makefile-add-target-to-split-profile-generation.patch<br class="">
+++ /dev/null<br class="">
@@ -1,40 +0,0 @@<br class="">
-From 98586d6dc598e40b8b821b0dde57599e188a7ca4 Mon Sep 17 00:00:00 2001<br class="">
-From: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
-Date: Tue, 7 Aug 2018 16:43:17 +0800<br class="">
-Subject: [PATCH 2/2] Makefile: add target to split profile generation<br class="">
-<br class="">
-We don't want to have profile task invoked from here and want to use<br class="">
-qemu-user instead. Split the profile-opt task so qemu can be invoked<br class="">
-once binaries have been built with instrumentation and then we can go<br class="">
-ahead and build again using the profile data generated.<br class="">
-<br class="">
-Upstream-Status: Inappropriate [OE-specific]<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- <a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> | 6 ++----<br class="">
- 1 file changed, 2 insertions(+), 4 deletions(-)<br class="">
-<br class="">
-diff --git a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-index 84bc3ff..017a2c4 100644<br class="">
---- a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-+++ b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-@@ -469,13 +469,12 @@ profile-opt:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) profile-removal<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) build_all_generate_profile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) profile-removal<br class="">
--&nbsp; &nbsp; &nbsp; @echo "Running code to generate profile data (this can take a while):"<br class="">
--&nbsp; &nbsp; &nbsp; $(MAKE) run_profile_task<br class="">
--&nbsp; &nbsp; &nbsp; $(MAKE) build_all_merge_profile<br class="">
-+<br class="">
-+clean_and_use_profile:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;@echo "Rebuilding with profile guided optimizations:"<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) clean<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) build_all_use_profile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) profile-removal<br class="">
- <br class="">
- build_all_generate_profile:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch b/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch<br class="">
deleted file mode 100644<br class="">
index d48cad7586..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch<br class="">
+++ /dev/null<br class="">
@@ -1,227 +0,0 @@<br class="">
-From e950ea68dab006944af194c9910b8f2341d1437d Mon Sep 17 00:00:00 2001<br class="">
-From: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-Date: Thu, 7 Sep 2017 20:23:52 -0700<br class="">
-Subject: [PATCH] bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3<br class="">
- (GH-1363) (#3444)<br class="">
-<br class="">
-* bpo-29136: Add TLS 1.3 support<br class="">
-<br class="">
-TLS 1.3 introduces a new, distinct set of cipher suites. The TLS 1.3<br class="">
-cipher suites don't overlap with cipher suites from TLS 1.2 and earlier.<br class="">
-Since Python sets its own set of permitted ciphers, TLS 1.3 handshake<br class="">
-will fail as soon as OpenSSL 1.1.1 is released. Let's enable the common<br class="">
-AES-GCM and ChaCha20 suites.<br class="">
-<br class="">
-Additionally the flag OP_NO_TLSv1_3 is added. It defaults to 0 (no op) with<br class="">
-OpenSSL prior to 1.1.1. This allows applications to opt-out from TLS 1.3<br class="">
-now.<br class="">
-<br class="">
-Signed-off-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;.<br class="">
-(cherry picked from commit cb5b68abdeb1b1d56c581d5b4d647018703d61e3)<br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-[<a href="https://github.com/python/cpython/commit/cb5b68abdeb1b1d56c581d5b4d647018703d61e3" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/cb5b68abdeb1b1d56c581d5b4d647018703d61e3</a>]<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- Doc/library/ssl.rst&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 21 ++++++++++++++<br class="">
- Lib/ssl.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 7 +++++<br class="">
- Lib/test/test_ssl.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 29 ++++++++++++++++++-<br class="">
- .../2017-09-04-16-39-49.bpo-29136.vSn1oR.rst&nbsp; |&nbsp; 1 +<br class="">
- Modules/_ssl.c&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 13 +++++++++<br class="">
- 5 files changed, 70 insertions(+), 1 deletion(-)<br class="">
- create mode 100644 Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst<br class="">
-<br class="">
-diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst<br class="">
-index 14f2d68217..29c5e94cf6 100644<br class="">
---- a/Doc/library/ssl.rst<br class="">
-+++ b/Doc/library/ssl.rst<br class="">
-@@ -285,6 +285,11 @@ purposes.<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; 3DES was dropped from the default cipher string.<br class="">
- <br class="">
-+&nbsp; &nbsp;.. versionchanged:: 3.7<br class="">
-+<br class="">
-+&nbsp; &nbsp; &nbsp;TLS 1.3 cipher suites TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384,<br class="">
-+&nbsp; &nbsp; &nbsp;and TLS_CHACHA20_POLY1305_SHA256 were added to the default cipher string.<br class="">
-+<br class="">
- <br class="">
- Random generation<br class="">
- ^^^^^^^^^^^^^^^^^<br class="">
-@@ -719,6 +724,16 @@ Constants<br class="">
- <br class="">
-&nbsp; &nbsp; .. versionadded:: 3.4<br class="">
- <br class="">
-+.. data:: OP_NO_TLSv1_3<br class="">
-+<br class="">
-+&nbsp; &nbsp;Prevents a TLSv1.3 connection. This option is only applicable in conjunction<br class="">
-+&nbsp; &nbsp;with :const:`PROTOCOL_TLS`. It prevents the peers from choosing TLSv1.3 as<br class="">
-+&nbsp; &nbsp;the protocol version. TLS 1.3 is available with OpenSSL 1.1.1 or later.<br class="">
-+&nbsp; &nbsp;When Python has been compiled against an older version of OpenSSL, the<br class="">
-+&nbsp; &nbsp;flag defaults to *0*.<br class="">
-+<br class="">
-+&nbsp; &nbsp;.. versionadded:: 3.7<br class="">
-+<br class="">
- .. data:: OP_CIPHER_SERVER_PREFERENCE<br class="">
- <br class="">
-&nbsp; &nbsp; Use the server's cipher ordering preference, rather than the client's.<br class="">
-@@ -783,6 +798,12 @@ Constants<br class="">
- <br class="">
-&nbsp; &nbsp; .. versionadded:: 3.3<br class="">
- <br class="">
-+.. data:: HAS_TLSv1_3<br class="">
-+<br class="">
-+&nbsp; &nbsp;Whether the OpenSSL library has built-in support for the TLS 1.3 protocol.<br class="">
-+<br class="">
-+&nbsp; &nbsp;.. versionadded:: 3.7<br class="">
-+<br class="">
- .. data:: CHANNEL_BINDING_TYPES<br class="">
- <br class="">
-&nbsp; &nbsp; List of supported TLS channel binding types.&nbsp; Strings in this list<br class="">
-diff --git a/Lib/ssl.py b/Lib/ssl.py<br class="">
-index 4d302a78fa..f233e72e1f 100644<br class="">
---- a/Lib/ssl.py<br class="">
-+++ b/Lib/ssl.py<br class="">
-@@ -122,6 +122,7 @@ _import_symbols('OP_')<br class="">
- _import_symbols('ALERT_DESCRIPTION_')<br class="">
- _import_symbols('SSL_ERROR_')<br class="">
- _import_symbols('VERIFY_')<br class="">
-+from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN, HAS_TLSv1_3<br class="">
- <br class="">
- from _ssl import HAS_SNI, HAS_ECDH, HAS_NPN, HAS_ALPN<br class="">
- <br class="">
-@@ -162,6 +163,7 @@ else:<br class="">
- # (OpenSSL's default setting is 'DEFAULT:!aNULL:!eNULL')<br class="">
- # Enable a better set of ciphers by default<br class="">
- # This list has been explicitly chosen to:<br class="">
-+#&nbsp; &nbsp;* TLS 1.3 ChaCha20 and AES-GCM cipher suites<br class="">
- #&nbsp; &nbsp;* Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE)<br class="">
- #&nbsp; &nbsp;* Prefer ECDHE over DHE for better performance<br class="">
- #&nbsp; &nbsp;* Prefer AEAD over CBC for better performance and security<br class="">
-@@ -173,6 +175,8 @@ else:<br class="">
- #&nbsp; &nbsp;* Disable NULL authentication, NULL encryption, 3DES and MD5 MACs<br class="">
- #&nbsp; &nbsp; &nbsp;for security reasons<br class="">
- _DEFAULT_CIPHERS = (<br class="">
-+&nbsp; &nbsp; 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:'<br class="">
-+&nbsp; &nbsp; 'TLS13-AES-128-GCM-SHA256:'<br class="">
-&nbsp; &nbsp; &nbsp;'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:'<br class="">
-&nbsp; &nbsp; &nbsp;'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:'<br class="">
-&nbsp; &nbsp; &nbsp;'!aNULL:!eNULL:!MD5:!3DES'<br class="">
-@@ -180,6 +184,7 @@ _DEFAULT_CIPHERS = (<br class="">
- <br class="">
- # Restricted and more secure ciphers for the server side<br class="">
- # This list has been explicitly chosen to:<br class="">
-+#&nbsp; &nbsp;* TLS 1.3 ChaCha20 and AES-GCM cipher suites<br class="">
- #&nbsp; &nbsp;* Prefer cipher suites that offer perfect forward secrecy (DHE/ECDHE)<br class="">
- #&nbsp; &nbsp;* Prefer ECDHE over DHE for better performance<br class="">
- #&nbsp; &nbsp;* Prefer AEAD over CBC for better performance and security<br class="">
-@@ -190,6 +195,8 @@ _DEFAULT_CIPHERS = (<br class="">
- #&nbsp; &nbsp;* Disable NULL authentication, NULL encryption, MD5 MACs, DSS, RC4, and<br class="">
- #&nbsp; &nbsp; &nbsp;3DES for security reasons<br class="">
- _RESTRICTED_SERVER_CIPHERS = (<br class="">
-+&nbsp; &nbsp; 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:'<br class="">
-+&nbsp; &nbsp; 'TLS13-AES-128-GCM-SHA256:'<br class="">
-&nbsp; &nbsp; &nbsp;'ECDH+AESGCM:ECDH+CHACHA20:DH+AESGCM:DH+CHACHA20:ECDH+AES256:DH+AES256:'<br class="">
-&nbsp; &nbsp; &nbsp;'ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:RSA+AESGCM:RSA+AES:RSA+HIGH:'<br class="">
-&nbsp; &nbsp; &nbsp;'!aNULL:!eNULL:!MD5:!DSS:!RC4:!3DES'<br class="">
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py<br class="">
-index f91af7bd05..1acc12ec2d 100644<br class="">
---- a/Lib/test/test_ssl.py<br class="">
-+++ b/Lib/test/test_ssl.py<br class="">
-@@ -150,6 +150,13 @@ class BasicSocketTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ssl.OP_NO_COMPRESSION<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIn(ssl.HAS_SNI, {True, False})<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIn(ssl.HAS_ECDH, {True, False})<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_SSLv2<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_SSLv3<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_3<br class="">
-+&nbsp; &nbsp; if ssl.OPENSSL_VERSION_INFO &gt;= (1, 0, 1):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_1<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_2<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test_str_for_enums(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Make sure that the PROTOCOL_* constants have enum-like string<br class="">
-@@ -3028,12 +3035,33 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(s.version(), 'TLSv1')<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIs(s.version(), None)<br class="">
- <br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; @unittest.skipUnless(ssl.HAS_TLSv1_3,<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"test requires TLSv1.3 enabled OpenSSL")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; def test_tls1_3(self):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context = ssl.SSLContext(ssl.PROTOCOL_TLS)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context.load_cert_chain(CERTFILE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # disable all but TLS 1.3<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context.options |= (<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_TLSv1_2<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; )<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with ThreadedEchoServer(context=context) as server:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with context.wrap_socket(socket.socket()) as s:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s.connect((HOST, server.port))<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertIn(s.cipher()[0], [<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-AES-256-GCM-SHA384',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-CHACHA20-POLY1305-SHA256',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-AES-128-GCM-SHA256',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ])<br class="">
-+<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@unittest.skipUnless(ssl.HAS_ECDH, "test requires ECDH-enabled OpenSSL")<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;def test_default_ecdh_curve(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Issue #21015: elliptic curve-based Diffie Hellman key exchange<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# should be enabled by default on SSL contexts.<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;context.load_cert_chain(CERTFILE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # TLSv1.3 defaults to PFS key agreement and no longer has KEA in<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # cipher name.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context.options |= ssl.OP_NO_TLSv1_3<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Prior to OpenSSL 1.0.0, ECDH ciphers have to be enabled<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# explicitly using the 'ECCdraft' cipher alias.&nbsp; Otherwise,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# our default cipher list should prefer ECDH-based ciphers<br class="">
-@@ -3394,7 +3422,6 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.sendfile(file)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(s.recv(1024), TEST_DATA)<br class="">
- <br class="">
--<br class="">
- def test_main(verbose=False):<br class="">
-&nbsp; &nbsp; &nbsp;if support.verbose:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import warnings<br class="">
-diff --git a/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst b/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst<br class="">
-new file mode 100644<br class="">
-index 0000000000..e76997ef83<br class="">
---- /dev/null<br class="">
-+++ b/Misc/NEWS.d/next/Library/2017-09-04-16-39-49.bpo-29136.vSn1oR.rst<br class="">
-@@ -0,0 +1 @@<br class="">
-+Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.<br class="">
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c<br class="">
-index 0d5c121d2c..c71d89607c 100644<br class="">
---- a/Modules/_ssl.c<br class="">
-+++ b/Modules/_ssl.c<br class="">
-@@ -4842,6 +4842,11 @@ PyInit__ssl(void)<br class="">
- #if HAVE_TLSv1_2<br class="">
-&nbsp; &nbsp; &nbsp;PyModule_AddIntConstant(m, "OP_NO_TLSv1_1", SSL_OP_NO_TLSv1_1);<br class="">
-&nbsp; &nbsp; &nbsp;PyModule_AddIntConstant(m, "OP_NO_TLSv1_2", SSL_OP_NO_TLSv1_2);<br class="">
-+#endif<br class="">
-+#ifdef SSL_OP_NO_TLSv1_3<br class="">
-+&nbsp; &nbsp; PyModule_AddIntConstant(m, "OP_NO_TLSv1_3", SSL_OP_NO_TLSv1_3);<br class="">
-+#else<br class="">
-+&nbsp; &nbsp; PyModule_AddIntConstant(m, "OP_NO_TLSv1_3", 0);<br class="">
- #endif<br class="">
-&nbsp; &nbsp; &nbsp;PyModule_AddIntConstant(m, "OP_CIPHER_SERVER_PREFERENCE",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SSL_OP_CIPHER_SERVER_PREFERENCE);<br class="">
-@@ -4890,6 +4895,14 @@ PyInit__ssl(void)<br class="">
-&nbsp; &nbsp; &nbsp;Py_INCREF(r);<br class="">
-&nbsp; &nbsp; &nbsp;PyModule_AddObject(m, "HAS_ALPN", r);<br class="">
- <br class="">
-+#if defined(TLS1_3_VERSION) &amp;&amp; !defined(OPENSSL_NO_TLS1_3)<br class="">
-+&nbsp; &nbsp; r = Py_True;<br class="">
-+#else<br class="">
-+&nbsp; &nbsp; r = Py_False;<br class="">
-+#endif<br class="">
-+&nbsp; &nbsp; Py_INCREF(r);<br class="">
-+&nbsp; &nbsp; PyModule_AddObject(m, "HAS_TLSv1_3", r);<br class="">
-+<br class="">
-&nbsp; &nbsp; &nbsp;/* Mappings for error codes */<br class="">
-&nbsp; &nbsp; &nbsp;err_codes_to_names = PyDict_New();<br class="">
-&nbsp; &nbsp; &nbsp;err_names_to_codes = PyDict_New();<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch b/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch<br class="">
deleted file mode 100644<br class="">
index 56d591d1b5..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch<br class="">
+++ /dev/null<br class="">
@@ -1,173 +0,0 @@<br class="">
-From 170a614904febd14ff6cfd7a75c9bccc114b3948 Mon Sep 17 00:00:00 2001<br class="">
-From: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-Date: Tue, 14 Aug 2018 16:56:32 +0200<br class="">
-Subject: [PATCH] bpo-32947: Fixes for TLS 1.3 and OpenSSL 1.1.1 (GH-8761)<br class="">
-<br class="">
-Backport of TLS 1.3 related fixes from 3.7.<br class="">
-<br class="">
-Misc fixes and workarounds for compatibility with OpenSSL 1.1.1 from git<br class="">
-master and TLS 1.3 support. With OpenSSL 1.1.1, Python negotiates TLS 1.3 by<br class="">
-default. Some test cases only apply to TLS 1.2.<br class="">
-<br class="">
-OpenSSL 1.1.1 has added a new option OP_ENABLE_MIDDLEBOX_COMPAT for TLS<br class="">
-1.3. The feature is enabled by default for maximum compatibility with<br class="">
-broken middle boxes. Users should be able to disable the hack and CPython's test suite needs<br class="">
-it to verify default options<br class="">
-<br class="">
-Signed-off-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-[<a href="https://github.com/python/cpython/commit/2a4ee8aa01d61b6a9c8e9c65c211e61bdb471826" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/2a4ee8aa01d61b6a9c8e9c65c211e61bdb471826</a>]<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- Doc/library/ssl.rst&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; 9 ++++++<br class="">
- Lib/test/test_asyncio/test_events.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 6 +++-<br class="">
- Lib/test/test_ssl.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 29 +++++++++++++++----<br class="">
- .../2018-08-14-08-57-01.bpo-32947.mqStVW.rst&nbsp; |&nbsp; 2 ++<br class="">
- Modules/_ssl.c&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |&nbsp; 4 +++<br class="">
- 5 files changed, 44 insertions(+), 6 deletions(-)<br class="">
- create mode 100644 Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst<br class="">
-<br class="">
-diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst<br class="">
-index 29c5e94cf6..f63a3deec5 100644<br class="">
---- a/Doc/library/ssl.rst<br class="">
-+++ b/Doc/library/ssl.rst<br class="">
-@@ -757,6 +757,15 @@ Constants<br class="">
- <br class="">
-&nbsp; &nbsp; .. versionadded:: 3.3<br class="">
- <br class="">
-+.. data:: OP_ENABLE_MIDDLEBOX_COMPAT<br class="">
-+<br class="">
-+&nbsp; &nbsp;Send dummy Change Cipher Spec (CCS) messages in TLS 1.3 handshake to make<br class="">
-+&nbsp; &nbsp;a TLS 1.3 connection look more like a TLS 1.2 connection.<br class="">
-+<br class="">
-+&nbsp; &nbsp;This option is only available with OpenSSL 1.1.1 and later.<br class="">
-+<br class="">
-+&nbsp; &nbsp;.. versionadded:: 3.6.7<br class="">
-+<br class="">
- .. data:: OP_NO_COMPRESSION<br class="">
- <br class="">
-&nbsp; &nbsp; Disable compression on the SSL channel.&nbsp; This is useful if the application<br class="">
-diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py<br class="">
-index 492a84a231..6f208474b9 100644<br class="">
---- a/Lib/test/test_asyncio/test_events.py<br class="">
-+++ b/Lib/test/test_asyncio/test_events.py<br class="">
-@@ -1169,7 +1169,11 @@ class EventLoopTestsMixin:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.loop.run_until_complete(f_c)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# close connection<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; proto.transport.close()<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; # transport may be None with TLS 1.3, because connection is<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; # interrupted, server is unable to send session tickets, and<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; # transport is closed.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if proto.transport is not None:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proto.transport.close()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;server.close()<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test_legacy_create_server_ssl_match_failed(self):<br class="">
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py<br class="">
-index 1acc12ec2d..a2e1d32a62 100644<br class="">
---- a/Lib/test/test_ssl.py<br class="">
-+++ b/Lib/test/test_ssl.py<br class="">
-@@ -78,6 +78,7 @@ OP_NO_COMPRESSION = getattr(ssl, "OP_NO_COMPRESSION", 0)<br class="">
- OP_SINGLE_DH_USE = getattr(ssl, "OP_SINGLE_DH_USE", 0)<br class="">
- OP_SINGLE_ECDH_USE = getattr(ssl, "OP_SINGLE_ECDH_USE", 0)<br class="">
- OP_CIPHER_SERVER_PREFERENCE = getattr(ssl, "OP_CIPHER_SERVER_PREFERENCE", 0)<br class="">
-+OP_ENABLE_MIDDLEBOX_COMPAT = getattr(ssl, "OP_ENABLE_MIDDLEBOX_COMPAT", 0)<br class="">
- <br class="">
- <br class="">
- def handle_error(prefix):<br class="">
-@@ -155,8 +156,8 @@ class BasicSocketTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ssl.OP_NO_TLSv1<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ssl.OP_NO_TLSv1_3<br class="">
-&nbsp; &nbsp; &nbsp;if ssl.OPENSSL_VERSION_INFO &gt;= (1, 0, 1):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_1<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_2<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_1<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; ssl.OP_NO_TLSv1_2<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test_str_for_enums(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Make sure that the PROTOCOL_* constants have enum-like string<br class="">
-@@ -854,7 +855,8 @@ class ContextTests(unittest.TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# SSLContext also enables these by default<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;default |= (OP_NO_COMPRESSION | OP_CIPHER_SERVER_PREFERENCE |<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE |<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; OP_ENABLE_MIDDLEBOX_COMPAT)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(default, ctx.options)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ctx.options |= ssl.OP_NO_TLSv1<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(default | ssl.OP_NO_TLSv1, ctx.options)<br class="">
-@@ -1860,11 +1862,26 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.sock, server_side=True)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.server.selected_npn_protocols.append(self.sslconn.selected_npn_protocol())<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.server.selected_alpn_protocols.append(self.sslconn.selected_alpn_protocol())<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except (ssl.SSLError, ConnectionResetError) as e:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except (ConnectionResetError, BrokenPipeError) as e:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# We treat ConnectionResetError as though it were an<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# SSLError - OpenSSL on Ubuntu abruptly closes the<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# connection when asked to use an unsupported protocol.<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # BrokenPipeError is raised in TLS 1.3 mode, when OpenSSL<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # tries to send session tickets after handshake.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # <a href="https://github.com/openssl/openssl/issues/6342" rel="noreferrer" target="_blank" class="">https://github.com/openssl/openssl/issues/6342</a><br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.server.conn_errors.append(str(e))<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if self.server.chatty:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; handle_error(<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "\n server:&nbsp; bad connection attempt from " + repr(<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.addr) + ":\n")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.running = False<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.close()<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except (ssl.SSLError, OSError) as e:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # OSError may occur with wrong protocols, e.g. both<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # sides use PROTOCOL_TLS_SERVER.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# XXX Various errors can have happened here, for example<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# a mismatching protocol version, an invalid certificate,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# or a low-level bug. This should be made more discriminating.<br class="">
-@@ -2974,7 +2991,7 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Block on the accept and wait on the connection to close.<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;evt.set()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;remote, peer = server.accept()<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; remote.recv(1)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; remote.send(remote.recv(4))<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t = threading.Thread(target=serve)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t.start()<br class="">
-@@ -2982,6 +2999,8 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;evt.wait()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client = context.wrap_socket(socket.socket())<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.connect((host, port))<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client.send(b'data')<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client.recv()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_addr = client.getsockname()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client.close()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t.join()<br class="">
-diff --git a/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst b/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst<br class="">
-new file mode 100644<br class="">
-index 0000000000..28de360c36<br class="">
---- /dev/null<br class="">
-+++ b/Misc/NEWS.d/next/Library/2018-08-14-08-57-01.bpo-32947.mqStVW.rst<br class="">
-@@ -0,0 +1,2 @@<br class="">
-+Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 for future<br class="">
-+compatibility with OpenSSL 1.1.1.<br class="">
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c<br class="">
-index c71d89607c..eb123a87ba 100644<br class="">
---- a/Modules/_ssl.c<br class="">
-+++ b/Modules/_ssl.c<br class="">
-@@ -4858,6 +4858,10 @@ PyInit__ssl(void)<br class="">
-&nbsp; &nbsp; &nbsp;PyModule_AddIntConstant(m, "OP_NO_COMPRESSION",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SSL_OP_NO_COMPRESSION);<br class="">
- #endif<br class="">
-+#ifdef SSL_OP_ENABLE_MIDDLEBOX_COMPAT<br class="">
-+&nbsp; &nbsp; PyModule_AddIntConstant(m, "OP_ENABLE_MIDDLEBOX_COMPAT",<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SSL_OP_ENABLE_MIDDLEBOX_COMPAT);<br class="">
-+#endif<br class="">
- <br class="">
- #if HAVE_SNI<br class="">
-&nbsp; &nbsp; &nbsp;r = Py_True;<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch b/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch<br class="">
deleted file mode 100644<br class="">
index b97d5501e1..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch<br class="">
+++ /dev/null<br class="">
@@ -1,110 +0,0 @@<br class="">
-From 0c9354362bfa5f90fbea8ff8237a1f1f5dba686f Mon Sep 17 00:00:00 2001<br class="">
-From: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-Date: Wed, 12 Sep 2018 15:20:31 +0800<br class="">
-Subject: [PATCH] bpo-33570: TLS 1.3 ciphers for OpenSSL 1.1.1 (GH-6976)<br class="">
-<br class="">
-Change TLS 1.3 cipher suite settings for compatibility with OpenSSL<br class="">
-1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 cipers enabled by<br class="">
-default.<br class="">
-<br class="">
-Also update multissltests and Travis config to test with latest OpenSSL.<br class="">
-<br class="">
-Signed-off-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-(cherry picked from commit e8eb6cb7920ded66abc5d284319a8539bdc2bae3)<br class="">
-<br class="">
-Co-authored-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a><br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-[<a href="https://github.com/python/cpython/commit/3e630c541b35c96bfe5619165255e559f577ee71" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/3e630c541b35c96bfe5619165255e559f577ee71</a>]<br class="">
-<br class="">
-Tweaked patch to not take changes for multissltests and Travis config.<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- Lib/test/test_ssl.py | 51 ++++++++++++++++++++++----------------------<br class="">
- 1 file changed, 26 insertions(+), 25 deletions(-)<br class="">
-<br class="">
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py<br class="">
-index a2e1d32a62..c484ead5ff 100644<br class="">
---- a/Lib/test/test_ssl.py<br class="">
-+++ b/Lib/test/test_ssl.py<br class="">
-@@ -3024,17 +3024,21 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sock.do_handshake()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(cm.exception.errno, errno.ENOTCONN)<br class="">
- <br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; def test_default_ciphers(self):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Force a set of weak ciphers on our client context<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; context.set_ciphers("DES")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; except ssl.SSLError:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.skipTest("no DES cipher available")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with ThreadedEchoServer(CERTFILE,<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ssl_version=ssl.PROTOCOL_SSLv23,<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; chatty=False) as server:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with context.wrap_socket(socket.socket()) as s:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; def test_no_shared_ciphers(self):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context.load_cert_chain(SIGNED_CERTFILE)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.verify_mode = ssl.CERT_REQUIRED<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.check_hostname = True<br class="">
-+<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.set_ciphers("AES128")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context.set_ciphers("AES256")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # OpenSSL enables all TLS 1.3 ciphers, enforce TLS 1.2 for test<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.options |= ssl.OP_NO_TLSv1_3<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with ThreadedEchoServer(context=server_context) as server:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; with client_context.wrap_socket(<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; socket.socket(),<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_hostname="localhost") as s:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with self.assertRaises(OSError):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.connect((HOST, server.port))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIn("no shared cipher", str(server.conn_errors[0]))<br class="">
-@@ -3067,9 +3071,9 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with context.wrap_socket(socket.socket()) as s:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s.connect((HOST, server.port))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIn(s.cipher()[0], [<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-AES-256-GCM-SHA384',<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-CHACHA20-POLY1305-SHA256',<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS13-AES-128-GCM-SHA256',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS_AES_256_GCM_SHA384',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS_CHACHA20_POLY1305_SHA256',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'TLS_AES_128_GCM_SHA256',<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;])<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@unittest.skipUnless(ssl.HAS_ECDH, "test requires ECDH-enabled OpenSSL")<br class="">
-@@ -3391,22 +3395,19 @@ else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_context.verify_mode = ssl.CERT_REQUIRED<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;client_context.load_verify_locations(SIGNING_CA)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ssl.OPENSSL_VERSION_INFO &gt;= (1, 0, 2):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.set_ciphers("AES128:AES256")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context.set_ciphers("AES256")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alg1 = "AES256"<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alg2 = "AES-256"<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.set_ciphers("AES:3DES")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context.set_ciphers("3DES")<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alg1 = "3DES"<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alg2 = "DES-CBC3"<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; client_context.set_ciphers("AES128:AES256")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; server_context.set_ciphers("AES256")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expected_algs = [<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "AES256", "AES-256",<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# TLS 1.3 ciphers are always enabled<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"TLS_CHACHA20", "TLS_AES",<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stats = server_params_test(client_context, server_context)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ciphers = stats['server_shared_ciphers'][0]<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertGreater(len(ciphers), 0)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for name, tls_version, bits in ciphers:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not alg1 in name.split("-") and alg2 not in name:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not any (alg in name for alg in expected_algs):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.fail(name)<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;def test_read_write_after_close_raises_valuerror(self):<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch b/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch<br class="">
deleted file mode 100644<br class="">
index d609847204..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch<br class="">
+++ /dev/null<br class="">
@@ -1,68 +0,0 @@<br class="">
-From 7b40cb7293cb14e5c7c8ed123efaf9acb33edae2 Mon Sep 17 00:00:00 2001<br class="">
-From: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-Date: Tue, 15 Aug 2017 10:33:43 +0200<br class="">
-Subject: [PATCH] bpo-30714: ALPN changes for OpenSSL 1.1.0f (#2305)<br class="">
-<br class="">
-OpenSSL 1.1.0 to 1.1.0e aborted the handshake when server and client<br class="">
-could not agree on a protocol using ALPN. OpenSSL 1.1.0f changed that.<br class="">
-The most recent version now behaves like OpenSSL 1.0.2 again. The ALPN<br class="">
-callback can pretend to not been set.<br class="">
-<br class="">
-See <a href="https://github.com/openssl/openssl/pull/3158" rel="noreferrer" target="_blank" class="">https://github.com/openssl/openssl/pull/3158</a> for more details<br class="">
-<br class="">
-Signed-off-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-[<a href="https://github.com/python/cpython/commit/7b40cb7293cb14e5c7c8ed123efaf9acb33edae2" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/commit/7b40cb7293cb14e5c7c8ed123efaf9acb33edae2</a>]<br class="">
-<br class="">
-Signed-off-by: Anuj Mittal &lt;<a href="mailto:anuj.mittal@intel.com" target="_blank" class="">anuj.mittal@intel.com</a>&gt;<br class="">
----<br class="">
- Doc/library/ssl.rst&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 5 +++--<br class="">
- Lib/test/test_ssl.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 5 +++--<br class="">
- .../next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst&nbsp; &nbsp; &nbsp; | 2 ++<br class="">
- 3 files changed, 8 insertions(+), 4 deletions(-)<br class="">
- create mode 100644 Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst<br class="">
-<br class="">
-diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst<br class="">
-index 729a239a1b..0a09e7e9d4 100644<br class="">
---- a/Doc/library/ssl.rst<br class="">
-+++ b/Doc/library/ssl.rst<br class="">
-@@ -1447,8 +1447,9 @@ to speed up repeated connections from the same clients.<br class="">
-&nbsp; &nbsp; This method will raise :exc:`NotImplementedError` if :data:`HAS_ALPN` is<br class="">
-&nbsp; &nbsp; False.<br class="">
- <br class="">
--&nbsp; &nbsp;OpenSSL 1.1.0+ will abort the handshake and raise :exc:`SSLError` when<br class="">
--&nbsp; &nbsp;both sides support ALPN but cannot agree on a protocol.<br class="">
-+&nbsp; &nbsp;OpenSSL 1.1.0 to 1.1.0e will abort the handshake and raise :exc:`SSLError`<br class="">
-+&nbsp; &nbsp;when both sides support ALPN but cannot agree on a protocol. 1.1.0f+<br class="">
-+&nbsp; &nbsp;behaves like 1.0.2, :meth:`SSLSocket.selected_alpn_protocol` returns None.<br class="">
- <br class="">
-&nbsp; &nbsp; .. versionadded:: 3.5<br class="">
- <br class="">
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py<br class="">
-index d960d82065..104b7f377a 100644<br class="">
---- a/Lib/test/test_ssl.py<br class="">
-+++ b/Lib/test/test_ssl.py<br class="">
-@@ -3268,8 +3268,9 @@ if _have_threads:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;except ssl.SSLError as e:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;stats = e<br class="">
- <br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if expected is None and IS_OPENSSL_1_1:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # OpenSSL 1.1.0 raises handshake error<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (expected is None and IS_OPENSSL_1_1<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; and ssl.OPENSSL_VERSION_INFO &lt; (1, 1, 0, 6)):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # OpenSSL 1.1.0 to 1.1.0e raises handshake error<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIsInstance(stats, ssl.SSLError)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;msg = "failed trying %s (s) and %s (c).\n" \<br class="">
-diff --git a/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst b/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst<br class="">
-new file mode 100644<br class="">
-index 0000000000..88394e585c<br class="">
---- /dev/null<br class="">
-+++ b/Misc/NEWS.d/next/Tests/2017-07-25-15-27-44.bpo-30715.Sp7bTF.rst<br class="">
-@@ -0,0 +1,2 @@<br class="">
-+Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves<br class="">
-+like OpenSSL 1.0.2 and no longer aborts handshake.<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch b/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch<br class="">
index fddfd2b2f6..b916d04d05 100644<br class="">
--- a/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/03-fix-tkinter-detection.patch<br class="">
@@ -4,11 +4,11 @@ Upstream-Status: Inappropriate [embedded specific]<br class="">
&nbsp;# will not be found.<br class="">
&nbsp;# Signed-Off: Michael 'Mickey' Lauer &lt;<a href="mailto:mickey@vanille.de" target="_blank" class="">mickey@vanille.de</a>&gt;<br class="">
<br class="">
-Index: Python-3.3.0rc2/setup.py<br class="">
-===================================================================<br class="">
---- Python-3.3.0rc2.orig/setup.py&nbsp; &nbsp; &nbsp; 2012-09-20 15:24:14.009124003 -0700<br class="">
-+++ Python-3.3.0rc2/setup.py&nbsp; &nbsp;2012-09-20 15:25:08.449124963 -0700<br class="">
-@@ -1620,7 +1620,7 @@<br class="">
+diff --git a/setup.py b/setup.py<br class="">
+index 37c5dd58a6..7f0e4d1010 100644<br class="">
+--- a/setup.py<br class="">
++++ b/setup.py<br class="">
+@@ -1803,7 +1803,7 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dotversion = dotversion[:-1] + '.' + dotversion[-1]<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tcl_include_sub = []<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tk_include_sub = []<br class="">
@@ -17,7 +17,7 @@ Index: Python-3.3.0rc2/setup.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tcl_include_sub += [dir + os.sep + "tcl" + dotversion]<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tk_include_sub += [dir + os.sep + "tk" + dotversion]<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tk_include_sub += tcl_include_sub<br class="">
-@@ -1639,22 +1639,6 @@<br class="">
+@@ -1822,22 +1822,6 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if dir not in include_dirs:<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; include_dirs.append(dir)<br class="">
<br class="">
diff --git a/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch b/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch<br class="">
index 6beac7b805..c12f11c6e7 100644<br class="">
--- a/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/030-fixup-include-dirs.patch<br class="">
@@ -22,12 +22,3 @@ Index: Python-3.3.2/setup.py<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Add paths specified in the environment variables LDFLAGS and<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # CPPFLAGS for header and library files.<br class="">
-@@ -480,7 +481,7 @@ class PyBuildExt(build_ext):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for directory in reversed(options.dirs):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add_dir_to_list(dir_list, directory)<br class="">
- <br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if os.path.normpath(sys.base_prefix) != '/usr' \<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if not cross_compiling and os.path.normpath(sys.base_prefix) != '/usr' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and not sysconfig.get_config_var('PYTHONFRAMEWORK'):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# OSX note: Don't add LIBDIR and INCLUDEDIR to building a framework<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# (PYTHONFRAMEWORK is set) to avoid # linking problems when<br class="">
diff --git a/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch b/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch<br class="">
index b96419a638..1bd6e56117 100644<br class="">
--- a/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/080-distutils-dont_adjust_files.patch<br class="">
@@ -14,11 +14,11 @@ Upstream-Status: Inappropriate [Embedded-Specific]<br class="">
<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; def copy_scripts(self):<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; """Copy each script listed in 'self.scripts'; if it's marked as a<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; r"""Copy each script listed in 'self.scripts'; if it's marked as a<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; Python script in the Unix way (first line matches 'first_line_re',<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; ie. starts with "\#!" and contains "python"), then adjust the first<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; line to refer to the current Python interpreter as we copy.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; """Copy each script listed in 'self.scripts'<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; r"""Copy each script listed in 'self.scripts'<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; """<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.mkpath(self.build_dir)<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outfiles = []<br class="">
diff --git a/meta/recipes-devtools/python/python3/150-fix-setupterm.patch b/meta/recipes-devtools/python/python3/150-fix-setupterm.patch<br class="">
deleted file mode 100644<br class="">
index 78d7c78670..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/150-fix-setupterm.patch<br class="">
+++ /dev/null<br class="">
@@ -1,17 +0,0 @@<br class="">
-Fix warning with newer compiler<br class="">
-<br class="">
--Khem<br class="">
-<br class="">
-Upstream-Status: Pending<br class="">
-<br class="">
---- a/Modules/_cursesmodule.c<br class="">
-+++ b/Modules/_cursesmodule.c<br class="">
-@@ -116,7 +116,7 @@ char *PyCursesVersion = "2.2";<br class="">
-&nbsp; &nbsp; &nbsp;#defines many common symbols (such as "lines") which breaks the<br class="">
-&nbsp; &nbsp; &nbsp;curses module in other ways.&nbsp; So the code will just specify<br class="">
-&nbsp; &nbsp; &nbsp;explicit prototypes here. */<br class="">
--extern int setupterm(char *,int,int *);<br class="">
-+//extern int setupterm(char *,int,int *);<br class="">
- #ifdef __sgi<br class="">
- #include &lt;term.h&gt;<br class="">
- #endif<br class="">
diff --git a/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch b/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch<br class="">
index ae74ef531d..35b849e399 100644<br class="">
--- a/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/Use-correct-CFLAGS-for-extensions-when-cross-compili.patch<br class="">
@@ -9,6 +9,11 @@ profile-optimized build.<br class="">
<br class="">
&nbsp;Upstream-Status: Pending<br class="">
<br class="">
+2018-08:<br class="">
+&nbsp; * Rebased <a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> for 3.7<br class="">
+&nbsp; * Remove patch for setup.py in favor of upstream fix<br class="">
+&nbsp; -- Jens<br class="">
+<br class="">
&nbsp;Signed-off-by: Markus Lehtonen &lt;<a href="mailto:markus.lehtonen@linux.intel.com" target="_blank" class="">markus.lehtonen@linux.intel.com</a>&gt;<br class="">
&nbsp;---<br class="">
&nbsp; <a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> | 4 ++--<br class="">
@@ -16,41 +21,31 @@ Signed-off-by: Markus Lehtonen &lt;<a href="mailto:markus.lehtonen@linux.intel.com" target="_blank" class="">markus.lehtonen@linux.intel.com</a>&gt;<br class="">
&nbsp; 2 files changed, 4 insertions(+), 3 deletions(-)<br class="">
<br class="">
&nbsp;diff --git a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-index e2d5d3d..84bc3ff 100644<br class="">
+index 4c23c0e411..0871c98f29 100644<br class="">
&nbsp;--- a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
&nbsp;+++ b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-@@ -478,7 +478,7 @@ profile-opt:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) profile-removal<br class="">
+@@ -497,6 +497,7 @@ profile-run-stamp:<br class="">
<br class="">
&nbsp; build_all_generate_profile:<br class="">
--&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"<br class="">
-+&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_GEN_FLAG)" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"<br class="">
++&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_GEN_FLAG)" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"<br class="">
<br class="">
&nbsp; run_profile_task:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;: # FIXME: can't run for a cross build<br class="">
-@@ -488,7 +488,7 @@ build_all_merge_profile:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;$(LLVM_PROF_MERGER)<br class="">
- <br class="">
- build_all_use_profile:<br class="">
--&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"<br class="">
-+&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;@ # FIXME: can't run for a cross build<br class="">
+@@ -510,14 +511,14 @@ build_all_merge_profile:<br class="">
+ profile-opt: profile-run-stamp<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;@echo "Rebuilding with profile guided optimizations:"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;-rm -f profile-clean-stamp<br class="">
+-&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(PGO_PROF_USE_FLAG)" LDFLAGS="$(LDFLAGS)"<br class="">
++&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS) $(EXTRA_CFLAGS) $(PGO_PROF_USE_FLAG)" LDFLAGS="$(LDFLAGS)"<br class="">
<br class="">
&nbsp; # Compile and run with gcov<br class="">
&nbsp; .PHONY=coverage coverage-lcov coverage-report<br class="">
-diff --git a/setup.py b/setup.py<br class="">
-index add3346..65e83b1 100644<br class="">
---- a/setup.py<br class="">
-+++ b/setup.py<br class="">
-@@ -263,7 +263,8 @@ class PyBuildExt(build_ext):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# compilers<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if compiler is not None:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if cross_compiling:<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '')<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (ccshared,cflags) = (os.environ.get('CCSHARED') or '',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(os.environ.get('CFLAGS') or '') + ' ' + sysconfig.get_config_var('PY_CFLAGS_NODIST'))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags<br class="">
--- <br class="">
-2.17.1<br class="">
-<br class="">
+ coverage:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;@echo "Building with support for coverage checking:"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;$(MAKE) clean profile-removal<br class="">
+-&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"<br class="">
++&nbsp; &nbsp; &nbsp; $(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) $(EXTRA_CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"<br class="">
+ <br class="">
+ coverage-lcov:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;@echo "Creating Coverage HTML report with LCOV:"<br class="">
diff --git a/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch b/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch<br class="">
index f29ae53371..7e1dc4ef5b 100644<br class="">
--- a/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/avoid-ncursesw-include-path.patch<br class="">
@@ -6,16 +6,16 @@ hardcoded locations for include paths<br class="">
<br class="">
&nbsp;Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com" target="_blank" class="">raj.khem@gmail.com</a>&gt;<br class="">
<br class="">
-Index: Python-3.4.2/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-===================================================================<br class="">
---- Python-3.4.2.orig/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-+++ Python-3.4.2/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-@@ -4434,7 +4434,7 @@ fi<br class="">
- <br class="">
+diff --git a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+index 2b8aa4d592..1f5bf4b4b0 100644<br class="">
+--- a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
++++ b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+@@ -4976,7 +4976,7 @@ fi<br class="">
&nbsp; # first curses header check<br class="">
&nbsp; ac_save_cppflags="$CPPFLAGS"<br class="">
--CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"<br class="">
-+CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw"<br class="">
+ if test "$cross_compiling" = no; then<br class="">
+-&nbsp; CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"<br class="">
++&nbsp; CPPFLAGS="$CPPFLAGS -I=/usr/include/ncursesw"<br class="">
+ fi<br class="">
<br class="">
&nbsp; AC_CHECK_HEADERS(curses.h ncurses.h)<br class="">
- <br class="">
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch<br class="">
index a3cc48c9a4..ebdd64b7b5 100644<br class="">
--- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch<br class="">
@@ -5,13 +5,17 @@ Avoid a warning by not adding this module to missing variable.<br class="">
&nbsp;Upstream-Status: Inappropriate [distribution]<br class="">
<br class="">
&nbsp;Also simply disable the tk module since its not in DEPENDS.<br class="">
+<br class="">
+2018-08: Rebased for 3.7.0<br class="">
+&nbsp; -- Jens<br class="">
+<br class="">
&nbsp;Signed-off-by: Andrei Gherzan &lt;<a href="mailto:andrei@gherzan.ro" target="_blank" class="">andrei@gherzan.ro</a>&gt;<br class="">
<br class="">
-Index: Python-3.5.3/setup.py<br class="">
-===================================================================<br class="">
---- Python-3.5.3.orig/setup.py<br class="">
-+++ Python-3.5.3/setup.py<br class="">
-@@ -1558,10 +1558,12 @@ class PyBuildExt(build_ext):<br class="">
+diff --git a/setup.py b/setup.py<br class="">
+index 37c5dd58a6..0321245761 100644<br class="">
+--- a/setup.py<br class="">
++++ b/setup.py<br class="">
+@@ -1608,10 +1608,12 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.extensions.extend(exts)<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Call the method for detecting whether _tkinter can be compiled<br class="">
@@ -25,5 +29,5 @@ Index: Python-3.5.3/setup.py<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; #if '_tkinter' not in [<a href="http://e.name/" rel="noreferrer" target="_blank" class="">e.name</a> for e in self.extensions]:<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; #&nbsp; &nbsp; missing.append('_tkinter')<br class="">
<br class="">
- ##&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Uncomment these lines if you want to play with xxmodule.c<br class="">
- ##&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ext = Extension('xx', ['xxmodule.c'])<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Build the _uuid module if possible<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])<br class="">
diff --git a/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch b/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch<br class="">
index 97214f9aa4..689baf00ad 100644<br class="">
--- a/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/configure.ac-fix-LIBPL.patch<br class="">
@@ -7,24 +7,27 @@ Use LIBDIR rather than prefix/lib, so that it would work when lib64.<br class="">
<br class="">
&nbsp;Upstream-Status: Pending<br class="">
<br class="">
+2018-08: rebased and adopted for 3.7<br class="">
+&nbsp; -- Jens<br class="">
+<br class="">
&nbsp;Signed-off-by: Robert Yang &lt;<a href="mailto:liezhi.yang@windriver.com" target="_blank" class="">liezhi.yang@windriver.com</a>&gt;<br class="">
&nbsp;---<br class="">
&nbsp; <a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> |&nbsp; &nbsp; 2 +-<br class="">
&nbsp; 1 file changed, 1 insertion(+), 1 deletion(-)<br class="">
<br class="">
&nbsp;diff --git a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-index 63aef8e..aefb27f 100644<br class="">
+index 2b8aa4d592..0da15fbbdf 100644<br class="">
&nbsp;--- a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
&nbsp;+++ b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-@@ -4366,7 +4366,7 @@ AC_MSG_RESULT($LDVERSION)<br class="">
- <br class="">
+@@ -4674,9 +4674,9 @@ AC_MSG_RESULT($LDVERSION)<br class="">
&nbsp; dnl define LIBPL after ABIFLAGS and LDVERSION is defined.<br class="">
&nbsp; AC_SUBST(PY_ENABLE_SHARED)<br class="">
--LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"<br class="">
-+LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}"<br class="">
+ if test x$PLATFORM_TRIPLET = x; then<br class="">
+-&nbsp; LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"<br class="">
++&nbsp; LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}"<br class="">
+ else<br class="">
+-&nbsp; LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"<br class="">
++&nbsp; LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"<br class="">
+ fi<br class="">
&nbsp; AC_SUBST(LIBPL)<br class="">
<br class="">
- # Check whether right shifting a negative integer extends the sign bit<br class="">
--- <br class="">
-1.7.9.5<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/float-endian.patch b/meta/recipes-devtools/python/python3/float-endian.patch<br class="">
index 6ba3f5c252..1511f00bc3 100644<br class="">
--- a/meta/recipes-devtools/python/python3/float-endian.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/float-endian.patch<br class="">
@@ -21,19 +21,19 @@ Subject: [PATCH] Don't do runtime test to get float byte order<br class="">
&nbsp; create mode 100644 m4/ax_c_float_words_bigendian.m4<br class="">
<br class="">
&nbsp;diff --git a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-index c9b755f0f4..1215969871 100644<br class="">
+index 2b8aa4d592..80aa37125f 100644<br class="">
&nbsp;--- a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
&nbsp;+++ b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-@@ -9,6 +9,8 @@ AC_PREREQ(2.65)<br class="">
+@@ -11,6 +11,8 @@ AC_INIT(python, PYTHON_VERSION, <a href="https://bugs.python.org/" rel="noreferrer" target="_blank" class="">https://bugs.python.org/</a>)<br class="">
<br class="">
- AC_INIT(python, PYTHON_VERSION, <a href="https://bugs.python.org/" rel="noreferrer" target="_blank" class="">https://bugs.python.org/</a>)<br class="">
+ AC_CONFIG_MACRO_DIR(m4)<br class="">
<br class="">
&nbsp;+AC_CONFIG_MACRO_DIR(m4)<br class="">
&nbsp;+<br class="">
&nbsp; AC_SUBST(BASECPPFLAGS)<br class="">
&nbsp; if test "$srcdir" != . -a "$srcdir" != "$(pwd)"; then<br class="">
&nbsp; &nbsp; &nbsp; # If we're building out-of-tree, we need to make sure the following<br class="">
-@@ -4128,77 +4130,19 @@ fi<br class="">
+@@ -4264,77 +4266,19 @@ fi<br class="">
&nbsp; # * Check for various properties of floating point *<br class="">
&nbsp; # **************************************************<br class="">
<br class="">
@@ -209,4 +209,3 @@ index 0000000000..216b90d803<br class="">
&nbsp;+])# AX_C_FLOAT_WORDS_BIGENDIAN<br class="">
&nbsp;-- <br class="">
&nbsp;2.11.0<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/ftplib.patch b/meta/recipes-devtools/python/python3/ftplib.patch<br class="">
deleted file mode 100644<br class="">
index 49c5b2736b..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/ftplib.patch<br class="">
+++ /dev/null<br class="">
@@ -1,60 +0,0 @@<br class="">
-Upstream-Status: Backport<br class="">
-Signed-off-by: Ross Burton &lt;<a href="mailto:ross.burton@intel.com" target="_blank" class="">ross.burton@intel.com</a>&gt;<br class="">
-<br class="">
-From cabe916dc694997d4892b58986e73a713d5a2f8d Mon Sep 17 00:00:00 2001<br class="">
-From: "Miss Islington (bot)"<br class="">
- &lt;<a href="mailto:31488909%2Bmiss-islington@users.noreply.github.com" target="_blank" class="">31488909+miss-islington@users.noreply.github.com</a>&gt;<br class="">
-Date: Thu, 16 Aug 2018 15:38:03 -0400<br class="">
-Subject: [PATCH] [3.6] bpo-34391: Fix ftplib test for TLS 1.3 (GH-8787)<br class="">
- (#8790)<br class="">
-<br class="">
-Read from data socket to avoid "[SSL] shutdown while in init" exception<br class="">
-during shutdown of the dummy server.<br class="">
-<br class="">
-Signed-off-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
-<br class="">
-<br class="">
-&lt;!-- issue-number: [bpo-34391](<a href="https://www.bugs.python.org/issue34391" rel="noreferrer" target="_blank" class="">https://www.bugs.python.org/issue34391</a>) --&gt;<br class="">
-<a href="https://bugs.python.org/issue34391" rel="noreferrer" target="_blank" class="">https://bugs.python.org/issue34391</a><br class="">
-&lt;!-- /issue-number --&gt;<br class="">
-(cherry picked from commit 1590c393360df059160145e7475754427bfc6680)<br class="">
-<br class="">
-<br class="">
-Co-authored-by: Christian Heimes &lt;<a href="mailto:christian@python.org" target="_blank" class="">christian@python.org</a>&gt;<br class="">
----<br class="">
- Lib/test/test_ftplib.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 5 +++++<br class="">
- Misc/NEWS.d/next/Tests/2018-08-16-18-48-47.bpo-34391.ouNfxC.rst | 1 +<br class="">
- 2 files changed, 6 insertions(+)<br class="">
- create mode 100644 Misc/NEWS.d/next/Tests/2018-08-16-18-48-47.bpo-34391.ouNfxC.rst<br class="">
-<br class="">
-diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py<br class="">
-index 44dd73aeca..4ff2f71afb 100644<br class="">
---- a/Lib/test/test_ftplib.py<br class="">
-+++ b/Lib/test/test_ftplib.py<br class="">
-@@ -876,18 +876,23 @@ class TestTLS_FTPClass(TestCase):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# clear text<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with self.client.transfercmd('list') as sock:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertNotIsInstance(sock, ssl.SSLSocket)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(self.client.voidresp(), "226 transfer complete")<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# secured, after PROT P<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.client.prot_p()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with self.client.transfercmd('list') as sock:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertIsInstance(sock, ssl.SSLSocket)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # consume from SSL socket to finalize handshake and avoid<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # "SSLError [SSL] shutdown while in init"<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(self.client.voidresp(), "226 transfer complete")<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# PROT C is issued, the connection must be in cleartext again<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.client.prot_c()<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;with self.client.transfercmd('list') as sock:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertNotIsInstance(sock, ssl.SSLSocket)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(sock.recv(1024), LIST_DATA.encode('ascii'))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertEqual(self.client.voidresp(), "226 transfer complete")<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;def test_login(self):<br class="">
--- <br class="">
-2.11.0<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/pass-missing-libraries-to-Extension-for-mul.patch<br class="">
index 5c3af6b626..1ce4defe95 100644<br class="">
--- a/meta/recipes-devtools/python/python3/pass-missing-libraries-to-Extension-for-mul.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/pass-missing-libraries-to-Extension-for-mul.patch<br class="">
@@ -47,16 +47,19 @@ And the semaphore issue also caused multiprocessing.Queue().put() hung.<br class="">
<br class="">
&nbsp;Upstream-Status: Submitted [<a href="https://github.com/python/cpython/pull/2999" rel="noreferrer" target="_blank" class="">https://github.com/python/cpython/pull/2999</a>]<br class="">
<br class="">
+2018-08: rebased for 3.7<br class="">
+&nbsp; -- Jens<br class="">
+<br class="">
&nbsp;Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank" class="">hongxu.jia@windriver.com</a>&gt;<br class="">
&nbsp;---<br class="">
&nbsp; setup.py | 7 +++++--<br class="">
&nbsp; 1 file changed, 5 insertions(+), 2 deletions(-)<br class="">
<br class="">
&nbsp;diff --git a/setup.py b/setup.py<br class="">
-index 4f0f522..d05707d 100644<br class="">
+index a97a7559ca..633eba8f1e 100644<br class="">
&nbsp;--- a/setup.py<br class="">
&nbsp;+++ b/setup.py<br class="">
-@@ -1606,8 +1606,10 @@ class PyBuildExt(build_ext):<br class="">
+@@ -1580,8 +1580,10 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; elif host_platform.startswith('netbsd'):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; macros = dict()<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; libraries = []<br class="">
@@ -69,14 +72,11 @@ index 4f0f522..d05707d 100644<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; macros = dict()<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; libraries = ['rt']<br class="">
<br class="">
-@@ -1626,6 +1628,7 @@ class PyBuildExt(build_ext):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if sysconfig.get_config_var('WITH_THREAD'):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exts.append ( Extension('_multiprocessing', multiprocessing_srcs,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;define_macros=list(macros.items()),<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; libraries=libraries,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;include_dirs=["Modules/_multiprocessing"]))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;missing.append('_multiprocessing')<br class="">
--- <br class="">
-2.7.4<br class="">
-<br class="">
+@@ -1599,6 +1601,7 @@ class PyBuildExt(build_ext):<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exts.append ( Extension('_multiprocessing', multiprocessing_srcs,<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;define_macros=list(macros.items()),<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; libraries=libraries,<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;include_dirs=["Modules/_multiprocessing"]))<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# End multiprocessing<br class="">
+ <br class="">
diff --git a/meta/recipes-devtools/python/python3/python-3.3-multilib.patch b/meta/recipes-devtools/python/python3/python-3.3-multilib.patch<br class="">
index cc35dc1617..d5bafbfba1 100644<br class="">
--- a/meta/recipes-devtools/python/python3/python-3.3-multilib.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/python-3.3-multilib.patch<br class="">
@@ -4,7 +4,7 @@ Date: Tue, 14 May 2013 15:00:26 -0700<br class="">
&nbsp;Subject: [PATCH 01/13] get the sys.lib from python itself and do not use<br class="">
&nbsp; hardcoded value of 'lib'<br class="">
<br class="">
-02/2015 Rebased for 3.4.2<br class="">
+08/2018 Rebased for 3.7.0<br class="">
<br class="">
&nbsp;Upstream-Status: Pending<br class="">
&nbsp;Signed-off-by: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com" target="_blank" class="">raj.khem@gmail.com</a>&gt;<br class="">
@@ -25,12 +25,12 @@ Signed-off-by: Alejandro Hernandez &lt;<a href="mailto:alejandro.hernandez@linux.intel.com" target="_blank" class="">alejandro.hernandez@linux.intel.com</a>&gt;<br class="">
&nbsp; setup.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; 9 ++++-----<br class="">
&nbsp; 12 files changed, 97 insertions(+), 23 deletions(-)<br class="">
<br class="">
-Index: Python-3.5.4/Include/pythonrun.h<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Include/pythonrun.h<br class="">
-+++ Python-3.5.4/Include/pythonrun.h<br class="">
-@@ -23,6 +23,9 @@ typedef struct {<br class="">
- } PyCompilerFlags;<br class="">
+diff --git a/Include/pythonrun.h b/Include/pythonrun.h<br class="">
+index 6f0c6fc655..95a597b412 100644<br class="">
+--- a/Include/pythonrun.h<br class="">
++++ b/Include/pythonrun.h<br class="">
+@@ -7,6 +7,9 @@<br class="">
+ extern "C" {<br class="">
&nbsp; #endif<br class="">
<br class="">
&nbsp;+PyAPI_FUNC(const char *) Py_GetArch(void);<br class="">
@@ -39,10 +39,10 @@ Index: Python-3.5.4/Include/pythonrun.h<br class="">
&nbsp; #ifndef Py_LIMITED_API<br class="">
&nbsp; PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);<br class="">
&nbsp; PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);<br class="">
-Index: Python-3.5.4/Lib/distutils/command/install.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Lib/distutils/command/install.py<br class="">
-+++ Python-3.5.4/Lib/distutils/command/install.py<br class="">
+diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py<br class="">
+index 0258d3deae..352fd8f792 100644<br class="">
+--- a/Lib/distutils/command/install.py<br class="">
++++ b/Lib/distutils/command/install.py<br class="">
&nbsp;@@ -19,6 +19,8 @@ from site import USER_BASE<br class="">
&nbsp; from site import USER_SITE<br class="">
&nbsp; HAS_USER_SITE = True<br class="">
@@ -63,11 +63,11 @@ Index: Python-3.5.4/Lib/distutils/command/install.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'headers': '$base/include/python$py_version_short$abiflags/$dist_name',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'scripts': '$base/bin',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'data'&nbsp; &nbsp;: '$base',<br class="">
-Index: Python-3.5.4/Lib/pydoc.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Lib/pydoc.py<br class="">
-+++ Python-3.5.4/Lib/pydoc.py<br class="">
-@@ -389,7 +389,7 @@ class Doc:<br class="">
+diff --git a/Lib/pydoc.py b/Lib/pydoc.py<br class="">
+index 8a6b27b16e..fc55893b18 100644<br class="">
+--- a/Lib/pydoc.py<br class="">
++++ b/Lib/pydoc.py<br class="">
+@@ -399,7 +399,7 @@ class Doc:<br class="">
&nbsp; &nbsp; &nbsp; docmodule = docclass = docroutine = docother = docproperty = docdata = fail<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; def getdocloc(self, object,<br class="">
@@ -76,29 +76,30 @@ Index: Python-3.5.4/Lib/pydoc.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"python%d.%d" %&nbsp; sys.version_info[:2])):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; """Return the location of module docs or None"""<br class="">
<br class="">
-Index: Python-3.5.4/Lib/site.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Lib/site.py<br class="">
-+++ Python-3.5.4/Lib/site.py<br class="">
-@@ -303,12 +303,12 @@ def getsitepackages(prefixes=None):<br class="">
+diff --git a/Lib/site.py b/Lib/site.py<br class="">
+index ffd132b389..3ca8270d49 100644<br class="">
+--- a/Lib/site.py<br class="">
++++ b/Lib/site.py<br class="">
+@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; seen.add(prefix)<br class="">
<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if os.sep == '/':<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sitepackages.append(os.path.join(prefix, "lib",<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "python%d.%d" % sys.version_info[:2],<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sitepackages.append(os.path.join(prefix, sys.lib,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"python" + sys.version[:3],<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "python%d.%d" % sys.version_info[:2],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "site-packages"))<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else:<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sitepackages.append(prefix)<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sitepackages.append(os.path.join(prefix, "lib", "site-packages"))<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if sys.platform == "darwin":<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# for framework builds *only* we add the standard Apple<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# locations.<br class="">
-Index: Python-3.5.4/Lib/sysconfig.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Lib/sysconfig.py<br class="">
-+++ Python-3.5.4/Lib/sysconfig.py<br class="">
+&nbsp; &nbsp; &nbsp;return sitepackages<br class="">
+ <br class="">
+ def addsitepackages(known_paths, prefixes=None):<br class="">
+diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py<br class="">
+index e0f9c18531..9869363977 100644<br class="">
+--- a/Lib/sysconfig.py<br class="">
++++ b/Lib/sysconfig.py<br class="">
&nbsp;@@ -20,10 +20,10 @@ __all__ = [<br class="">
<br class="">
&nbsp; _INSTALL_SCHEMES = {<br class="">
@@ -129,7 +130,7 @@ Index: Python-3.5.4/Lib/sysconfig.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'include': '{installed_base}/include/python',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'platinclude': '{installed_base}/include/python',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'scripts': '{base}/bin',<br class="">
-@@ -61,10 +61,10 @@ _INSTALL_SCHEMES = {<br class="">
+@@ -62,10 +62,10 @@ _INSTALL_SCHEMES = {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'data': '{userbase}',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br class="">
&nbsp; &nbsp; &nbsp; 'posix_user': {<br class="">
@@ -144,28 +145,24 @@ Index: Python-3.5.4/Lib/sysconfig.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'include': '{userbase}/include/python{py_version_short}',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'scripts': '{userbase}/bin',<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'data': '{userbase}',<br class="">
-Index: Python-3.5.4/Lib/trace.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Lib/trace.py<br class="">
-+++ Python-3.5.4/Lib/trace.py<br class="">
-@@ -749,10 +749,10 @@ def main(argv=None):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# should I also call expanduser? (after all, could use $HOME)<br class="">
+diff --git a/Lib/trace.py b/Lib/trace.py<br class="">
+index 86b2101763..f3c32ec317 100755<br class="">
+--- a/Lib/trace.py<br class="">
++++ b/Lib/trace.py<br class="">
+@@ -659,7 +659,7 @@ def main():<br class="">
+&nbsp; &nbsp; &nbsp;opts = parser.parse_args()<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp;if opts.ignore_dir:<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; rel_path = 'lib', 'python{0.major}.{0.minor}'.format(sys.version_info)<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; rel_path = sys.lib, 'python{0.major}.{0.minor}'.format(sys.version_info)<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_prefix = os.path.join(sys.base_prefix, *rel_path)<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_exec_prefix = os.path.join(sys.base_exec_prefix, *rel_path)<br class="">
<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s = s.replace("$prefix",<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sys.base_prefix, "lib",<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sys.base_prefix, sys.lib,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "python" + sys.version[:3]))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s = s.replace("$exec_prefix",<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sys.base_exec_prefix, "lib",<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sys.base_exec_prefix, sys.lib,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "python" + sys.version[:3]))<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;s = os.path.normpath(s)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ignore_dirs.append(s)<br class="">
-Index: Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-+++ Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-@@ -109,6 +109,8 @@ CFLAGS_ALIASING=@CFLAGS_ALIASING@<br class="">
+diff --git a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a> b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
+index 31b4bcabb3..713215e57d 100644<br class="">
+--- a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
++++ b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
+@@ -114,6 +114,8 @@ CFLAGS_ALIASING=@CFLAGS_ALIASING@<br class="">
<br class="">
&nbsp; # Machine-dependent subdirectories<br class="">
&nbsp; MACHDEP=&nbsp; &nbsp; &nbsp; @MACHDEP@<br class="">
@@ -174,7 +171,7 @@ Index: Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
<br class="">
&nbsp; # Multiarch directory (may be empty)<br class="">
&nbsp; MULTIARCH=&nbsp; &nbsp; @MULTIARCH@<br class="">
-@@ -128,7 +130,7 @@ LIBDIR=&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @libdir@<br class="">
+@@ -134,7 +136,7 @@ LIBDIR=&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @libdir@<br class="">
&nbsp; MANDIR=&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@mandir@<br class="">
&nbsp; INCLUDEDIR=&nbsp; &nbsp;@includedir@<br class="">
&nbsp; CONFINCLUDEDIR=&nbsp; &nbsp; &nbsp; &nbsp;$(exec_prefix)/include<br class="">
@@ -183,7 +180,7 @@ Index: Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
&nbsp; ABIFLAGS=&nbsp; &nbsp; &nbsp;@ABIFLAGS@<br class="">
<br class="">
&nbsp; # Detailed destination directories<br class="">
-@@ -731,6 +733,7 @@ Modules/getpath.o: $(srcdir)/Modules/get<br class="">
+@@ -754,6 +756,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -DEXEC_PREFIX='"$(exec_prefix)"' \<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -DVERSION='"$(VERSION)"' \<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -DVPATH='"$(VPATH)"' \<br class="">
@@ -191,8 +188,8 @@ Index: Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -o $@ $(srcdir)/Modules/getpath.c<br class="">
<br class="">
&nbsp; Programs/python.o: $(srcdir)/Programs/python.c<br class="">
-@@ -813,7 +816,7 @@ regen-opcode:<br class="">
- Python/compile.o Python/symtable.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h<br class="">
+@@ -842,7 +845,7 @@ regen-opcode:<br class="">
+ Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h<br class="">
<br class="">
&nbsp; Python/getplatform.o: $(srcdir)/Python/getplatform.c<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c<br class="">
@@ -200,11 +197,11 @@ Index: Python-3.5.4/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
<br class="">
&nbsp; Python/importdl.o: $(srcdir)/Python/importdl.c<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c<br class="">
-Index: Python-3.5.4/Modules/getpath.c<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Modules/getpath.c<br class="">
-+++ Python-3.5.4/Modules/getpath.c<br class="">
-@@ -105,6 +105,13 @@<br class="">
+diff --git a/Modules/getpath.c b/Modules/getpath.c<br class="">
+index 041cb14b4b..d52d1e1cdb 100644<br class="">
+--- a/Modules/getpath.c<br class="">
++++ b/Modules/getpath.c<br class="">
+@@ -106,6 +106,13 @@ extern "C" {<br class="">
&nbsp; #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"<br class="">
&nbsp; #endif<br class="">
<br class="">
@@ -218,30 +215,22 @@ Index: Python-3.5.4/Modules/getpath.c<br class="">
&nbsp; #ifndef LANDMARK<br class="">
&nbsp; #define LANDMARK L"os.py"<br class="">
&nbsp; #endif<br class="">
-@@ -113,6 +120,7 @@ static wchar_t prefix[MAXPATHLEN+1];<br class="">
- static wchar_t exec_prefix[MAXPATHLEN+1];<br class="">
- static wchar_t progpath[MAXPATHLEN+1];<br class="">
- static wchar_t *module_search_path = NULL;<br class="">
-+static wchar_t *lib_python = L"" LIB_PYTHON;<br class="">
- <br class="">
- /* Get file status. Encode the path to the locale encoding. */<br class="">
- <br class="">
-@@ -494,7 +502,7 @@ calculate_path(void)<br class="">
-&nbsp; &nbsp; &nbsp;_pythonpath = Py_DecodeLocale(PYTHONPATH, NULL);<br class="">
-&nbsp; &nbsp; &nbsp;_prefix = Py_DecodeLocale(PREFIX, NULL);<br class="">
-&nbsp; &nbsp; &nbsp;_exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL);<br class="">
--&nbsp; &nbsp; lib_python = Py_DecodeLocale("lib/python" VERSION, NULL);<br class="">
-+&nbsp; &nbsp; lib_python = Py_DecodeLocale(LIB_PYTHON, NULL);<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Py_FatalError(<br class="">
-Index: Python-3.5.4/Python/getplatform.c<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Python/getplatform.c<br class="">
-+++ Python-3.5.4/Python/getplatform.c<br class="">
+@@ -867,7 +874,7 @@ calculate_init(PyCalculatePath *calculate,<br class="">
+&nbsp; &nbsp; &nbsp;if (!calculate-&gt;prefix) {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);<br class="">
+&nbsp; &nbsp; &nbsp;}<br class="">
+-&nbsp; &nbsp; calculate-&gt;lib_python = Py_DecodeLocale("lib/python" VERSION, &amp;len);<br class="">
++&nbsp; &nbsp; calculate-&gt;lib_python = Py_DecodeLocale(LIB_PYTHON, &amp;len);<br class="">
+&nbsp; &nbsp; &nbsp;if (!calculate-&gt;lib_python) {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);<br class="">
+&nbsp; &nbsp; &nbsp;}<br class="">
+diff --git a/Python/getplatform.c b/Python/getplatform.c<br class="">
+index 81a0f7ac53..bc7127ae3e 100644<br class="">
+--- a/Python/getplatform.c<br class="">
++++ b/Python/getplatform.c<br class="">
&nbsp;@@ -10,3 +10,23 @@ Py_GetPlatform(void)<br class="">
&nbsp; {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;return PLATFORM;<br class="">
+&nbsp; &nbsp; &nbsp;return PLATFORM;<br class="">
&nbsp; }<br class="">
&nbsp;+<br class="">
&nbsp;+#ifndef ARCH<br class="">
@@ -263,11 +252,11 @@ Index: Python-3.5.4/Python/getplatform.c<br class="">
&nbsp;+{<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; return LIB;<br class="">
&nbsp;+}<br class="">
-Index: Python-3.5.4/Python/sysmodule.c<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/Python/sysmodule.c<br class="">
-+++ Python-3.5.4/Python/sysmodule.c<br class="">
-@@ -1827,6 +1827,10 @@ _PySys_Init(void)<br class="">
+diff --git a/Python/sysmodule.c b/Python/sysmodule.c<br class="">
+index 177b830762..38112b831e 100644<br class="">
+--- a/Python/sysmodule.c<br class="">
++++ b/Python/sysmodule.c<br class="">
+@@ -2324,6 +2324,10 @@ _PySys_BeginInit(PyObject **sysmod)<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PyUnicode_FromString(Py_GetCopyright()));<br class="">
&nbsp; &nbsp; &nbsp; SET_SYS_FROM_STRING("platform",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PyUnicode_FromString(Py_GetPlatform()));<br class="">
@@ -275,16 +264,16 @@ Index: Python-3.5.4/Python/sysmodule.c<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PyUnicode_FromString(Py_GetArch()));<br class="">
&nbsp;+&nbsp; &nbsp; SET_SYS_FROM_STRING("lib",<br class="">
&nbsp;+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PyUnicode_FromString(Py_GetLib()));<br class="">
-&nbsp; &nbsp; &nbsp;SET_SYS_FROM_STRING("executable",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PyUnicode_FromWideChar(<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Py_GetProgramFullPath(), -1));<br class="">
-Index: Python-3.5.4/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-+++ Python-3.5.4/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-@@ -885,6 +885,41 @@ PLATDIR=plat-$MACHDEP<br class="">
- AC_SUBST(PLATDIR)<br class="">
- AC_SUBST(PLATFORM_TRIPLET)<br class="">
+&nbsp; &nbsp; &nbsp;SET_SYS_FROM_STRING("maxsize",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PyLong_FromSsize_t(PY_SSIZE_T_MAX));<br class="">
+&nbsp; &nbsp; &nbsp;SET_SYS_FROM_STRING("float_info",<br class="">
+diff --git a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+index 5b66624d78..1c88696532 100644<br class="">
+--- a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
++++ b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+@@ -867,6 +867,41 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],<br class="">
+ LDFLAGS="$save_LDFLAGS"<br class="">
+ AC_SUBST(NO_AS_NEEDED)<br class="">
<br class="">
&nbsp;+AC_SUBST(ARCH)<br class="">
&nbsp;+AC_MSG_CHECKING(ARCH)<br class="">
@@ -322,13 +311,13 @@ Index: Python-3.5.4/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
&nbsp;+esac<br class="">
&nbsp;+AC_MSG_RESULT($LIB)<br class="">
<br class="">
- AC_MSG_CHECKING([for -Wl,--no-as-needed])<br class="">
- save_LDFLAGS="$LDFLAGS"<br class="">
-Index: Python-3.5.4/setup.py<br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/setup.py<br class="">
-+++ Python-3.5.4/setup.py<br class="">
-@@ -494,7 +494,7 @@ class PyBuildExt(build_ext):<br class="">
+ # checks for UNIX variants that set C preprocessor variables<br class="">
+ AC_USE_SYSTEM_EXTENSIONS<br class="">
+diff --git a/setup.py b/setup.py<br class="">
+index 37c5dd58a6..b82b7177bc 100644<br class="">
+--- a/setup.py<br class="">
++++ b/setup.py<br class="">
+@@ -541,7 +541,7 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # directories (i.e. '.' and 'Include') must be first.&nbsp; See issue<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # 10520.<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not cross_compiling:<br class="">
@@ -337,17 +326,16 @@ Index: Python-3.5.4/setup.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # only change this for cross builds for 3.3, issues on Mageia<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if cross_compiling:<br class="">
-@@ -552,8 +552,7 @@ class PyBuildExt(build_ext):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# be assumed that no additional -I,-L directives are needed.<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not cross_compiling:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lib_dirs = self.compiler.library_dirs + [<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '/lib64', '/usr/lib64',<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '/lib', '/usr/lib',<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '/' + sys.lib, '/usr/' + sys.lib,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;inc_dirs = self.compiler.include_dirs + ['/usr/include']<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else:<br class="">
-@@ -745,11 +744,11 @@ class PyBuildExt(build_ext):<br class="">
+@@ -579,7 +579,7 @@ class PyBuildExt(build_ext):<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;add_dir_to_list(self.compiler.include_dirs,<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sysconfig.get_config_var("INCLUDEDIR"))<br class="">
+ <br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; system_lib_dirs = ['/' + sys.lib, '/usr/' + sys.lib]<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;system_include_dirs = ['/usr/include']<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# lib_dirs and inc_dirs are used to search for files;<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# if a file is found in one of those directories, it can<br class="">
+@@ -836,11 +836,11 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; elif curses_library:<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; readline_libs.append(curses_library)<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; elif self.compiler.find_library_file(lib_dirs +<br class="">
@@ -361,3 +349,26 @@ Index: Python-3.5.4/setup.py<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;extra_link_args=readline_extra_link_args,<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;libraries=readline_libs) )<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else:<br class="">
+@@ -1054,8 +1054,7 @@ class PyBuildExt(build_ext):<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# check lib directories parallel to the location of the header<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db_dirs_to_check = [<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db_incdir.replace("include", 'lib64'),<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db_incdir.replace("include", 'lib'),<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db_incdir.replace("include", sys.lib),<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if host_platform != 'darwin':<br class="">
+@@ -1166,10 +1165,8 @@ class PyBuildExt(build_ext):<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if sqlite_incdir:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sqlite_dirs_to_check = [<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', 'lib64'),<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', 'lib'),<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', '..', 'lib64'),<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', '..', 'lib'),<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', sys.lib),<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.path.join(sqlite_incdir, '..', '..', sys.lib),<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sqlite_libfile = self.compiler.find_library_file(<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sqlite_dirs_to_check + lib_dirs, 'sqlite3')<br class="">
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json<br class="">
index f922561368..aff5b63289 100644<br class="">
--- a/meta/recipes-devtools/python/python3/python3-manifest.json<br class="">
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json<br class="">
@@ -27,24 +27,17 @@<br class="">
&nbsp; &nbsp; &nbsp;"asyncio": {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"summary": "Python Asynchronous I/",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"rdepends": [<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "compression",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"core",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "crypt",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"io",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"logging",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "math",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "multiprocessing",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"netclient",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "pickle",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "shell",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "stringold",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "threading",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "unixadmin"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "stringold"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"files": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/asyncio",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/concurrent",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/concurrent/futures"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/concurrent/futures",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_asyncio.*.so"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"cached": []<br class="">
&nbsp; &nbsp; &nbsp;},<br class="">
@@ -149,7 +142,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_markupbase.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/abc.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/argparse.py",<br class="">
@@ -162,6 +155,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/collections/abc.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/configparser.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/contextlib.py",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/contextvars.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/copy.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/copyreg.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/csv.py",<br class="">
@@ -191,6 +185,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/time.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/xreadlines.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bisect.*.so",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_contextvars.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_csv.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_heapq.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",<br class="">
@@ -256,6 +251,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/codeop.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/configparser.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/contextlib.*.pyc",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/__pycache__/contextvars.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc",<br class="">
@@ -323,9 +319,13 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"files": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/crypt.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/hashlib.py",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_crypt.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"cached": [<br class="">
@@ -729,7 +729,9 @@<br class="">
&nbsp; &nbsp; &nbsp;"multiprocessing": {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"summary": "Python multiprocessing support",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"rdepends": [<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "core"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "core",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "io",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "pickle"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"files": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multiprocessing.*.so",<br class="">
@@ -740,18 +742,14 @@<br class="">
&nbsp; &nbsp; &nbsp;"netclient": {<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"summary": "Python Internet Protocol clients",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"rdepends": [<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "compression",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"core",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"crypt",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ctypes",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"datetime",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"email",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"io",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"math",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"mime",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "shell",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "stringold",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "unixadmin"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "stringold"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"files": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/base64.py",<br class="">
@@ -759,6 +757,7 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/hmac.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/http",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/http/__pycache__",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/nntplib.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/poplib.py",<br class="">
@@ -1043,13 +1042,12 @@<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"files": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_dummy_thread.py",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/_threading_local.py",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/dummy_threading.py",<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_queue.*.so",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/queue.py"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;],<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"cached": [<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_dummy_thread.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/_threading_local.*.pyc",<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dummy_threading.*.pyc",<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"${libdir}/python${PYTHON_MAJMIN}/__pycache__/queue.*.pyc"<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]<br class="">
&nbsp; &nbsp; &nbsp;},<br class="">
diff --git a/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch b/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch<br class="">
index a4f8bd4710..c6aa581b4c 100644<br class="">
--- a/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch<br class="">
@@ -5,21 +5,24 @@ Subject: [PATCH] python3 use CROSSPYTHONPATH for PYTHON_FOR_BUILD<br class="">
<br class="">
&nbsp;Upstream-Status: Inappropriate [Cross compile specific]<br class="">
<br class="">
+2018-08: Rebased and adopted for 3.7<br class="">
+&nbsp; -- Jens<br class="">
+<br class="">
&nbsp;Signed-off-by: Jackie Huang &lt;<a href="mailto:jackie.huang@windriver.com" target="_blank" class="">jackie.huang@windriver.com</a>&gt;<br class="">
&nbsp;---<br class="">
&nbsp; <a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> | 2 +-<br class="">
&nbsp; 1 file changed, 1 insertion(+), 1 deletion(-)<br class="">
<br class="">
-Index: Python-3.5.4/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-===================================================================<br class="">
---- Python-3.5.4.orig/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-+++ Python-3.5.4/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
-@@ -73,7 +73,7 @@ if test "$cross_compiling" = yes; then<br class="">
+diff --git a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a> b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+index 2b8aa4d592..a361436f4f 100644<br class="">
+--- a/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
++++ b/<a href="http://configure.ac/" rel="noreferrer" target="_blank" class="">configure.ac</a><br class="">
+@@ -75,7 +75,7 @@ if test "$cross_compiling" = yes; then<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; fi<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AC_MSG_RESULT($interp)<br class="">
--&nbsp; &nbsp; &nbsp; PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt &amp;&amp; echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp<br class="">
-+&nbsp; &nbsp; &nbsp; PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH) '$interp<br class="">
+-&nbsp; &nbsp; &nbsp; PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt &amp;&amp; echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp<br class="">
++&nbsp; &nbsp; &nbsp; PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH) _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp<br class="">
&nbsp; &nbsp; &nbsp; fi<br class="">
&nbsp; elif test "$cross_compiling" = maybe; then<br class="">
&nbsp; &nbsp; &nbsp; AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])<br class="">
diff --git a/meta/recipes-devtools/python/python3/regen-all.patch b/meta/recipes-devtools/python/python3/regen-all.patch<br class="">
deleted file mode 100644<br class="">
index 36b9d9d919..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/regen-all.patch<br class="">
+++ /dev/null<br class="">
@@ -1,25 +0,0 @@<br class="">
-python3-native: run regen-importlib target correctly<br class="">
-<br class="">
-regen-importlib depends on other regen- targets, so we must be sure to<br class="">
-run it after (most of) the others.&nbsp; In reality, we do not need to run it<br class="">
-at all since "make" will invoke it, if necessary.&nbsp; We do not want to<br class="">
-rely on that, though.<br class="">
-<br class="">
-Upstream-Status: Pending<br class="">
-<br class="">
-Signed-off-by: Joe Slater &lt;<a href="mailto:joe.slater@windriver.com" target="_blank" class="">joe.slater@windriver.com</a>&gt;<br class="">
-<br class="">
-<br class="">
-<br class="">
---- a/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-+++ b/<a href="http://makefile.pre.in/" rel="noreferrer" target="_blank" class="">Makefile.pre.in</a><br class="">
-@@ -709,7 +709,8 @@ regen-importlib: Programs/_freeze_import<br class="">
- ############################################################################<br class="">
- # Regenerate all generated files<br class="">
- <br class="">
--regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar regen-ast regen-importlib<br class="">
-+regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar regen-ast<br class="">
-+&nbsp; &nbsp; &nbsp; $(MAKE) regen-importlib<br class="">
- <br class="">
- ############################################################################<br class="">
- # Special rules for object files<br class="">
diff --git a/meta/recipes-devtools/python/python3/signal.patch b/meta/recipes-devtools/python/python3/signal.patch<br class="">
deleted file mode 100644<br class="">
index 534a097771..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/signal.patch<br class="">
+++ /dev/null<br class="">
@@ -1,56 +0,0 @@<br class="">
-Upstream-Status: Backport<br class="">
-Signed-off-by: Ross Burton &lt;<a href="mailto:ross.burton@intel.com" target="_blank" class="">ross.burton@intel.com</a>&gt;<br class="">
-<br class="">
-From 4315389df3c4e8c1f94a18ab11a4b234762132b1 Mon Sep 17 00:00:00 2001<br class="">
-From: Antoine Pitrou &lt;<a href="mailto:pitrou@free.fr" target="_blank" class="">pitrou@free.fr</a>&gt;<br class="">
-Date: Mon, 23 Apr 2018 22:22:49 +0200<br class="">
-Subject: [PATCH] [3.6] bpo-33329: Fix multiprocessing regression on newer<br class="">
- glibcs (GH-6575) (GH-6582)<br class="">
-<br class="">
-Starting with glibc 2.27.9000-xxx, sigaddset() can return EINVAL for some<br class="">
-reserved signal numbers between 1 and NSIG.&nbsp; The `range(1, NSIG)` idiom<br class="">
-is commonly used to select all signals for blocking with `pthread_sigmask`.<br class="">
-So we ignore the sigaddset() return value until we expose sigfillset()<br class="">
-to provide a better idiom.<br class="">
-(cherry picked from commit 25038ecfb665bef641abf8cb61afff7505b0e008)<br class="">
----<br class="">
- .../next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst&nbsp; |&nbsp; 1 +<br class="">
- Modules/signalmodule.c&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 14 ++++++++------<br class="">
- 2 files changed, 9 insertions(+), 6 deletions(-)<br class="">
- create mode 100644 Misc/NEWS.d/next/Library/2018-04-23-13-21-39.bpo-33329.lQ-Eod.rst<br class="">
-<br class="">
-diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c<br class="">
-index e0d06b434d..138e74e8a9 100644<br class="">
---- a/Modules/signalmodule.c<br class="">
-+++ b/Modules/signalmodule.c<br class="">
-@@ -744,7 +744,6 @@ iterable_to_sigset(PyObject *iterable, sigset_t *mask)<br class="">
-&nbsp; &nbsp; &nbsp;int result = -1;<br class="">
-&nbsp; &nbsp; &nbsp;PyObject *iterator, *item;<br class="">
-&nbsp; &nbsp; &nbsp;long signum;<br class="">
--&nbsp; &nbsp; int err;<br class="">
- <br class="">
-&nbsp; &nbsp; &nbsp;sigemptyset(mask);<br class="">
- <br class="">
-@@ -766,11 +765,14 @@ iterable_to_sigset(PyObject *iterable, sigset_t *mask)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Py_DECREF(item);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (signum == -1 &amp;&amp; PyErr_Occurred())<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto error;<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if (0 &lt; signum &amp;&amp; signum &lt; NSIG)<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; err = sigaddset(mask, (int)signum);<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; else<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; err = 1;<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; if (err) {<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if (0 &lt; signum &amp;&amp; signum &lt; NSIG) {<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /* bpo-33329: ignore sigaddset() return value as it can fail<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* for some reserved signals, but we want the `range(1, NSIG)`<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* idiom to allow selecting all valid signals.<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (void) sigaddset(mask, (int)signum);<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; }<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; else {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PyErr_Format(PyExc_ValueError,<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "signal number %ld out of range", signum);<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;goto error;<br class="">
--- <br class="">
-2.11.0<br class="">
-<br class="">
diff --git a/meta/recipes-devtools/python/python3/support_SOURCE_DATE_EPOCH_in_py_compile.patch b/meta/recipes-devtools/python/python3/support_SOURCE_DATE_EPOCH_in_py_compile.patch<br class="">
deleted file mode 100644<br class="">
index 32ecab9fec..0000000000<br class="">
--- a/meta/recipes-devtools/python/python3/support_SOURCE_DATE_EPOCH_in_py_compile.patch<br class="">
+++ /dev/null<br class="">
@@ -1,97 +0,0 @@<br class="">
-The compiled .pyc files contain time stamp corresponding to the compile time.<br class="">
-This prevents binary reproducibility. This patch allows to achieve binary<br class="">
-reproducibility by overriding the build time stamp by the value <br class="">
-exported via SOURCE_DATE_EPOCH. <br class="">
-<br class="">
-Upstream-Status: Backport<br class="">
-<br class="">
-Signed-off-by: Juro Bystricky &lt;<a href="mailto:juro.bystricky@intel.com" target="_blank" class="">juro.bystricky@intel.com</a>&gt;<br class="">
-<br class="">
-<br class="">
-From aeab488630fdb1b56a8d0b0c13fa88706b2afe9b Mon Sep 17 00:00:00 2001<br class="">
-From: "Bernhard M. Wiedemann" &lt;<a href="mailto:bwiedemann@suse.de" target="_blank" class="">bwiedemann@suse.de</a>&gt;<br class="">
-Date: Sat, 25 Feb 2017 06:42:28 +0100<br class="">
-Subject: [PATCH] bpo-29708: support SOURCE_DATE_EPOCH env var in py_compile<br class="">
-<br class="">
-to allow for reproducible builds of python packages<br class="">
-<br class="">
-See <a href="https://reproducible-builds.org/" rel="noreferrer" target="_blank" class="">https://reproducible-builds.org/</a> for why this is good<br class="">
-and <a href="https://reproducible-builds.org/specs/source-date-epoch/" rel="noreferrer" target="_blank" class="">https://reproducible-builds.org/specs/source-date-epoch/</a><br class="">
-for the definition of this variable.<br class="">
-<br class="">
-Background:<br class="">
-In some distributions like openSUSE, binary rpms contain precompiled .pyc files.<br class="">
-<br class="">
-And packages like amqp or twisted dynamically generate .py files at build time<br class="">
-so those have the current time and that timestamp gets embedded<br class="">
-into the .pyc file header.<br class="">
-When we then adapt file timestamps in rpms to be constant,<br class="">
-the timestamp in the .pyc header will no more match<br class="">
-the .py timestamp in the filesystem.<br class="">
-The software will still work, but it will not use the .pyc file as it should.<br class="">
----<br class="">
- Doc/library/py_compile.rst&nbsp; |&nbsp; 4 ++++<br class="">
- Lib/py_compile.py&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|&nbsp; 4 ++++<br class="">
- Lib/test/test_py_compile.py | 19 +++++++++++++++++++<br class="">
- 3 files changed, 27 insertions(+)<br class="">
-<br class="">
-diff --git a/Doc/library/py_compile.rst b/Doc/library/py_compile.rst<br class="">
-index 0af8fb1..841f3e8 100644<br class="">
---- a/Doc/library/py_compile.rst<br class="">
-+++ b/Doc/library/py_compile.rst<br class="">
-@@ -53,6 +53,10 @@ byte-code cache files in the directory containing the source code.<br class="">
-&nbsp; &nbsp; :func:`compile` function.&nbsp; The default of ``-1`` selects the optimization<br class="">
-&nbsp; &nbsp; level of the current interpreter.<br class="">
- <br class="">
-+&nbsp; &nbsp;If the SOURCE_DATE_EPOCH environment variable is set, the .py file mtime<br class="">
-+&nbsp; &nbsp;and timestamp entry in .pyc file header, will be limited to this value.<br class="">
-+&nbsp; &nbsp;See <a href="https://reproducible-builds.org/specs/source-date-epoch/" rel="noreferrer" target="_blank" class="">https://reproducible-builds.org/specs/source-date-epoch/</a> for more info.<br class="">
-+<br class="">
-&nbsp; &nbsp; .. versionchanged:: 3.2<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;Changed default value of *cfile* to be :PEP:`3147`-compliant.&nbsp; Previous<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;default was *file* + ``'c'`` (``'o'`` if optimization was enabled).<br class="">
-diff --git a/Lib/py_compile.py b/Lib/py_compile.py<br class="">
-index 11c5b50..62dcdc7 100644<br class="">
---- a/Lib/py_compile.py<br class="">
-+++ b/Lib/py_compile.py<br class="">
-@@ -137,6 +137,10 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1):<br class="">
-&nbsp; &nbsp; &nbsp;except FileExistsError:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pass<br class="">
-&nbsp; &nbsp; &nbsp;source_stats = loader.path_stats(file)<br class="">
-+&nbsp; &nbsp; sde = os.environ.get('SOURCE_DATE_EPOCH')<br class="">
-+&nbsp; &nbsp; if sde and source_stats['mtime'] &gt; int(sde):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; source_stats['mtime'] = int(sde)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; os.utime(file, (source_stats['mtime'], source_stats['mtime']))<br class="">
-&nbsp; &nbsp; &nbsp;bytecode = importlib._bootstrap_external._code_to_bytecode(<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;code, source_stats['mtime'], source_stats['size'])<br class="">
-&nbsp; &nbsp; &nbsp;mode = importlib._bootstrap_external._calc_mode(file)<br class="">
-diff --git a/Lib/test/test_py_compile.py b/Lib/test/test_py_compile.py<br class="">
-index 4a6caa5..3d09963 100644<br class="">
---- a/Lib/test/test_py_compile.py<br class="">
-+++ b/Lib/test/test_py_compile.py<br class="">
-@@ -98,6 +98,25 @@ def test_bad_coding(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;self.assertFalse(os.path.exists(<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;importlib.util.cache_from_source(bad_coding)))<br class="">
- <br class="">
-+&nbsp; &nbsp; def test_source_date_epoch(self):<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; testtime = 123456789<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; orig_sde = os.getenv("SOURCE_DATE_EPOCH")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; os.environ["SOURCE_DATE_EPOCH"] = str(testtime)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; py_compile.compile(self.source_path, self.pyc_path)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; if orig_sde:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; os.environ["SOURCE_DATE_EPOCH"] = orig_sde<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; else:<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; del os.environ["SOURCE_DATE_EPOCH"]<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self.assertTrue(os.path.exists(self.pyc_path))<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self.assertFalse(os.path.exists(self.cache_path))<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; statinfo = os.stat(self.source_path)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(statinfo.st_mtime, testtime)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; f = open(self.pyc_path, "rb")<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; f.read(4)<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; timebytes = f.read(4) # read timestamp from pyc header<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; f.close()<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; self.assertEqual(timebytes, (testtime).to_bytes(4, 'little'))<br class="">
-+<br class="">
-&nbsp; &nbsp; &nbsp;@unittest.skipIf(sys.flags.optimize &gt; 0, 'test does not work with -O')<br class="">
-&nbsp; &nbsp; &nbsp;def test_double_dot_no_clobber(self):<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# <a href="http://bugs.python.org/issue22966" rel="noreferrer" target="_blank" class="">http://bugs.python.org/issue22966</a><br class="">
diff --git a/meta/recipes-devtools/python/python3/sysroot-include-headers.patch b/meta/recipes-devtools/python/python3/sysroot-include-headers.patch<br class="">
index 785b5567f2..d5983544c4 100644<br class="">
--- a/meta/recipes-devtools/python/python3/sysroot-include-headers.patch<br class="">
+++ b/meta/recipes-devtools/python/python3/sysroot-include-headers.patch<br class="">
@@ -6,26 +6,27 @@ Should fix things like<br class="">
&nbsp;configure:6972: arm-angstrom-linux-gnueabi-gcc&nbsp; -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a8 -DNDEBUG -fno-inline -D__SOFTFP__ --sysroot=/build/v2013.06/build/tmp-angstrom_v2013_06-eglibc/sysroots/beaglebone -c -O2 -pipe -g -feliminate-unused-debug-types&nbsp; -I/usr/include/ncursesw conftest.c &gt;&amp;5<br class="">
&nbsp;cc1: warning: include location "/usr/include/ncursesw" is unsafe for cross-compilation [-Wpoison-system-directories]<br class="">
<br class="">
+2018-08: Rebased to 3.7.0<br class="">
+&nbsp; -- Jens<br class="">
<br class="">
&nbsp;Signed-off-by: Khem Raj<br class="">
&nbsp;Upstream-Status: Pending<br class="">
<br class="">
-<br class="">
-Index: Python-3.3.2/setup.py<br class="">
-===================================================================<br class="">
---- Python-3.3.2.orig/setup.py 2013-07-30 01:30:48.000000000 -0700<br class="">
-+++ Python-3.3.2/setup.py&nbsp; &nbsp; &nbsp; 2013-07-30 01:41:11.697862723 -0700<br class="">
-@@ -1210,7 +1210,7 @@<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;panel_library = 'panel'<br class="">
+diff --git a/setup.py b/setup.py<br class="">
+index 37c5dd58a6..41e88a152b 100644<br class="">
+--- a/setup.py<br class="">
++++ b/setup.py<br class="">
+@@ -1333,7 +1333,7 @@ class PyBuildExt(build_ext):<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if curses_library == 'ncursesw':<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curses_defines.append(('HAVE_NCURSESW', '1'))<br class="">
--&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curses_includes.append('/usr/include/ncursesw')<br class="">
-+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curses_includes.append('=/usr/include/ncursesw')<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if not cross_compiling:<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curses_includes.append('/usr/include/ncursesw')<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curses_includes.append('=/usr/include/ncursesw')<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Bug 1464056: If _curses.so links with ncursesw,<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # _curses_panel.so must link with panelw.<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; panel_library = 'panelw'<br class="">
-@@ -1819,7 +1819,7 @@<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if host_platform == 'darwin':<br class="">
+@@ -1968,7 +1968,7 @@ class PyBuildExt(build_ext):<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # OS X 10.5 comes with libffi.dylib; the include files are<br class="">
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # in /usr/include/ffi<br class="">
&nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; inc_dirs.append('/usr/include/ffi')<br class="">
diff --git a/meta/recipes-devtools/python/python3/uuid_when_cross_compiling.patch b/meta/recipes-devtools/python/python3/uuid_when_cross_compiling.patch<br class="">
new file mode 100644<br class="">
index 0000000000..464f873112<br class="">
--- /dev/null<br class="">
+++ b/meta/recipes-devtools/python/python3/uuid_when_cross_compiling.patch<br class="">
@@ -0,0 +1,24 @@<br class="">
+Subject: [PATCH] util-linux uuid support<br class="">
+<br class="">
+Scan for uuid.h in include/uuid/ as well as in include/ to catch<br class="">
+the uuid/uuid.h well supported but accidently not detected.<br class="">
+<br class="">
+Upstream-Status: Pending<br class="">
+<br class="">
+Signed-off-by: Jens Rehsack &lt;<a href="mailto:sno@NetBSD.org" class="">sno@NetBSD.org</a>&gt;<br class="">
+diff --git a/setup.py b/setup.py<br class="">
+index a97a7559ca..01d8f24fdd 100644<br class="">
+--- a/setup.py<br class="">
++++ b/setup.py<br class="">
+@@ -1596,8 +1596,9 @@ class PyBuildExt(build_ext):<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp; &nbsp; missing.append('_tkinter')<br class="">
+ <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Build the _uuid module if possible<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; uuid_incs = find_file("uuid.h", inc_dirs, ["/usr/include/uuid"])<br class="">
+-&nbsp; &nbsp; &nbsp; &nbsp; if uuid_incs is not None:<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; uuid_incs = find_file("uuid.h", inc_dirs, [])<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; uuid_uuid_incs = find_file("uuid/uuid.h", inc_dirs, [])<br class="">
++&nbsp; &nbsp; &nbsp; &nbsp; if uuid_incs is not None or uuid_uuid_incs is not None:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if self.compiler.find_library_file(lib_dirs, 'uuid'):<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uuid_libs = ['uuid']<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else:<br class="">
diff --git a/meta/recipes-devtools/python/<a href="http://python3_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3_3.5.6.bb</a> b/meta/recipes-devtools/python/<a href="http://python3_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3_3.5.6.bb</a><br class="">
deleted file mode 100644<br class="">
index 2a4547694a..0000000000<br class="">
--- a/meta/recipes-devtools/python/<a href="http://python3_3.5.6.bb/" rel="noreferrer" target="_blank" class="">python3_3.5.6.bb</a><br class="">
+++ /dev/null<br class="">
@@ -1,329 +0,0 @@<br class="">
-require recipes-devtools/python/python3.inc<br class="">
-<br class="">
-DEPENDS = "python3-native libffi bzip2 gdbm openssl \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sqlite3 zlib virtual/libintl xz qemu-native \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qemu-helper-native virtual/crypt"<br class="">
-<br class="">
-DISTRO_SRC_URI ?= "<a href="file://sitecustomize.py" class="">file://sitecustomize.py</a>"<br class="">
-DISTRO_SRC_URI_linuxstdbase = ""<br class="">
-SRC_URI = "<a href="http://www.python.org/ftp/python/$%7BPV%7D/Python-$%7BPV%7D.tar.xz" rel="noreferrer" target="_blank" class="">http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz</a> \<br class="">
-<a href="file://python-config.patch" class="">file://python-config.patch</a> \<br class="">
-<a href="file://030-fixup-include-dirs.patch" class="">file://030-fixup-include-dirs.patch</a> \<br class="">
-<a href="file://070-dont-clean-ipkg-install.patch" class="">file://070-dont-clean-ipkg-install.patch</a> \<br class="">
-<a href="file://080-distutils-dont_adjust_files.patch" class="">file://080-distutils-dont_adjust_files.patch</a> \<br class="">
-<a href="file://130-readline-setup.patch" class="">file://130-readline-setup.patch</a> \<br class="">
-<a href="file://150-fix-setupterm.patch" class="">file://150-fix-setupterm.patch</a> \<br class="">
-<a href="file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch" class="">file://0001-h2py-Fix-issue-13032-where-it-fails-with-UnicodeDeco.patch</a> \<br class="">
-<a href="file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch" class="">file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch</a> \<br class="">
-<a href="file://support_SOURCE_DATE_EPOCH_in_py_compile.patch" class="">file://support_SOURCE_DATE_EPOCH_in_py_compile.patch</a> \<br class="">
-${DISTRO_SRC_URI} \<br class="">
-"<br class="">
-<br class="">
-SRC_URI += "\<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///03-fix-tkinter-detection.patch" class="">file://03-fix-tkinter-detection.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///avoid_warning_about_tkinter.patch" class="">file://avoid_warning_about_tkinter.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///cgi_py.patch" class="">file://cgi_py.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///host_include_contamination.patch" class="">file://host_include_contamination.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///python-3.3-multilib.patch" class="">file://python-3.3-multilib.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///sysroot-include-headers.patch" class="">file://sysroot-include-headers.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///unixccompiler.patch" class="">file://unixccompiler.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///avoid-ncursesw-include-path.patch" class="">file://avoid-ncursesw-include-path.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch" class="">file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///sysconfig.py-add-_PYTHON_PROJECT_SRC.patch" class="">file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///setup.py-check-cross_compiling-when-get-FLAGS.patch" class="">file://setup.py-check-cross_compiling-when-get-FLAGS.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///configure.ac-fix-LIBPL.patch" class="">file://configure.ac-fix-LIBPL.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch" class="">file://0001-Issue-21272-Use-_sysconfigdata.py-to-initialize-dist.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///pass-missing-libraries-to-Extension-for-mul.patch" class="">file://pass-missing-libraries-to-Extension-for-mul.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///Use-correct-CFLAGS-for-extensions-when-cross-compili.patch" class="">file://Use-correct-CFLAGS-for-extensions-when-cross-compili.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0002-Makefile-add-target-to-split-profile-generation.patch" class="">file://0002-Makefile-add-target-to-split-profile-generation.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///float-endian.patch" class="">file://float-endian.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///ftplib.patch" class="">file://ftplib.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///signal.patch" class="">file://signal.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0001-Issue-28043-SSLContext-has-improved-default-settings.patch" class="">file://0001-Issue-28043-SSLContext-has-improved-default-settings.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch" class="">file://0002-bpo-29136-Add-TLS-1.3-cipher-suites-and-OP_NO_TLSv1_.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch" class="">file://0003-bpo-32947-Fixes-for-TLS-1.3-and-OpenSSL-1.1.1-GH-876.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch" class="">file://0004-bpo-33570-TLS-1.3-ciphers-for-OpenSSL-1.1.1-GH-6976.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch" class="">file://0005-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-2305.patch</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="file:///run-ptest" class="">file://run-ptest</a> \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"<br class="">
-<br class="">
-inherit multilib_header python3native update-alternatives qemu ptest<br class="">
-<br class="">
-MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"<br class="">
-<br class="">
-ALTERNATIVE_${PN}-dev = "python-config"<br class="">
-ALTERNATIVE_LINK_NAME[python-config] = "${bindir}/python${PYTHON_BINABI}-config"<br class="">
-ALTERNATIVE_TARGET[python-config] = "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"<br class="">
-<br class="">
-CONFIGUREOPTS += " --with-system-ffi "<br class="">
-<br class="">
-CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_have_lchflags=no \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_have_long_long_format=yes \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_buggy_getaddrinfo=no \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_file__dev_ptmx=yes \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_file__dev_ptc=no \<br class="">
-"<br class="">
-<br class="">
-TARGET_CC_ARCH += "-DNDEBUG -fno-inline"<br class="">
-SDK_CC_ARCH += "-DNDEBUG -fno-inline"<br class="">
-EXTRA_OEMAKE += "CROSS_COMPILE=yes"<br class="">
-EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"<br class="">
-<br class="">
-PYTHON3_PROFILE_TASK ?= "./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true"<br class="">
-<br class="">
-export CROSS_COMPILE = "${TARGET_PREFIX}"<br class="">
-export CCSHARED = "-fPIC"<br class="">
-<br class="">
-# Fix cross compilation of different modules<br class="">
-export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/:${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux"<br class="">
-<br class="">
-PACKAGECONFIG ??= "readline ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'pgo', '', d)}"<br class="">
-PACKAGECONFIG[readline] = ",,readline"<br class="">
-# Use profile guided optimisation by running PyBench inside qemu-user<br class="">
-PACKAGECONFIG[pgo] = "--enable-optimizations"<br class="">
-<br class="">
-do_configure_append() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;rm -f ${S}/Makefile.orig<br class="">
-}<br class="">
-<br class="">
-run_make() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;oe_runmake PGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_LIBDIR=${STAGING_LIBDIR} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_INCDIR=${STAGING_INCDIR} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LIB=${baselib} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ARCH=${TARGET_ARCH} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OPT="${CFLAGS}" \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"$@"<br class="">
-}<br class="">
-<br class="">
-do_compile() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# regenerate platform specific files, because they depend on system headers<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;cd ${S}/Lib/plat-linux*<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;include=${STAGING_INCDIR} ${STAGING_BINDIR_NATIVE}/python3-native/python3 \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${S}/Tools/scripts/h2py.py -i '(u_long)' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${STAGING_INCDIR}/dlfcn.h \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${STAGING_INCDIR}/linux/cdrom.h \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${STAGING_INCDIR}/netinet/in.h \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${STAGING_INCDIR}/sys/types.h<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;sed -e 's,${STAGING_DIR_HOST},,g' -i *.py<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;cd -<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# remove any bogus LD_LIBRARY_PATH<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if [ ! -f Makefile.orig ]; then<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile Makefile.orig<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Makefile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# save copy of it now, because if we do it in do_install and <br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# then call do_install twice we get Makefile.orig == Makefile.sysroot<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile Makefile.sysroot<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make profile-opt<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cat &gt;pgo-wrapper &lt;&lt;EOF<br class="">
-#!/bin/sh<br class="">
-cd ${B}<br class="">
-$qemu_binary "\$@"<br class="">
-EOF<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;chmod +x pgo-wrapper<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bbnote Gathering profiling data<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;./pgo-wrapper ${PYTHON3_PROFILE_TASK}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bbnote Profiling data gathered, rebuilding<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make clean_and_use_profile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;else<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make libpython3.so<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
-}<br class="">
-<br class="">
-do_install() {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# make install needs the original Makefile, or otherwise the inclues would<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# go to ${D}${STAGING...}/...<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile.orig Makefile<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/pkgconfig<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# rerun the build once again with original makefile this time<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# run install in a separate step to avoid compile/install race<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make DESTDIR=${D} LIBDIR=${libdir} build_all_use_profile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;else<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;run_make DESTDIR=${D} LIBDIR=${libdir}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;run_make DESTDIR=${D} LIBDIR=${libdir} install<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# avoid conflict with 2to3 from Python 2<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;rm -f ${D}/${bindir}/2to3<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;if [ -e ${WORKDIR}/sitecustomize.py ]; then<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;oe_multilib_header python${PYTHON_BINABI}/pyconfig.h<br class="">
-}<br class="">
-<br class="">
-do_install_append_class-nativesdk () {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'<br class="">
-}<br class="">
-<br class="">
-SSTATE_SCAN_FILES += "Makefile"<br class="">
-PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"<br class="">
-<br class="">
-py_package_preprocess () {<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# copy back the old Makefile to fix target package<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# Remove references to buildmachine paths in target Makefile and _sysconfigdata<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's|${DEBUG_PREFIX_MAP}||g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${HOSTTOOLS_DIR}/::g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${RECIPE_SYSROOT_NATIVE}::g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${RECIPE_SYSROOT}::g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}/Makefile \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${bindir}/python${PYTHON_BINABI}-config<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# Recompile _sysconfigdata after modifying it<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;cd ${PKGD}<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py')"<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py', optimize=1)"<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata.py', optimize=2)"<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;cd -<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}<br class="">
-}<br class="">
-<br class="">
-PACKAGES_remove = "${PN}"<br class="">
-<br class="">
-# manual dependency additions<br class="">
-RPROVIDES_${PN}-modules = "${PN}"<br class="">
-RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules"<br class="">
-RRECOMMENDS_${PN}-crypt = "openssl ca-certificates"<br class="">
-<br class="">
-FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}"<br class="">
-FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"<br class="">
-FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"<br class="">
-<br class="">
-PACKAGES =+ "${PN}-pyvenv"<br class="">
-FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv"<br class="">
-<br class="">
-# package libpython3<br class="">
-PACKAGES =+ "libpython3 libpython3-staticdev"<br class="">
-FILES_libpython3 = "${libdir}/libpython*.so.*"<br class="">
-FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}/libpython${PYTHON_BINABI}.a"<br class="">
-INSANE_SKIP_${PN}-dev += "dev-elf"<br class="">
-<br class="">
-# catch all the rest (unsorted)<br class="">
-PACKAGES += "${PN}-misc"<br class="">
-RDEPENDS_${PN}-misc += "${PN}-core ${PN}-email ${PN}-codecs"<br class="">
-RDEPENDS_${PN}-modules += "${PN}-misc"<br class="">
-FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"<br class="">
-<br class="">
-# catch manpage<br class="">
-PACKAGES += "${PN}-man"<br class="">
-FILES_${PN}-man = "${datadir}/man"<br class="">
-<br class="">
-RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2"<br class="">
-<br class="">
-RDEPENDS_${PN}-dev = ""<br class="">
-<br class="">
-BBCLASSEXTEND = "nativesdk"<br class="">
-<br class="">
-# We want bytecode precompiled .py files (.pyc's) by default<br class="">
-# but the user may set it on their own conf<br class="">
-INCLUDE_PYCS ?= "1"<br class="">
-<br class="">
-python(){<br class="">
-&nbsp; &nbsp; import collections, json<br class="">
-<br class="">
-&nbsp; &nbsp; filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')<br class="">
-&nbsp; &nbsp; # This python changes the datastore based on the contents of a file, so mark<br class="">
-&nbsp; &nbsp; # that dependency.<br class="">
-&nbsp; &nbsp; bb.parse.mark_dependency(d, filename)<br class="">
-<br class="">
-&nbsp; &nbsp; with open(filename) as manifest_file:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; python_manifest=json.load(manifest_file, object_pairs_hook=collections.OrderedDict)<br class="">
-<br class="">
-&nbsp; &nbsp; include_pycs = d.getVar('INCLUDE_PYCS')<br class="">
-<br class="">
-&nbsp; &nbsp; packages = d.getVar('PACKAGES').split()<br class="">
-&nbsp; &nbsp; pn = d.getVar('PN')<br class="">
-<br class="">
-&nbsp; &nbsp; newpackages=[]<br class="">
-&nbsp; &nbsp; for key in python_manifest:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; pypackage= pn + '-' + key<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; if pypackage not in packages:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # We need to prepend, otherwise python-misc gets everything<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # so we use a new variable<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newpackages.append(pypackage)<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; # "Build" python's manifest FILES, RDEPENDS and SUMMARY<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; d.setVar('FILES_' + pypackage, '')<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['files']:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('FILES_' + pypackage, ' ' + value)<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp;# Add cached files<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; if include_pycs == '1':<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['cached']:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('FILES_' + pypackage, ' ' + value)<br class="">
-<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['rdepends']:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Make it work with or without $PN<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if '${PN}' in value:<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value=value.split('-')[1]<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)<br class="">
-&nbsp; &nbsp; &nbsp; &nbsp; d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])<br class="">
-<br class="">
-&nbsp; &nbsp; # Prepending so to avoid python-misc getting everything<br class="">
-&nbsp; &nbsp; packages = newpackages + packages<br class="">
-&nbsp; &nbsp; d.setVar('PACKAGES', ' '.join(packages))<br class="">
-&nbsp; &nbsp; d.setVar('ALLOW_EMPTY_${PN}-modules', '1')<br class="">
-}<br class="">
-<br class="">
-# Files needed to create a new manifest<br class="">
-SRC_URI += "<a href="file://create_manifest3.py" class="">file://create_manifest3.py</a> <a href="file:///get_module_deps3.py" class="">file://get_module_deps3.py</a> <a href="file://python3-manifest.json" class="">file://python3-manifest.json</a>"<br class="">
-<br class="">
-do_create_manifest() {<br class="">
-&nbsp; &nbsp; # This task should be run with every new release of Python.<br class="">
-&nbsp; &nbsp; # We must ensure that PACKAGECONFIG enables everything when creating<br class="">
-&nbsp; &nbsp; # a new manifest, this is to base our new manifest on a complete<br class="">
-&nbsp; &nbsp; # native python build, containing all dependencies, otherwise the task<br class="">
-&nbsp; &nbsp; # wont be able to find the required files.<br class="">
-&nbsp; &nbsp; # e.g. BerkeleyDB is an optional build dependency so it may or may not<br class="">
-&nbsp; &nbsp; # be present, we must ensure it is.<br class="">
-<br class="">
-&nbsp; &nbsp; cd ${WORKDIR}<br class="">
-&nbsp; &nbsp; # This needs to be executed by python-native and NOT by HOST's python<br class="">
-&nbsp; &nbsp; nativepython3 create_manifest3.py ${PYTHON_MAJMIN}<br class="">
-&nbsp; &nbsp; cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json<br class="">
-}<br class="">
-<br class="">
-# bitbake python -c create_manifest<br class="">
-addtask do_create_manifest<br class="">
-<br class="">
-# Make sure we have native python ready when we create a new manifest<br class="">
-do_create_manifest[depends] += "python3:do_prepare_recipe_sysroot"<br class="">
-do_create_manifest[depends] += "python3:do_patch"<br class="">
diff --git a/meta/recipes-devtools/python/<a href="http://python3_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3_3.7.1.bb</a> b/meta/recipes-devtools/python/<a href="http://python3_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3_3.7.1.bb</a><br class="">
new file mode 100644<br class="">
index 0000000000..9604d95b03<br class="">
--- /dev/null<br class="">
+++ b/meta/recipes-devtools/python/<a href="http://python3_3.7.1.bb/" rel="noreferrer" target="_blank" class="">python3_3.7.1.bb</a><br class="">
@@ -0,0 +1,298 @@<br class="">
+# Maintainers hint: with every new release of Python, the task<br class="">
+# create_manifest - please see for detailed documentation<br class="">
+# inside do_create_manifest<br class="">
+require recipes-devtools/python/python3.inc<br class="">
+<br class="">
+DEPENDS = "libffi bzip2 gdbm openssl sqlite3 zlib xz \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;util-linux libtirpc libnsl2 virtual/libintl virtual/crypt\<br class="">
+"<br class="">
+DEPENDS += "${@["qemu-native qemu-helper-native", ""][bb.utils.contains('PACKAGECONFIG', 'pgo', 0, 1, d)]}"<br class="">
+<br class="">
+PYTHON_BINABI = "${PYTHON_MAJMIN}${PYTHON_ABI}"<br class="">
+<br class="">
+SRC_URI += "\<br class="">
+&nbsp; &nbsp; <a href="file:///tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch" class="">file://tweak-MULTIARCH-for-powerpc-linux-gnuspe.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///cgi_py.patch" class="">file://cgi_py.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///host_include_contamination.patch" class="">file://host_include_contamination.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///avoid-ncursesw-include-path.patch" class="">file://avoid-ncursesw-include-path.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch" class="">file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///configure.ac-fix-LIBPL.patch" class="">file://configure.ac-fix-LIBPL.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///pass-missing-libraries-to-Extension-for-mul.patch" class="">file://pass-missing-libraries-to-Extension-for-mul.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///float-endian.patch" class="">file://float-endian.patch</a> \<br class="">
+&nbsp; &nbsp; <a href="file:///run-ptest" class="">file://run-ptest</a> \<br class="">
+"<br class="">
+<br class="">
+inherit multilib_header python3native update-alternatives qemu ptest<br class="">
+<br class="">
+MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"<br class="">
+<br class="">
+ALTERNATIVE_${PN}-dev = "python-config"<br class="">
+ALTERNATIVE_LINK_NAME[python-config] = "${bindir}/python${PYTHON_BINABI}-config"<br class="">
+ALTERNATIVE_TARGET[python-config] = "${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}"<br class="">
+<br class="">
+CACHED_CONFIGUREVARS = "ac_cv_have_chflags=no \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_have_lchflags=no \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_have_long_long_format=yes \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_buggy_getaddrinfo=no \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_file__dev_ptmx=yes \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ac_cv_file__dev_ptc=no \<br class="">
+"<br class="">
+<br class="">
+TARGET_CC_ARCH += "-DNDEBUG -fno-inline"<br class="">
+SDK_CC_ARCH += "-DNDEBUG -fno-inline"<br class="">
+EXTRA_OEMAKE += "CROSS_COMPILE=yes"<br class="">
+EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/ --without-ensurepip"<br class="">
+PYTHON3_PROFILE_TASK ?= "./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support"<br class="">
+<br class="">
+export CROSS_COMPILE = "${TARGET_PREFIX}"<br class="">
+export CCSHARED = "-fPIC"<br class="">
+<br class="">
+# Fix cross compilation of different modules<br class="">
+export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/:${B}/build/lib.linux-${TARGET_ARCH}-${PYTHON_MAJMIN}:${S}/Lib:${S}/Lib/plat-linux"<br class="">
+<br class="">
+PACKAGECONFIG ??= "pgo readline ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluetooth', '', d)}"<br class="">
+PACKAGECONFIG[readline] = ",,readline"<br class="">
+# Use profile guided optimisation by running PyBench inside qemu-user<br class="">
+PACKAGECONFIG[pgo] = "--enable-optimizations"<br class="">
+<br class="">
+run_make() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;oe_runmake PGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_LIBDIR=${STAGING_LIBDIR} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_INCDIR=${STAGING_INCDIR} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LIB=${baselib} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ARCH=${TARGET_ARCH} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OPT="${CFLAGS}" \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"$@"<br class="">
+}<br class="">
+<br class="">
+do_compile() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# remove any bogus LD_LIBRARY_PATH<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e s,RUNSHARED=.*,RUNSHARED=, Makefile<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if [ ! -f Makefile.orig ]; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile Makefile.orig<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's,^CONFIGURE_LDFLAGS=.*,CONFIGURE_LDFLAGS=-L. -L${STAGING_LIBDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,libdir=${libdir},libdir=${STAGING_LIBDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,libexecdir=${libexecdir},libexecdir=${STAGING_DIR_HOST}${libexecdir},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^LIBDIR=.*,LIBDIR=${STAGING_LIBDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,includedir=${includedir},includedir=${STAGING_INCDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Makefile<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cat &gt; ${B}/pgo-wrapper &lt;&lt; EOF<br class="">
+#!/bin/sh<br class="">
+set -x<br class="">
+cd ${B}<br class="">
+$qemu_binary "\$@"<br class="">
+EOF<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;chmod +x ${B}/pgo-wrapper<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;bbnote Updating Makefile to gather profiling data during build<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sed -i&nbsp; -e 's,$(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK),${B}/pgo-wrapper ./python $(PROFILE_TASK),' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's,PROFILE_TASK=.*,PROFILE_TASK=${PYTHON3_PROFILE_TASK},' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Makefile<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;else<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's,$(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK),:,' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Makefile<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# save copy of it now, because if we do it in do_install and <br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# then call do_install twice we get Makefile.orig == Makefile.sysroot<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile Makefile.sysroot<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; run_make profile-opt<br class="">
+}<br class="">
+<br class="">
+do_install() {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# make install needs the original Makefile, or otherwise the inclues would<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# go to ${D}${STAGING...}/...<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile.orig Makefile<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/pkgconfig<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# rerun the build once again with original makefile this time<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# run install in a separate step to avoid compile/install race<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;run_make DESTDIR=${D} LIBDIR=${libdir} build_all<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;run_make DESTDIR=${D} LIBDIR=${libdir} install<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# avoid conflict with 2to3 from Python 2<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;rm -f ${D}/${bindir}/2to3<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;set -x<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-${MULTIARCH}/Makefile<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if [ -e ${WORKDIR}/sitecustomize.py ]; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;oe_multilib_header python${PYTHON_BINABI}/pyconfig.h<br class="">
+}<br class="">
+<br class="">
+do_install_append_class-nativesdk () {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} PYTHONHOME='${prefix}' TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'<br class="">
+}<br class="">
+<br class="">
+SSTATE_SCAN_FILES += "Makefile"<br class="">
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"<br class="">
+<br class="">
+py_package_preprocess () {<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;MAKESETTINGS="$(egrep '^(ABIFLAGS|MULTIARCH)=' ${B}/Makefile | sed -E -e 's/[[:space:]]//g' -e 's/=/="/' -e 's/$/"/')"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;eval ${MAKESETTINGS}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if test "${ABIFLAGS}" != "${PYTHON_ABI}"; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;die "do_install: configure determined ABIFLAGS '${ABIFLAGS}' != '${PYTHON_ABI}' from python3-dir.bbclass"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;if test "x${BUILD_OS}" = "x${TARGET_OS}"; then<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# no cross-compile at all<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_PYTHON_SYSCONFIGDATA_NAME=${PYTHON_ABI}_${TARGET_OS}_${MULTIARCH}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;else<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# at the very moment, it's the only available target<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_PYTHON_SYSCONFIGDATA_NAME=${PYTHON_ABI}_linux_${MULTIARCH}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;fi<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# copy back the old Makefile to fix target package<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;install -m 0644 ${B}/Makefile.orig ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-${MULTIARCH}/Makefile<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# Remove references to buildmachine paths in target Makefile and _sysconfigdata<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's|${DEBUG_PREFIX_MAP}||g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${HOSTTOOLS_DIR}/::g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${RECIPE_SYSROOT_NATIVE}::g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${RECIPE_SYSROOT}::g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-${MULTIARCH}/Makefile \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata_${_PYTHON_SYSCONFIGDATA_NAME}.py \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;${PKGD}/${bindir}/python${PYTHON_BINABI}-config<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# Recompile _sysconfigdata after modifying it<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;cd ${PKGD}<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata_${_PYTHON_SYSCONFIGDATA_NAME}.py')"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata_${_PYTHON_SYSCONFIGDATA_NAME}.py', optimize=1)"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} \<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -c "from py_compile import compile; compile('./${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata_${_PYTHON_SYSCONFIGDATA_NAME}.py', optimize=2)"<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;cd -<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}<br class="">
+}<br class="">
+<br class="">
+PACKAGES_remove = "${PN}"<br class="">
+<br class="">
+# manual dependency additions<br class="">
+RPROVIDES_${PN}-modules = "${PN}"<br class="">
+RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules"<br class="">
+RRECOMMENDS_${PN}-crypt = "openssl ca-certificates"<br class="">
+<br class="">
+FILES_${PN}-2to3 += "${bindir}/2to3-${PYTHON_MAJMIN}"<br class="">
+FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"<br class="">
+FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"<br class="">
+<br class="">
+PACKAGES =+ "${PN}-pyvenv"<br class="">
+FILES_${PN}-pyvenv += "${bindir}/pyvenv-${PYTHON_MAJMIN} ${bindir}/pyvenv"<br class="">
+<br class="">
+# package libpython3<br class="">
+PACKAGES =+ "libpython3 libpython3-staticdev"<br class="">
+FILES_libpython3 = "${libdir}/libpython*.so.*"<br class="">
+FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}*/libpython${PYTHON_BINABI}.a"<br class="">
+INSANE_SKIP_${PN}-dev += "dev-elf"<br class="">
+<br class="">
+# catch all the rest (unsorted)<br class="">
+PACKAGES += "${PN}-misc"<br class="">
+RDEPENDS_${PN}-misc += "${PN}-core ${PN}-email ${PN}-codecs"<br class="">
+RDEPENDS_${PN}-modules += "${PN}-misc"<br class="">
+FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN}"<br class="">
+<br class="">
+# catch manpage<br class="">
+PACKAGES += "${PN}-man"<br class="">
+FILES_${PN}-man = "${datadir}/man"<br class="">
+<br class="">
+RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2"<br class="">
+<br class="">
+RDEPENDS_${PN}-dev = ""<br class="">
+<br class="">
+BBCLASSEXTEND = "nativesdk"<br class="">
+<br class="">
+# We want bytecode precompiled .py files (.pyc's) by default<br class="">
+# but the user may set it on their own conf<br class="">
+INCLUDE_PYCS ?= "1"<br class="">
+<br class="">
+python(){<br class="">
+&nbsp; &nbsp; import collections, json<br class="">
+<br class="">
+&nbsp; &nbsp; filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')<br class="">
+&nbsp; &nbsp; # This python changes the datastore based on the contents of a file, so mark<br class="">
+&nbsp; &nbsp; # that dependency.<br class="">
+&nbsp; &nbsp; bb.parse.mark_dependency(d, filename)<br class="">
+<br class="">
+&nbsp; &nbsp; with open(filename) as manifest_file:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; python_manifest=json.load(manifest_file, object_pairs_hook=collections.OrderedDict)<br class="">
+<br class="">
+&nbsp; &nbsp; include_pycs = d.getVar('INCLUDE_PYCS')<br class="">
+<br class="">
+&nbsp; &nbsp; packages = d.getVar('PACKAGES').split()<br class="">
+&nbsp; &nbsp; pn = d.getVar('PN')<br class="">
+<br class="">
+&nbsp; &nbsp; newpackages=[]<br class="">
+&nbsp; &nbsp; for key in python_manifest:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; pypackage= pn + '-' + key<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; if pypackage not in packages:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # We need to prepend, otherwise python-misc gets everything<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # so we use a new variable<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newpackages.append(pypackage)<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; # "Build" python's manifest FILES, RDEPENDS and SUMMARY<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; d.setVar('FILES_' + pypackage, '')<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['files']:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('FILES_' + pypackage, ' ' + value)<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp;# Add cached files<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; if include_pycs == '1':<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['cached']:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('FILES_' + pypackage, ' ' + value)<br class="">
+<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; for value in python_manifest[key]['rdepends']:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Make it work with or without $PN<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if '${PN}' in value:<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; value=value.split('-')[1]<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)<br class="">
+&nbsp; &nbsp; &nbsp; &nbsp; d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])<br class="">
+<br class="">
+&nbsp; &nbsp; # Prepending so to avoid python-misc getting everything<br class="">
+&nbsp; &nbsp; packages = newpackages + packages<br class="">
+&nbsp; &nbsp; d.setVar('PACKAGES', ' '.join(packages))<br class="">
+&nbsp; &nbsp; d.setVar('ALLOW_EMPTY_${PN}-modules', '1')<br class="">
+}<br class="">
+<br class="">
+# Files needed to create a new manifest<br class="">
+SRC_URI += "<a href="file://create_manifest3.py" class="">file://create_manifest3.py</a> <a href="file:///get_module_deps3.py" class="">file://get_module_deps3.py</a> <a href="file://python3-manifest.json" class="">file://python3-manifest.json</a>"<br class="">
+<br class="">
+do_create_manifest() {<br class="">
+&nbsp; &nbsp; # This task should be run with every new release of Python.<br class="">
+&nbsp; &nbsp; # We must ensure that PACKAGECONFIG enables everything when creating<br class="">
+&nbsp; &nbsp; # a new manifest, this is to base our new manifest on a complete<br class="">
+&nbsp; &nbsp; # native python build, containing all dependencies, otherwise the task<br class="">
+&nbsp; &nbsp; # wont be able to find the required files.<br class="">
+&nbsp; &nbsp; # e.g. BerkeleyDB is an optional build dependency so it may or may not<br class="">
+&nbsp; &nbsp; # be present, we must ensure it is.<br class="">
+<br class="">
+&nbsp; &nbsp; cd ${WORKDIR}<br class="">
+&nbsp; &nbsp; # This needs to be executed by python-native and NOT by HOST's python<br class="">
+&nbsp; &nbsp; nativepython3 create_manifest3.py ${PYTHON_MAJMIN}<br class="">
+&nbsp; &nbsp; cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json<br class="">
+}<br class="">
+<br class="">
+# bitbake python -c create_manifest<br class="">
+addtask do_create_manifest<br class="">
+<br class="">
+# Make sure we have native python ready when we create a new manifest<br class="">
+do_create_manifest[depends] += "python3:do_prepare_recipe_sysroot"<br class="">
+do_create_manifest[depends] += "python3:do_patch"<br class="">
-- <br class="">
2.17.1<br class="">
<br class="">
-- <br class="">
_______________________________________________<br class="">
Openembedded-core mailing list<br class="">
<a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank" class="">Openembedded-core@lists.openembedded.org</a><br class="">
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank" class="">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br class="">
</blockquote></div>
-- <br class="">_______________________________________________<br class="">Openembedded-core mailing list<br class=""><a href="mailto:Openembedded-core@lists.openembedded.org" class="">Openembedded-core@lists.openembedded.org</a><br class="">http://lists.openembedded.org/mailman/listinfo/openembedded-core<br class=""></div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">--&nbsp;</div><div class="">Jens Rehsack - <a href="mailto:rehsack@gmail.com" class="">rehsack@gmail.com</a></div></div></div>
</div>
<br class=""></body></html>