<div dir="ltr"><div>As RP said, the problematic pieces will be tested and fixed one by one, I guess I was too optimistic about this patchset&#39;s maturity.</div><div><br></div><div>Alex<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 7 Dec 2019 at 16:48, Khem Raj &lt;<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">besides gettext this is another reason I suppose causing a few more failures see<br>
<br>
<br>
<a href="http://errors.yoctoproject.org/Errors/Build/94077/" rel="noreferrer" target="_blank">http://errors.yoctoproject.org/Errors/Build/94077/</a><br>
<br>
all do_prepare_recipe_sysroot seems to be failing in python snippets.<br>
and do_configure aree also related to native python missing modules<br>
do_compile are mostly related to gettext.<br>
<br>
On Thu, Dec 5, 2019 at 7:45 AM Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; Drop backports, rebase other patches.<br>
&gt;<br>
&gt; One patch I wasn&#39;t able to rebase as upstream code changed too much:<br>
&gt; 0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch<br>
&gt; Please determine if it is still needed, produce a new version,<br>
&gt; and work with upstream to get it merged.<br>
&gt;<br>
&gt; 0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch<br>
&gt; is removed as the use case (allowing python 2 and 3 to coexist<br>
&gt; in SDKs) is no longer relevant with Python 2.x reaching end of line<br>
&gt; and upstream has refactored the code making a rebase difficult.<br>
&gt; If needed, please re-add the patch to py2, rather than py3.<br>
&gt;<br>
&gt; Python 3.8 no longer adds &quot;m&quot; to &quot;3.8&quot; in paths, so adjust the recipes<br>
&gt; and classes accordingly.<br>
&gt;<br>
&gt; Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt; ---<br>
&gt;  meta/classes/python3-dir.bbclass              |   4 +-<br>
&gt;  ...ib-termcap-to-linker-flags-to-avoid-.patch |  14 +-<br>
&gt;  ...lib-as-location-for-site-packages-an.patch | 156 ++++++++------<br>
&gt;  ...-detection-of-mips-architecture-for-.patch |  16 +-<br>
&gt;  ...fig-append-STAGING_LIBDIR-python-sys.patch |   2 +-<br>
&gt;  ...ON3HOME-is-set-use-instead-of-PYTHON.patch |  47 -----<br>
&gt;  ...asename-to-replace-CC-for-checking-c.patch |  37 ++--<br>
&gt;  ...runtime-test-to-get-float-byte-order.patch | 199 ------------------<br>
&gt;  ...ssing-libraries-to-Extension-for-mul.patch |  80 -------<br>
&gt;  ...report-missing-dependencies-for-disa.patch |  11 +-<br>
&gt;  ...tutils-prefix-is-inside-staging-area.patch |   2 +-<br>
&gt;  .../python3/avoid_warning_about_tkinter.patch |  33 ++-<br>
&gt;  .../python/python3/python-config.patch        |  24 ++-<br>
&gt;  .../python/python3/python3-manifest.json      |   4 +-<br>
&gt;  .../{<a href="http://python3_3.7.5.bb" rel="noreferrer" target="_blank">python3_3.7.5.bb</a> =&gt; <a href="http://python3_3.8.0.bb" rel="noreferrer" target="_blank">python3_3.8.0.bb</a>}    |  28 ++-<br>
&gt;  15 files changed, 175 insertions(+), 482 deletions(-)<br>
&gt;  delete mode 100644 meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch<br>
&gt;  delete mode 100644 meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch<br>
&gt;  delete mode 100644 meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch<br>
&gt;  rename meta/recipes-devtools/python/{<a href="http://python3_3.7.5.bb" rel="noreferrer" target="_blank">python3_3.7.5.bb</a> =&gt; <a href="http://python3_3.8.0.bb" rel="noreferrer" target="_blank">python3_3.8.0.bb</a>} (91%)<br>
&gt;<br>
&gt; diff --git a/meta/classes/python3-dir.bbclass b/meta/classes/python3-dir.bbclass<br>
&gt; index 7dd130bad99..036d7140d99 100644<br>
&gt; --- a/meta/classes/python3-dir.bbclass<br>
&gt; +++ b/meta/classes/python3-dir.bbclass<br>
&gt; @@ -1,5 +1,5 @@<br>
&gt; -PYTHON_BASEVERSION = &quot;3.7&quot;<br>
&gt; -PYTHON_ABI = &quot;m&quot;<br>
&gt; +PYTHON_BASEVERSION = &quot;3.8&quot;<br>
&gt; +PYTHON_ABI = &quot;&quot;<br>
&gt;  PYTHON_DIR = &quot;python${PYTHON_BASEVERSION}&quot;<br>
&gt;  PYTHON_PN = &quot;python3&quot;<br>
&gt;  PYTHON_SITEPACKAGES_DIR = &quot;${libdir}/${PYTHON_DIR}/site-packages&quot;<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch<br>
&gt; index 09f279ba1d7..59592821d7f 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From 23294c6ba6896115828293fdb7e67b47b38ba675 Mon Sep 17 00:00:00 2001<br>
&gt; +From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;  Date: Fri, 25 Jan 2019 19:04:13 +0100<br>
&gt;  Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host<br>
&gt; @@ -12,14 +12,14 @@ Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;   1 file changed, 1 deletion(-)<br>
&gt;<br>
&gt;  diff --git a/setup.py b/setup.py<br>
&gt; -index b4357e3..fbec00d 100644<br>
&gt; +index 20d7f35..ab18ff0 100644<br>
&gt;  --- a/setup.py<br>
&gt;  +++ b/setup.py<br>
&gt; -@@ -856,7 +856,6 @@ class PyBuildExt(build_ext):<br>
&gt; +@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):<br>
&gt;                                                        &#39;termcap&#39;):<br>
&gt;                   readline_libs.append(&#39;termcap&#39;)<br>
&gt; -             exts.append( Extension(&#39;readline&#39;, [&#39;readline.c&#39;],<br>
&gt; --                                   library_dirs=[&#39;/usr/lib/termcap&#39;],<br>
&gt; -                                    extra_link_args=readline_extra_link_args,<br>
&gt; -                                    libraries=readline_libs) )<br>
&gt; +             self.add(Extension(&#39;readline&#39;, [&#39;readline.c&#39;],<br>
&gt; +-                               library_dirs=[&#39;/usr/lib/termcap&#39;],<br>
&gt; +                                extra_link_args=readline_extra_link_args,<br>
&gt; +                                libraries=readline_libs))<br>
&gt;           else:<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch<br>
&gt; index ea75262c4f6..112c979441f 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001<br>
&gt; +From a078b6ff1492e848ad1055764fb9a414abaf3e12 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;  Date: Tue, 5 Feb 2019 15:52:02 +0100<br>
&gt;  Subject: [PATCH] Do not hardcode &quot;lib&quot; as location for modules, site-packages<br>
&gt; @@ -11,13 +11,13 @@ Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;   Include/pythonrun.h  |  2 ++<br>
&gt;   Lib/site.py          |  4 ++--<br>
&gt;   <a href="http://Makefile.pre.in" rel="noreferrer" target="_blank">Makefile.pre.in</a>      |  5 +++--<br>
&gt; - Modules/getpath.c    | 18 ++++++++++++------<br>
&gt; + Modules/getpath.c    | 22 ++++++++++++++--------<br>
&gt;   Python/getplatform.c | 10 ++++++++++<br>
&gt;   Python/sysmodule.c   |  2 ++<br>
&gt; - 6 files changed, 31 insertions(+), 10 deletions(-)<br>
&gt; + 6 files changed, 33 insertions(+), 12 deletions(-)<br>
&gt;<br>
&gt;  diff --git a/Include/pythonrun.h b/Include/pythonrun.h<br>
&gt; -index 6f0c6fc..0a17edd 100644<br>
&gt; +index 46091e0..61b2e15 100644<br>
&gt;  --- a/Include/pythonrun.h<br>
&gt;  +++ b/Include/pythonrun.h<br>
&gt;  @@ -7,6 +7,8 @@<br>
&gt; @@ -28,12 +28,12 @@ index 6f0c6fc..0a17edd 100644<br>
&gt;  +<br>
&gt;   #ifndef Py_LIMITED_API<br>
&gt;   PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);<br>
&gt; - PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);<br>
&gt; + PyAPI_FUNC(int) PyRun_AnyFileExFlags(<br>
&gt;  diff --git a/Lib/site.py b/Lib/site.py<br>
&gt; -index ffd132b..b55f6d8 100644<br>
&gt; +index a065ab0..1d720ef 100644<br>
&gt;  --- a/Lib/site.py<br>
&gt;  +++ b/Lib/site.py<br>
&gt; -@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):<br>
&gt; +@@ -335,12 +335,12 @@ def getsitepackages(prefixes=None):<br>
&gt;           seen.add(prefix)<br>
&gt;<br>
&gt;           if os.sep == &#39;/&#39;:<br>
&gt; @@ -49,10 +49,10 @@ index ffd132b..b55f6d8 100644<br>
&gt;<br>
&gt;   def addsitepackages(known_paths, prefixes=None):<br>
&gt;  diff --git a/<a href="http://Makefile.pre.in" rel="noreferrer" target="_blank">Makefile.pre.in</a> b/<a href="http://Makefile.pre.in" rel="noreferrer" target="_blank">Makefile.pre.in</a><br>
&gt; -index 6e81b2f..671a20e 100644<br>
&gt; +index 65665df..be49140 100644<br>
&gt;  --- a/<a href="http://Makefile.pre.in" rel="noreferrer" target="_blank">Makefile.pre.in</a><br>
&gt;  +++ b/<a href="http://Makefile.pre.in" rel="noreferrer" target="_blank">Makefile.pre.in</a><br>
&gt; -@@ -142,7 +142,7 @@ LIBDIR=            @libdir@<br>
&gt; +@@ -143,7 +143,7 @@ LIBDIR=            @libdir@<br>
&gt;   MANDIR=               @mandir@<br>
&gt;   INCLUDEDIR=   @includedir@<br>
&gt;   CONFINCLUDEDIR=       $(exec_prefix)/include<br>
&gt; @@ -61,7 +61,7 @@ index 6e81b2f..671a20e 100644<br>
&gt;   ABIFLAGS=     @ABIFLAGS@<br>
&gt;<br>
&gt;   # Detailed destination directories<br>
&gt; -@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile<br>
&gt; +@@ -753,6 +753,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile<br>
&gt;                 -DEXEC_PREFIX=&#39;&quot;$(exec_prefix)&quot;&#39; \<br>
&gt;                 -DVERSION=&#39;&quot;$(VERSION)&quot;&#39; \<br>
&gt;                 -DVPATH=&#39;&quot;$(VPATH)&quot;&#39; \<br>
&gt; @@ -69,7 +69,7 @@ index 6e81b2f..671a20e 100644<br>
&gt;                 -o $@ $(srcdir)/Modules/getpath.c<br>
&gt;<br>
&gt;   Programs/python.o: $(srcdir)/Programs/python.c<br>
&gt; -@@ -856,7 +857,7 @@ regen-opcode:<br>
&gt; +@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h<br>
&gt;   Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h<br>
&gt;<br>
&gt;   Python/getplatform.o: $(srcdir)/Python/getplatform.c<br>
&gt; @@ -79,72 +79,90 @@ index 6e81b2f..671a20e 100644<br>
&gt;   Python/importdl.o: $(srcdir)/Python/importdl.c<br>
&gt;                 $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c<br>
&gt;  diff --git a/Modules/getpath.c b/Modules/getpath.c<br>
&gt; -index e6a3e8e..0c62af6 100644<br>
&gt; +index b727f66..c003e46 100644<br>
&gt;  --- a/Modules/getpath.c<br>
&gt;  +++ b/Modules/getpath.c<br>
&gt; -@@ -123,6 +123,7 @@ typedef struct {<br>
&gt; -     wchar_t *exec_prefix;              /* EXEC_PREFIX define */<br>
&gt; +@@ -128,6 +128,7 @@ typedef struct {<br>
&gt; +     wchar_t *exec_prefix;              /* EXEC_PREFIX macro */<br>
&gt;<br>
&gt;       wchar_t *lib_python;               /* &quot;lib/pythonX.Y&quot; */<br>
&gt;  +    wchar_t *multilib_python;               /* &quot;lib[suffix]/pythonX.Y&quot; */<br>
&gt; -     wchar_t argv0_path[MAXPATHLEN+1];<br>
&gt; -     wchar_t zip_path[MAXPATHLEN+1];    /* &quot;.../lib/pythonXY.zip&quot; */<br>
&gt;<br>
&gt; -@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,<br>
&gt; +     int prefix_found;         /* found platform independent libraries? */<br>
&gt; +     int exec_prefix_found;    /* found the platform dependent libraries? */<br>
&gt; +@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt;           if (delim) {<br>
&gt;               *delim = L&#39;\0&#39;;<br>
&gt;           }<br>
&gt; --        joinpath(prefix, calculate-&gt;lib_python);<br>
&gt; -+        joinpath(prefix, calculate-&gt;multilib_python);<br>
&gt; -         joinpath(prefix, LANDMARK);<br>
&gt; -         return 1;<br>
&gt; -     }<br>
&gt; -@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,<br>
&gt; -     copy_absolute(prefix, calculate-&gt;argv0_path, MAXPATHLEN+1);<br>
&gt; +-        status = joinpath(prefix, calculate-&gt;lib_python, prefix_len);<br>
&gt; ++        status = joinpath(prefix, calculate-&gt;multilib_python, prefix_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             return status;<br>
&gt; +         }<br>
&gt; +@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt;       do {<br>
&gt; -         n = wcslen(prefix);<br>
&gt; --        joinpath(prefix, calculate-&gt;lib_python);<br>
&gt; -+        joinpath(prefix, calculate-&gt;multilib_python);<br>
&gt; -         joinpath(prefix, LANDMARK);<br>
&gt; -         if (ismodule(prefix)) {<br>
&gt; -             return 1;<br>
&gt; -@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,<br>
&gt; -     /* Look at configure&#39;s PREFIX */<br>
&gt; -     wcsncpy(prefix, calculate-&gt;prefix, MAXPATHLEN);<br>
&gt; -     prefix[MAXPATHLEN] = L&#39;\0&#39;;<br>
&gt; --    joinpath(prefix, calculate-&gt;lib_python);<br>
&gt; -+    joinpath(prefix, calculate-&gt;multilib_python);<br>
&gt; -     joinpath(prefix, LANDMARK);<br>
&gt; -     if (ismodule(prefix)) {<br>
&gt; -         return 1;<br>
&gt; -@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,<br>
&gt; -             wcsncpy(exec_prefix, core_config-&gt;home, MAXPATHLEN);<br>
&gt; +         /* Path: &lt;argv0_path or substring&gt; / &lt;lib_python&gt; / LANDMARK */<br>
&gt; +         size_t n = wcslen(prefix);<br>
&gt; +-        status = joinpath(prefix, calculate-&gt;lib_python, prefix_len);<br>
&gt; ++        status = joinpath(prefix, calculate-&gt;multilib_python, prefix_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             return status;<br>
&gt;           }<br>
&gt; -         exec_prefix[MAXPATHLEN] = L&#39;\0&#39;;<br>
&gt; --        joinpath(exec_prefix, calculate-&gt;lib_python);<br>
&gt; -+        joinpath(exec_prefix, calculate-&gt;multilib_python);<br>
&gt; -         joinpath(exec_prefix, L&quot;lib-dynload&quot;);<br>
&gt; -         return 1;<br>
&gt; +@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt; +     if (safe_wcscpy(prefix, calculate-&gt;prefix, prefix_len) &lt; 0) {<br>
&gt; +         return PATHLEN_ERR();<br>
&gt; +     }<br>
&gt; +-    status = joinpath(prefix, calculate-&gt;lib_python, prefix_len);<br>
&gt; ++    status = joinpath(prefix, calculate-&gt;multilib_python, prefix_len);<br>
&gt; +     if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +         return status;<br>
&gt;       }<br>
&gt; -@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,<br>
&gt; -     copy_absolute(exec_prefix, calculate-&gt;argv0_path, MAXPATHLEN+1);<br>
&gt; +@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt; +         if (safe_wcscpy(prefix, calculate-&gt;prefix, prefix_len) &lt; 0) {<br>
&gt; +             return PATHLEN_ERR();<br>
&gt; +         }<br>
&gt; +-        status = joinpath(prefix, calculate-&gt;lib_python, prefix_len);<br>
&gt; ++        status = joinpath(prefix, calculate-&gt;multilib_python, prefix_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             return status;<br>
&gt; +         }<br>
&gt; +@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt; +                 return PATHLEN_ERR();<br>
&gt; +             }<br>
&gt; +         }<br>
&gt; +-        status = joinpath(exec_prefix, calculate-&gt;lib_python, exec_prefix_len);<br>
&gt; ++        status = joinpath(exec_prefix, calculate-&gt;multilib_python, exec_prefix_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             return status;<br>
&gt; +         }<br>
&gt; +@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt;       do {<br>
&gt; -         n = wcslen(exec_prefix);<br>
&gt; --        joinpath(exec_prefix, calculate-&gt;lib_python);<br>
&gt; -+        joinpath(exec_prefix, calculate-&gt;multilib_python);<br>
&gt; -         joinpath(exec_prefix, L&quot;lib-dynload&quot;);<br>
&gt; -         if (isdir(exec_prefix)) {<br>
&gt; -             return 1;<br>
&gt; -@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,<br>
&gt; -     /* Look at configure&#39;s EXEC_PREFIX */<br>
&gt; -     wcsncpy(exec_prefix, calculate-&gt;exec_prefix, MAXPATHLEN);<br>
&gt; -     exec_prefix[MAXPATHLEN] = L&#39;\0&#39;;<br>
&gt; --    joinpath(exec_prefix, calculate-&gt;lib_python);<br>
&gt; -+    joinpath(exec_prefix, calculate-&gt;multilib_python);<br>
&gt; -     joinpath(exec_prefix, L&quot;lib-dynload&quot;);<br>
&gt; -     if (isdir(exec_prefix)) {<br>
&gt; -         return 1;<br>
&gt; -@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,<br>
&gt; +         /* Path: &lt;argv0_path or substring&gt; / &lt;lib_python&gt; / &quot;lib-dynload&quot; */<br>
&gt; +         size_t n = wcslen(exec_prefix);<br>
&gt; +-        status = joinpath(exec_prefix, calculate-&gt;lib_python, exec_prefix_len);<br>
&gt; ++        status = joinpath(exec_prefix, calculate-&gt;multilib_python, exec_prefix_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             return status;<br>
&gt; +         }<br>
&gt; +@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,<br>
&gt; +     if (safe_wcscpy(exec_prefix, calculate-&gt;exec_prefix, exec_prefix_len) &lt; 0) {<br>
&gt; +         return PATHLEN_ERR();<br>
&gt; +     }<br>
&gt; +-    status = joinpath(exec_prefix, calculate-&gt;lib_python, exec_prefix_len);<br>
&gt; ++    status = joinpath(exec_prefix, calculate-&gt;multilib_python, exec_prefix_len);<br>
&gt; +     if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +         return status;<br>
&gt; +     }<br>
&gt; +@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate, const wchar_t *program_full_pat<br>
&gt; +             return PATHLEN_ERR();<br>
&gt; +         }<br>
&gt; +         reduce(argv0_path);<br>
&gt; +-        status = joinpath(argv0_path, calculate-&gt;lib_python, argv0_path_len);<br>
&gt; ++        status = joinpath(argv0_path, calculate-&gt;multilib_python, argv0_path_len);<br>
&gt; +         if (_PyStatus_EXCEPTION(status)) {<br>
&gt; +             PyMem_RawFree(wbuf);<br>
&gt; +             return status;<br>
&gt; +@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config)<br>
&gt;       if (!calculate-&gt;lib_python) {<br>
&gt;           return DECODE_LOCALE_ERR(&quot;EXEC_PREFIX define&quot;, len);<br>
&gt;       }<br>
&gt; @@ -152,10 +170,10 @@ index e6a3e8e..0c62af6 100644<br>
&gt;  +    if (!calculate-&gt;multilib_python) {<br>
&gt;  +        return DECODE_LOCALE_ERR(&quot;EXEC_PREFIX define&quot;, len);<br>
&gt;  +    }<br>
&gt; -     return _Py_INIT_OK();<br>
&gt; - }<br>
&gt;<br>
&gt; -@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)<br>
&gt; +     calculate-&gt;warnings = config-&gt;pathconfig_warnings;<br>
&gt; +     calculate-&gt;pythonpath_env = config-&gt;pythonpath_env;<br>
&gt; +@@ -1216,6 +1221,7 @@ calculate_free(PyCalculatePath *calculate)<br>
&gt;       PyMem_RawFree(calculate-&gt;prefix);<br>
&gt;       PyMem_RawFree(calculate-&gt;exec_prefix);<br>
&gt;       PyMem_RawFree(calculate-&gt;lib_python);<br>
&gt; @@ -182,10 +200,10 @@ index 81a0f7a..d55396b 100644<br>
&gt;  +      return LIB;<br>
&gt;  +}<br>
&gt;  diff --git a/Python/sysmodule.c b/Python/sysmodule.c<br>
&gt; -index efe5b29..de77b17 100644<br>
&gt; +index 5b0fb81..0dce754 100644<br>
&gt;  --- a/Python/sysmodule.c<br>
&gt;  +++ b/Python/sysmodule.c<br>
&gt; -@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)<br>
&gt; +@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime, PyInterpreterState *interp,<br>
&gt;                           PyUnicode_FromString(Py_GetCopyright()));<br>
&gt;       SET_SYS_FROM_STRING(&quot;platform&quot;,<br>
&gt;                           PyUnicode_FromString(Py_GetPlatform()));<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch<br>
&gt; index e7af88654da..fe0aa8aabed 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From 7535c39951b9d15dd64c4669092a8582ba555466 Mon Sep 17 00:00:00 2001<br>
&gt; +From 2581ebe3cd9686089aed223651e1b8bf0b862b48 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Matthias Schoepfer &lt;<a href="mailto:matthias.schoepfer@ithinx.io" target="_blank">matthias.schoepfer@ithinx.io</a>&gt;<br>
&gt;  Date: Fri, 31 May 2019 15:34:34 +0200<br>
&gt;  Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft<br>
&gt; @@ -12,15 +12,16 @@ to do this in a more autoconf/autotools manner.<br>
&gt;<br>
&gt;  Upstream-Status: Submitted [<a href="https://github.com/python/cpython/pull/13196" rel="noreferrer" target="_blank">https://github.com/python/cpython/pull/13196</a>]<br>
&gt;  Signed-off-by: Matthias Schoepfer &lt;<a href="mailto:matthias.schoepfer@ithinx.io" target="_blank">matthias.schoepfer@ithinx.io</a>&gt;<br>
&gt; +<br>
&gt;  ---<br>
&gt; - <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> | 169 ++++++---------------------------------------------<br>
&gt; - 1 file changed, 17 insertions(+), 152 deletions(-)<br>
&gt; + <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> | 171 +++++----------------------------------------------<br>
&gt; + 1 file changed, 17 insertions(+), 154 deletions(-)<br>
&gt;<br>
&gt;  diff --git a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -index a7de901e08..a73e2de51b 100644<br>
&gt; +index 0f85486..0ca7e24 100644<br>
&gt;  --- a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt;  +++ b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -@@ -727,158 +727,23 @@ fi<br>
&gt; +@@ -704,160 +704,23 @@ fi<br>
&gt;   MULTIARCH=$($CC --print-multiarch 2&gt;/dev/null)<br>
&gt;   AC_SUBST(MULTIARCH)<br>
&gt;<br>
&gt; @@ -163,6 +164,8 @@ index a7de901e08..a73e2de51b 100644<br>
&gt;  -        i386-gnu<br>
&gt;  -#elif defined(__APPLE__)<br>
&gt;  -        darwin<br>
&gt; +-#elif defined(__VXWORKS__)<br>
&gt; +-        vxworks<br>
&gt;  -#else<br>
&gt;  -# error unknown platform triplet<br>
&gt;  -#endif<br>
&gt; @@ -196,6 +199,3 @@ index a7de901e08..a73e2de51b 100644<br>
&gt;<br>
&gt;   if test x$PLATFORM_TRIPLET != x &amp;&amp; test x$MULTIARCH != x; then<br>
&gt;     if test x$PLATFORM_TRIPLET != x$MULTIARCH; then<br>
&gt; ---<br>
&gt; -2.21.0<br>
&gt; -<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch<br>
&gt; index 1709011be8a..ee37f6bd52d 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From eff903c600f4c40f5753e95ab1557126fc6e0c9c Mon Sep 17 00:00:00 2001<br>
&gt; +From cf676775109c0a7fb38058bb60b453ff8f1a166b Mon Sep 17 00:00:00 2001<br>
&gt;  From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;  Date: Thu, 31 Jan 2019 16:46:30 +0100<br>
&gt;  Subject: [PATCH] distutils/sysconfig: append<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch b/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch<br>
&gt; deleted file mode 100644<br>
&gt; index a146c747f83..00000000000<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch<br>
&gt; +++ /dev/null<br>
&gt; @@ -1,47 +0,0 @@<br>
&gt; -From 5ce3ac59531828ff682646fbba59b2126b28a8aa Mon Sep 17 00:00:00 2001<br>
&gt; -From: Jaewon Lee &lt;<a href="mailto:jaewon.lee@xilinx.com" target="_blank">jaewon.lee@xilinx.com</a>&gt;<br>
&gt; -Date: Thu, 25 Apr 2019 15:34:26 -0700<br>
&gt; -Subject: [PATCH] main.c: if OEPYTHON3HOME is set use instead of PYTHONHOME<br>
&gt; -<br>
&gt; -There is one variable PYTHONHOME to determine where libraries are coming<br>
&gt; -from for both python2 and python3. This becomes an issue if only one has<br>
&gt; -libraries in the specified PYTHONHOME path, but they are using the same<br>
&gt; -PYTHONHOME. Creating another variable OEPYTHON3HOME to allow for a way<br>
&gt; -to set a different path for python3<br>
&gt; -<br>
&gt; -Signed-off-by: Jaewon Lee &lt;<a href="mailto:jaewon.lee@xilinx.com" target="_blank">jaewon.lee@xilinx.com</a>&gt;<br>
&gt; -<br>
&gt; -Upstream-Status: Inappropriate [OE specific configuration]<br>
&gt; -<br>
&gt; ----<br>
&gt; - Modules/main.c | 17 +++++++++++++----<br>
&gt; - 1 file changed, 13 insertions(+), 4 deletions(-)<br>
&gt; -<br>
&gt; -diff --git a/Modules/main.c b/Modules/main.c<br>
&gt; -index acc59c6..407085a 100644<br>
&gt; ---- a/Modules/main.c<br>
&gt; -+++ b/Modules/main.c<br>
&gt; -@@ -1834,10 +1834,19 @@ config_init_home(_PyCoreConfig *config)<br>
&gt; -         }<br>
&gt; -         return _Py_INIT_OK();<br>
&gt; -     }<br>
&gt; --<br>
&gt; --    int res = config_get_env_var_dup(&amp;home, L&quot;PYTHONHOME&quot;, &quot;PYTHONHOME&quot;);<br>
&gt; --    if (res &lt; 0) {<br>
&gt; --        return DECODE_LOCALE_ERR(&quot;PYTHONHOME&quot;, res);<br>
&gt; -+    int res;<br>
&gt; -+    const char *oepython3home = config_get_env_var(&quot;OEPYTHON3HOME&quot;);<br>
&gt; -+    if (oepython3home) {<br>
&gt; -+        res = config_get_env_var_dup(&amp;home, L&quot;OEPYTHON3HOME&quot;, &quot;OEPYTHON3HOME&quot;);<br>
&gt; -+        if (res &lt; 0) {<br>
&gt; -+            return DECODE_LOCALE_ERR(&quot;OEPYTHON3HOME&quot;, res);<br>
&gt; -+        }<br>
&gt; -+    }<br>
&gt; -+    else {<br>
&gt; -+        res = config_get_env_var_dup(&amp;home, L&quot;PYTHONHOME&quot;, &quot;PYTHONHOME&quot;);<br>
&gt; -+        if (res &lt; 0) {<br>
&gt; -+            return DECODE_LOCALE_ERR(&quot;PYTHONHOME&quot;, res);<br>
&gt; -+        }<br>
&gt; -     }<br>
&gt; -     config-&gt;home = home;<br>
&gt; -     return _Py_INIT_OK();<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch<br>
&gt; index a0ea897f4e8..fb10ca94b31 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From 2645317fef09afe31b01bb2c1d4fe5b9afdbb11a Mon Sep 17 00:00:00 2001<br>
&gt; +From 994783da5c21cab81b6589ed2d4275e665a946f9 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Changqing Li &lt;<a href="mailto:changqing.li@windriver.com" target="_blank">changqing.li@windriver.com</a>&gt;<br>
&gt;  Date: Mon, 22 Oct 2018 15:19:51 +0800<br>
&gt;  Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler<br>
&gt; @@ -21,12 +21,13 @@ Signed-off-by: Li Zhou &lt;<a href="mailto:li.zhou@windriver.com" target="_blank">li.zhou@windriver.com</a>&gt;<br>
&gt;  patch originally from Li Zhou, I just rework it to new version<br>
&gt;<br>
&gt;  Signed-off-by: Changqing Li &lt;<a href="mailto:changqing.li@windriver.com" target="_blank">changqing.li@windriver.com</a>&gt;<br>
&gt; +<br>
&gt;  ---<br>
&gt;   <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> | 19 ++++++++++---------<br>
&gt;   1 file changed, 10 insertions(+), 9 deletions(-)<br>
&gt;<br>
&gt;  diff --git a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -index a7de901..4a3681f 100644<br>
&gt; +index a189d42..0f85486 100644<br>
&gt;  --- a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt;  +++ b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt;  @@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)<br>
&gt; @@ -37,7 +38,7 @@ index a7de901..4a3681f 100644<br>
&gt;<br>
&gt;   # pybuilddir.txt will be created by --generate-posix-vars in the Makefile<br>
&gt;   rm -f pybuilddir.txt<br>
&gt; -@@ -695,7 +696,7 @@ AC_MSG_RESULT($with_cxx_main)<br>
&gt; +@@ -671,7 +672,7 @@ AC_MSG_RESULT($with_cxx_main)<br>
&gt;   preset_cxx=&quot;$CXX&quot;<br>
&gt;   if test -z &quot;$CXX&quot;<br>
&gt;   then<br>
&gt; @@ -46,7 +47,7 @@ index a7de901..4a3681f 100644<br>
&gt;           gcc)    AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;<br>
&gt;           cc)     AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;<br>
&gt;           clang|*/clang)     AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;<br>
&gt; -@@ -979,7 +980,7 @@ rmdir CaseSensitiveTestDir<br>
&gt; +@@ -957,7 +958,7 @@ rmdir CaseSensitiveTestDir<br>
&gt;<br>
&gt;   case $ac_sys_system in<br>
&gt;   hp*|HP*)<br>
&gt; @@ -55,7 +56,7 @@ index a7de901..4a3681f 100644<br>
&gt;       cc|*/cc) CC=&quot;$CC -Ae&quot;;;<br>
&gt;       esac;;<br>
&gt;   esac<br>
&gt; -@@ -1336,7 +1337,7 @@ else<br>
&gt; +@@ -1335,7 +1336,7 @@ else<br>
&gt;   fi],<br>
&gt;   [AC_MSG_RESULT(no)])<br>
&gt;   if test &quot;$Py_LTO&quot; = &#39;true&#39; ; then<br>
&gt; @@ -64,7 +65,7 @@ index a7de901..4a3681f 100644<br>
&gt;       *clang*)<br>
&gt;         AC_SUBST(LLVM_AR)<br>
&gt;         AC_PATH_TOOL(LLVM_AR, llvm-ar, &#39;&#39;, ${llvm_path})<br>
&gt; -@@ -1426,7 +1427,7 @@ then<br>
&gt; +@@ -1425,7 +1426,7 @@ then<br>
&gt;     fi<br>
&gt;   fi<br>
&gt;   LLVM_PROF_ERR=no<br>
&gt; @@ -73,16 +74,16 @@ index a7de901..4a3681f 100644<br>
&gt;     *clang*)<br>
&gt;       # Any changes made here should be reflected in the GCC+Darwin case below<br>
&gt;       PGO_PROF_GEN_FLAG=&quot;-fprofile-instr-generate&quot;<br>
&gt; -@@ -1500,7 +1501,7 @@ then<br>
&gt; -            WRAP=&quot;-fwrapv&quot;<br>
&gt; -         fi<br>
&gt; +@@ -1486,7 +1487,7 @@ esac<br>
&gt; + # compiler and platform.  BASECFLAGS tweaks need to be made even if the<br>
&gt; + # user set OPT.<br>
&gt;<br>
&gt; --        case $CC in<br>
&gt; -+        case $cc_basename in<br>
&gt; -             *clang*)<br>
&gt; -                 cc_is_clang=1<br>
&gt; -                 ;;<br>
&gt; -@@ -1623,7 +1624,7 @@ yes)<br>
&gt; +-case $CC in<br>
&gt; ++case $cc_basename in<br>
&gt; +     *clang*)<br>
&gt; +         cc_is_clang=1<br>
&gt; +         ;;<br>
&gt; +@@ -1622,7 +1623,7 @@ yes)<br>
&gt;<br>
&gt;       # ICC doesn&#39;t recognize the option, but only emits a warning<br>
&gt;       ## XXX does it emit an unused result warning and can it be disabled?<br>
&gt; @@ -91,7 +92,7 @@ index a7de901..4a3681f 100644<br>
&gt;       *icc*)<br>
&gt;       ac_cv_disable_unused_result_warning=no<br>
&gt;       ;;<br>
&gt; -@@ -1965,7 +1966,7 @@ yes)<br>
&gt; +@@ -1943,7 +1944,7 @@ yes)<br>
&gt;   esac<br>
&gt;<br>
&gt;   # ICC needs -fp-model strict or floats behave badly<br>
&gt; @@ -100,7 +101,7 @@ index a7de901..4a3681f 100644<br>
&gt;   *icc*)<br>
&gt;       CFLAGS_NODIST=&quot;$CFLAGS_NODIST -fp-model strict&quot;<br>
&gt;       ;;<br>
&gt; -@@ -2727,7 +2728,7 @@ then<br>
&gt; +@@ -2711,7 +2712,7 @@ then<br>
&gt;                 then<br>
&gt;                         LINKFORSHARED=&quot;-Wl,--export-dynamic&quot;<br>
&gt;                 fi;;<br>
&gt; @@ -109,7 +110,7 @@ index a7de901..4a3681f 100644<br>
&gt;                   *gcc*)<br>
&gt;                     if $CC -Xlinker --help 2&gt;&amp;1 | grep export-dynamic &gt;/dev/null<br>
&gt;                     then<br>
&gt; -@@ -5429,7 +5430,7 @@ if test &quot;$have_gcc_asm_for_x87&quot; = yes; then<br>
&gt; +@@ -5362,7 +5363,7 @@ if test &quot;$have_gcc_asm_for_x87&quot; = yes; then<br>
&gt;       # Some versions of gcc miscompile inline asm:<br>
&gt;       # <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491" rel="noreferrer" target="_blank">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491</a><br>
&gt;       # <a href="http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html" rel="noreferrer" target="_blank">http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html</a><br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch b/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch<br>
&gt; deleted file mode 100644<br>
&gt; index 58ab709028e..00000000000<br>
&gt; --- a/meta/recipes-devtools/python/python3/0002-Don-t-do-runtime-test-to-get-float-byte-order.patch<br>
&gt; +++ /dev/null<br>
&gt; @@ -1,199 +0,0 @@<br>
&gt; -From fa96a7fd19e17b9c6b4dd01c3c3774fb382dddc6 Mon Sep 17 00:00:00 2001<br>
&gt; -From: Ross Burton &lt;<a href="mailto:ross.burton@intel.com" target="_blank">ross.burton@intel.com</a>&gt;<br>
&gt; -Date: Wed, 5 Sep 2018 11:45:52 +0100<br>
&gt; -Subject: [PATCH] Don&#39;t do runtime test to get float byte order<br>
&gt; -<br>
&gt; -Python uses AC_RUN_IFELSE to determine the byte order for floats and doubles,<br>
&gt; -and falls back onto &quot;I don&#39;t know&quot; if it can&#39;t run code.  This results in<br>
&gt; -crippled floating point numbers in Python, and the regression tests fail.<br>
&gt; -<br>
&gt; -Instead of running code, take a macro from autoconf-archive which compiles C<br>
&gt; -with a special double in which has an ASCII representation, and then greps the<br>
&gt; -binary to identify the format.<br>
&gt; -<br>
&gt; -Upstream-Status: Backport [2a9c3805ddedf282881ef7811a561c70b74f80b1]<br>
&gt; -Signed-off-by: Ross Burton &lt;<a href="mailto:ross.burton@intel.com" target="_blank">ross.burton@intel.com</a>&gt;<br>
&gt; ----<br>
&gt; - <a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a>                     | 72 +++------------------------<br>
&gt; - m4/ax_c_float_words_bigendian.m4 | 83 ++++++++++++++++++++++++++++++++<br>
&gt; - 2 files changed, 90 insertions(+), 65 deletions(-)<br>
&gt; - create mode 100644 m4/ax_c_float_words_bigendian.m4<br>
&gt; -<br>
&gt; -diff --git a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a> b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -index 4a3681f..4ab19a6 100644<br>
&gt; ---- a/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -+++ b/<a href="http://configure.ac" rel="noreferrer" target="_blank">configure.ac</a><br>
&gt; -@@ -4328,77 +4328,19 @@ fi<br>
&gt; - # * Check for various properties of floating point *<br>
&gt; - # **************************************************<br>
&gt; -<br>
&gt; --AC_MSG_CHECKING(whether C doubles are little-endian IEEE 754 binary64)<br>
&gt; --AC_CACHE_VAL(ac_cv_little_endian_double, [<br>
&gt; --AC_RUN_IFELSE([AC_LANG_SOURCE([[<br>
&gt; --#include &lt;string.h&gt;<br>
&gt; --int main() {<br>
&gt; --    double x = 9006104071832581.0;<br>
&gt; --    if (memcmp(&amp;x, &quot;\x05\x04\x03\x02\x01\xff\x3f\x43&quot;, 8) == 0)<br>
&gt; --        return 0;<br>
&gt; --    else<br>
&gt; --        return 1;<br>
&gt; --}<br>
&gt; --]])],<br>
&gt; --[ac_cv_little_endian_double=yes],<br>
&gt; --[ac_cv_little_endian_double=no],<br>
&gt; --[ac_cv_little_endian_double=no])])<br>
&gt; --AC_MSG_RESULT($ac_cv_little_endian_double)<br>
&gt; --if test &quot;$ac_cv_little_endian_double&quot; = yes<br>
&gt; --then<br>
&gt; --  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,<br>
&gt; --  [Define if C doubles are 64-bit IEEE 754 binary format, stored<br>
&gt; --   with the least significant byte first])<br>
&gt; --fi<br>
&gt; --<br>
&gt; --AC_MSG_CHECKING(whether C doubles are big-endian IEEE 754 binary64)<br>
&gt; --AC_CACHE_VAL(ac_cv_big_endian_double, [<br>
&gt; --AC_RUN_IFELSE([AC_LANG_SOURCE([[<br>
&gt; --#include &lt;string.h&gt;<br>
&gt; --int main() {<br>
&gt; --    double x = 9006104071832581.0;<br>
&gt; --    if (memcmp(&amp;x, &quot;\x43\x3f\xff\x01\x02\x03\x04\x05&quot;, 8) == 0)<br>
&gt; --        return 0;<br>
&gt; --    else<br>
&gt; --        return 1;<br>
&gt; --}<br>
&gt; --]])],<br>
&gt; --[ac_cv_big_endian_double=yes],<br>
&gt; --[ac_cv_big_endian_double=no],<br>
&gt; --[ac_cv_big_endian_double=no])])<br>
&gt; --AC_MSG_RESULT($ac_cv_big_endian_double)<br>
&gt; --if test &quot;$ac_cv_big_endian_double&quot; = yes<br>
&gt; -+AX_C_FLOAT_WORDS_BIGENDIAN<br>
&gt; -+if test &quot;$ax_cv_c_float_words_bigendian&quot; = &quot;yes&quot;<br>
&gt; - then<br>
&gt; -   AC_DEFINE(DOUBLE_IS_BIG_ENDIAN_IEEE754, 1,<br>
&gt; -   [Define if C doubles are 64-bit IEEE 754 binary format, stored<br>
&gt; -    with the most significant byte first])<br>
&gt; --fi<br>
&gt; --<br>
&gt; --# Some ARM platforms use a mixed-endian representation for doubles.<br>
&gt; --# While Python doesn&#39;t currently have full support for these platforms<br>
&gt; --# (see e.g., issue 1762561), we can at least make sure that float &lt;-&gt; string<br>
&gt; --# conversions work.<br>
&gt; --AC_MSG_CHECKING(whether C doubles are ARM mixed-endian IEEE 754 binary64)<br>
&gt; --AC_CACHE_VAL(ac_cv_mixed_endian_double, [<br>
&gt; --AC_RUN_IFELSE([AC_LANG_SOURCE([[<br>
&gt; --#include &lt;string.h&gt;<br>
&gt; --int main() {<br>
&gt; --    double x = 9006104071832581.0;<br>
&gt; --    if (memcmp(&amp;x, &quot;\x01\xff\x3f\x43\x05\x04\x03\x02&quot;, 8) == 0)<br>
&gt; --        return 0;<br>
&gt; --    else<br>
&gt; --        return 1;<br>
&gt; --}<br>
&gt; --]])],<br>
&gt; --[ac_cv_mixed_endian_double=yes],<br>
&gt; --[ac_cv_mixed_endian_double=no],<br>
&gt; --[ac_cv_mixed_endian_double=no])])<br>
&gt; --AC_MSG_RESULT($ac_cv_mixed_endian_double)<br>
&gt; --if test &quot;$ac_cv_mixed_endian_double&quot; = yes<br>
&gt; -+elif test &quot;$ax_cv_c_float_words_bigendian&quot; = &quot;no&quot;<br>
&gt; - then<br>
&gt; --  AC_DEFINE(DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754, 1,<br>
&gt; -+  AC_DEFINE(DOUBLE_IS_LITTLE_ENDIAN_IEEE754, 1,<br>
&gt; -   [Define if C doubles are 64-bit IEEE 754 binary format, stored<br>
&gt; --   in ARM mixed-endian order (byte order 45670123)])<br>
&gt; -+   with the least significant byte first])<br>
&gt; -+else<br>
&gt; -+  AC_MSG_ERROR([Cannot identify floating point byte order])<br>
&gt; - fi<br>
&gt; -<br>
&gt; - # The short float repr introduced in Python 3.1 requires the<br>
&gt; -diff --git a/m4/ax_c_float_words_bigendian.m4 b/m4/ax_c_float_words_bigendian.m4<br>
&gt; -new file mode 100644<br>
&gt; -index 0000000..216b90d<br>
&gt; ---- /dev/null<br>
&gt; -+++ b/m4/ax_c_float_words_bigendian.m4<br>
&gt; -@@ -0,0 +1,83 @@<br>
&gt; -+# ===============================================================================<br>
&gt; -+#  <a href="https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html" rel="noreferrer" target="_blank">https://www.gnu.org/software/autoconf-archive/ax_c_float_words_bigendian.html</a><br>
&gt; -+# ===============================================================================<br>
&gt; -+#<br>
&gt; -+# SYNOPSIS<br>
&gt; -+#<br>
&gt; -+#   AX_C_FLOAT_WORDS_BIGENDIAN([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])<br>
&gt; -+#<br>
&gt; -+# DESCRIPTION<br>
&gt; -+#<br>
&gt; -+#   Checks the ordering of words within a multi-word float. This check is<br>
&gt; -+#   necessary because on some systems (e.g. certain ARM systems), the float<br>
&gt; -+#   word ordering can be different from the byte ordering. In a multi-word<br>
&gt; -+#   float context, &quot;big-endian&quot; implies that the word containing the sign<br>
&gt; -+#   bit is found in the memory location with the lowest address. This<br>
&gt; -+#   implementation was inspired by the AC_C_BIGENDIAN macro in autoconf.<br>
&gt; -+#<br>
&gt; -+#   The endianness is detected by first compiling C code that contains a<br>
&gt; -+#   special double float value, then grepping the resulting object file for<br>
&gt; -+#   certain strings of ASCII values. The double is specially crafted to have<br>
&gt; -+#   a binary representation that corresponds with a simple string. In this<br>
&gt; -+#   implementation, the string &quot;noonsees&quot; was selected because the<br>
&gt; -+#   individual word values (&quot;noon&quot; and &quot;sees&quot;) are palindromes, thus making<br>
&gt; -+#   this test byte-order agnostic. If grep finds the string &quot;noonsees&quot; in<br>
&gt; -+#   the object file, the target platform stores float words in big-endian<br>
&gt; -+#   order. If grep finds &quot;seesnoon&quot;, float words are in little-endian order.<br>
&gt; -+#   If neither value is found, the user is instructed to specify the<br>
&gt; -+#   ordering.<br>
&gt; -+#<br>
&gt; -+# LICENSE<br>
&gt; -+#<br>
&gt; -+#   Copyright (c) 2008 Daniel Amelang &lt;<a href="mailto:dan@amelang.net" target="_blank">dan@amelang.net</a>&gt;<br>
&gt; -+#<br>
&gt; -+#   Copying and distribution of this file, with or without modification, are<br>
&gt; -+#   permitted in any medium without royalty provided the copyright notice<br>
&gt; -+#   and this notice are preserved. This file is offered as-is, without any<br>
&gt; -+#   warranty.<br>
&gt; -+<br>
&gt; -+#serial 11<br>
&gt; -+<br>
&gt; -+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],<br>
&gt; -+  [AC_CACHE_CHECK(whether float word ordering is bigendian,<br>
&gt; -+                  ax_cv_c_float_words_bigendian, [<br>
&gt; -+<br>
&gt; -+ax_cv_c_float_words_bigendian=unknown<br>
&gt; -+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[<br>
&gt; -+<br>
&gt; -+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;<br>
&gt; -+<br>
&gt; -+]])], [<br>
&gt; -+<br>
&gt; -+if grep noonsees conftest.$ac_objext &gt;/dev/null ; then<br>
&gt; -+  ax_cv_c_float_words_bigendian=yes<br>
&gt; -+fi<br>
&gt; -+if grep seesnoon conftest.$ac_objext &gt;/dev/null ; then<br>
&gt; -+  if test &quot;$ax_cv_c_float_words_bigendian&quot; = unknown; then<br>
&gt; -+    ax_cv_c_float_words_bigendian=no<br>
&gt; -+  else<br>
&gt; -+    ax_cv_c_float_words_bigendian=unknown<br>
&gt; -+  fi<br>
&gt; -+fi<br>
&gt; -+<br>
&gt; -+])])<br>
&gt; -+<br>
&gt; -+case $ax_cv_c_float_words_bigendian in<br>
&gt; -+  yes)<br>
&gt; -+    m4_default([$1],<br>
&gt; -+      [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,<br>
&gt; -+                 [Define to 1 if your system stores words within floats<br>
&gt; -+                  with the most significant word first])]) ;;<br>
&gt; -+  no)<br>
&gt; -+    $2 ;;<br>
&gt; -+  *)<br>
&gt; -+    m4_default([$3],<br>
&gt; -+      [AC_MSG_ERROR([<br>
&gt; -+<br>
&gt; -+Unknown float word ordering. You need to manually preset<br>
&gt; -+ax_cv_c_float_words_bigendian=no (or yes) according to your system.<br>
&gt; -+<br>
&gt; -+    ])]) ;;<br>
&gt; -+esac<br>
&gt; -+<br>
&gt; -+])# AX_C_FLOAT_WORDS_BIGENDIAN<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch<br>
&gt; deleted file mode 100644<br>
&gt; index b9d5bc9c516..00000000000<br>
&gt; --- a/meta/recipes-devtools/python/python3/0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch<br>
&gt; +++ /dev/null<br>
&gt; @@ -1,80 +0,0 @@<br>
&gt; -From b881a79adcd4ae5ac8fe4f49d0fc77c47f777919 Mon Sep 17 00:00:00 2001<br>
&gt; -From: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
&gt; -Date: Fri, 4 Aug 2017 11:16:14 +0800<br>
&gt; -Subject: [PATCH] setup.py: pass missing libraries to Extension for<br>
&gt; - multiprocessing module<br>
&gt; -<br>
&gt; -In the following commit:<br>
&gt; -...<br>
&gt; -commit e711cafab13efc9c1fe6c5cd75826401445eb585<br>
&gt; -Author: Benjamin Peterson &lt;<a href="mailto:benjamin@python.org" target="_blank">benjamin@python.org</a>&gt;<br>
&gt; -Date:   Wed Jun 11 16:44:04 2008 +0000<br>
&gt; -<br>
&gt; -    Merged revisions 64104,64117 via svnmerge from<br>
&gt; -    svn+ssh://<a href="http://pythondev@svn.python.org/python/trunk" rel="noreferrer" target="_blank">pythondev@svn.python.org/python/trunk</a><br>
&gt; -...<br>
&gt; -(see diff in setup.py)<br>
&gt; -It assigned libraries for multiprocessing module according<br>
&gt; -the host_platform, but not pass it to Extension.<br>
&gt; -<br>
&gt; -In glibc, the following commit caused two definition of<br>
&gt; -sem_getvalue are different.<br>
&gt; -<a href="https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524" rel="noreferrer" target="_blank">https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524</a><br>
&gt; -(see diff in nptl/sem_getvalue.c for detail)<br>
&gt; -`__new_sem_getvalue&#39; is the latest sem_getvalue@@GLIBC_2.1<br>
&gt; -and `__old_sem_getvalue&#39; is to compat the old version<br>
&gt; -sem_getvalue@GLIBC_2.0.<br>
&gt; -<br>
&gt; -To build python for embedded Linux systems:<br>
&gt; -<a href="http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html" rel="noreferrer" target="_blank">http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html</a><br>
&gt; -If not explicitly link to library pthread (-lpthread), it will<br>
&gt; -load glibc&#39;s sem_getvalue randomly at runtime.<br>
&gt; -<br>
&gt; -Such as build python on linux x86_64 host and run the python<br>
&gt; -on linux x86_32 target. If not link library pthread, it caused<br>
&gt; -multiprocessing bounded semaphore could not work correctly.<br>
&gt; -...<br>
&gt; -&gt;&gt;&gt; import multiprocessing<br>
&gt; -&gt;&gt;&gt; pool_sema = multiprocessing.BoundedSemaphore(value=1)<br>
&gt; -&gt;&gt;&gt; pool_sema.acquire()<br>
&gt; -True<br>
&gt; -&gt;&gt;&gt; pool_sema.release()<br>
&gt; -Traceback (most recent call last):<br>
&gt; -  File &quot;&lt;stdin&gt;&quot;, line 1, in &lt;module&gt;<br>
&gt; -ValueError: semaphore or lock released too many times<br>
&gt; -...<br>
&gt; -<br>
&gt; -And the semaphore issue also caused multiprocessing.Queue().put() hung.<br>
&gt; -<br>
&gt; -Upstream-Status: Submitted [<a href="https://github.com/python/cpython/pull/2999" rel="noreferrer" target="_blank">https://github.com/python/cpython/pull/2999</a>]<br>
&gt; -<br>
&gt; -Signed-off-by: Hongxu Jia &lt;<a href="mailto:hongxu.jia@windriver.com" target="_blank">hongxu.jia@windriver.com</a>&gt;<br>
&gt; ----<br>
&gt; - setup.py | 7 +++++--<br>
&gt; - 1 file changed, 5 insertions(+), 2 deletions(-)<br>
&gt; -<br>
&gt; -diff --git a/setup.py b/setup.py<br>
&gt; -index b7a36a6..658ead3 100644<br>
&gt; ---- a/setup.py<br>
&gt; -+++ b/setup.py<br>
&gt; -@@ -1584,8 +1584,10 @@ class PyBuildExt(build_ext):<br>
&gt; -         elif host_platform.startswith(&#39;netbsd&#39;):<br>
&gt; -             macros = dict()<br>
&gt; -             libraries = []<br>
&gt; --<br>
&gt; --        else:                                   # Linux and other unices<br>
&gt; -+        elif host_platform.startswith((&#39;linux&#39;)):<br>
&gt; -+            macros = dict()<br>
&gt; -+            libraries = [&#39;pthread&#39;]<br>
&gt; -+        else:                                   # Other unices<br>
&gt; -             macros = dict()<br>
&gt; -             libraries = [&#39;rt&#39;]<br>
&gt; -<br>
&gt; -@@ -1603,6 +1605,7 @@ class PyBuildExt(build_ext):<br>
&gt; -<br>
&gt; -         exts.append ( Extension(&#39;_multiprocessing&#39;, multiprocessing_srcs,<br>
&gt; -                                 define_macros=list(macros.items()),<br>
&gt; -+                                libraries=libraries,<br>
&gt; -                                 include_dirs=[&quot;Modules/_multiprocessing&quot;]))<br>
&gt; -         # End multiprocessing<br>
&gt; -<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch<br>
&gt; index c15295c034c..4bd98f62fd6 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From e3b59cb9658e1d3efa3535840939a0fa92a70a5a Mon Sep 17 00:00:00 2001<br>
&gt; +From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt;  Date: Mon, 7 Oct 2019 13:22:14 +0200<br>
&gt;  Subject: [PATCH] setup.py: do not report missing dependencies for disabled<br>
&gt; @@ -10,22 +10,23 @@ build completeness checker which relies on the report.<br>
&gt;<br>
&gt;  Upstream-Status: Inappropriate [oe-core specific]<br>
&gt;  Signed-off-by: Alexander Kanavin &lt;<a href="mailto:alex.kanavin@gmail.com" target="_blank">alex.kanavin@gmail.com</a>&gt;<br>
&gt; +<br>
&gt;  ---<br>
&gt;   setup.py | 4 ++++<br>
&gt;   1 file changed, 4 insertions(+)<br>
&gt;<br>
&gt;  diff --git a/setup.py b/setup.py<br>
&gt; -index 4b53668..0097643 100644<br>
&gt; +index 7691258..ec3f2a4 100644<br>
&gt;  --- a/setup.py<br>
&gt;  +++ b/setup.py<br>
&gt; -@@ -365,6 +365,10 @@ class PyBuildExt(build_ext):<br>
&gt; +@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):<br>
&gt;                   print(&quot;%-*s   %-*s   %-*s&quot; % (longest, e, longest, f,<br>
&gt;                                                 longest, g))<br>
&gt;<br>
&gt;  +        # There is no need to report missing module dependencies,<br>
&gt;  +        # if the modules have been disabled in the first place.<br>
&gt; -+        missing = list(set(missing) - set(sysconf_dis))<br>
&gt; ++        self.missing = list(set(self.missing) - set(sysconf_dis))<br>
&gt;  +<br>
&gt; -         if missing:<br>
&gt; +         if self.missing:<br>
&gt;               print()<br>
&gt;               print(&quot;Python build finished successfully!&quot;)<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch<br>
&gt; index d49604ba4d9..219b3551b8b 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From a274ba778838824efcacaba57c415b7262f779ec Mon Sep 17 00:00:00 2001<br>
&gt; +From 93b2c26467b0ea9a18c178e4e1371d52e917a68b Mon Sep 17 00:00:00 2001<br>
&gt;  From: Khem Raj &lt;<a href="mailto:raj.khem@gmail.com" target="_blank">raj.khem@gmail.com</a>&gt;<br>
&gt;  Date: Tue, 14 May 2013 15:00:26 -0700<br>
&gt;  Subject: [PATCH] python3: Add target and native recipes<br>
&gt; 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>
&gt; index 24e67b4ca14..184540e794c 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch<br>
&gt; @@ -1,4 +1,4 @@<br>
&gt; -From fead48c8b501a8d7c3db21df2e599f90f38f11d3 Mon Sep 17 00:00:00 2001<br>
&gt; +From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001<br>
&gt;  From: Andrei Gherzan &lt;<a href="mailto:andrei@gherzan.ro" target="_blank">andrei@gherzan.ro</a>&gt;<br>
&gt;  Date: Mon, 28 Jan 2019 15:57:54 +0000<br>
&gt;  Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet<br>
&gt; @@ -11,26 +11,21 @@ Also simply disable the tk module since its not in DEPENDS.<br>
&gt;  Signed-off-by: Andrei Gherzan &lt;<a href="mailto:andrei@gherzan.ro" target="_blank">andrei@gherzan.ro</a>&gt;<br>
&gt;<br>
&gt;  ---<br>
&gt; - setup.py | 8 +++++---<br>
&gt; - 1 file changed, 5 insertions(+), 3 deletions(-)<br>
&gt; + setup.py | 4 ++--<br>
&gt; + 1 file changed, 2 insertions(+), 2 deletions(-)<br>
&gt;<br>
&gt;  diff --git a/setup.py b/setup.py<br>
&gt; -index fbec00d..b7a36a6 100644<br>
&gt; +index ab18ff0..7691258 100644<br>
&gt;  --- a/setup.py<br>
&gt;  +++ b/setup.py<br>
&gt; -@@ -1623,10 +1623,12 @@ class PyBuildExt(build_ext):<br>
&gt; -         self.extensions.extend(exts)<br>
&gt; +@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):<br>
&gt; +         self.detect_decimal()<br>
&gt; +         self.detect_ctypes()<br>
&gt; +         self.detect_multiprocessing()<br>
&gt; +-        if not self.detect_tkinter():<br>
&gt; +-            self.missing.append(&#39;_tkinter&#39;)<br>
&gt; ++#        if not self.detect_tkinter():<br>
&gt; ++#            self.missing.append(&#39;_tkinter&#39;)<br>
&gt; +         self.detect_uuid()<br>
&gt;<br>
&gt; -         # Call the method for detecting whether _tkinter can be compiled<br>
&gt; --        self.detect_tkinter(inc_dirs, lib_dirs)<br>
&gt; -+        # self.detect_tkinter(inc_dirs, lib_dirs)<br>
&gt; -<br>
&gt; --        if &#39;_tkinter&#39; not in [<a href="http://e.name" rel="noreferrer" target="_blank">e.name</a> for e in self.extensions]:<br>
&gt; --            missing.append(&#39;_tkinter&#39;)<br>
&gt; -+        # tkinter module will not be avalaible as yocto<br>
&gt; -+        # doesn&#39;t have tk integrated (yet)<br>
&gt; -+        #if &#39;_tkinter&#39; not in [<a href="http://e.name" rel="noreferrer" target="_blank">e.name</a> for e in self.extensions]:<br>
&gt; -+        #    missing.append(&#39;_tkinter&#39;)<br>
&gt; -<br>
&gt; -         # Build the _uuid module if possible<br>
&gt; -         uuid_incs = find_file(&quot;uuid.h&quot;, inc_dirs, [&quot;/usr/include/uuid&quot;])<br>
&gt; + ##         # Uncomment these lines if you want to play with xxmodule.c<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch<br>
&gt; index f23b8b7df06..c8a8f3d4aa3 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/python-config.patch<br>
&gt; +++ b/meta/recipes-devtools/python/python3/python-config.patch<br>
&gt; @@ -1,4 +1,7 @@<br>
&gt; -python-config: Revert to using distutils.sysconfig<br>
&gt; +From 07df0ae0d70cba6d1847fe1c24a71063930bec60 Mon Sep 17 00:00:00 2001<br>
&gt; +From: Tyler Hall &lt;<a href="mailto:tylerwhall@gmail.com" target="_blank">tylerwhall@gmail.com</a>&gt;<br>
&gt; +Date: Sun, 4 May 2014 20:06:43 -0400<br>
&gt; +Subject: [PATCH] python-config: Revert to using distutils.sysconfig<br>
&gt;<br>
&gt;  The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in<br>
&gt;<br>
&gt; @@ -12,11 +15,16 @@ Upstream-Status: Inappropriate [Embedded Specific]<br>
&gt;<br>
&gt;  Signed-off-by: Tyler Hall &lt;<a href="mailto:tylerwhall@gmail.com" target="_blank">tylerwhall@gmail.com</a>&gt;<br>
&gt;  :<br>
&gt; -Index: Python-3.3.3/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; -===================================================================<br>
&gt; ---- Python-3.3.3.orig/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; -+++ Python-3.3.3/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; -@@ -4,7 +4,7 @@<br>
&gt; +<br>
&gt; +---<br>
&gt; + Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a> | 10 +++++-----<br>
&gt; + 1 file changed, 5 insertions(+), 5 deletions(-)<br>
&gt; +<br>
&gt; +diff --git a/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a> b/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; +index 727c4a8..c702829 100644<br>
&gt; +--- a/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; ++++ b/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt; +@@ -6,7 +6,7 @@<br>
&gt;   import getopt<br>
&gt;   import os<br>
&gt;   import sys<br>
&gt; @@ -24,8 +32,8 @@ Index: Python-3.3.3/Misc/<a href="http://python-config.in" rel="noreferrer" target="_blank">python-config.in</a><br>
&gt;  +from distutils import sysconfig<br>
&gt;<br>
&gt;   valid_opts = [&#39;prefix&#39;, &#39;exec-prefix&#39;, &#39;includes&#39;, &#39;libs&#39;, &#39;cflags&#39;,<br>
&gt; -               &#39;ldflags&#39;, &#39;extension-suffix&#39;, &#39;help&#39;, &#39;abiflags&#39;, &#39;configdir&#39;]<br>
&gt; -@@ -32,14 +32,14 @@ if &#39;--help&#39; in opt_flags:<br>
&gt; +               &#39;ldflags&#39;, &#39;extension-suffix&#39;, &#39;help&#39;, &#39;abiflags&#39;, &#39;configdir&#39;,<br>
&gt; +@@ -35,14 +35,14 @@ if &#39;--help&#39; in opt_flags:<br>
&gt;<br>
&gt;   for opt in opt_flags:<br>
&gt;       if opt == &#39;--prefix&#39;:<br>
&gt; diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json<br>
&gt; index dba92b0e396..ebfc10b4045 100644<br>
&gt; --- a/meta/recipes-devtools/python/python3/python3-manifest.json<br>
&gt; +++ b/meta/recipes-devtools/python/python3/python3-manifest.json<br>
&gt; @@ -213,8 +213,8 @@<br>
&gt;              &quot;${bindir}/python3&quot;,<br>
&gt;              &quot;${bindir}/python${PYTHON_MAJMIN}&quot;,<br>
&gt;              &quot;${bindir}/python${PYTHON_MAJMIN}.real&quot;,<br>
&gt; -            &quot;${bindir}/python${PYTHON_BINABI}&quot;,<br>
&gt; -            &quot;${includedir}/python${PYTHON_BINABI}/pyconfig*.h&quot;,<br>
&gt; +            &quot;${bindir}/python${PYTHON_MAJMIN}&quot;,<br>
&gt; +            &quot;${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h&quot;,<br>
&gt;              &quot;${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]&quot;,<br>
&gt;              &quot;${libdir}/python${PYTHON_MAJMIN}/UserDict.py&quot;,<br>
&gt;              &quot;${libdir}/python${PYTHON_MAJMIN}/UserList.py&quot;,<br>
&gt; diff --git a/meta/recipes-devtools/python/<a href="http://python3_3.7.5.bb" rel="noreferrer" target="_blank">python3_3.7.5.bb</a> b/meta/recipes-devtools/python/<a href="http://python3_3.8.0.bb" rel="noreferrer" target="_blank">python3_3.8.0.bb</a><br>
&gt; similarity index 91%<br>
&gt; rename from meta/recipes-devtools/python/<a href="http://python3_3.7.5.bb" rel="noreferrer" target="_blank">python3_3.7.5.bb</a><br>
&gt; rename to meta/recipes-devtools/python/<a href="http://python3_3.8.0.bb" rel="noreferrer" target="_blank">python3_3.8.0.bb</a><br>
&gt; index 57eaaea5e7c..1feaebea8ee 100644<br>
&gt; --- a/meta/recipes-devtools/python/<a href="http://python3_3.7.5.bb" rel="noreferrer" target="_blank">python3_3.7.5.bb</a><br>
&gt; +++ b/meta/recipes-devtools/python/<a href="http://python3_3.8.0.bb" rel="noreferrer" target="_blank">python3_3.8.0.bb</a><br>
&gt; @@ -19,8 +19,6 @@ SRC_URI = &quot;<a href="http://www.python.org/ftp/python/$%7BPV%7D/Python-$%7BPV%7D.tar.xz" rel="noreferrer" target="_blank">http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz</a> \<br>
&gt;             file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \<br>
&gt;             file://0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \<br>
&gt;             file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \<br>
&gt; -           file://0002-Don-t-do-runtime-test-to-get-float-byte-order.patch \<br>
&gt; -           file://0003-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \<br>
&gt;             file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch \<br>
&gt;             file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \<br>
&gt;             file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \<br>
&gt; @@ -35,20 +33,16 @@ SRC_URI_append_class-native = &quot; \<br>
&gt;             file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \<br>
&gt;             file://12-distutils-prefix-is-inside-staging-area.patch \<br>
&gt;             &quot;<br>
&gt; -SRC_URI_append_class-nativesdk = &quot; \<br>
&gt; -           file://0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch \<br>
&gt; -           &quot;<br>
&gt;<br>
&gt; -SRC_URI[md5sum] = &quot;08ed8030b1183107c48f2092e79a87e2&quot;<br>
&gt; -SRC_URI[sha256sum] = &quot;e85a76ea9f3d6c485ec1780fca4e500725a4a7bbc63c78ebc44170de9b619d94&quot;<br>
&gt; +SRC_URI[md5sum] = &quot;dbac8df9d8b9edc678d0f4cacdb7dbb0&quot;<br>
&gt; +SRC_URI[sha256sum] = &quot;b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84&quot;<br>
&gt;<br>
&gt;  # exclude pre-releases for both python 2.x and 3.x<br>
&gt;  UPSTREAM_CHECK_REGEX = &quot;[Pp]ython-(?P&lt;pver&gt;\d+(\.\d+)+).tar&quot;<br>
&gt;<br>
&gt;  CVE_PRODUCT = &quot;python&quot;<br>
&gt;<br>
&gt; -PYTHON_MAJMIN = &quot;3.7&quot;<br>
&gt; -PYTHON_BINABI = &quot;${PYTHON_MAJMIN}m&quot;<br>
&gt; +PYTHON_MAJMIN = &quot;3.8&quot;<br>
&gt;<br>
&gt;  S = &quot;${WORKDIR}/Python-${PV}&quot;<br>
&gt;<br>
&gt; @@ -59,8 +53,8 @@ inherit autotools pkgconfig qemu ptest multilib_header update-alternatives<br>
&gt;  MULTILIB_SUFFIX = &quot;${@d.getVar(&#39;base_libdir&#39;,1).split(&#39;/&#39;)[-1]}&quot;<br>
&gt;<br>
&gt;  ALTERNATIVE_${PN}-dev = &quot;python3-config&quot;<br>
&gt; -ALTERNATIVE_LINK_NAME[python3-config] = &quot;${bindir}/python${PYTHON_BINABI}-config&quot;<br>
&gt; -ALTERNATIVE_TARGET[python3-config] = &quot;${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}&quot;<br>
&gt; +ALTERNATIVE_LINK_NAME[python3-config] = &quot;${bindir}/python${PYTHON_MAJMIN}-config&quot;<br>
&gt; +ALTERNATIVE_TARGET[python3-config] = &quot;${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}&quot;<br>
&gt;<br>
&gt;<br>
&gt;  DEPENDS = &quot;bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2&quot;<br>
&gt; @@ -131,7 +125,7 @@ do_install_prepend() {<br>
&gt;  }<br>
&gt;<br>
&gt;  do_install_append_class-target() {<br>
&gt; -        oe_multilib_header python${PYTHON_BINABI}/pyconfig.h<br>
&gt; +        oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h<br>
&gt;  }<br>
&gt;<br>
&gt;  do_install_append_class-native() {<br>
&gt; @@ -161,7 +155,7 @@ do_install_append() {<br>
&gt;  }<br>
&gt;<br>
&gt;  do_install_append_class-nativesdk () {<br>
&gt; -    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} OEPYTHON3HOME=&#39;${prefix}&#39; TERMINFO_DIRS=&#39;${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo&#39; PYTHONNOUSERSITE=&#39;1&#39;<br>
&gt; +    create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS=&#39;${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo&#39; PYTHONNOUSERSITE=&#39;1&#39;<br>
&gt;  }<br>
&gt;<br>
&gt;  SSTATE_SCAN_FILES += &quot;Makefile _sysconfigdata.py&quot;<br>
&gt; @@ -177,7 +171,7 @@ py_package_preprocess () {<br>
&gt;                  -e &#39;s:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g&#39; \<br>
&gt;                  ${PKGD}/${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \<br>
&gt;                  ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \<br>
&gt; -                ${PKGD}/${bindir}/python${PYTHON_BINABI}-config<br>
&gt; +                ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config<br>
&gt;<br>
&gt;          # Reformat _sysconfigdata after modifying it so that it remains<br>
&gt;          # reproducible<br>
&gt; @@ -196,7 +190,7 @@ py_package_preprocess () {<br>
&gt;               -c &quot;from py_compile import compile; compile(&#39;$sysconfigfile&#39;, optimize=2)&quot;<br>
&gt;          cd -<br>
&gt;<br>
&gt; -        mv ${PKGD}/${bindir}/python${PYTHON_BINABI}-config ${PKGD}/${bindir}/python${PYTHON_BINABI}-config-${MULTILIB_SUFFIX}<br>
&gt; +        mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}<br>
&gt;<br>
&gt;          #Remove the unneeded copy of target sysconfig data<br>
&gt;          rm -rf ${PKGD}/${libdir}/python-sysconfigdata<br>
&gt; @@ -322,7 +316,7 @@ RPROVIDES_${PN}-venv += &quot;python3-pyvenv&quot;<br>
&gt;  # package libpython3<br>
&gt;  PACKAGES =+ &quot;libpython3 libpython3-staticdev&quot;<br>
&gt;  FILES_libpython3 = &quot;${libdir}/libpython*.so.*&quot;<br>
&gt; -FILES_libpython3-staticdev += &quot;${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_BINABI}-*/libpython${PYTHON_BINABI}.a&quot;<br>
&gt; +FILES_libpython3-staticdev += &quot;${prefix}/lib/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a&quot;<br>
&gt;  INSANE_SKIP_${PN}-dev += &quot;dev-elf&quot;<br>
&gt;<br>
&gt;  # catch all the rest (unsorted)<br>
&gt; @@ -341,3 +335,5 @@ RDEPENDS_${PN}-ptest_append_libc-glibc = &quot; locale-base-tr-tr.iso-8859-9&quot;<br>
&gt;  RDEPENDS_${PN}-tkinter += &quot;${@bb.utils.contains(&#39;PACKAGECONFIG&#39;, &#39;tk&#39;, &#39;tk tk-lib&#39;, &#39;&#39;, d)}&quot;<br>
&gt;  RDEPENDS_${PN}-dev = &quot;&quot;<br>
&gt;<br>
&gt; +RDEPENDS_${PN}-tests_append_class-target = &quot; bash&quot;<br>
&gt; +RDEPENDS_${PN}-tests_append_class-nativesdk = &quot; bash&quot;<br>
&gt; --<br>
&gt; 2.17.1<br>
&gt;<br>
&gt; --<br>
&gt; _______________________________________________<br>
&gt; Openembedded-core mailing list<br>
&gt; <a href="mailto:Openembedded-core@lists.openembedded.org" target="_blank">Openembedded-core@lists.openembedded.org</a><br>
&gt; <a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/mailman/listinfo/openembedded-core</a><br>
</blockquote></div>