diff options
Diffstat (limited to 'meta/recipes-devtools/python/python3')
37 files changed, 717 insertions, 959 deletions
diff --git a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch new file mode 100644 index 0000000000..0d807db39f --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From 365399f17d35719d828ddd49182dcb401fb7791c Mon Sep 17 00:00:00 2001 | ||
2 | From: Paulo Neves <ptsneves@gmail.com> | ||
3 | Date: Tue, 7 Jun 2022 16:16:41 +0200 | ||
4 | Subject: [PATCH] Avoid shebang overflow on python-config.py | ||
5 | |||
6 | The whole native path may be too big, leading to shebang | ||
7 | overflow. Let's just use the env shebang. | ||
8 | |||
9 | Denial reason: [1] | ||
10 | |||
11 | Upstream-Status: Denied [distribution] | ||
12 | |||
13 | [1] https://github.com/python/cpython/pull/93760#pullrequestreview-1005365737 | ||
14 | --- | ||
15 | Makefile.pre.in | 2 ++ | ||
16 | 1 file changed, 2 insertions(+) | ||
17 | |||
18 | diff --git a/Makefile.pre.in b/Makefile.pre.in | ||
19 | index 77bf09a..6353c57 100644 | ||
20 | --- a/Makefile.pre.in | ||
21 | +++ b/Makefile.pre.in | ||
22 | @@ -2339,6 +2339,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh | ||
23 | @ # Substitution happens here, as the completely-expanded BINDIR | ||
24 | @ # is not available in configure | ||
25 | sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py | ||
26 | + @ # Otherwise we might get huge shebangs with native paths | ||
27 | + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' python-config.py | ||
28 | @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} | ||
29 | LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config | ||
30 | @ # On Darwin, always use the python version of the script, the shell | ||
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 deleted file mode 100644 index 59592821d7..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Fri, 25 Jan 2019 19:04:13 +0100 | ||
4 | Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host | ||
5 | contamination | ||
6 | |||
7 | Upstream-Status: Inappropriate [oe-core specific] | ||
8 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
9 | |||
10 | --- | ||
11 | setup.py | 1 - | ||
12 | 1 file changed, 1 deletion(-) | ||
13 | |||
14 | diff --git a/setup.py b/setup.py | ||
15 | index 20d7f35..ab18ff0 100644 | ||
16 | --- a/setup.py | ||
17 | +++ b/setup.py | ||
18 | @@ -957,7 +957,6 @@ class PyBuildExt(build_ext): | ||
19 | 'termcap'): | ||
20 | readline_libs.append('termcap') | ||
21 | self.add(Extension('readline', ['readline.c'], | ||
22 | - library_dirs=['/usr/lib/termcap'], | ||
23 | extra_link_args=readline_extra_link_args, | ||
24 | libraries=readline_libs)) | ||
25 | else: | ||
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 deleted file mode 100644 index 83fd52d87f..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Tue, 29 Jan 2019 15:03:01 +0100 | ||
4 | Subject: [PATCH] Do not use the shell version of python-config that was | ||
5 | introduced in 3.4 | ||
6 | |||
7 | Revert instead to the original python version: it has our tweaks and | ||
8 | outputs directories correctly. | ||
9 | |||
10 | Upstream-Status: Inappropriate [oe-specific] | ||
11 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
12 | --- | ||
13 | Makefile.pre.in | 9 +++------ | ||
14 | 1 file changed, 3 insertions(+), 6 deletions(-) | ||
15 | |||
16 | diff --git a/Makefile.pre.in b/Makefile.pre.in | ||
17 | index 2d2e11f..cc19942 100644 | ||
18 | --- a/Makefile.pre.in | ||
19 | +++ b/Makefile.pre.in | ||
20 | @@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh | ||
21 | sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py | ||
22 | @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} | ||
23 | LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config | ||
24 | - @ # On Darwin, always use the python version of the script, the shell | ||
25 | - @ # version doesn't use the compiler customizations that are provided | ||
26 | - @ # in python (_osx_support.py). | ||
27 | - @if test `uname -s` = Darwin; then \ | ||
28 | - cp python-config.py python-config; \ | ||
29 | - fi | ||
30 | + @ # In OpenEmbedded, always use the python version of the script, the shell | ||
31 | + @ # version is broken in multiple ways, and doesn't return correct directories | ||
32 | + cp python-config.py python-config | ||
33 | |||
34 | |||
35 | # Install the include files | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch deleted file mode 100644 index a94fa0a5a9..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001 | ||
2 | From: Jeremy Puhlman <jpuhlman@mvista.com> | ||
3 | Date: Wed, 4 Mar 2020 00:06:42 +0000 | ||
4 | Subject: [PATCH] Don't search system for headers/libraries | ||
5 | |||
6 | Upstream-Status: Inappropriate [oe-core specific] | ||
7 | Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> | ||
8 | |||
9 | --- | ||
10 | setup.py | 4 ++-- | ||
11 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
12 | |||
13 | diff --git a/setup.py b/setup.py | ||
14 | index a0bf9ea..da099bf 100644 | ||
15 | --- a/setup.py | ||
16 | +++ b/setup.py | ||
17 | @@ -674,8 +674,8 @@ class PyBuildExt(build_ext): | ||
18 | add_dir_to_list(self.compiler.include_dirs, | ||
19 | sysconfig.get_config_var("INCLUDEDIR")) | ||
20 | |||
21 | - system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib'] | ||
22 | - system_include_dirs = ['/usr/include'] | ||
23 | + system_lib_dirs = [] | ||
24 | + system_include_dirs = [] | ||
25 | # lib_dirs and inc_dirs are used to search for files; | ||
26 | # if a file is found in one of those directories, it can | ||
27 | # be assumed that no additional -I,-L directives are needed. | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch new file mode 100644 index 0000000000..026150f0e2 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From f8a664cf1fc73e381d57d6927207286059744837 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex@linutronix.de> | ||
3 | Date: Thu, 16 Sep 2021 16:35:37 +0200 | ||
4 | Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O | ||
5 | errors | ||
6 | |||
7 | reading stdin can throw the same I/O errors as reading from master fd does, | ||
8 | e.g. when running under Yocto's test harness: | ||
9 | ====================================================================== | ||
10 | ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest) | ||
11 | ---------------------------------------------------------------------- | ||
12 | Traceback (most recent call last): | ||
13 | File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang | ||
14 | pty.spawn([sys.executable, '-c', 'print("hi there")']) | ||
15 | File "/usr/lib/python3.10/pty.py", line 181, in spawn | ||
16 | _copy(master_fd, master_read, stdin_read) | ||
17 | File "/usr/lib/python3.10/pty.py", line 157, in _copy | ||
18 | data = stdin_read(STDIN_FILENO) | ||
19 | File "/usr/lib/python3.10/pty.py", line 132, in _read | ||
20 | return os.read(fd, 1024) | ||
21 | OSError: [Errno 5] Input/output error | ||
22 | |||
23 | So let's treat both channels the same. | ||
24 | |||
25 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388] | ||
26 | Signed-off-by: Alexander Kanavin <alex@linutronix.de> | ||
27 | |||
28 | --- | ||
29 | Lib/pty.py | 5 ++++- | ||
30 | 1 file changed, 4 insertions(+), 1 deletion(-) | ||
31 | |||
32 | diff --git a/Lib/pty.py b/Lib/pty.py | ||
33 | index 1d97994..fa8821b 100644 | ||
34 | --- a/Lib/pty.py | ||
35 | +++ b/Lib/pty.py | ||
36 | @@ -178,7 +178,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read): | ||
37 | i_buf = i_buf[n:] | ||
38 | |||
39 | if stdin_avail and STDIN_FILENO in rfds: | ||
40 | - data = stdin_read(STDIN_FILENO) | ||
41 | + try: | ||
42 | + data = stdin_read(STDIN_FILENO) | ||
43 | + except OSError: | ||
44 | + data = b"" | ||
45 | if not data: | ||
46 | stdin_avail = False | ||
47 | else: | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch deleted file mode 100644 index 1490cdbb18..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Thu, 22 Oct 2020 13:10:34 +0200 | ||
4 | Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file | ||
5 | |||
6 | This allows correctly substituting them for target installs using | ||
7 | native python. | ||
8 | |||
9 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
10 | --- | ||
11 | Lib/sysconfig.py | 8 ++++---- | ||
12 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
13 | |||
14 | diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py | ||
15 | index bf04ac5..ed0462b 100644 | ||
16 | --- a/Lib/sysconfig.py | ||
17 | +++ b/Lib/sysconfig.py | ||
18 | @@ -20,10 +20,10 @@ __all__ = [ | ||
19 | |||
20 | _INSTALL_SCHEMES = { | ||
21 | 'posix_prefix': { | ||
22 | - 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}', | ||
23 | - 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', | ||
24 | - 'purelib': '{base}/lib/python{py_version_short}/site-packages', | ||
25 | - 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', | ||
26 | + 'stdlib': '{LIBDEST}', | ||
27 | + 'platstdlib': '{LIBDEST}', | ||
28 | + 'purelib': '{LIBDEST}/site-packages', | ||
29 | + 'platlib': '{LIBDEST}/site-packages', | ||
30 | 'include': | ||
31 | '{installed_base}/include/python{py_version_short}{abiflags}', | ||
32 | 'platinclude': | ||
33 | -- | ||
34 | 2.24.0 | ||
35 | |||
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch new file mode 100644 index 0000000000..680254fab9 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | From 71c194077bb907bfe423d3f3275f33a6c8ca0e74 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex@linutronix.de> | ||
3 | Date: Fri, 17 Nov 2023 14:26:32 +0100 | ||
4 | Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration | ||
5 | file | ||
6 | |||
7 | This allows correctly substituting them for target installs using | ||
8 | native python. | ||
9 | |||
10 | Upstream-Status: Inappropriate [oe-core cross builds] | ||
11 | Signed-off-by: Alexander Kanavin <alex@linutronix.de> | ||
12 | |||
13 | --- | ||
14 | Lib/sysconfig.py | 5 +++++ | ||
15 | 1 file changed, 5 insertions(+) | ||
16 | |||
17 | diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py | ||
18 | index 79c0510..91ebcb6 100644 | ||
19 | --- a/Lib/sysconfig.py | ||
20 | +++ b/Lib/sysconfig.py | ||
21 | @@ -668,6 +668,11 @@ def _init_config_vars(): | ||
22 | _CONFIG_VARS['VPATH'] = sys._vpath | ||
23 | if os.name == 'posix': | ||
24 | _init_posix(_CONFIG_VARS) | ||
25 | + _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix'] | ||
26 | + _CONFIG_VARS['base'] = _CONFIG_VARS['prefix'] | ||
27 | + _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix'] | ||
28 | + _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix'] | ||
29 | + _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR'] | ||
30 | if _HAS_USER_BASE: | ||
31 | # Setting 'userbase' is done below the call to the | ||
32 | # init function to enable using 'get_config_var' in | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch deleted file mode 100644 index b1bceac512..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Thu, 16 Jan 2020 12:34:20 +0100 | ||
4 | Subject: [PATCH] Makefile: do not compile .pyc in parallel | ||
5 | |||
6 | This was found to break reproducibility, and produce strange file ownership | ||
7 | races. | ||
8 | |||
9 | The upstream commit introducing the change was: | ||
10 | https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504 | ||
11 | |||
12 | Upstream-Status: Pending | ||
13 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
14 | --- | ||
15 | Makefile.pre.in | 12 ++++++------ | ||
16 | 1 file changed, 6 insertions(+), 6 deletions(-) | ||
17 | |||
18 | diff --git a/Makefile.pre.in b/Makefile.pre.in | ||
19 | index 1241112..5dfdf44 100644 | ||
20 | --- a/Makefile.pre.in | ||
21 | +++ b/Makefile.pre.in | ||
22 | @@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c | ||
23 | fi | ||
24 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
25 | $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
26 | - -j0 -d $(LIBDEST) -f \ | ||
27 | + -d $(LIBDEST) -f \ | ||
28 | -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ | ||
29 | $(DESTDIR)$(LIBDEST) | ||
30 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
31 | $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
32 | - -j0 -d $(LIBDEST) -f \ | ||
33 | + -d $(LIBDEST) -f \ | ||
34 | -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ | ||
35 | $(DESTDIR)$(LIBDEST) | ||
36 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
37 | $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
38 | - -j0 -d $(LIBDEST) -f \ | ||
39 | + -d $(LIBDEST) -f \ | ||
40 | -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ | ||
41 | $(DESTDIR)$(LIBDEST) | ||
42 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
43 | $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
44 | - -j0 -d $(LIBDEST)/site-packages -f \ | ||
45 | + -d $(LIBDEST)/site-packages -f \ | ||
46 | -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages | ||
47 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
48 | $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
49 | - -j0 -d $(LIBDEST)/site-packages -f \ | ||
50 | + -d $(LIBDEST)/site-packages -f \ | ||
51 | -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages | ||
52 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
53 | $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ | ||
54 | - -j0 -d $(LIBDEST)/site-packages -f \ | ||
55 | + -d $(LIBDEST)/site-packages -f \ | ||
56 | -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages | ||
57 | -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ | ||
58 | $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch deleted file mode 100644 index 237645bc60..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Changqing Li <changqing.li@windriver.com> | ||
3 | Date: Wed, 8 May 2019 16:10:29 +0800 | ||
4 | Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem) | ||
5 | |||
6 | When using make -j with the 'install' target, it's possible for altbininstall | ||
7 | (which normally creates BINDIR) and libainstall (which doesn't, though it | ||
8 | installs python-config there) to race, resulting in a failure due to | ||
9 | attempting to install python-config into a nonexistent BINDIR. Ensure it also | ||
10 | exists in the libainstall target. | ||
11 | |||
12 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186] | ||
13 | |||
14 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | ||
15 | --- | ||
16 | Makefile.pre.in | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/Makefile.pre.in b/Makefile.pre.in | ||
20 | index 15f3687..7e9f173 100644 | ||
21 | --- a/Makefile.pre.in | ||
22 | +++ b/Makefile.pre.in | ||
23 | @@ -1456,7 +1456,7 @@ LIBPL= @LIBPL@ | ||
24 | LIBPC= $(LIBDIR)/pkgconfig | ||
25 | |||
26 | libainstall: @DEF_MAKE_RULE@ python-config | ||
27 | - @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \ | ||
28 | + @for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \ | ||
29 | do \ | ||
30 | if test ! -d $(DESTDIR)$$i; then \ | ||
31 | echo "Creating directory $$i"; \ | ||
32 | -- | ||
33 | 2.7.4 | ||
34 | |||
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch index fa7735ff93..ee33128fa1 100644 --- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch +++ b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 | 1 | From 38278339832a57dbf5fa3ef21accaa03e2c814d7 Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | 2 | From: Alexander Kanavin <alex.kanavin@gmail.com> |
3 | Date: Wed, 30 Jan 2019 12:41:04 +0100 | 3 | Date: Wed, 30 Jan 2019 12:41:04 +0100 |
4 | Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data | 4 | Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data |
@@ -10,16 +10,16 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | |||
10 | 1 file changed, 1 insertion(+), 2 deletions(-) | 10 | 1 file changed, 1 insertion(+), 2 deletions(-) |
11 | 11 | ||
12 | diff --git a/Makefile.pre.in b/Makefile.pre.in | 12 | diff --git a/Makefile.pre.in b/Makefile.pre.in |
13 | index a3a02a7..d5503dd 100644 | 13 | index dd5e69f..381feb0 100644 |
14 | --- a/Makefile.pre.in | 14 | --- a/Makefile.pre.in |
15 | +++ b/Makefile.pre.in | 15 | +++ b/Makefile.pre.in |
16 | @@ -507,8 +507,7 @@ build_all_generate_profile: | 16 | @@ -658,8 +658,7 @@ profile-run-stamp: |
17 | $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)" | 17 | # enabled. |
18 | 18 | $(MAKE) profile-gen-stamp | |
19 | run_profile_task: | 19 | # Next, run the profile task to generate the profile information. |
20 | - @ # FIXME: can't run for a cross build | 20 | - @ # FIXME: can't run for a cross build |
21 | - $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true | 21 | - $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true |
22 | + ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true | 22 | + ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true |
23 | |||
24 | build_all_merge_profile: | ||
25 | $(LLVM_PROF_MERGER) | 23 | $(LLVM_PROF_MERGER) |
24 | # Remove profile generation binary since we are done with it. | ||
25 | $(MAKE) clean-retain-profile | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch new file mode 100644 index 0000000000..197daa71a5 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch | |||
@@ -0,0 +1,72 @@ | |||
1 | From 3471e3478e0760c42e04f8046cee2367ab5706d2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Yi Fan Yu <yifan.yu@windriver.com> | ||
3 | Date: Thu, 1 Apr 2021 13:08:37 -0700 | ||
4 | Subject: [PATCH] Skip failing tests due to load variability on YP AB | ||
5 | |||
6 | Skip these tests until AB-INT is solved. | ||
7 | |||
8 | [YOCTO #14296] | ||
9 | |||
10 | Upstream-Status: Inappropriate [OE-Specific] | ||
11 | |||
12 | Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> | ||
13 | |||
14 | Skip two additional tests due to suspected load variability failures. | ||
15 | |||
16 | [YOCTO #15131] | ||
17 | [YOCTO #15177] | ||
18 | |||
19 | Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> | ||
20 | --- | ||
21 | Lib/test/_test_multiprocessing.py | 3 +++ | ||
22 | Lib/test/test_time.py | 2 ++ | ||
23 | 2 files changed, 5 insertions(+) | ||
24 | |||
25 | diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py | ||
26 | index e42c7ab..dff5227 100644 | ||
27 | --- a/Lib/test/_test_multiprocessing.py | ||
28 | +++ b/Lib/test/_test_multiprocessing.py | ||
29 | @@ -682,6 +682,7 @@ class _TestProcess(BaseTestCase): | ||
30 | close_queue(q) | ||
31 | |||
32 | @support.requires_resource('walltime') | ||
33 | + @unittest.skip('timing related test, dependent on load') | ||
34 | def test_many_processes(self): | ||
35 | if self.TYPE == 'threads': | ||
36 | self.skipTest('test not appropriate for {}'.format(self.TYPE)) | ||
37 | @@ -2066,6 +2067,7 @@ class _TestBarrier(BaseTestCase): | ||
38 | except threading.BrokenBarrierError: | ||
39 | results.append(True) | ||
40 | |||
41 | + @unittest.skip('timing related test, dependent on load') | ||
42 | def test_timeout(self): | ||
43 | """ | ||
44 | Test wait(timeout) | ||
45 | @@ -5024,6 +5026,7 @@ class TestWait(unittest.TestCase): | ||
46 | time.sleep(period) | ||
47 | |||
48 | @support.requires_resource('walltime') | ||
49 | + @unittest.skip('timing related test, dependent on load') | ||
50 | def test_wait_integer(self): | ||
51 | from multiprocessing.connection import wait | ||
52 | |||
53 | diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py | ||
54 | index 02cc3f4..51a4548 100644 | ||
55 | --- a/Lib/test/test_time.py | ||
56 | +++ b/Lib/test/test_time.py | ||
57 | @@ -492,6 +492,7 @@ class TimeTestCase(unittest.TestCase): | ||
58 | @unittest.skipIf( | ||
59 | support.is_wasi, "process_time not available on WASI" | ||
60 | ) | ||
61 | + @unittest.skip('timing related test, dependent on load') | ||
62 | def test_process_time(self): | ||
63 | # process_time() should not include time spend during a sleep | ||
64 | start = time.process_time() | ||
65 | @@ -505,6 +506,7 @@ class TimeTestCase(unittest.TestCase): | ||
66 | self.assertTrue(info.monotonic) | ||
67 | self.assertFalse(info.adjustable) | ||
68 | |||
69 | + @unittest.skip('timing related test, dependent on load') | ||
70 | def test_thread_time(self): | ||
71 | if not hasattr(time, 'thread_time'): | ||
72 | if sys.platform.startswith(('linux', 'win')): | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch new file mode 100644 index 0000000000..b6c6ac5a28 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch | |||
@@ -0,0 +1,37 @@ | |||
1 | From 37d058e841ba3bd89b5746cc5381afb014b11581 Mon Sep 17 00:00:00 2001 | ||
2 | From: Wentao Zhang <wentao.zhang@windriver.com> | ||
3 | Date: Mon, 20 Mar 2023 13:39:52 +0800 | ||
4 | Subject: [PATCH] Update test_sysconfig for posix_user purelib | ||
5 | |||
6 | Steps to trigger the failed test: | ||
7 | Edit local.conf to add something as follows: | ||
8 | BASELIB = "lib64" | ||
9 | IMAGE_INSTALL:append = " python3-tests". | ||
10 | bitbake core-image-sato | ||
11 | runqemu qemux86-64 nographic slirp | ||
12 | Reproducer: | ||
13 | $python3 -m test test_sysconfig | ||
14 | |||
15 | Update test_sysconfig.test_user_similar() for the posix_user scheme: | ||
16 | "purelib" doesn't use sys.platlibdir. | ||
17 | |||
18 | Upstream-Status: Inappropriate [oe-core specific] | ||
19 | Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com> | ||
20 | |||
21 | --- | ||
22 | Lib/test/test_sysconfig.py | 2 +- | ||
23 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py | ||
26 | index b6dbf3d..5672590 100644 | ||
27 | --- a/Lib/test/test_sysconfig.py | ||
28 | +++ b/Lib/test/test_sysconfig.py | ||
29 | @@ -372,7 +372,7 @@ class TestSysConfig(unittest.TestCase): | ||
30 | expected = os.path.normpath(global_path.replace(base, user, 1)) | ||
31 | # bpo-44860: platlib of posix_user doesn't use sys.platlibdir, | ||
32 | # whereas posix_prefix does. | ||
33 | - if name == 'platlib': | ||
34 | + if name == 'platlib' or name == 'purelib': | ||
35 | # Replace "/lib64/python3.11/site-packages" suffix | ||
36 | # with "/lib/python3.11/site-packages". | ||
37 | py_version_short = sysconfig.get_python_version() | ||
diff --git a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch b/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch deleted file mode 100644 index 793385de91..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001 | ||
2 | From: Inada Naoki <songofacandy@gmail.com> | ||
3 | Date: Sat, 14 Jul 2018 00:46:11 +0900 | ||
4 | Subject: [PATCH] Use FLAG_REF always for interned strings | ||
5 | |||
6 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226] | ||
7 | Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> | ||
8 | |||
9 | --- | ||
10 | Python/marshal.c | 9 +++++++-- | ||
11 | 1 file changed, 7 insertions(+), 2 deletions(-) | ||
12 | |||
13 | diff --git a/Python/marshal.c b/Python/marshal.c | ||
14 | index c4538bd..2437160 100644 | ||
15 | --- a/Python/marshal.c | ||
16 | +++ b/Python/marshal.c | ||
17 | @@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p) | ||
18 | if (p->version < 3 || p->hashtable == NULL) | ||
19 | return 0; /* not writing object references */ | ||
20 | |||
21 | - /* if it has only one reference, it definitely isn't shared */ | ||
22 | - if (Py_REFCNT(v) == 1) | ||
23 | + /* If it has only one reference, it definitely isn't shared. | ||
24 | + * But we use TYPE_REF always for interned string, to PYC file stable | ||
25 | + * as possible. | ||
26 | + */ | ||
27 | + if (Py_REFCNT(v) == 1 && | ||
28 | + !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) { | ||
29 | return 0; | ||
30 | + } | ||
31 | |||
32 | entry = _Py_hashtable_get_entry(p->hashtable, v); | ||
33 | if (entry != NULL) { | ||
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 deleted file mode 100644 index c4fae09a5b..0000000000 --- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch +++ /dev/null | |||
@@ -1,209 +0,0 @@ | |||
1 | From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthias Schoepfer <matthias.schoepfer@ithinx.io> | ||
3 | Date: Fri, 31 May 2019 15:34:34 +0200 | ||
4 | Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft | ||
5 | float | ||
6 | |||
7 | When (cross) compiling for softfloat mips, __mips_hard_float will not be | ||
8 | defined and detection of OS triplet in configure.ac / configure will fail. | ||
9 | |||
10 | This also has to do with the custom detection of the build triplet. Trying | ||
11 | to do this in a more autoconf/autotools manner. | ||
12 | |||
13 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196] | ||
14 | Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io> | ||
15 | |||
16 | %% original patch: 0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch | ||
17 | --- | ||
18 | configure.ac | 175 +++++++-------------------------------------------- | ||
19 | 1 file changed, 21 insertions(+), 154 deletions(-) | ||
20 | |||
21 | diff --git a/configure.ac b/configure.ac | ||
22 | index ede710e..bc81b0b 100644 | ||
23 | --- a/configure.ac | ||
24 | +++ b/configure.ac | ||
25 | @@ -710,160 +710,27 @@ fi | ||
26 | MULTIARCH=$($CC --print-multiarch 2>/dev/null) | ||
27 | AC_SUBST(MULTIARCH) | ||
28 | |||
29 | -AC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) | ||
30 | -cat >> conftest.c <<EOF | ||
31 | -#undef bfin | ||
32 | -#undef cris | ||
33 | -#undef fr30 | ||
34 | -#undef linux | ||
35 | -#undef hppa | ||
36 | -#undef hpux | ||
37 | -#undef i386 | ||
38 | -#undef mips | ||
39 | -#undef powerpc | ||
40 | -#undef sparc | ||
41 | -#undef unix | ||
42 | -#if defined(__ANDROID__) | ||
43 | - # Android is not a multiarch system. | ||
44 | -#elif defined(__linux__) | ||
45 | -# if defined(__x86_64__) && defined(__LP64__) | ||
46 | - x86_64-linux-gnu | ||
47 | -# elif defined(__x86_64__) && defined(__ILP32__) | ||
48 | - x86_64-linux-gnux32 | ||
49 | -# elif defined(__i386__) | ||
50 | - i386-linux-gnu | ||
51 | -# elif defined(__aarch64__) && defined(__AARCH64EL__) | ||
52 | -# if defined(__ILP32__) | ||
53 | - aarch64_ilp32-linux-gnu | ||
54 | -# else | ||
55 | - aarch64-linux-gnu | ||
56 | -# endif | ||
57 | -# elif defined(__aarch64__) && defined(__AARCH64EB__) | ||
58 | -# if defined(__ILP32__) | ||
59 | - aarch64_be_ilp32-linux-gnu | ||
60 | -# else | ||
61 | - aarch64_be-linux-gnu | ||
62 | -# endif | ||
63 | -# elif defined(__alpha__) | ||
64 | - alpha-linux-gnu | ||
65 | -# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP) | ||
66 | -# if defined(__ARMEL__) | ||
67 | - arm-linux-gnueabihf | ||
68 | -# else | ||
69 | - armeb-linux-gnueabihf | ||
70 | -# endif | ||
71 | -# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP) | ||
72 | -# if defined(__ARMEL__) | ||
73 | - arm-linux-gnueabi | ||
74 | -# else | ||
75 | - armeb-linux-gnueabi | ||
76 | -# endif | ||
77 | -# elif defined(__hppa__) | ||
78 | - hppa-linux-gnu | ||
79 | -# elif defined(__ia64__) | ||
80 | - ia64-linux-gnu | ||
81 | -# elif defined(__m68k__) && !defined(__mcoldfire__) | ||
82 | - m68k-linux-gnu | ||
83 | -# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL) | ||
84 | -# if _MIPS_SIM == _ABIO32 | ||
85 | - mipsisa32r6el-linux-gnu | ||
86 | -# elif _MIPS_SIM == _ABIN32 | ||
87 | - mipsisa64r6el-linux-gnuabin32 | ||
88 | -# elif _MIPS_SIM == _ABI64 | ||
89 | - mipsisa64r6el-linux-gnuabi64 | ||
90 | -# else | ||
91 | -# error unknown platform triplet | ||
92 | -# endif | ||
93 | -# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) | ||
94 | -# if _MIPS_SIM == _ABIO32 | ||
95 | - mipsisa32r6-linux-gnu | ||
96 | -# elif _MIPS_SIM == _ABIN32 | ||
97 | - mipsisa64r6-linux-gnuabin32 | ||
98 | -# elif _MIPS_SIM == _ABI64 | ||
99 | - mipsisa64r6-linux-gnuabi64 | ||
100 | -# else | ||
101 | -# error unknown platform triplet | ||
102 | -# endif | ||
103 | -# elif defined(__mips_hard_float) && defined(_MIPSEL) | ||
104 | -# if _MIPS_SIM == _ABIO32 | ||
105 | - mipsel-linux-gnu | ||
106 | -# elif _MIPS_SIM == _ABIN32 | ||
107 | - mips64el-linux-gnuabin32 | ||
108 | -# elif _MIPS_SIM == _ABI64 | ||
109 | - mips64el-linux-gnuabi64 | ||
110 | -# else | ||
111 | -# error unknown platform triplet | ||
112 | -# endif | ||
113 | -# elif defined(__mips_hard_float) | ||
114 | -# if _MIPS_SIM == _ABIO32 | ||
115 | - mips-linux-gnu | ||
116 | -# elif _MIPS_SIM == _ABIN32 | ||
117 | - mips64-linux-gnuabin32 | ||
118 | -# elif _MIPS_SIM == _ABI64 | ||
119 | - mips64-linux-gnuabi64 | ||
120 | -# else | ||
121 | -# error unknown platform triplet | ||
122 | -# endif | ||
123 | -# elif defined(__or1k__) | ||
124 | - or1k-linux-gnu | ||
125 | -# elif defined(__powerpc__) && defined(__SPE__) | ||
126 | - powerpc-linux-gnuspe | ||
127 | -# elif defined(__powerpc64__) | ||
128 | -# if defined(__LITTLE_ENDIAN__) | ||
129 | - powerpc64le-linux-gnu | ||
130 | -# else | ||
131 | - powerpc64-linux-gnu | ||
132 | -# endif | ||
133 | -# elif defined(__powerpc__) | ||
134 | - powerpc-linux-gnu | ||
135 | -# elif defined(__s390x__) | ||
136 | - s390x-linux-gnu | ||
137 | -# elif defined(__s390__) | ||
138 | - s390-linux-gnu | ||
139 | -# elif defined(__sh__) && defined(__LITTLE_ENDIAN__) | ||
140 | - sh4-linux-gnu | ||
141 | -# elif defined(__sparc__) && defined(__arch64__) | ||
142 | - sparc64-linux-gnu | ||
143 | -# elif defined(__sparc__) | ||
144 | - sparc-linux-gnu | ||
145 | -# elif defined(__riscv) | ||
146 | -# if __riscv_xlen == 32 | ||
147 | - riscv32-linux-gnu | ||
148 | -# elif __riscv_xlen == 64 | ||
149 | - riscv64-linux-gnu | ||
150 | -# else | ||
151 | -# error unknown platform triplet | ||
152 | -# endif | ||
153 | -# else | ||
154 | -# error unknown platform triplet | ||
155 | -# endif | ||
156 | -#elif defined(__FreeBSD_kernel__) | ||
157 | -# if defined(__LP64__) | ||
158 | - x86_64-kfreebsd-gnu | ||
159 | -# elif defined(__i386__) | ||
160 | - i386-kfreebsd-gnu | ||
161 | -# else | ||
162 | -# error unknown platform triplet | ||
163 | -# endif | ||
164 | -#elif defined(__gnu_hurd__) | ||
165 | - i386-gnu | ||
166 | -#elif defined(__APPLE__) | ||
167 | - darwin | ||
168 | -#elif defined(__VXWORKS__) | ||
169 | - vxworks | ||
170 | -#else | ||
171 | -# error unknown platform triplet | ||
172 | -#endif | ||
173 | - | ||
174 | -EOF | ||
175 | - | ||
176 | -if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then | ||
177 | - PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` | ||
178 | - AC_MSG_RESULT([$PLATFORM_TRIPLET]) | ||
179 | -else | ||
180 | - AC_MSG_RESULT([none]) | ||
181 | -fi | ||
182 | -rm -f conftest.c conftest.out | ||
183 | +AC_CANONICAL_TARGET | ||
184 | +## Not using $target to filter out vendor | ||
185 | +## Need to handle macos, vxworks and hurd special (?) :-/ | ||
186 | +case ${target_os} in | ||
187 | + darwin*) | ||
188 | + PLATFORM_TRIPLET=darwin | ||
189 | + ;; | ||
190 | + hurd*) | ||
191 | + PLATFORM_TRIPLET=i386-gnu | ||
192 | + ;; | ||
193 | + vxworks*) | ||
194 | + PLATFORM_TRIPLET=vxworks | ||
195 | + ;; | ||
196 | + *) | ||
197 | + if test "${target_cpu}" != "i686"; then | ||
198 | + PLATFORM_TRIPLET=${target_cpu}-${target_os} | ||
199 | + else | ||
200 | + PLATFORM_TRIPLET=i386-${target_os} | ||
201 | + fi | ||
202 | + ;; | ||
203 | +esac | ||
204 | |||
205 | if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then | ||
206 | if test x$PLATFORM_TRIPLET != x$MULTIARCH; then | ||
207 | -- | ||
208 | 2.24.1 | ||
209 | |||
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 deleted file mode 100644 index b982691b36..0000000000 --- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Thu, 31 Jan 2019 16:46:30 +0100 | ||
4 | Subject: [PATCH] distutils/sysconfig: append | ||
5 | STAGING_LIBDIR/python-sysconfigdata to sys.path | ||
6 | |||
7 | So that target configuration can be used when running native python | ||
8 | |||
9 | Upstream-Status: Inappropriate [oe-core specific] | ||
10 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
11 | |||
12 | --- | ||
13 | Lib/distutils/sysconfig.py | 2 ++ | ||
14 | Lib/sysconfig.py | 2 ++ | ||
15 | 2 files changed, 4 insertions(+) | ||
16 | |||
17 | diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py | ||
18 | index b51629e..2df348c 100644 | ||
19 | --- a/Lib/distutils/sysconfig.py | ||
20 | +++ b/Lib/distutils/sysconfig.py | ||
21 | @@ -438,6 +438,8 @@ def _init_posix(): | ||
22 | platform=sys.platform, | ||
23 | multiarch=getattr(sys.implementation, '_multiarch', ''), | ||
24 | )) | ||
25 | + if 'STAGING_LIBDIR' in os.environ: | ||
26 | + sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata') | ||
27 | _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) | ||
28 | build_time_vars = _temp.build_time_vars | ||
29 | global _config_vars | ||
30 | diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py | ||
31 | index b2d790b..405273c 100644 | ||
32 | --- a/Lib/sysconfig.py | ||
33 | +++ b/Lib/sysconfig.py | ||
34 | @@ -419,6 +419,8 @@ def _init_posix(vars): | ||
35 | """Initialize the module as appropriate for POSIX systems.""" | ||
36 | # _sysconfigdata is generated at build time, see _generate_posix_vars() | ||
37 | name = _get_sysconfigdata_name() | ||
38 | + if 'STAGING_LIBDIR' in os.environ: | ||
39 | + sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata') | ||
40 | _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) | ||
41 | build_time_vars = _temp.build_time_vars | ||
42 | vars.update(build_time_vars) | ||
diff --git a/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch b/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch new file mode 100644 index 0000000000..8406ef30a2 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch | |||
@@ -0,0 +1,26 @@ | |||
1 | From 439aa02f42d6e6715c172076261757fcb89a936a Mon Sep 17 00:00:00 2001 | ||
2 | From: "Miss Islington (bot)" | ||
3 | <31488909+miss-islington@users.noreply.github.com> | ||
4 | Date: Tue, 23 Jan 2024 23:02:02 +0100 | ||
5 | Subject: [PATCH] gh-114492: Initialize struct termios before calling | ||
6 | tcgetattr() (GH-114495) (GH-114502) | ||
7 | |||
8 | On Alpine Linux it could leave some field non-initialized. | ||
9 | (cherry picked from commit d22c066b802592932f9eb18434782299e80ca42e) | ||
10 | |||
11 | Upstream-Status: Backport [https://github.com/python/cpython/commit/386c72d9928c51aa2c855ce592bd8022da3b407f] | ||
12 | Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> | ||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | --- | ||
15 | .../next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | 2 ++ | ||
16 | 1 file changed, 2 insertions(+) | ||
17 | create mode 100644 Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | ||
18 | |||
19 | diff --git a/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | ||
20 | new file mode 100644 | ||
21 | index 0000000..8df8299 | ||
22 | --- /dev/null | ||
23 | +++ b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | ||
24 | @@ -0,0 +1,2 @@ | ||
25 | +Make the result of :func:`termios.tcgetattr` reproducible on Alpine Linux. | ||
26 | +Previously it could leave a random garbage in some fields. | ||
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 index bfddc1ad52..bbeabe4389 100644 --- 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 | |||
@@ -1,4 +1,4 @@ | |||
1 | From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001 | 1 | From ababc7b1db8c406910766e11cdd04cbef7a706c9 Mon Sep 17 00:00:00 2001 |
2 | From: Changqing Li <changqing.li@windriver.com> | 2 | From: Changqing Li <changqing.li@windriver.com> |
3 | Date: Mon, 22 Oct 2018 15:19:51 +0800 | 3 | Date: Mon, 22 Oct 2018 15:19:51 +0800 |
4 | Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler | 4 | Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler |
@@ -14,40 +14,39 @@ x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model' | |||
14 | Here use cc_basename to replace CC for checking compiler to avoid such | 14 | Here use cc_basename to replace CC for checking compiler to avoid such |
15 | kind of issue. | 15 | kind of issue. |
16 | 16 | ||
17 | Upstream-Status: Pending | 17 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/96399] |
18 | 18 | ||
19 | Signed-off-by: Li Zhou <li.zhou@windriver.com> | 19 | Signed-off-by: Li Zhou <li.zhou@windriver.com> |
20 | 20 | ||
21 | patch originally from Li Zhou, I just rework it to new version | 21 | patch originally from Li Zhou, I just rework it to new version |
22 | 22 | ||
23 | Signed-off-by: Changqing Li <changqing.li@windriver.com> | 23 | Signed-off-by: Changqing Li <changqing.li@windriver.com> |
24 | |||
25 | --- | 24 | --- |
26 | configure.ac | 19 ++++++++++--------- | 25 | configure.ac | 19 ++++++++++--------- |
27 | 1 file changed, 10 insertions(+), 9 deletions(-) | 26 | 1 file changed, 10 insertions(+), 9 deletions(-) |
28 | 27 | ||
29 | diff --git a/configure.ac b/configure.ac | 28 | diff --git a/configure.ac b/configure.ac |
30 | index d60f052..e491e24 100644 | 29 | index 384718d..5a1d58b 100644 |
31 | --- a/configure.ac | 30 | --- a/configure.ac |
32 | +++ b/configure.ac | 31 | +++ b/configure.ac |
33 | @@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h) | 32 | @@ -137,6 +137,7 @@ AC_CONFIG_HEADERS([pyconfig.h]) |
34 | AC_CANONICAL_HOST | 33 | AC_CANONICAL_HOST |
35 | AC_SUBST(build) | 34 | AC_SUBST([build]) |
36 | AC_SUBST(host) | 35 | AC_SUBST([host]) |
37 | +LT_INIT | 36 | +LT_INIT |
38 | 37 | ||
39 | # pybuilddir.txt will be created by --generate-posix-vars in the Makefile | 38 | AS_VAR_IF([cross_compiling], [maybe], |
40 | rm -f pybuilddir.txt | 39 | [AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])] |
41 | @@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main) | 40 | @@ -896,7 +897,7 @@ AC_SUBST([CXX]) |
42 | preset_cxx="$CXX" | 41 | preset_cxx="$CXX" |
43 | if test -z "$CXX" | 42 | if test -z "$CXX" |
44 | then | 43 | then |
45 | - case "$CC" in | 44 | - case "$CC" in |
46 | + case "$cc_basename" in | 45 | + case "$cc_basename" in |
47 | gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;; | 46 | gcc) AC_PATH_TOOL([CXX], [g++], [g++], [notfound]) ;; |
48 | cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;; | 47 | cc) AC_PATH_TOOL([CXX], [c++], [c++], [notfound]) ;; |
49 | clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;; | 48 | clang|*/clang) AC_PATH_TOOL([CXX], [clang++], [clang++], [notfound]) ;; |
50 | @@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir | 49 | @@ -1328,7 +1329,7 @@ rmdir CaseSensitiveTestDir |
51 | 50 | ||
52 | case $ac_sys_system in | 51 | case $ac_sys_system in |
53 | hp*|HP*) | 52 | hp*|HP*) |
@@ -56,16 +55,16 @@ index d60f052..e491e24 100644 | |||
56 | cc|*/cc) CC="$CC -Ae";; | 55 | cc|*/cc) CC="$CC -Ae";; |
57 | esac;; | 56 | esac;; |
58 | esac | 57 | esac |
59 | @@ -1366,7 +1367,7 @@ else | 58 | @@ -1854,7 +1855,7 @@ esac |
60 | fi], | 59 | ], |
61 | [AC_MSG_RESULT(no)]) | 60 | [AC_MSG_RESULT([no])]) |
62 | if test "$Py_LTO" = 'true' ; then | 61 | if test "$Py_LTO" = 'true' ; then |
63 | - case $CC in | 62 | - case $CC in |
64 | + case $cc_basename in | 63 | + case $cc_basename in |
65 | *clang*) | 64 | *clang*) |
66 | AC_SUBST(LLVM_AR) | 65 | LDFLAGS_NOLTO="-fno-lto" |
67 | AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path}) | 66 | dnl Clang linker requires -flto in order to link objects with LTO information. |
68 | @@ -1456,7 +1457,7 @@ then | 67 | @@ -1983,7 +1984,7 @@ then |
69 | fi | 68 | fi |
70 | fi | 69 | fi |
71 | LLVM_PROF_ERR=no | 70 | LLVM_PROF_ERR=no |
@@ -74,7 +73,7 @@ index d60f052..e491e24 100644 | |||
74 | *clang*) | 73 | *clang*) |
75 | # Any changes made here should be reflected in the GCC+Darwin case below | 74 | # Any changes made here should be reflected in the GCC+Darwin case below |
76 | PGO_PROF_GEN_FLAG="-fprofile-instr-generate" | 75 | PGO_PROF_GEN_FLAG="-fprofile-instr-generate" |
77 | @@ -1517,7 +1518,7 @@ esac | 76 | @@ -2147,7 +2148,7 @@ AC_MSG_RESULT([$BOLT_APPLY_FLAGS]) |
78 | # compiler and platform. BASECFLAGS tweaks need to be made even if the | 77 | # compiler and platform. BASECFLAGS tweaks need to be made even if the |
79 | # user set OPT. | 78 | # user set OPT. |
80 | 79 | ||
@@ -83,25 +82,25 @@ index d60f052..e491e24 100644 | |||
83 | *clang*) | 82 | *clang*) |
84 | cc_is_clang=1 | 83 | cc_is_clang=1 |
85 | ;; | 84 | ;; |
86 | @@ -1653,7 +1654,7 @@ yes) | 85 | @@ -2419,7 +2420,7 @@ yes) |
87 | 86 | ||
88 | # ICC doesn't recognize the option, but only emits a warning | 87 | # ICC doesn't recognize the option, but only emits a warning |
89 | ## XXX does it emit an unused result warning and can it be disabled? | 88 | ## XXX does it emit an unused result warning and can it be disabled? |
90 | - case "$CC" in | 89 | - AS_CASE([$CC], |
91 | + case "$cc_basename" in | 90 | + AS_CASE([$cc_basename], |
92 | *icc*) | 91 | [*icc*], [ac_cv_disable_unused_result_warning=no] |
93 | ac_cv_disable_unused_result_warning=no | 92 | [PY_CHECK_CC_WARNING([disable], [unused-result])]) |
94 | ;; | 93 | AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes], |
95 | @@ -1993,7 +1994,7 @@ yes) | 94 | @@ -2665,7 +2666,7 @@ yes) |
96 | ;; | 95 | ;; |
97 | esac | 96 | esac |
98 | 97 | ||
99 | -case "$CC" in | 98 | -case "$CC" in |
100 | +case "$cc_basename" in | 99 | +case "$cc_basename" in |
101 | *icc*) | 100 | *mpicc*) |
102 | # ICC needs -fp-model strict or floats behave badly | 101 | CFLAGS_NODIST="$CFLAGS_NODIST" |
103 | CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" | 102 | ;; |
104 | @@ -2765,7 +2766,7 @@ then | 103 | @@ -3482,7 +3483,7 @@ then |
105 | then | 104 | then |
106 | LINKFORSHARED="-Wl,--export-dynamic" | 105 | LINKFORSHARED="-Wl,--export-dynamic" |
107 | fi;; | 106 | fi;; |
@@ -110,12 +109,12 @@ index d60f052..e491e24 100644 | |||
110 | *gcc*) | 109 | *gcc*) |
111 | if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null | 110 | if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null |
112 | then | 111 | then |
113 | @@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then | 112 | @@ -6803,7 +6804,7 @@ if test "$ac_cv_gcc_asm_for_x87" = yes; then |
114 | # Some versions of gcc miscompile inline asm: | 113 | # Some versions of gcc miscompile inline asm: |
115 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 | 114 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 |
116 | # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html | 115 | # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html |
117 | - case $CC in | 116 | - case $CC in |
118 | + case $cc_basename in | 117 | + case $cc_basename in |
119 | *gcc*) | 118 | *gcc*) |
120 | AC_MSG_CHECKING(for gcc ipa-pure-const bug) | 119 | AC_MSG_CHECKING([for gcc ipa-pure-const bug]) |
121 | saved_cflags="$CFLAGS" | 120 | saved_cflags="$CFLAGS" |
diff --git a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch deleted file mode 100644 index ea0af02e72..0000000000 --- a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Thu, 9 Jan 2020 17:44:05 +0100 | ||
4 | Subject: [PATCH] setup.py: pass missing libraries to Extension for | ||
5 | multiprocessing module | ||
6 | |||
7 | In the following commit: | ||
8 | ... | ||
9 | commit e711cafab13efc9c1fe6c5cd75826401445eb585 | ||
10 | Author: Benjamin Peterson <benjamin@python.org> | ||
11 | Date: Wed Jun 11 16:44:04 2008 +0000 | ||
12 | |||
13 | Merged revisions 64104,64117 via svnmerge from | ||
14 | svn+ssh://pythondev@svn.python.org/python/trunk | ||
15 | ... | ||
16 | (see diff in setup.py) | ||
17 | It assigned libraries for multiprocessing module according | ||
18 | the host_platform, but not pass it to Extension. | ||
19 | |||
20 | In glibc, the following commit caused two definition of | ||
21 | sem_getvalue are different. | ||
22 | https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524 | ||
23 | (see diff in nptl/sem_getvalue.c for detail) | ||
24 | `__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1 | ||
25 | and `__old_sem_getvalue' is to compat the old version | ||
26 | sem_getvalue@GLIBC_2.0. | ||
27 | |||
28 | To build python for embedded Linux systems: | ||
29 | http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html | ||
30 | If not explicitly link to library pthread (-lpthread), it will | ||
31 | load glibc's sem_getvalue randomly at runtime. | ||
32 | |||
33 | Such as build python on linux x86_64 host and run the python | ||
34 | on linux x86_32 target. If not link library pthread, it caused | ||
35 | multiprocessing bounded semaphore could not work correctly. | ||
36 | ... | ||
37 | >>> import multiprocessing | ||
38 | >>> pool_sema = multiprocessing.BoundedSemaphore(value=1) | ||
39 | >>> pool_sema.acquire() | ||
40 | True | ||
41 | >>> pool_sema.release() | ||
42 | Traceback (most recent call last): | ||
43 | File "<stdin>", line 1, in <module> | ||
44 | ValueError: semaphore or lock released too many times | ||
45 | ... | ||
46 | |||
47 | And the semaphore issue also caused multiprocessing.Queue().put() hung. | ||
48 | |||
49 | Upstream-Status: Pending | ||
50 | |||
51 | Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> | ||
52 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
53 | --- | ||
54 | setup.py | 2 +- | ||
55 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
56 | |||
57 | diff --git a/setup.py b/setup.py | ||
58 | index ec3f2a4..b0f1541 100644 | ||
59 | --- a/setup.py | ||
60 | +++ b/setup.py | ||
61 | @@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext): | ||
62 | libraries=libs, | ||
63 | include_dirs=["Modules/_multiprocessing"])) | ||
64 | |||
65 | - self.add(Extension('_multiprocessing', multiprocessing_srcs, | ||
66 | + self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'], | ||
67 | include_dirs=["Modules/_multiprocessing"])) | ||
68 | |||
69 | def detect_uuid(self): | ||
diff --git a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch new file mode 100644 index 0000000000..2d7bca6a77 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch | |||
@@ -0,0 +1,29 @@ | |||
1 | From 217cea231462e7703e8c9ea39c0a6833f799a420 Mon Sep 17 00:00:00 2001 | ||
2 | From: Trevor Gamblin <tgamblin@baylibre.com> | ||
3 | Date: Fri, 15 Sep 2023 08:48:33 -0400 | ||
4 | Subject: [PATCH] skip no_stdout_fileno test due to load variability | ||
5 | |||
6 | Skip test_input_no_stdout_fileno so that it doesn't fail on systems | ||
7 | under heavy load. | ||
8 | |||
9 | Upstream-Status: Inappropriate [OE-Specific] | ||
10 | |||
11 | [YOCTO #15210] | ||
12 | |||
13 | Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> | ||
14 | --- | ||
15 | Lib/test/test_builtin.py | 1 + | ||
16 | 1 file changed, 1 insertion(+) | ||
17 | |||
18 | diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py | ||
19 | index 4d03c46..b329b7a 100644 | ||
20 | --- a/Lib/test/test_builtin.py | ||
21 | +++ b/Lib/test/test_builtin.py | ||
22 | @@ -2326,6 +2326,7 @@ class PtyTests(unittest.TestCase): | ||
23 | # Check stdin/stdout error handler is used when invoking PyOS_Readline() | ||
24 | self.check_input_tty("prompté", b"quux\xe9", "ascii") | ||
25 | |||
26 | + @unittest.skip("Test may fail under heavy load") | ||
27 | def test_input_no_stdout_fileno(self): | ||
28 | # Issue #24402: If stdin is the original terminal but stdout.fileno() | ||
29 | # fails, do not use the original stdout file descriptor | ||
diff --git a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch new file mode 100644 index 0000000000..fc52fdac26 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From a5d429a0e1a4809c1ded7be7e45dcabeb82c53d8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex@linutronix.de> | ||
3 | Date: Sun, 12 Sep 2021 21:44:36 +0200 | ||
4 | Subject: [PATCH] sysconfig.py: use platlibdir also for purelib | ||
5 | |||
6 | This is needed in multilib configurations where hardcoding 'lib' | ||
7 | is not correct. | ||
8 | |||
9 | Upstream-Status: Inappropriate [oe-core specific] | ||
10 | Signed-off-by: Alexander Kanavin <alex@linutronix.de> | ||
11 | |||
12 | --- | ||
13 | Lib/sysconfig.py | 2 +- | ||
14 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py | ||
17 | index 122d441..79c0510 100644 | ||
18 | --- a/Lib/sysconfig.py | ||
19 | +++ b/Lib/sysconfig.py | ||
20 | @@ -28,7 +28,7 @@ _INSTALL_SCHEMES = { | ||
21 | 'posix_prefix': { | ||
22 | 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}', | ||
23 | 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', | ||
24 | - 'purelib': '{base}/lib/python{py_version_short}/site-packages', | ||
25 | + 'purelib': '{base}/{platlibdir}/python{py_version_short}/site-packages', | ||
26 | 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', | ||
27 | 'include': | ||
28 | '{installed_base}/include/python{py_version_short}{abiflags}', | ||
diff --git a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch new file mode 100644 index 0000000000..b4fe946cba --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch | |||
@@ -0,0 +1,34 @@ | |||
1 | From b64c131a576a4b4f821514e711ab91b1394fb4ff Mon Sep 17 00:00:00 2001 | ||
2 | From: Tim Orling <timothy.t.orling@intel.com> | ||
3 | Date: Fri, 18 Jun 2021 11:56:50 -0700 | ||
4 | Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk | ||
5 | |||
6 | These tests need full packagegroup-core-buildessential, the | ||
7 | easiest way to dynamically check for that is looking for | ||
8 | 'tools-sdk' in IMAGE_FEATURES. | ||
9 | |||
10 | Upstream-Status: Inappropriate [oe-specific] | ||
11 | |||
12 | Signed-off-by: Tim Orling <timothy.t.orling@intel.com> | ||
13 | |||
14 | --- | ||
15 | Lib/test/test_ctypes/test_find.py | 2 ++ | ||
16 | 1 file changed, 2 insertions(+) | ||
17 | |||
18 | diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py | ||
19 | index 1ff9d01..59def26 100644 | ||
20 | --- a/Lib/test/test_ctypes/test_find.py | ||
21 | +++ b/Lib/test/test_ctypes/test_find.py | ||
22 | @@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase): | ||
23 | # LD_LIBRARY_PATH) | ||
24 | self.assertEqual(find_library(libname), 'lib%s.so' % libname) | ||
25 | |||
26 | + @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") | ||
27 | def test_find_library_with_gcc(self): | ||
28 | with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None): | ||
29 | self.assertNotEqual(find_library('c'), None) | ||
30 | |||
31 | + @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") | ||
32 | def test_find_library_with_ld(self): | ||
33 | with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \ | ||
34 | unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None): | ||
diff --git a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch index 35b7e0c480..410a9fc7f1 100644 --- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch +++ b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001 | 1 | From ef5728f0af14da5c9f80b0f038fe5bf6d44cb0e9 Mon Sep 17 00:00:00 2001 |
2 | From: Mingli Yu <mingli.yu@windriver.com> | 2 | From: Mingli Yu <mingli.yu@windriver.com> |
3 | Date: Mon, 5 Aug 2019 15:57:39 +0800 | 3 | Date: Mon, 5 Aug 2019 15:57:39 +0800 |
4 | Subject: [PATCH] test_locale.py: correct the test output format | 4 | Subject: [PATCH] test_locale.py: correct the test output format |
@@ -23,24 +23,24 @@ Before this patch: | |||
23 | 23 | ||
24 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] | 24 | Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] |
25 | 25 | ||
26 | Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org> | ||
27 | |||
26 | Signed-off-by: Mingli Yu <mingli.yu@windriver.com> | 28 | Signed-off-by: Mingli Yu <mingli.yu@windriver.com> |
29 | |||
27 | --- | 30 | --- |
28 | Lib/test/test_locale.py | 2 +- | 31 | Lib/test/test_locale.py | 2 +- |
29 | 1 file changed, 1 insertion(+), 1 deletion(-) | 32 | 1 file changed, 1 insertion(+), 1 deletion(-) |
30 | 33 | ||
31 | diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py | 34 | diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py |
32 | index e2c2178..558d63c 100644 | 35 | index b0d7998..cb12153 100644 |
33 | --- a/Lib/test/test_locale.py | 36 | --- a/Lib/test/test_locale.py |
34 | +++ b/Lib/test/test_locale.py | 37 | +++ b/Lib/test/test_locale.py |
35 | @@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): | 38 | @@ -557,7 +557,7 @@ class TestMiscellaneous(unittest.TestCase): |
36 | self.skipTest('test needs Turkish locale') | 39 | self.skipTest('test needs Turkish locale') |
37 | loc = locale.getlocale(locale.LC_CTYPE) | 40 | loc = locale.getlocale(locale.LC_CTYPE) |
38 | if verbose: | 41 | if verbose: |
39 | - print('testing with %a' % (loc,), end=' ', flush=True) | 42 | - print('testing with %a' % (loc,), end=' ', flush=True) |
40 | + print('testing with %a...' % (loc,), end=' ', flush=True) | 43 | + print('testing with %a...' % (loc,), end=' ', flush=True) |
41 | locale.setlocale(locale.LC_CTYPE, loc) | 44 | try: |
42 | self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) | 45 | locale.setlocale(locale.LC_CTYPE, loc) |
43 | 46 | except locale.Error as exc: | |
44 | -- | ||
45 | 2.7.4 | ||
46 | |||
diff --git a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch new file mode 100644 index 0000000000..0d0eb08459 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch | |||
@@ -0,0 +1,30 @@ | |||
1 | From dc69a1afdb3ba619705ff71e14f19ed3142e422f Mon Sep 17 00:00:00 2001 | ||
2 | From: Trevor Gamblin <tgamblin@baylibre.com> | ||
3 | Date: Fri, 6 Oct 2023 10:59:44 -0400 | ||
4 | Subject: [PATCH] test_storlines: skip due to load variability | ||
5 | |||
6 | This is yet another test that intermittently fails on the Yocto AB when | ||
7 | a worker is under heavy load, so skip it during testing. | ||
8 | |||
9 | Upstream-Status: Inappropriate [OE-Specific] | ||
10 | |||
11 | [YOCTO #14933] | ||
12 | |||
13 | Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> | ||
14 | |||
15 | --- | ||
16 | Lib/test/test_ftplib.py | 1 + | ||
17 | 1 file changed, 1 insertion(+) | ||
18 | |||
19 | diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py | ||
20 | index 2f191ea..dc29346 100644 | ||
21 | --- a/Lib/test/test_ftplib.py | ||
22 | +++ b/Lib/test/test_ftplib.py | ||
23 | @@ -626,6 +626,7 @@ class TestFTPClass(TestCase): | ||
24 | self.client.storbinary('stor', f, rest=r) | ||
25 | self.assertEqual(self.server.handler_instance.rest, str(r)) | ||
26 | |||
27 | + @unittest.skip('timing related test, dependent on load') | ||
28 | def test_storlines(self): | ||
29 | data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding) | ||
30 | f = io.BytesIO(data) | ||
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 deleted file mode 100644 index 5c620361da..0000000000 --- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | ||
3 | Date: Mon, 7 Oct 2019 13:22:14 +0200 | ||
4 | Subject: [PATCH] setup.py: do not report missing dependencies for disabled | ||
5 | modules | ||
6 | |||
7 | Reporting those missing dependencies is misleading as the modules would not | ||
8 | have been built anyway. This particularly matters in oe-core's automated | ||
9 | build completeness checker which relies on the report. | ||
10 | |||
11 | Upstream-Status: Inappropriate [oe-core specific] | ||
12 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | ||
13 | |||
14 | --- | ||
15 | setup.py | 4 ++++ | ||
16 | 1 file changed, 4 insertions(+) | ||
17 | |||
18 | diff --git a/setup.py b/setup.py | ||
19 | index 7691258..ec3f2a4 100644 | ||
20 | --- a/setup.py | ||
21 | +++ b/setup.py | ||
22 | @@ -408,6 +408,10 @@ class PyBuildExt(build_ext): | ||
23 | print("%-*s %-*s %-*s" % (longest, e, longest, f, | ||
24 | longest, g)) | ||
25 | |||
26 | + # There is no need to report missing module dependencies, | ||
27 | + # if the modules have been disabled in the first place. | ||
28 | + self.missing = list(set(self.missing) - set(mods_disabled)) | ||
29 | + | ||
30 | if self.missing: | ||
31 | print() | ||
32 | print("Python build finished successfully!") | ||
diff --git a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch index e04a91605c..0661249bfd 100644 --- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch +++ b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch | |||
@@ -1,8 +1,7 @@ | |||
1 | From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001 | 1 | From d0205c60d08f51d84bd8ddc07a57e8c71710fdad Mon Sep 17 00:00:00 2001 |
2 | From: Alexander Kanavin <alex.kanavin@gmail.com> | 2 | From: Alexander Kanavin <alex@linutronix.de> |
3 | Date: Sun, 16 Feb 2020 17:50:25 +0100 | 3 | Date: Fri, 17 Nov 2023 14:16:40 +0100 |
4 | Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from | 4 | Subject: [PATCH] configure.ac: do not add a curses include path from the host |
5 | the host | ||
6 | 5 | ||
7 | This leads to host contamination, and particularly can cause | 6 | This leads to host contamination, and particularly can cause |
8 | curses modules to fail at runtime if the host curses is configured | 7 | curses modules to fail at runtime if the host curses is configured |
@@ -13,16 +12,15 @@ Upstream-Status: Inappropriate [oe-core specific] | |||
13 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> | 12 | Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> |
14 | --- | 13 | --- |
15 | configure.ac | 6 ------ | 14 | configure.ac | 6 ------ |
16 | setup.py | 2 -- | 15 | 1 file changed, 6 deletions(-) |
17 | 2 files changed, 8 deletions(-) | ||
18 | 16 | ||
19 | diff --git a/configure.ac b/configure.ac | 17 | diff --git a/configure.ac b/configure.ac |
20 | index 915f475..c911011 100644 | 18 | index c49cd4f..affdedf 100644 |
21 | --- a/configure.ac | 19 | --- a/configure.ac |
22 | +++ b/configure.ac | 20 | +++ b/configure.ac |
23 | @@ -4828,12 +4828,6 @@ then | 21 | @@ -6508,12 +6508,6 @@ AS_VAR_IF([have_panel], [no], [ |
24 | [Define if you have struct stat.st_mtimensec]) | 22 | AC_MSG_RESULT([$have_panel (CFLAGS: $PANEL_CFLAGS, LIBS: $PANEL_LIBS)]) |
25 | fi | 23 | ]) |
26 | 24 | ||
27 | -# first curses header check | 25 | -# first curses header check |
28 | -ac_save_cppflags="$CPPFLAGS" | 26 | -ac_save_cppflags="$CPPFLAGS" |
@@ -30,19 +28,6 @@ index 915f475..c911011 100644 | |||
30 | - CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" | 28 | - CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" |
31 | -fi | 29 | -fi |
32 | - | 30 | - |
33 | AC_CHECK_HEADERS(curses.h ncurses.h) | ||
34 | |||
35 | # On Solaris, term.h requires curses.h | 31 | # On Solaris, term.h requires curses.h |
36 | diff --git a/setup.py b/setup.py | 32 | AC_CHECK_HEADERS([term.h], [], [], [ |
37 | index b0f1541..7208cd0 100644 | 33 | #ifdef HAVE_CURSES_H |
38 | --- a/setup.py | ||
39 | +++ b/setup.py | ||
40 | @@ -973,8 +973,6 @@ class PyBuildExt(build_ext): | ||
41 | panel_library = 'panel' | ||
42 | if curses_library == 'ncursesw': | ||
43 | curses_defines.append(('HAVE_NCURSESW', '1')) | ||
44 | - if not CROSS_COMPILING: | ||
45 | - curses_includes.append('/usr/include/ncursesw') | ||
46 | # Bug 1464056: If _curses.so links with ncursesw, | ||
47 | # _curses_panel.so must link with panelw. | ||
48 | panel_library = 'panelw' | ||
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 deleted file mode 100644 index 5a39cf8933..0000000000 --- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch +++ /dev/null | |||
@@ -1,60 +0,0 @@ | |||
1 | From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Tue, 14 May 2013 15:00:26 -0700 | ||
4 | Subject: [PATCH 1/2] python3: Add target and native recipes | ||
5 | |||
6 | Upstream-Status: Inappropriate [embedded specific] | ||
7 | |||
8 | 02/2015 Rebased for Python 3.4.2 | ||
9 | |||
10 | The proper prefix is inside our staging area. | ||
11 | Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> | ||
12 | Signed-off-by: Phil Blundell <philb@gnu.org> | ||
13 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
14 | Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> | ||
15 | --- | ||
16 | Lib/distutils/sysconfig.py | 14 +++++++++++--- | ||
17 | 1 file changed, 11 insertions(+), 3 deletions(-) | ||
18 | |||
19 | diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py | ||
20 | index 4774e12..ccf7d58 100644 | ||
21 | --- a/Lib/distutils/sysconfig.py | ||
22 | +++ b/Lib/distutils/sysconfig.py | ||
23 | @@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None): | ||
24 | If 'prefix' is supplied, use it instead of sys.base_prefix or | ||
25 | sys.base_exec_prefix -- i.e., ignore 'plat_specific'. | ||
26 | """ | ||
27 | - if prefix is None: | ||
28 | + if prefix is None and os.environ.get('STAGING_INCDIR', ""): | ||
29 | + prefix = os.environ['STAGING_INCDIR'].rstrip('include') | ||
30 | + elif prefix is None: | ||
31 | prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX | ||
32 | if os.name == "posix": | ||
33 | if python_build: | ||
34 | @@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): | ||
35 | If 'prefix' is supplied, use it instead of sys.base_prefix or | ||
36 | sys.base_exec_prefix -- i.e., ignore 'plat_specific'. | ||
37 | """ | ||
38 | - if prefix is None: | ||
39 | + if os.environ.get('STAGING_LIBDIR', ""): | ||
40 | + lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] | ||
41 | + else: | ||
42 | + lib_basename = "lib" | ||
43 | + if prefix is None and os.environ.get('STAGING_LIBDIR', ""): | ||
44 | + prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename) | ||
45 | + elif prefix is None: | ||
46 | if standard_lib: | ||
47 | prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX | ||
48 | else: | ||
49 | @@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): | ||
50 | else: | ||
51 | # Pure Python | ||
52 | libdir = "lib" | ||
53 | - libpython = os.path.join(prefix, libdir, | ||
54 | + libpython = os.path.join(prefix, lib_basename, | ||
55 | "python" + get_python_version()) | ||
56 | if standard_lib: | ||
57 | return libpython | ||
58 | -- | ||
59 | 2.24.0 | ||
60 | |||
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch deleted file mode 100644 index 184540e794..0000000000 --- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001 | ||
2 | From: Andrei Gherzan <andrei@gherzan.ro> | ||
3 | Date: Mon, 28 Jan 2019 15:57:54 +0000 | ||
4 | Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet | ||
5 | integrated in yocto so we skip the check for this module. Avoid a warning by | ||
6 | not adding this module to missing variable. | ||
7 | |||
8 | Upstream-Status: Inappropriate [distribution] | ||
9 | |||
10 | Also simply disable the tk module since its not in DEPENDS. | ||
11 | Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> | ||
12 | |||
13 | --- | ||
14 | setup.py | 4 ++-- | ||
15 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
16 | |||
17 | diff --git a/setup.py b/setup.py | ||
18 | index ab18ff0..7691258 100644 | ||
19 | --- a/setup.py | ||
20 | +++ b/setup.py | ||
21 | @@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext): | ||
22 | self.detect_decimal() | ||
23 | self.detect_ctypes() | ||
24 | self.detect_multiprocessing() | ||
25 | - if not self.detect_tkinter(): | ||
26 | - self.missing.append('_tkinter') | ||
27 | +# if not self.detect_tkinter(): | ||
28 | +# self.missing.append('_tkinter') | ||
29 | self.detect_uuid() | ||
30 | |||
31 | ## # Uncomment these lines if you want to play with xxmodule.c | ||
diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch index 6c4ba54320..8262c88e73 100644 --- a/meta/recipes-devtools/python/python3/cgi_py.patch +++ b/meta/recipes-devtools/python/python3/cgi_py.patch | |||
@@ -1,4 +1,4 @@ | |||
1 | From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001 | 1 | From a56778372fe8dc7c42f5ffd911d89498c22dd064 Mon Sep 17 00:00:00 2001 |
2 | From: Mark Hatle <mark.hatle@windriver.com> | 2 | From: Mark Hatle <mark.hatle@windriver.com> |
3 | Date: Wed, 21 Sep 2011 20:55:33 -0500 | 3 | Date: Wed, 21 Sep 2011 20:55:33 -0500 |
4 | Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment | 4 | Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment |
@@ -12,7 +12,7 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com> | |||
12 | 1 file changed, 1 insertion(+), 10 deletions(-) | 12 | 1 file changed, 1 insertion(+), 10 deletions(-) |
13 | 13 | ||
14 | diff --git a/Lib/cgi.py b/Lib/cgi.py | 14 | diff --git a/Lib/cgi.py b/Lib/cgi.py |
15 | index 8cf6687..094c7b4 100755 | 15 | index 8787567..ebe8652 100755 |
16 | --- a/Lib/cgi.py | 16 | --- a/Lib/cgi.py |
17 | +++ b/Lib/cgi.py | 17 | +++ b/Lib/cgi.py |
18 | @@ -1,13 +1,4 @@ | 18 | @@ -1,13 +1,4 @@ |
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py index 4da02a2991..045240ea0b 100644 --- a/meta/recipes-devtools/python/python3/create_manifest3.py +++ b/meta/recipes-devtools/python/python3/create_manifest3.py | |||
@@ -36,7 +36,7 @@ | |||
36 | # Tha method to handle cached files does not work when a module includes a folder which | 36 | # Tha method to handle cached files does not work when a module includes a folder which |
37 | # itself contains the pycache folder, gladly this is almost never the case. | 37 | # itself contains the pycache folder, gladly this is almost never the case. |
38 | # | 38 | # |
39 | # Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com> | 39 | # Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> |
40 | 40 | ||
41 | 41 | ||
42 | import sys | 42 | import sys |
@@ -45,6 +45,11 @@ import json | |||
45 | import os | 45 | import os |
46 | import collections | 46 | import collections |
47 | 47 | ||
48 | if '-d' in sys.argv: | ||
49 | debugFlag = '-d' | ||
50 | else: | ||
51 | debugFlag = '' | ||
52 | |||
48 | # Get python version from ${PYTHON_MAJMIN} | 53 | # Get python version from ${PYTHON_MAJMIN} |
49 | pyversion = str(sys.argv[1]) | 54 | pyversion = str(sys.argv[1]) |
50 | 55 | ||
@@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest): | |||
84 | manifest.seek(0, 0) | 89 | manifest.seek(0, 0) |
85 | manifest.write(comments + json_contents) | 90 | manifest.write(comments + json_contents) |
86 | 91 | ||
92 | def print_indent(msg, offset): | ||
93 | for l in msg.splitlines(): | ||
94 | msg = ' ' * offset + l | ||
95 | print(msg) | ||
96 | |||
97 | |||
87 | # Read existing JSON manifest | 98 | # Read existing JSON manifest |
88 | with open('python3-manifest.json') as manifest: | 99 | with open('python3-manifest.json') as manifest: |
89 | # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker | 100 | # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker |
@@ -99,7 +110,7 @@ with open('python3-manifest.json') as manifest: | |||
99 | # Not exactly the same so it should not be a function | 110 | # Not exactly the same so it should not be a function |
100 | # | 111 | # |
101 | 112 | ||
102 | print ('Getting dependencies for package: core') | 113 | print_indent('Getting dependencies for package: core', 0) |
103 | 114 | ||
104 | 115 | ||
105 | # This special call gets the core dependencies and | 116 | # This special call gets the core dependencies and |
@@ -109,7 +120,7 @@ print ('Getting dependencies for package: core') | |||
109 | # on the new core package, they will still find them | 120 | # on the new core package, they will still find them |
110 | # even when checking the old_manifest | 121 | # even when checking the old_manifest |
111 | 122 | ||
112 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') | 123 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8') |
113 | for coredep in output.split(): | 124 | for coredep in output.split(): |
114 | coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') | 125 | coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') |
115 | if isCached(coredep): | 126 | if isCached(coredep): |
@@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']: | |||
149 | # Get actual module name , shouldnt be affected by libdir/bindir, etc. | 160 | # Get actual module name , shouldnt be affected by libdir/bindir, etc. |
150 | pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] | 161 | pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] |
151 | 162 | ||
152 | |||
153 | # We now know that were dealing with a python module, so we can import it | 163 | # We now know that were dealing with a python module, so we can import it |
154 | # and check what its dependencies are. | 164 | # and check what its dependencies are. |
155 | # We launch a separate task for each module for deterministic behavior. | 165 | # We launch a separate task for each module for deterministic behavior. |
156 | # Each module will only import what is necessary for it to work in specific. | 166 | # Each module will only import what is necessary for it to work in specific. |
157 | # The output of each task will contain each module's dependencies | 167 | # The output of each task will contain each module's dependencies |
158 | 168 | ||
159 | print ('Getting dependencies for module: %s' % pymodule) | 169 | print_indent('Getting dependencies for module: %s' % pymodule, 2) |
160 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') | 170 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') |
161 | print ('The following dependencies were found for module %s:\n' % pymodule) | 171 | print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) |
162 | print (output) | 172 | print_indent(output, 6) |
163 | 173 | ||
164 | 174 | ||
165 | for pymodule_dep in output.split(): | 175 | for pymodule_dep in output.split(): |
@@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']: | |||
178 | # all others will use this a base. | 188 | # all others will use this a base. |
179 | 189 | ||
180 | 190 | ||
191 | print('\n\nChecking for directories...\n') | ||
181 | # To improve the script speed, we check which packages contain directories | 192 | # To improve the script speed, we check which packages contain directories |
182 | # since we will be looping through (only) those later. | 193 | # since we will be looping through (only) those later. |
183 | for pypkg in old_manifest: | 194 | for pypkg in old_manifest: |
184 | for filedep in old_manifest[pypkg]['files']: | 195 | for filedep in old_manifest[pypkg]['files']: |
185 | if isFolder(filedep): | 196 | if isFolder(filedep): |
186 | print ('%s is a folder' % filedep) | 197 | print_indent('%s is a directory' % filedep, 2) |
187 | if pypkg not in hasfolders: | 198 | if pypkg not in hasfolders: |
188 | hasfolders.append(pypkg) | 199 | hasfolders.append(pypkg) |
189 | if filedep not in allfolders: | 200 | if filedep not in allfolders: |
@@ -221,14 +232,14 @@ for pypkg in old_manifest: | |||
221 | 232 | ||
222 | print('\n') | 233 | print('\n') |
223 | print('--------------------------') | 234 | print('--------------------------') |
224 | print ('Handling package %s' % pypkg) | 235 | print('Handling package %s' % pypkg) |
225 | print('--------------------------') | 236 | print('--------------------------') |
226 | 237 | ||
227 | # Handle special cases, we assume that when they were manually added | 238 | # Handle special cases, we assume that when they were manually added |
228 | # to the manifest we knew what we were doing. | 239 | # to the manifest we knew what we were doing. |
229 | special_packages = ['misc', 'modules', 'dev', 'tests'] | 240 | special_packages = ['misc', 'modules', 'dev', 'tests'] |
230 | if pypkg in special_packages or 'staticdev' in pypkg: | 241 | if pypkg in special_packages or 'staticdev' in pypkg: |
231 | print('Passing %s package directly' % pypkg) | 242 | print_indent('Passing %s package directly' % pypkg, 2) |
232 | new_manifest[pypkg] = old_manifest[pypkg] | 243 | new_manifest[pypkg] = old_manifest[pypkg] |
233 | continue | 244 | continue |
234 | 245 | ||
@@ -259,7 +270,7 @@ for pypkg in old_manifest: | |||
259 | 270 | ||
260 | # Get actual module name , shouldnt be affected by libdir/bindir, etc. | 271 | # Get actual module name , shouldnt be affected by libdir/bindir, etc. |
261 | # We need to check if the imported module comes from another (e.g. sqlite3.dump) | 272 | # We need to check if the imported module comes from another (e.g. sqlite3.dump) |
262 | path,pymodule = os.path.split(filedep) | 273 | path, pymodule = os.path.split(filedep) |
263 | path = os.path.basename(path) | 274 | path = os.path.basename(path) |
264 | pymodule = os.path.splitext(os.path.basename(pymodule))[0] | 275 | pymodule = os.path.splitext(os.path.basename(pymodule))[0] |
265 | 276 | ||
@@ -279,10 +290,10 @@ for pypkg in old_manifest: | |||
279 | # Each module will only import what is necessary for it to work in specific. | 290 | # Each module will only import what is necessary for it to work in specific. |
280 | # The output of each task will contain each module's dependencies | 291 | # The output of each task will contain each module's dependencies |
281 | 292 | ||
282 | print ('\nGetting dependencies for module: %s' % pymodule) | 293 | print_indent('\nGetting dependencies for module: %s' % pymodule, 2) |
283 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') | 294 | output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') |
284 | print ('The following dependencies were found for module %s:\n' % pymodule) | 295 | print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) |
285 | print (output) | 296 | print_indent(output, 6) |
286 | 297 | ||
287 | reportFILES = [] | 298 | reportFILES = [] |
288 | reportRDEPS = [] | 299 | reportRDEPS = [] |
@@ -325,7 +336,7 @@ for pypkg in old_manifest: | |||
325 | # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) | 336 | # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) |
326 | for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: | 337 | for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: |
327 | if folder_dep == folder: | 338 | if folder_dep == folder: |
328 | print ('%s folder found in %s' % (folder, pypkg_with_folder)) | 339 | print ('%s directory found in %s' % (folder, pypkg_with_folder)) |
329 | folderFound = True | 340 | folderFound = True |
330 | if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: | 341 | if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: |
331 | new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) | 342 | new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) |
@@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new') | |||
424 | 435 | ||
425 | if (repeated): | 436 | if (repeated): |
426 | error_msg = '\n\nERROR:\n' | 437 | error_msg = '\n\nERROR:\n' |
427 | error_msg += 'The following files are repeated (contained in more than one package),\n' | 438 | error_msg += 'The following files were found in more than one package),\n' |
428 | error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' | 439 | error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' |
429 | error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' | 440 | error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' |
430 | error_msg += '\n'.join(repeated) | 441 | error_msg += '\n'.join(repeated) |
diff --git a/meta/recipes-devtools/python/python3/crosspythonpath.patch b/meta/recipes-devtools/python/python3/crosspythonpath.patch index d789ab57d4..2c4aef0511 100644 --- a/meta/recipes-devtools/python/python3/crosspythonpath.patch +++ b/meta/recipes-devtools/python/python3/crosspythonpath.patch | |||
@@ -1,4 +1,8 @@ | |||
1 | configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD | 1 | From 5b66463c10fec1440e977d5a21a0167862d6d79c Mon Sep 17 00:00:00 2001 |
2 | From: Ricardo Ribalda <ricardo@ribalda.com> | ||
3 | Date: Tue, 18 Nov 2014 03:35:33 -0500 | ||
4 | Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for | ||
5 | PYTHON_FOR_BUILD | ||
2 | 6 | ||
3 | When building x86->x86 the system will try to execute .so and related items | 7 | When building x86->x86 the system will try to execute .so and related items |
4 | from the default PYTHONPATH. This will fail if the target CPU contains | 8 | from the default PYTHONPATH. This will fail if the target CPU contains |
@@ -10,16 +14,21 @@ Upstream-Status: Inappropriate [OE-Core integration specific] | |||
10 | Credits-to: Mark Hatle <mark.hatle@windriver.com> | 14 | Credits-to: Mark Hatle <mark.hatle@windriver.com> |
11 | Credits-to: Jackie Huang <jackie.huang@windriver.com> | 15 | Credits-to: Jackie Huang <jackie.huang@windriver.com> |
12 | Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> | 16 | Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> |
17 | |||
18 | --- | ||
19 | configure.ac | 2 +- | ||
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
21 | |||
13 | diff --git a/configure.ac b/configure.ac | 22 | diff --git a/configure.ac b/configure.ac |
14 | index 4ab19a6..7036a53 100644 | 23 | index cb9e198..d81c19a 100644 |
15 | --- a/configure.ac | 24 | --- a/configure.ac |
16 | +++ b/configure.ac | 25 | +++ b/configure.ac |
17 | @@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then | 26 | @@ -165,7 +165,7 @@ AC_ARG_WITH([build-python], |
18 | AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) | 27 | dnl Build Python interpreter is used for regeneration and freezing. |
19 | fi | 28 | ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python |
20 | AC_MSG_RESULT($interp) | 29 | PYTHON_FOR_FREEZE="$with_build_python" |
21 | - PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp | 30 | - PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python |
22 | + PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp | 31 | + PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python |
23 | fi | 32 | AC_MSG_RESULT([$with_build_python]) |
24 | elif test "$cross_compiling" = maybe; then | 33 | ], [ |
25 | AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH]) | 34 | AS_VAR_IF([cross_compiling], [yes], |
diff --git a/meta/recipes-devtools/python/python3/deterministic_imports.patch b/meta/recipes-devtools/python/python3/deterministic_imports.patch new file mode 100644 index 0000000000..104df94964 --- /dev/null +++ b/meta/recipes-devtools/python/python3/deterministic_imports.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From 039d5e652796b55f1132afa568c7432b6ed89afd Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Purdie <richard.purdie@linuxfoundation.org> | ||
3 | Date: Fri, 27 May 2022 17:05:44 +0100 | ||
4 | Subject: [PATCH] python3: Ensure stale empty python module directories don't | ||
5 | |||
6 | There are two issues here. Firstly, the modules are accessed in on disk order. This | ||
7 | means behaviour seen on one system might not reproduce on another and is a real headache. | ||
8 | |||
9 | Secondly, empty directories left behind by previous modules might be looked at. This | ||
10 | has caused a long string of different issues for us. | ||
11 | |||
12 | As a result, patch this to a behaviour which works for us. | ||
13 | |||
14 | Upstream-Status: Pending [need to talk to upstream to see if they'll take one or both fixes] | ||
15 | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> | ||
16 | |||
17 | --- | ||
18 | Lib/importlib/metadata/__init__.py | 9 ++++++++- | ||
19 | 1 file changed, 8 insertions(+), 1 deletion(-) | ||
20 | |||
21 | diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py | ||
22 | index 82e0ce1..969cac4 100644 | ||
23 | --- a/Lib/importlib/metadata/__init__.py | ||
24 | +++ b/Lib/importlib/metadata/__init__.py | ||
25 | @@ -710,7 +710,14 @@ class Lookup: | ||
26 | self.infos = FreezableDefaultDict(list) | ||
27 | self.eggs = FreezableDefaultDict(list) | ||
28 | |||
29 | - for child in path.children(): | ||
30 | + for child in sorted(path.children()): | ||
31 | + childpath = pathlib.Path(path.root, child) | ||
32 | + try: | ||
33 | + if childpath.is_dir() and not any(childpath.iterdir()): | ||
34 | + # Empty directories aren't interesting | ||
35 | + continue | ||
36 | + except PermissionError: | ||
37 | + continue | ||
38 | low = child.lower() | ||
39 | if low.endswith((".dist-info", ".egg-info")): | ||
40 | # rpartition is faster than splitext and suitable for this purpose. | ||
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py index 6806f23172..8e432b49af 100644 --- a/meta/recipes-devtools/python/python3/get_module_deps3.py +++ b/meta/recipes-devtools/python/python3/get_module_deps3.py | |||
@@ -3,14 +3,18 @@ | |||
3 | # them out, the output of this execution will have all dependencies | 3 | # them out, the output of this execution will have all dependencies |
4 | # for a specific module, which will be parsed an dealt on create_manifest.py | 4 | # for a specific module, which will be parsed an dealt on create_manifest.py |
5 | # | 5 | # |
6 | # Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> | 6 | # Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> |
7 | 7 | ||
8 | # We can get a log per module, for all the dependencies that were found, but its messy. | ||
9 | debug=False | ||
10 | 8 | ||
11 | import sys | 9 | import sys |
12 | import os | 10 | import os |
13 | 11 | ||
12 | # We can get a log per module, for all the dependencies that were found, but its messy. | ||
13 | if '-d' in sys.argv: | ||
14 | debug = True | ||
15 | else: | ||
16 | debug = False | ||
17 | |||
14 | # We can get a list of the modules which are currently required to run python | 18 | # We can get a list of the modules which are currently required to run python |
15 | # so we run python-core and get its modules, we then import what we need | 19 | # so we run python-core and get its modules, we then import what we need |
16 | # and check what modules are currently running, if we substract them from the | 20 | # and check what modules are currently running, if we substract them from the |
@@ -19,16 +23,16 @@ import os | |||
19 | # We use importlib to achieve this, so we also need to know what modules importlib needs | 23 | # We use importlib to achieve this, so we also need to know what modules importlib needs |
20 | import importlib | 24 | import importlib |
21 | 25 | ||
22 | core_deps=set(sys.modules) | 26 | core_deps = set(sys.modules) |
23 | 27 | ||
24 | def fix_path(dep_path): | 28 | def fix_path(dep_path): |
25 | import os | 29 | import os |
26 | # We DONT want the path on our HOST system | 30 | # We DONT want the path on our HOST system |
27 | pivot='recipe-sysroot-native' | 31 | pivot = 'recipe-sysroot-native' |
28 | dep_path=dep_path[dep_path.find(pivot)+len(pivot):] | 32 | dep_path = dep_path[dep_path.find(pivot)+len(pivot):] |
29 | 33 | ||
30 | if '/usr/bin' in dep_path: | 34 | if '/usr/bin' in dep_path: |
31 | dep_path = dep_path.replace('/usr/bin''${bindir}') | 35 | dep_path = dep_path.replace('/usr/bin','${bindir}') |
32 | 36 | ||
33 | # Handle multilib, is there a better way? | 37 | # Handle multilib, is there a better way? |
34 | if '/usr/lib32' in dep_path: | 38 | if '/usr/lib32' in dep_path: |
@@ -46,13 +50,13 @@ def fix_path(dep_path): | |||
46 | 50 | ||
47 | # Module to import was passed as an argument | 51 | # Module to import was passed as an argument |
48 | current_module = str(sys.argv[1]).rstrip() | 52 | current_module = str(sys.argv[1]).rstrip() |
49 | if(debug==True): | 53 | if debug == True: |
50 | log = open('log_%s' % current_module,'w') | 54 | log = open('temp/log_%s' % current_module.strip('.*'),'w') |
51 | log.write('Module %s generated the following dependencies:\n' % current_module) | 55 | log.write('Module %s generated the following dependencies:\n' % current_module) |
52 | try: | 56 | try: |
53 | m = importlib.import_module(current_module) | 57 | m = importlib.import_module(current_module) |
54 | # handle python packages which may not include all modules in the __init__ | 58 | # handle python packages which may not include all modules in the __init__ |
55 | if os.path.basename(m.__file__) == "__init__.py": | 59 | if hasattr(m, '__file__') and os.path.basename(m.__file__) == "__init__.py": |
56 | modulepath = os.path.dirname(m.__file__) | 60 | modulepath = os.path.dirname(m.__file__) |
57 | for i in os.listdir(modulepath): | 61 | for i in os.listdir(modulepath): |
58 | if i.startswith("_") or not(i.endswith(".py")): | 62 | if i.startswith("_") or not(i.endswith(".py")): |
@@ -63,13 +67,13 @@ try: | |||
63 | except: | 67 | except: |
64 | pass # ignore all import or other exceptions raised during import | 68 | pass # ignore all import or other exceptions raised during import |
65 | except ImportError as e: | 69 | except ImportError as e: |
66 | if (debug==True): | 70 | if debug == True: |
67 | log.write('Module was not found') | 71 | log.write('Module was not found\n') |
68 | pass | 72 | pass |
69 | 73 | ||
70 | 74 | ||
71 | # Get current module dependencies, dif will contain a list of specific deps for this module | 75 | # Get current module dependencies, dif will contain a list of specific deps for this module |
72 | module_deps=set(sys.modules) | 76 | module_deps = set(sys.modules) |
73 | 77 | ||
74 | # We handle the core package (1st pass on create_manifest.py) as a special case | 78 | # We handle the core package (1st pass on create_manifest.py) as a special case |
75 | if current_module == 'python-core-package': | 79 | if current_module == 'python-core-package': |
@@ -81,14 +85,18 @@ else: | |||
81 | 85 | ||
82 | # Check where each dependency came from | 86 | # Check where each dependency came from |
83 | for item in dif: | 87 | for item in dif: |
84 | dep_path='' | 88 | # Main module returns script filename, __main matches mp_main__ as well |
89 | if 'main__' in item: | ||
90 | continue | ||
91 | |||
92 | dep_path = '' | ||
85 | try: | 93 | try: |
86 | if (debug==True): | 94 | if debug == True: |
87 | log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') | 95 | log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n') |
88 | dep_path = sys.modules['%s' % item].__file__ | 96 | dep_path = sys.modules['%s' % item].__file__ |
89 | except AttributeError as e: | 97 | except AttributeError as e: |
90 | # Deals with thread (builtin module) not having __file__ attribute | 98 | # Deals with thread (builtin module) not having __file__ attribute |
91 | if debug==True: | 99 | if debug == True: |
92 | log.write(item + ' ') | 100 | log.write(item + ' ') |
93 | log.write(str(e)) | 101 | log.write(str(e)) |
94 | log.write('\n') | 102 | log.write('\n') |
@@ -96,11 +104,16 @@ for item in dif: | |||
96 | except NameError as e: | 104 | except NameError as e: |
97 | # Deals with NameError: name 'dep_path' is not defined | 105 | # Deals with NameError: name 'dep_path' is not defined |
98 | # because module is not found (wasn't compiled?), e.g. bddsm | 106 | # because module is not found (wasn't compiled?), e.g. bddsm |
99 | if (debug==True): | 107 | if debug == True: |
100 | log.write(item+' ') | 108 | log.write(item+' ') |
101 | log.write(str(e)) | 109 | log.write(str(e)) |
102 | pass | 110 | pass |
103 | 111 | ||
112 | if dep_path == '': | ||
113 | continue | ||
114 | if debug == True: | ||
115 | log.write('Dependency path found:\n%s\n' % dep_path) | ||
116 | |||
104 | # Site-customize is a special case since we (OpenEmbedded) put it there manually | 117 | # Site-customize is a special case since we (OpenEmbedded) put it there manually |
105 | if 'sitecustomize' in dep_path: | 118 | if 'sitecustomize' in dep_path: |
106 | dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' | 119 | dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' |
@@ -111,52 +124,51 @@ for item in dif: | |||
111 | dep_path = fix_path(dep_path) | 124 | dep_path = fix_path(dep_path) |
112 | 125 | ||
113 | import sysconfig | 126 | import sysconfig |
114 | soabi=sysconfig.get_config_var('SOABI') | 127 | soabi = sysconfig.get_config_var('SOABI') |
115 | # Check if its a shared library and deconstruct it | 128 | # Check if its a shared library and deconstruct it |
116 | if soabi in dep_path: | 129 | if soabi in dep_path: |
117 | if (debug==True): | 130 | if debug == True: |
118 | log.write('Shared library found in %s' % dep_path) | 131 | log.write('Shared library found in %s\n' % dep_path) |
119 | dep_path = dep_path.replace(soabi,'*') | 132 | dep_path = dep_path.replace(soabi,'*') |
120 | print (dep_path) | 133 | print (dep_path) |
121 | continue | 134 | continue |
122 | if "_sysconfigdata" in dep_path: | 135 | if "_sysconfigdata" in dep_path: |
123 | dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") | 136 | dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") |
124 | 137 | ||
125 | if (debug==True): | 138 | if debug == True: |
126 | log.write(dep_path+'\n') | 139 | log.write(dep_path+'\n') |
127 | # Prints out result, which is what will be used by create_manifest | 140 | # Prints out result, which is what will be used by create_manifest |
128 | print (dep_path) | 141 | print (dep_path) |
129 | 142 | ||
130 | 143 | ||
131 | import imp | 144 | cpython_tag = sys.implementation.cache_tag |
132 | cpython_tag = imp.get_tag() | 145 | cached = '' |
133 | cached='' | ||
134 | # Theres no naive way to find *.pyc files on python3 | 146 | # Theres no naive way to find *.pyc files on python3 |
135 | try: | 147 | try: |
136 | if (debug==True): | 148 | if debug == True: |
137 | log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') | 149 | log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n') |
138 | cached = sys.modules['%s' % item].__cached__ | 150 | cached = sys.modules['%s' % item].__cached__ |
139 | except AttributeError as e: | 151 | except AttributeError as e: |
140 | # Deals with thread (builtin module) not having __cached__ attribute | 152 | # Deals with thread (builtin module) not having __cached__ attribute |
141 | if debug==True: | 153 | if debug == True: |
142 | log.write(item + ' ') | 154 | log.write(item + ' ') |
143 | log.write(str(e)) | 155 | log.write(str(e)) |
144 | log.write('\n') | 156 | log.write('\n') |
145 | pass | 157 | pass |
146 | except NameError as e: | 158 | except NameError as e: |
147 | # Deals with NameError: name 'cached' is not defined | 159 | # Deals with NameError: name 'cached' is not defined |
148 | if (debug==True): | 160 | if debug == True: |
149 | log.write(item+' ') | 161 | log.write(item+' ') |
150 | log.write(str(e)) | 162 | log.write(str(e)) |
151 | pass | 163 | pass |
152 | if cached is not None: | 164 | if cached is not None: |
153 | if (debug==True): | 165 | if debug == True: |
154 | log.write(cached) | 166 | log.write(cached + '\n') |
155 | cached = fix_path(cached) | 167 | cached = fix_path(cached) |
156 | cached = cached.replace(cpython_tag,'*') | 168 | cached = cached.replace(cpython_tag,'*') |
157 | if "_sysconfigdata" in cached: | 169 | if "_sysconfigdata" in cached: |
158 | cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") | 170 | cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") |
159 | print (cached) | 171 | print (cached) |
160 | 172 | ||
161 | if debug==True: | 173 | if debug == True: |
162 | log.close() | 174 | log.close() |
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch new file mode 100644 index 0000000000..c1b20703e6 --- /dev/null +++ b/meta/recipes-devtools/python/python3/makerace.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From 9f827c29adbe656af3c8fc963fdd8f47aec0c442 Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Purdie <richard.purdie@linuxfoundation.org> | ||
3 | Date: Tue, 13 Jul 2021 23:19:29 +0100 | ||
4 | Subject: [PATCH] python3: Fix make race | ||
5 | |||
6 | libainstall installs python-config.py but the .pyc cache files are generated | ||
7 | by the libinstall target. This means some builds may not generate the pyc files | ||
8 | for python-config.py depending on the order things happen in. This means builds | ||
9 | are not always reproducible. | ||
10 | |||
11 | Add a dependency to avoid the race. | ||
12 | |||
13 | Upstream-Status: Pending | ||
14 | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> | ||
15 | --- | ||
16 | Makefile.pre.in | 2 +- | ||
17 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
18 | |||
19 | diff --git a/Makefile.pre.in b/Makefile.pre.in | ||
20 | index 381feb0..77bf09a 100644 | ||
21 | --- a/Makefile.pre.in | ||
22 | +++ b/Makefile.pre.in | ||
23 | @@ -2250,7 +2250,7 @@ COMPILEALL_OPTS=-j0 | ||
24 | TEST_MODULES=@TEST_MODULES@ | ||
25 | |||
26 | .PHONY: libinstall | ||
27 | -libinstall: all $(srcdir)/Modules/xxmodule.c | ||
28 | +libinstall: all $(srcdir)/Modules/xxmodule.c libainstall | ||
29 | @for i in $(SCRIPTDIR) $(LIBDEST); \ | ||
30 | do \ | ||
31 | if test ! -d $(DESTDIR)$$i; then \ | ||
diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch deleted file mode 100644 index d0ddbbc7fd..0000000000 --- a/meta/recipes-devtools/python/python3/python-config.patch +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001 | ||
2 | From: Tyler Hall <tylerwhall@gmail.com> | ||
3 | Date: Sun, 4 May 2014 20:06:43 -0400 | ||
4 | Subject: [PATCH] python-config: Revert to using distutils.sysconfig | ||
5 | |||
6 | The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in | ||
7 | |||
8 | 12-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig | ||
9 | |||
10 | affect the native runtime as well as cross building. Use the old, patched | ||
11 | implementation which returns paths in the staging directory and for the target, | ||
12 | as appropriate. | ||
13 | |||
14 | Upstream-Status: Inappropriate [Embedded Specific] | ||
15 | |||
16 | Signed-off-by: Tyler Hall <tylerwhall@gmail.com> | ||
17 | : | ||
18 | |||
19 | --- | ||
20 | Misc/python-config.in | 10 +++++----- | ||
21 | 1 file changed, 5 insertions(+), 5 deletions(-) | ||
22 | |||
23 | diff --git a/Misc/python-config.in b/Misc/python-config.in | ||
24 | index ebd99da..13e57ae 100644 | ||
25 | --- a/Misc/python-config.in | ||
26 | +++ b/Misc/python-config.in | ||
27 | @@ -6,7 +6,7 @@ | ||
28 | import getopt | ||
29 | import os | ||
30 | import sys | ||
31 | -import sysconfig | ||
32 | +from distutils import sysconfig | ||
33 | |||
34 | valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', | ||
35 | 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir', | ||
36 | @@ -35,14 +35,14 @@ if '--help' in opt_flags: | ||
37 | |||
38 | for opt in opt_flags: | ||
39 | if opt == '--prefix': | ||
40 | - print(getvar('prefix')) | ||
41 | + print(sysconfig.PREFIX) | ||
42 | |||
43 | elif opt == '--exec-prefix': | ||
44 | - print(getvar('exec_prefix')) | ||
45 | + print(sysconfig.EXEC_PREFIX) | ||
46 | |||
47 | elif opt in ('--includes', '--cflags'): | ||
48 | - flags = ['-I' + sysconfig.get_path('include'), | ||
49 | - '-I' + sysconfig.get_path('platinclude')] | ||
50 | + flags = ['-I' + sysconfig.get_python_inc(), | ||
51 | + '-I' + sysconfig.get_python_inc(plat_specific=True)] | ||
52 | if opt == '--cflags': | ||
53 | flags.extend(getvar('CFLAGS').split()) | ||
54 | print(' '.join(flags)) | ||
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json index 615dc3a5e5..46092d4004 100644 --- a/meta/recipes-devtools/python/python3/python3-manifest.json +++ b/meta/recipes-devtools/python/python3/python3-manifest.json | |||
@@ -152,6 +152,23 @@ | |||
152 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" | 152 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" |
153 | ] | 153 | ] |
154 | }, | 154 | }, |
155 | "cgitb": { | ||
156 | "summary": "Special exception handler for Python scripts", | ||
157 | "rdepends": [ | ||
158 | "core", | ||
159 | "crypt", | ||
160 | "html", | ||
161 | "io", | ||
162 | "math", | ||
163 | "pydoc" | ||
164 | ], | ||
165 | "files": [ | ||
166 | "${libdir}/python${PYTHON_MAJMIN}/cgitb.py" | ||
167 | ], | ||
168 | "cached": [ | ||
169 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgitb.*.pyc" | ||
170 | ] | ||
171 | }, | ||
155 | "codecs": { | 172 | "codecs": { |
156 | "summary": "Python codec", | 173 | "summary": "Python codec", |
157 | "rdepends": [ | 174 | "rdepends": [ |
@@ -189,12 +206,12 @@ | |||
189 | "files": [ | 206 | "files": [ |
190 | "${libdir}/python${PYTHON_MAJMIN}/gzip.py", | 207 | "${libdir}/python${PYTHON_MAJMIN}/gzip.py", |
191 | "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", | 208 | "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", |
192 | "${libdir}/python${PYTHON_MAJMIN}/zipfile.py" | 209 | "${libdir}/python${PYTHON_MAJMIN}/zipfile", |
210 | "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path" | ||
193 | ], | 211 | ], |
194 | "cached": [ | 212 | "cached": [ |
195 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", | 213 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", |
196 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc", | 214 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc" |
197 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc" | ||
198 | ] | 215 | ] |
199 | }, | 216 | }, |
200 | "core": { | 217 | "core": { |
@@ -232,6 +249,7 @@ | |||
232 | "${libdir}/python${PYTHON_MAJMIN}/copy.py", | 249 | "${libdir}/python${PYTHON_MAJMIN}/copy.py", |
233 | "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", | 250 | "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", |
234 | "${libdir}/python${PYTHON_MAJMIN}/csv.py", | 251 | "${libdir}/python${PYTHON_MAJMIN}/csv.py", |
252 | "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py", | ||
235 | "${libdir}/python${PYTHON_MAJMIN}/dis.py", | 253 | "${libdir}/python${PYTHON_MAJMIN}/dis.py", |
236 | "${libdir}/python${PYTHON_MAJMIN}/encodings", | 254 | "${libdir}/python${PYTHON_MAJMIN}/encodings", |
237 | "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", | 255 | "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", |
@@ -246,6 +264,7 @@ | |||
246 | "${libdir}/python${PYTHON_MAJMIN}/heapq.py", | 264 | "${libdir}/python${PYTHON_MAJMIN}/heapq.py", |
247 | "${libdir}/python${PYTHON_MAJMIN}/imp.py", | 265 | "${libdir}/python${PYTHON_MAJMIN}/imp.py", |
248 | "${libdir}/python${PYTHON_MAJMIN}/importlib", | 266 | "${libdir}/python${PYTHON_MAJMIN}/importlib", |
267 | "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py", | ||
249 | "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", | 268 | "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", |
250 | "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", | 269 | "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", |
251 | "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", | 270 | "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", |
@@ -253,6 +272,7 @@ | |||
253 | "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", | 272 | "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", |
254 | "${libdir}/python${PYTHON_MAJMIN}/inspect.py", | 273 | "${libdir}/python${PYTHON_MAJMIN}/inspect.py", |
255 | "${libdir}/python${PYTHON_MAJMIN}/io.py", | 274 | "${libdir}/python${PYTHON_MAJMIN}/io.py", |
275 | "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py", | ||
256 | "${libdir}/python${PYTHON_MAJMIN}/keyword.py", | 276 | "${libdir}/python${PYTHON_MAJMIN}/keyword.py", |
257 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", | 277 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", |
258 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", | 278 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", |
@@ -266,6 +286,7 @@ | |||
266 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", | 286 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", |
267 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", | 287 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", |
268 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", | 288 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", |
289 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so", | ||
269 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", | 290 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", |
270 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", | 291 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", |
271 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", | 292 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", |
@@ -290,7 +311,11 @@ | |||
290 | "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", | 311 | "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", |
291 | "${libdir}/python${PYTHON_MAJMIN}/platform.py", | 312 | "${libdir}/python${PYTHON_MAJMIN}/platform.py", |
292 | "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", | 313 | "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", |
293 | "${libdir}/python${PYTHON_MAJMIN}/re.py", | 314 | "${libdir}/python${PYTHON_MAJMIN}/re", |
315 | "${libdir}/python${PYTHON_MAJMIN}/re/_casefix.py", | ||
316 | "${libdir}/python${PYTHON_MAJMIN}/re/_compiler.py", | ||
317 | "${libdir}/python${PYTHON_MAJMIN}/re/_constants.py", | ||
318 | "${libdir}/python${PYTHON_MAJMIN}/re/_parser.py", | ||
294 | "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", | 319 | "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", |
295 | "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", | 320 | "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", |
296 | "${libdir}/python${PYTHON_MAJMIN}/runpy.py", | 321 | "${libdir}/python${PYTHON_MAJMIN}/runpy.py", |
@@ -319,6 +344,7 @@ | |||
319 | "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", | 344 | "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", |
320 | "${libdir}/python${PYTHON_MAJMIN}/warnings.py", | 345 | "${libdir}/python${PYTHON_MAJMIN}/warnings.py", |
321 | "${libdir}/python${PYTHON_MAJMIN}/weakref.py", | 346 | "${libdir}/python${PYTHON_MAJMIN}/weakref.py", |
347 | "${libdir}/python${PYTHON_MAJMIN}/zipimport.py", | ||
322 | "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" | 348 | "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" |
323 | ], | 349 | ], |
324 | "cached": [ | 350 | "cached": [ |
@@ -343,6 +369,7 @@ | |||
343 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", | 369 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", |
344 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", | 370 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", |
345 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", | 371 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", |
372 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc", | ||
346 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", | 373 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", |
347 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", | 374 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", |
348 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", | 375 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", |
@@ -354,6 +381,7 @@ | |||
354 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", | 381 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", |
355 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", | 382 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", |
356 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", | 383 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", |
384 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc", | ||
357 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", | 385 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", |
358 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", | 386 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", |
359 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", | 387 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", |
@@ -400,9 +428,15 @@ | |||
400 | "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", | 428 | "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", |
401 | "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", | 429 | "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", |
402 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", | 430 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", |
431 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc", | ||
403 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", | 432 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", |
404 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", | 433 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", |
405 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", | 434 | "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", |
435 | "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__", | ||
436 | "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_casefix.*.pyc", | ||
437 | "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_compiler.*.pyc", | ||
438 | "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_constants.*.pyc", | ||
439 | "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_parser.*.pyc", | ||
406 | "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", | 440 | "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", |
407 | "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" | 441 | "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" |
408 | ] | 442 | ] |
@@ -422,9 +456,8 @@ | |||
422 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", | 456 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", |
423 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", | 457 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", |
424 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", | 458 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", |
425 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so", | 459 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so", |
426 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so", | 460 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so" |
427 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so" | ||
428 | ], | 461 | ], |
429 | "cached": [ | 462 | "cached": [ |
430 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc", | 463 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc", |
@@ -519,8 +552,7 @@ | |||
519 | "${libdir}/pkgconfig" | 552 | "${libdir}/pkgconfig" |
520 | ], | 553 | ], |
521 | "rdepends": [ | 554 | "rdepends": [ |
522 | "core", | 555 | "core" |
523 | "distutils" | ||
524 | ], | 556 | ], |
525 | "summary": "Python development package" | 557 | "summary": "Python development package" |
526 | }, | 558 | }, |
@@ -536,27 +568,6 @@ | |||
536 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" | 568 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" |
537 | ] | 569 | ] |
538 | }, | 570 | }, |
539 | "distutils-windows": { | ||
540 | "summary": "Python distribution utilities (Windows installer stubs)", | ||
541 | "rdepends": [ | ||
542 | "core" | ||
543 | ], | ||
544 | "files": [], | ||
545 | "cached": [] | ||
546 | }, | ||
547 | "distutils": { | ||
548 | "summary": "Python Distribution Utilities", | ||
549 | "rdepends": [ | ||
550 | "compression", | ||
551 | "core", | ||
552 | "email", | ||
553 | "stringold" | ||
554 | ], | ||
555 | "files": [ | ||
556 | "${libdir}/python${PYTHON_MAJMIN}/distutils" | ||
557 | ], | ||
558 | "cached": [] | ||
559 | }, | ||
560 | "doctest": { | 571 | "doctest": { |
561 | "summary": "Python framework for running examples in docstrings", | 572 | "summary": "Python framework for running examples in docstrings", |
562 | "rdepends": [ | 573 | "rdepends": [ |
@@ -595,6 +606,16 @@ | |||
595 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" | 606 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" |
596 | ] | 607 | ] |
597 | }, | 608 | }, |
609 | "ensurepip": { | ||
610 | "summary": "Support for bootstrapping the pip installer", | ||
611 | "rdepends": [ | ||
612 | "core" | ||
613 | ], | ||
614 | "files": [ | ||
615 | "${libdir}/python${PYTHON_MAJMIN}/ensurepip/" | ||
616 | ], | ||
617 | "cached": [] | ||
618 | }, | ||
598 | "fcntl": { | 619 | "fcntl": { |
599 | "summary": "Python's fcntl interface", | 620 | "summary": "Python's fcntl interface", |
600 | "rdepends": [ | 621 | "rdepends": [ |
@@ -621,12 +642,9 @@ | |||
621 | "core" | 642 | "core" |
622 | ], | 643 | ], |
623 | "files": [ | 644 | "files": [ |
624 | "${libdir}/python${PYTHON_MAJMIN}/formatter.py", | ||
625 | "${libdir}/python${PYTHON_MAJMIN}/html" | 645 | "${libdir}/python${PYTHON_MAJMIN}/html" |
626 | ], | 646 | ], |
627 | "cached": [ | 647 | "cached": [] |
628 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc" | ||
629 | ] | ||
630 | }, | 648 | }, |
631 | "idle": { | 649 | "idle": { |
632 | "summary": "Python Integrated Development Environment", | 650 | "summary": "Python Integrated Development Environment", |
@@ -664,7 +682,6 @@ | |||
664 | ], | 682 | ], |
665 | "files": [ | 683 | "files": [ |
666 | "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", | 684 | "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", |
667 | "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py", | ||
668 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", | 685 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", |
669 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", | 686 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", |
670 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", | 687 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", |
@@ -675,7 +692,6 @@ | |||
675 | ], | 692 | ], |
676 | "cached": [ | 693 | "cached": [ |
677 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", | 694 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", |
678 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc", | ||
679 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc", | 695 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc", |
680 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", | 696 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", |
681 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", | 697 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", |
@@ -715,7 +731,6 @@ | |||
715 | "crypt", | 731 | "crypt", |
716 | "datetime", | 732 | "datetime", |
717 | "email", | 733 | "email", |
718 | "fcntl", | ||
719 | "io", | 734 | "io", |
720 | "math", | 735 | "math", |
721 | "mime", | 736 | "mime", |
@@ -786,9 +801,9 @@ | |||
786 | "db", | 801 | "db", |
787 | "debugger", | 802 | "debugger", |
788 | "difflib", | 803 | "difflib", |
789 | "distutils", | ||
790 | "doctest", | 804 | "doctest", |
791 | "email", | 805 | "email", |
806 | "ensurepip", | ||
792 | "fcntl", | 807 | "fcntl", |
793 | "html", | 808 | "html", |
794 | "idle", | 809 | "idle", |
@@ -812,21 +827,20 @@ | |||
812 | "pydoc", | 827 | "pydoc", |
813 | "resource", | 828 | "resource", |
814 | "shell", | 829 | "shell", |
815 | "smtpd", | ||
816 | "sqlite3", | 830 | "sqlite3", |
831 | "statistics", | ||
817 | "stringold", | 832 | "stringold", |
818 | "syslog", | 833 | "syslog", |
819 | "terminal", | 834 | "terminal", |
820 | "threading", | 835 | "threading", |
821 | "tkinter", | 836 | "tkinter", |
837 | "tomllib", | ||
822 | "unittest", | 838 | "unittest", |
823 | "unixadmin", | 839 | "unixadmin", |
824 | "venv", | 840 | "venv", |
825 | "xml", | 841 | "xml", |
826 | "xmlrpc" | 842 | "xmlrpc", |
827 | ], | 843 | "zoneinfo" |
828 | "rrecommends": [ | ||
829 | "distutils-windows" | ||
830 | ], | 844 | ], |
831 | "summary": "All Python modules" | 845 | "summary": "All Python modules" |
832 | }, | 846 | }, |
@@ -875,6 +889,7 @@ | |||
875 | "${libdir}/python${PYTHON_MAJMIN}/secrets.py", | 889 | "${libdir}/python${PYTHON_MAJMIN}/secrets.py", |
876 | "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", | 890 | "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", |
877 | "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", | 891 | "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", |
892 | "${libdir}/python${PYTHON_MAJMIN}/urllib", | ||
878 | "${libdir}/python${PYTHON_MAJMIN}/uuid.py" | 893 | "${libdir}/python${PYTHON_MAJMIN}/uuid.py" |
879 | ], | 894 | ], |
880 | "cached": [ | 895 | "cached": [ |
@@ -995,14 +1010,12 @@ | |||
995 | ], | 1010 | ], |
996 | "files": [ | 1011 | "files": [ |
997 | "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", | 1012 | "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", |
998 | "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py", | ||
999 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", | 1013 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", |
1000 | "${libdir}/python${PYTHON_MAJMIN}/profile.py", | 1014 | "${libdir}/python${PYTHON_MAJMIN}/profile.py", |
1001 | "${libdir}/python${PYTHON_MAJMIN}/pstats.py" | 1015 | "${libdir}/python${PYTHON_MAJMIN}/pstats.py" |
1002 | ], | 1016 | ], |
1003 | "cached": [ | 1017 | "cached": [ |
1004 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", | 1018 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", |
1005 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc", | ||
1006 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", | 1019 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", |
1007 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" | 1020 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" |
1008 | ] | 1021 | ] |
@@ -1048,31 +1061,6 @@ | |||
1048 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" | 1061 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" |
1049 | ] | 1062 | ] |
1050 | }, | 1063 | }, |
1051 | "smtpd": { | ||
1052 | "summary": "Python Simple Mail Transport Daemon", | ||
1053 | "rdepends": [ | ||
1054 | "core", | ||
1055 | "crypt", | ||
1056 | "datetime", | ||
1057 | "email", | ||
1058 | "io", | ||
1059 | "math", | ||
1060 | "mime", | ||
1061 | "netclient", | ||
1062 | "stringold" | ||
1063 | ], | ||
1064 | "files": [ | ||
1065 | "${bindir}/smtpd.py", | ||
1066 | "${libdir}/python${PYTHON_MAJMIN}/asynchat.py", | ||
1067 | "${libdir}/python${PYTHON_MAJMIN}/asyncore.py", | ||
1068 | "${libdir}/python${PYTHON_MAJMIN}/smtpd.py" | ||
1069 | ], | ||
1070 | "cached": [ | ||
1071 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asynchat.*.pyc", | ||
1072 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asyncore.*.pyc", | ||
1073 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtpd.*.pyc" | ||
1074 | ] | ||
1075 | }, | ||
1076 | "sqlite3": { | 1064 | "sqlite3": { |
1077 | "summary": "Python Sqlite3 database support", | 1065 | "summary": "Python Sqlite3 database support", |
1078 | "rdepends": [ | 1066 | "rdepends": [ |
@@ -1085,6 +1073,22 @@ | |||
1085 | ], | 1073 | ], |
1086 | "cached": [] | 1074 | "cached": [] |
1087 | }, | 1075 | }, |
1076 | "statistics": { | ||
1077 | "summary": "Basic statistics module", | ||
1078 | "rdepends": [ | ||
1079 | "core", | ||
1080 | "crypt", | ||
1081 | "math", | ||
1082 | "numbers" | ||
1083 | ], | ||
1084 | "files": [ | ||
1085 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_statistics.*.so", | ||
1086 | "${libdir}/python${PYTHON_MAJMIN}/statistics.py" | ||
1087 | ], | ||
1088 | "cached": [ | ||
1089 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc" | ||
1090 | ] | ||
1091 | }, | ||
1088 | "stringold": { | 1092 | "stringold": { |
1089 | "summary": "Python string APIs [deprecated]", | 1093 | "summary": "Python string APIs [deprecated]", |
1090 | "rdepends": [ | 1094 | "rdepends": [ |
@@ -1143,11 +1147,33 @@ | |||
1143 | "core" | 1147 | "core" |
1144 | ], | 1148 | ], |
1145 | "files": [ | 1149 | "files": [ |
1146 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", | 1150 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", |
1147 | "${libdir}/python${PYTHON_MAJMIN}/tkinter" | 1151 | "${libdir}/python${PYTHON_MAJMIN}/tkinter" |
1148 | ], | 1152 | ], |
1149 | "cached": [] | 1153 | "cached": [] |
1150 | }, | 1154 | }, |
1155 | "tomllib": { | ||
1156 | "summary": "Provides an interface for parsing TOML", | ||
1157 | "rdepends": [ | ||
1158 | "core" | ||
1159 | ], | ||
1160 | "files": [ | ||
1161 | "${libdir}/python${PYTHON_MAJMIN}/tomllib/" | ||
1162 | ], | ||
1163 | "cached": [] | ||
1164 | }, | ||
1165 | "turtle": { | ||
1166 | "summary": "Turtle graphics is a popular way for introducing programming to kids.", | ||
1167 | "rdepends": [ | ||
1168 | "tkinter" | ||
1169 | ], | ||
1170 | "files": [ | ||
1171 | "${libdir}/python${PYTHON_MAJMIN}/turtle.py" | ||
1172 | ], | ||
1173 | "cached": [ | ||
1174 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/turtle.*.pyc" | ||
1175 | ] | ||
1176 | }, | ||
1151 | "unittest": { | 1177 | "unittest": { |
1152 | "summary": "Python unit testing framework", | 1178 | "summary": "Python unit testing framework", |
1153 | "rdepends": [ | 1179 | "rdepends": [ |
@@ -1215,7 +1241,6 @@ | |||
1215 | "crypt", | 1241 | "crypt", |
1216 | "datetime", | 1242 | "datetime", |
1217 | "email", | 1243 | "email", |
1218 | "fcntl", | ||
1219 | "html", | 1244 | "html", |
1220 | "io", | 1245 | "io", |
1221 | "math", | 1246 | "math", |
@@ -1232,5 +1257,30 @@ | |||
1232 | "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" | 1257 | "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" |
1233 | ], | 1258 | ], |
1234 | "cached": [] | 1259 | "cached": [] |
1260 | }, | ||
1261 | "zipapp": { | ||
1262 | "summary": "Tools to manage the creation of zip files containing Python code", | ||
1263 | "rdepends": [ | ||
1264 | "compression", | ||
1265 | "core" | ||
1266 | ], | ||
1267 | "files": [ | ||
1268 | "${libdir}/python${PYTHON_MAJMIN}/zipapp.py" | ||
1269 | ], | ||
1270 | "cached": [ | ||
1271 | "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipapp.*.pyc" | ||
1272 | ] | ||
1273 | }, | ||
1274 | "zoneinfo": { | ||
1275 | "summary": "IANA time zone support", | ||
1276 | "rdepends": [ | ||
1277 | "core", | ||
1278 | "datetime" | ||
1279 | ], | ||
1280 | "files": [ | ||
1281 | "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_zoneinfo.*.so", | ||
1282 | "${libdir}/python${PYTHON_MAJMIN}/zoneinfo" | ||
1283 | ], | ||
1284 | "cached": [] | ||
1235 | } | 1285 | } |
1236 | } | 1286 | } |
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py index c4164313e8..5e2b12879d 100644 --- a/meta/recipes-devtools/python/python3/reformat_sysconfig.py +++ b/meta/recipes-devtools/python/python3/reformat_sysconfig.py | |||
@@ -16,6 +16,6 @@ with open(sys.argv[1], 'r') as f: | |||
16 | with open(sys.argv[1], 'w') as f: | 16 | with open(sys.argv[1], 'w') as f: |
17 | for k in sorted(l.keys()): | 17 | for k in sorted(l.keys()): |
18 | f.write('%s = ' % k) | 18 | f.write('%s = ' % k) |
19 | pprint.pprint(l[k], stream=f, width=sys.maxsize) | 19 | pprint.pprint(l[k], stream=f, width=1) |
20 | f.write('\n') | 20 | f.write('\n') |
21 | 21 | ||
diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest index 405b07f495..d1c26c11e2 100644 --- a/meta/recipes-devtools/python/python3/run-ptest +++ b/meta/recipes-devtools/python/python3/run-ptest | |||
@@ -1,3 +1,3 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | SKIPPED_TESTS= | |
3 | python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g' | 3 | { SETUPTOOLS_USE_DISTUTILS=nonlocal python3 -m test $SKIPPED_TESTS -v -j 4 || echo "FAIL: python3" ; } | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g' |