summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python3
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/python/python3')
-rw-r--r--meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch30
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch25
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch47
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch58
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch16
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch72
-rw-r--r--meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch37
-rw-r--r--meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch33
-rw-r--r--meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch209
-rw-r--r--meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch42
-rw-r--r--meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch26
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch67
-rw-r--r--meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch69
-rw-r--r--meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch29
-rw-r--r--meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch28
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch18
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch30
-rw-r--r--meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch37
-rw-r--r--meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch60
-rw-r--r--meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch31
-rw-r--r--meta/recipes-devtools/python/python3/cgi_py.patch4
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py47
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch31
-rw-r--r--meta/recipes-devtools/python/python3/deterministic_imports.patch40
-rw-r--r--meta/recipes-devtools/python/python3/get_module_deps3.py76
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch31
-rw-r--r--meta/recipes-devtools/python/python3/python-config.patch54
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json194
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest4
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 @@
1From 365399f17d35719d828ddd49182dcb401fb7791c Mon Sep 17 00:00:00 2001
2From: Paulo Neves <ptsneves@gmail.com>
3Date: Tue, 7 Jun 2022 16:16:41 +0200
4Subject: [PATCH] Avoid shebang overflow on python-config.py
5
6The whole native path may be too big, leading to shebang
7overflow. Let's just use the env shebang.
8
9Denial reason: [1]
10
11Upstream-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
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 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 @@
1From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 25 Jan 2019 19:04:13 +0100
4Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
5 contamination
6
7Upstream-Status: Inappropriate [oe-core specific]
8Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
9
10---
11 setup.py | 1 -
12 1 file changed, 1 deletion(-)
13
14diff --git a/setup.py b/setup.py
15index 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 @@
1From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 29 Jan 2019 15:03:01 +0100
4Subject: [PATCH] Do not use the shell version of python-config that was
5 introduced in 3.4
6
7Revert instead to the original python version: it has our tweaks and
8outputs directories correctly.
9
10Upstream-Status: Inappropriate [oe-specific]
11Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
12---
13 Makefile.pre.in | 9 +++------
14 1 file changed, 3 insertions(+), 6 deletions(-)
15
16diff --git a/Makefile.pre.in b/Makefile.pre.in
17index 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 @@
1From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001
2From: Jeremy Puhlman <jpuhlman@mvista.com>
3Date: Wed, 4 Mar 2020 00:06:42 +0000
4Subject: [PATCH] Don't search system for headers/libraries
5
6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
8
9---
10 setup.py | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/setup.py b/setup.py
14index 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 @@
1From f8a664cf1fc73e381d57d6927207286059744837 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Thu, 16 Sep 2021 16:35:37 +0200
4Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
5 errors
6
7reading stdin can throw the same I/O errors as reading from master fd does,
8e.g. when running under Yocto's test harness:
9======================================================================
10ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest)
11----------------------------------------------------------------------
12Traceback (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)
21OSError: [Errno 5] Input/output error
22
23So let's treat both channels the same.
24
25Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
26Signed-off-by: Alexander Kanavin <alex@linutronix.de>
27
28---
29 Lib/pty.py | 5 ++++-
30 1 file changed, 4 insertions(+), 1 deletion(-)
31
32diff --git a/Lib/pty.py b/Lib/pty.py
33index 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 @@
1From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 22 Oct 2020 13:10:34 +0200
4Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file
5
6This allows correctly substituting them for target installs using
7native python.
8
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10---
11 Lib/sysconfig.py | 8 ++++----
12 1 file changed, 4 insertions(+), 4 deletions(-)
13
14diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
15index 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--
342.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 @@
1From 71c194077bb907bfe423d3f3275f33a6c8ca0e74 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 17 Nov 2023 14:26:32 +0100
4Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
5 file
6
7This allows correctly substituting them for target installs using
8native python.
9
10Upstream-Status: Inappropriate [oe-core cross builds]
11Signed-off-by: Alexander Kanavin <alex@linutronix.de>
12
13---
14 Lib/sysconfig.py | 5 +++++
15 1 file changed, 5 insertions(+)
16
17diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
18index 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 @@
1From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 16 Jan 2020 12:34:20 +0100
4Subject: [PATCH] Makefile: do not compile .pyc in parallel
5
6This was found to break reproducibility, and produce strange file ownership
7races.
8
9The upstream commit introducing the change was:
10https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
11
12Upstream-Status: Pending
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14---
15 Makefile.pre.in | 12 ++++++------
16 1 file changed, 6 insertions(+), 6 deletions(-)
17
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 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 @@
1From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Wed, 8 May 2019 16:10:29 +0800
4Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem)
5
6When using make -j with the 'install' target, it's possible for altbininstall
7(which normally creates BINDIR) and libainstall (which doesn't, though it
8installs python-config there) to race, resulting in a failure due to
9attempting to install python-config into a nonexistent BINDIR. Ensure it also
10exists in the libainstall target.
11
12Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186]
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 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--
332.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 @@
1From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 1From 38278339832a57dbf5fa3ef21accaa03e2c814d7 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 30 Jan 2019 12:41:04 +0100 3Date: Wed, 30 Jan 2019 12:41:04 +0100
4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data 4Subject: [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
12diff --git a/Makefile.pre.in b/Makefile.pre.in 12diff --git a/Makefile.pre.in b/Makefile.pre.in
13index a3a02a7..d5503dd 100644 13index 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 @@
1From 3471e3478e0760c42e04f8046cee2367ab5706d2 Mon Sep 17 00:00:00 2001
2From: Yi Fan Yu <yifan.yu@windriver.com>
3Date: Thu, 1 Apr 2021 13:08:37 -0700
4Subject: [PATCH] Skip failing tests due to load variability on YP AB
5
6Skip these tests until AB-INT is solved.
7
8[YOCTO #14296]
9
10Upstream-Status: Inappropriate [OE-Specific]
11
12Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
13
14Skip two additional tests due to suspected load variability failures.
15
16[YOCTO #15131]
17[YOCTO #15177]
18
19Signed-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
25diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
26index 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
53diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
54index 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 @@
1From 37d058e841ba3bd89b5746cc5381afb014b11581 Mon Sep 17 00:00:00 2001
2From: Wentao Zhang <wentao.zhang@windriver.com>
3Date: Mon, 20 Mar 2023 13:39:52 +0800
4Subject: [PATCH] Update test_sysconfig for posix_user purelib
5
6Steps to trigger the failed test:
7Edit local.conf to add something as follows:
8 BASELIB = "lib64"
9 IMAGE_INSTALL:append = " python3-tests".
10bitbake core-image-sato
11runqemu qemux86-64 nographic slirp
12Reproducer:
13 $python3 -m test test_sysconfig
14
15Update test_sysconfig.test_user_similar() for the posix_user scheme:
16"purelib" doesn't use sys.platlibdir.
17
18Upstream-Status: Inappropriate [oe-core specific]
19Signed-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
25diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
26index 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 @@
1From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001
2From: Inada Naoki <songofacandy@gmail.com>
3Date: Sat, 14 Jul 2018 00:46:11 +0900
4Subject: [PATCH] Use FLAG_REF always for interned strings
5
6Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226]
7Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
8
9---
10 Python/marshal.c | 9 +++++++--
11 1 file changed, 7 insertions(+), 2 deletions(-)
12
13diff --git a/Python/marshal.c b/Python/marshal.c
14index 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 @@
1From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001
2From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
3Date: Fri, 31 May 2019 15:34:34 +0200
4Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
5 float
6
7When (cross) compiling for softfloat mips, __mips_hard_float will not be
8defined and detection of OS triplet in configure.ac / configure will fail.
9
10This also has to do with the custom detection of the build triplet. Trying
11to do this in a more autoconf/autotools manner.
12
13Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
14Signed-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
21diff --git a/configure.ac b/configure.ac
22index 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--
2082.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 @@
1From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 31 Jan 2019 16:46:30 +0100
4Subject: [PATCH] distutils/sysconfig: append
5 STAGING_LIBDIR/python-sysconfigdata to sys.path
6
7So that target configuration can be used when running native python
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-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
17diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
18index 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
30diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
31index 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 @@
1From 439aa02f42d6e6715c172076261757fcb89a936a Mon Sep 17 00:00:00 2001
2From: "Miss Islington (bot)"
3 <31488909+miss-islington@users.noreply.github.com>
4Date: Tue, 23 Jan 2024 23:02:02 +0100
5Subject: [PATCH] gh-114492: Initialize struct termios before calling
6 tcgetattr() (GH-114495) (GH-114502)
7
8On Alpine Linux it could leave some field non-initialized.
9(cherry picked from commit d22c066b802592932f9eb18434782299e80ca42e)
10
11Upstream-Status: Backport [https://github.com/python/cpython/commit/386c72d9928c51aa2c855ce592bd8022da3b407f]
12Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
13Signed-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
19diff --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
20new file mode 100644
21index 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 @@
1From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001 1From ababc7b1db8c406910766e11cdd04cbef7a706c9 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com> 2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 22 Oct 2018 15:19:51 +0800 3Date: Mon, 22 Oct 2018 15:19:51 +0800
4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler 4Subject: [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'
14Here use cc_basename to replace CC for checking compiler to avoid such 14Here use cc_basename to replace CC for checking compiler to avoid such
15kind of issue. 15kind of issue.
16 16
17Upstream-Status: Pending 17Upstream-Status: Submitted [https://github.com/python/cpython/pull/96399]
18 18
19Signed-off-by: Li Zhou <li.zhou@windriver.com> 19Signed-off-by: Li Zhou <li.zhou@windriver.com>
20 20
21patch originally from Li Zhou, I just rework it to new version 21patch originally from Li Zhou, I just rework it to new version
22 22
23Signed-off-by: Changqing Li <changqing.li@windriver.com> 23Signed-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
29diff --git a/configure.ac b/configure.ac 28diff --git a/configure.ac b/configure.ac
30index d60f052..e491e24 100644 29index 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 @@
1From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 9 Jan 2020 17:44:05 +0100
4Subject: [PATCH] setup.py: pass missing libraries to Extension for
5 multiprocessing module
6
7In the following commit:
8...
9commit e711cafab13efc9c1fe6c5cd75826401445eb585
10Author: Benjamin Peterson <benjamin@python.org>
11Date: 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)
17It assigned libraries for multiprocessing module according
18the host_platform, but not pass it to Extension.
19
20In glibc, the following commit caused two definition of
21sem_getvalue are different.
22https://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
25and `__old_sem_getvalue' is to compat the old version
26sem_getvalue@GLIBC_2.0.
27
28To build python for embedded Linux systems:
29http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
30If not explicitly link to library pthread (-lpthread), it will
31load glibc's sem_getvalue randomly at runtime.
32
33Such as build python on linux x86_64 host and run the python
34on linux x86_32 target. If not link library pthread, it caused
35multiprocessing bounded semaphore could not work correctly.
36...
37>>> import multiprocessing
38>>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
39>>> pool_sema.acquire()
40True
41>>> pool_sema.release()
42Traceback (most recent call last):
43 File "<stdin>", line 1, in <module>
44ValueError: semaphore or lock released too many times
45...
46
47And the semaphore issue also caused multiprocessing.Queue().put() hung.
48
49Upstream-Status: Pending
50
51Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
52Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
53---
54 setup.py | 2 +-
55 1 file changed, 1 insertion(+), 1 deletion(-)
56
57diff --git a/setup.py b/setup.py
58index 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 @@
1From 217cea231462e7703e8c9ea39c0a6833f799a420 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 15 Sep 2023 08:48:33 -0400
4Subject: [PATCH] skip no_stdout_fileno test due to load variability
5
6Skip test_input_no_stdout_fileno so that it doesn't fail on systems
7under heavy load.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #15210]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14---
15 Lib/test/test_builtin.py | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
19index 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 @@
1From a5d429a0e1a4809c1ded7be7e45dcabeb82c53d8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 12 Sep 2021 21:44:36 +0200
4Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
5
6This is needed in multilib configurations where hardcoding 'lib'
7is not correct.
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11
12---
13 Lib/sysconfig.py | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
17index 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 @@
1From b64c131a576a4b4f821514e711ab91b1394fb4ff Mon Sep 17 00:00:00 2001
2From: Tim Orling <timothy.t.orling@intel.com>
3Date: Fri, 18 Jun 2021 11:56:50 -0700
4Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk
5
6These tests need full packagegroup-core-buildessential, the
7easiest way to dynamically check for that is looking for
8'tools-sdk' in IMAGE_FEATURES.
9
10Upstream-Status: Inappropriate [oe-specific]
11
12Signed-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
18diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
19index 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 @@
1From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001 1From ef5728f0af14da5c9f80b0f038fe5bf6d44cb0e9 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com> 2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Mon, 5 Aug 2019 15:57:39 +0800 3Date: Mon, 5 Aug 2019 15:57:39 +0800
4Subject: [PATCH] test_locale.py: correct the test output format 4Subject: [PATCH] test_locale.py: correct the test output format
@@ -23,24 +23,24 @@ Before this patch:
23 23
24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] 24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
25 25
26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
27
26Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 28Signed-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
31diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py 34diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
32index e2c2178..558d63c 100644 35index 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--
452.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 @@
1From dc69a1afdb3ba619705ff71e14f19ed3142e422f Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 6 Oct 2023 10:59:44 -0400
4Subject: [PATCH] test_storlines: skip due to load variability
5
6This is yet another test that intermittently fails on the Yocto AB when
7a worker is under heavy load, so skip it during testing.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #14933]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14
15---
16 Lib/test/test_ftplib.py | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
20index 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 @@
1From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Mon, 7 Oct 2019 13:22:14 +0200
4Subject: [PATCH] setup.py: do not report missing dependencies for disabled
5 modules
6
7Reporting those missing dependencies is misleading as the modules would not
8have been built anyway. This particularly matters in oe-core's automated
9build completeness checker which relies on the report.
10
11Upstream-Status: Inappropriate [oe-core specific]
12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
13
14---
15 setup.py | 4 ++++
16 1 file changed, 4 insertions(+)
17
18diff --git a/setup.py b/setup.py
19index 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 @@
1From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001 1From d0205c60d08f51d84bd8ddc07a57e8c71710fdad Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 16 Feb 2020 17:50:25 +0100 3Date: Fri, 17 Nov 2023 14:16:40 +0100
4Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from 4Subject: [PATCH] configure.ac: do not add a curses include path from the host
5 the host
6 5
7This leads to host contamination, and particularly can cause 6This leads to host contamination, and particularly can cause
8curses modules to fail at runtime if the host curses is configured 7curses modules to fail at runtime if the host curses is configured
@@ -13,16 +12,15 @@ Upstream-Status: Inappropriate [oe-core specific]
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 12Signed-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
19diff --git a/configure.ac b/configure.ac 17diff --git a/configure.ac b/configure.ac
20index 915f475..c911011 100644 18index 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
36diff --git a/setup.py b/setup.py 32 AC_CHECK_HEADERS([term.h], [], [], [
37index 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 @@
1From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 14 May 2013 15:00:26 -0700
4Subject: [PATCH 1/2] python3: Add target and native recipes
5
6Upstream-Status: Inappropriate [embedded specific]
7
802/2015 Rebased for Python 3.4.2
9
10The proper prefix is inside our staging area.
11Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
12Signed-off-by: Phil Blundell <philb@gnu.org>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14Signed-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
19diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
20index 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--
592.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 @@
1From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
2From: Andrei Gherzan <andrei@gherzan.ro>
3Date: Mon, 28 Jan 2019 15:57:54 +0000
4Subject: [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
8Upstream-Status: Inappropriate [distribution]
9
10Also simply disable the tk module since its not in DEPENDS.
11Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
12
13---
14 setup.py | 4 ++--
15 1 file changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/setup.py b/setup.py
18index 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 @@
1From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001 1From a56778372fe8dc7c42f5ffd911d89498c22dd064 Mon Sep 17 00:00:00 2001
2From: Mark Hatle <mark.hatle@windriver.com> 2From: Mark Hatle <mark.hatle@windriver.com>
3Date: Wed, 21 Sep 2011 20:55:33 -0500 3Date: Wed, 21 Sep 2011 20:55:33 -0500
4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment 4Subject: [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
14diff --git a/Lib/cgi.py b/Lib/cgi.py 14diff --git a/Lib/cgi.py b/Lib/cgi.py
15index 8cf6687..094c7b4 100755 15index 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
42import sys 42import sys
@@ -45,6 +45,11 @@ import json
45import os 45import os
46import collections 46import collections
47 47
48if '-d' in sys.argv:
49 debugFlag = '-d'
50else:
51 debugFlag = ''
52
48# Get python version from ${PYTHON_MAJMIN} 53# Get python version from ${PYTHON_MAJMIN}
49pyversion = str(sys.argv[1]) 54pyversion = 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
92def 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
88with open('python3-manifest.json') as manifest: 99with 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
102print ('Getting dependencies for package: core') 113print_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
112output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') 123output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8')
113for coredep in output.split(): 124for 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
191print('\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.
183for pypkg in old_manifest: 194for 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
425if (repeated): 436if (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 @@
1configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD 1From 5b66463c10fec1440e977d5a21a0167862d6d79c Mon Sep 17 00:00:00 2001
2From: Ricardo Ribalda <ricardo@ribalda.com>
3Date: Tue, 18 Nov 2014 03:35:33 -0500
4Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for
5 PYTHON_FOR_BUILD
2 6
3When building x86->x86 the system will try to execute .so and related items 7When building x86->x86 the system will try to execute .so and related items
4from the default PYTHONPATH. This will fail if the target CPU contains 8from the default PYTHONPATH. This will fail if the target CPU contains
@@ -10,16 +14,21 @@ Upstream-Status: Inappropriate [OE-Core integration specific]
10Credits-to: Mark Hatle <mark.hatle@windriver.com> 14Credits-to: Mark Hatle <mark.hatle@windriver.com>
11Credits-to: Jackie Huang <jackie.huang@windriver.com> 15Credits-to: Jackie Huang <jackie.huang@windriver.com>
12Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> 16Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
17
18---
19 configure.ac | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
13diff --git a/configure.ac b/configure.ac 22diff --git a/configure.ac b/configure.ac
14index 4ab19a6..7036a53 100644 23index 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 @@
1From 039d5e652796b55f1132afa568c7432b6ed89afd Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Fri, 27 May 2022 17:05:44 +0100
4Subject: [PATCH] python3: Ensure stale empty python module directories don't
5
6There are two issues here. Firstly, the modules are accessed in on disk order. This
7means behaviour seen on one system might not reproduce on another and is a real headache.
8
9Secondly, empty directories left behind by previous modules might be looked at. This
10has caused a long string of different issues for us.
11
12As a result, patch this to a behaviour which works for us.
13
14Upstream-Status: Pending [need to talk to upstream to see if they'll take one or both fixes]
15Signed-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
21diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
22index 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.
9debug=False
10 8
11import sys 9import sys
12import os 10import os
13 11
12# We can get a log per module, for all the dependencies that were found, but its messy.
13if '-d' in sys.argv:
14 debug = True
15else:
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
20import importlib 24import importlib
21 25
22core_deps=set(sys.modules) 26core_deps = set(sys.modules)
23 27
24def fix_path(dep_path): 28def 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
48current_module = str(sys.argv[1]).rstrip() 52current_module = str(sys.argv[1]).rstrip()
49if(debug==True): 53if 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)
52try: 56try:
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
65except ImportError as e: 69except 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
72module_deps=set(sys.modules) 76module_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
75if current_module == 'python-core-package': 79if 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
83for item in dif: 87for 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
161if debug==True: 173if 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 @@
1From 9f827c29adbe656af3c8fc963fdd8f47aec0c442 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Tue, 13 Jul 2021 23:19:29 +0100
4Subject: [PATCH] python3: Fix make race
5
6libainstall installs python-config.py but the .pyc cache files are generated
7by the libinstall target. This means some builds may not generate the pyc files
8for python-config.py depending on the order things happen in. This means builds
9are not always reproducible.
10
11Add a dependency to avoid the race.
12
13Upstream-Status: Pending
14Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 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 @@
1From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001
2From: Tyler Hall <tylerwhall@gmail.com>
3Date: Sun, 4 May 2014 20:06:43 -0400
4Subject: [PATCH] python-config: Revert to using distutils.sysconfig
5
6The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
7
812-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig
9
10affect the native runtime as well as cross building. Use the old, patched
11implementation which returns paths in the staging directory and for the target,
12as appropriate.
13
14Upstream-Status: Inappropriate [Embedded Specific]
15
16Signed-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
23diff --git a/Misc/python-config.in b/Misc/python-config.in
24index 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:
16with open(sys.argv[1], 'w') as f: 16with 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 2SKIPPED_TESTS=
3python3 -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'