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-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch1452
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch46
-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.patch31
-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.patch28
-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.patch36
-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-python3-use-cc_basename-to-replace-CC-for-checking-c.patch121
-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.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch33
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch17
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch44
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch43
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch29
-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.patch48
-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.patch32
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py49
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch25
-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.json269
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest4
-rw-r--r--meta/recipes-devtools/python/python3/valid-dists.patch160
41 files changed, 2344 insertions, 1188 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..81a613c151
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
@@ -0,0 +1,30 @@
1From 6b111a328c1c57b1580d63894b2b5d337316f6d4 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 9ec3a71..f7d5382 100644
20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in
22@@ -2578,6 +2578,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-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch b/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch
new file mode 100644
index 0000000000..075737e7d1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch
@@ -0,0 +1,1452 @@
1From db5c5763f3e3172f1dd011355b41469770dafc0f Mon Sep 17 00:00:00 2001
2From: Petr Viktorin <encukou@gmail.com>
3Date: Thu, 28 Nov 2024 13:29:27 +0100
4Subject: [PATCH] gh-127330: Update for OpenSSL 3.4 & document+improve the
5 update process (GH-127331)
6
7- Add `git describe` output to headers generated by `make_ssl_data.py`
8
9 This info is more important than the date when the file was generated.
10 It does mean that the tool now requires a Git checkout of OpenSSL,
11 not for example a release tarball.
12
13- Regenerate the older file to add the info.
14 To the other older file, add a note about manual edits.
15
16- Add notes on how to add a new OpenSSL version
17
18- Add 3.4 error messages and multissl tests
19
20Upstream-Status: Submitted [https://github.com/python/cpython/commit/db5c5763f3e3172f1dd011355b41469770dafc0f]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 Modules/_ssl.c | 2 +-
24 Modules/_ssl_data_111.h | 4 +-
25 Modules/_ssl_data_300.h | 5 +-
26 Modules/{_ssl_data_31.h => _ssl_data_34.h} | 674 ++++++++++++++++++++-
27 Tools/c-analyzer/cpython/_parser.py | 4 +-
28 Tools/ssl/make_ssl_data.py | 34 +-
29 Tools/ssl/multissltests.py | 1 +
30 7 files changed, 714 insertions(+), 10 deletions(-)
31 rename Modules/{_ssl_data_31.h => _ssl_data_34.h} (92%)
32
33diff --git a/Modules/_ssl.c b/Modules/_ssl.c
34index b6b5ebf094c..e5b8bf21002 100644
35--- a/Modules/_ssl.c
36+++ b/Modules/_ssl.c
37@@ -121,7 +121,7 @@ static void _PySSLFixErrno(void) {
38
39 /* Include generated data (error codes) */
40 #if (OPENSSL_VERSION_NUMBER >= 0x30100000L)
41-#include "_ssl_data_31.h"
42+#include "_ssl_data_34.h"
43 #elif (OPENSSL_VERSION_NUMBER >= 0x30000000L)
44 #include "_ssl_data_300.h"
45 #elif (OPENSSL_VERSION_NUMBER >= 0x10101000L)
46diff --git a/Modules/_ssl_data_111.h b/Modules/_ssl_data_111.h
47index 093c786e6a2..061fac2bd58 100644
48--- a/Modules/_ssl_data_111.h
49+++ b/Modules/_ssl_data_111.h
50@@ -1,4 +1,6 @@
51-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T02:58:04.081473 */
52+/* File generated by Tools/ssl/make_ssl_data.py */
53+/* Generated on 2024-11-27T12:48:46.194048+00:00 */
54+/* Generated from Git commit OpenSSL_1_1_1w-0-ge04bd3433f */
55 static struct py_ssl_library_code library_codes[] = {
56 #ifdef ERR_LIB_ASN1
57 {"ASN1", ERR_LIB_ASN1},
58diff --git a/Modules/_ssl_data_300.h b/Modules/_ssl_data_300.h
59index dc66731f6b6..b687ce43c77 100644
60--- a/Modules/_ssl_data_300.h
61+++ b/Modules/_ssl_data_300.h
62@@ -1,4 +1,7 @@
63-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:03:52.163218 */
64+/* File generated by Tools/ssl/make_ssl_data.py */
65+/* Generated on 2023-06-01T03:03:52.163218 */
66+/* Manually edited to add definitions from 1.1.1 (GH-105174) */
67+
68 static struct py_ssl_library_code library_codes[] = {
69 #ifdef ERR_LIB_ASN1
70 {"ASN1", ERR_LIB_ASN1},
71diff --git a/Modules/_ssl_data_31.h b/Modules/_ssl_data_34.h
72similarity index 92%
73rename from Modules/_ssl_data_31.h
74rename to Modules/_ssl_data_34.h
75index c589c501f4e..d4af3e1c1fa 100644
76--- a/Modules/_ssl_data_31.h
77+++ b/Modules/_ssl_data_34.h
78@@ -1,4 +1,6 @@
79-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:04:00.275280 */
80+/* File generated by Tools/ssl/make_ssl_data.py */
81+/* Generated on 2024-11-27T12:35:52.276767+00:00 */
82+/* Generated from Git commit openssl-3.4.0-0-g98acb6b028 */
83 static struct py_ssl_library_code library_codes[] = {
84 #ifdef ERR_LIB_ASN1
85 {"ASN1", ERR_LIB_ASN1},
86@@ -300,6 +302,11 @@ static struct py_ssl_error_code error_codes[] = {
87 #else
88 {"FIRST_NUM_TOO_LARGE", 13, 122},
89 #endif
90+ #ifdef ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT
91+ {"GENERALIZEDTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT},
92+ #else
93+ {"GENERALIZEDTIME_IS_TOO_SHORT", 13, 232},
94+ #endif
95 #ifdef ASN1_R_HEADER_TOO_LONG
96 {"HEADER_TOO_LONG", ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG},
97 #else
98@@ -730,6 +737,11 @@ static struct py_ssl_error_code error_codes[] = {
99 #else
100 {"UNSUPPORTED_TYPE", 13, 196},
101 #endif
102+ #ifdef ASN1_R_UTCTIME_IS_TOO_SHORT
103+ {"UTCTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_UTCTIME_IS_TOO_SHORT},
104+ #else
105+ {"UTCTIME_IS_TOO_SHORT", 13, 233},
106+ #endif
107 #ifdef ASN1_R_WRONG_INTEGER_TYPE
108 {"WRONG_INTEGER_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_INTEGER_TYPE},
109 #else
110@@ -845,6 +857,11 @@ static struct py_ssl_error_code error_codes[] = {
111 #else
112 {"LISTEN_V6_ONLY", 32, 136},
113 #endif
114+ #ifdef BIO_R_LOCAL_ADDR_NOT_AVAILABLE
115+ {"LOCAL_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_LOCAL_ADDR_NOT_AVAILABLE},
116+ #else
117+ {"LOCAL_ADDR_NOT_AVAILABLE", 32, 111},
118+ #endif
119 #ifdef BIO_R_LOOKUP_RETURNED_NOTHING
120 {"LOOKUP_RETURNED_NOTHING", ERR_LIB_BIO, BIO_R_LOOKUP_RETURNED_NOTHING},
121 #else
122@@ -860,6 +877,11 @@ static struct py_ssl_error_code error_codes[] = {
123 #else
124 {"NBIO_CONNECT_ERROR", 32, 110},
125 #endif
126+ #ifdef BIO_R_NON_FATAL
127+ {"NON_FATAL", ERR_LIB_BIO, BIO_R_NON_FATAL},
128+ #else
129+ {"NON_FATAL", 32, 112},
130+ #endif
131 #ifdef BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED
132 {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED},
133 #else
134@@ -880,6 +902,26 @@ static struct py_ssl_error_code error_codes[] = {
135 #else
136 {"NO_SUCH_FILE", 32, 128},
137 #endif
138+ #ifdef BIO_R_PEER_ADDR_NOT_AVAILABLE
139+ {"PEER_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_PEER_ADDR_NOT_AVAILABLE},
140+ #else
141+ {"PEER_ADDR_NOT_AVAILABLE", 32, 114},
142+ #endif
143+ #ifdef BIO_R_PORT_MISMATCH
144+ {"PORT_MISMATCH", ERR_LIB_BIO, BIO_R_PORT_MISMATCH},
145+ #else
146+ {"PORT_MISMATCH", 32, 150},
147+ #endif
148+ #ifdef BIO_R_TFO_DISABLED
149+ {"TFO_DISABLED", ERR_LIB_BIO, BIO_R_TFO_DISABLED},
150+ #else
151+ {"TFO_DISABLED", 32, 106},
152+ #endif
153+ #ifdef BIO_R_TFO_NO_KERNEL_SUPPORT
154+ {"TFO_NO_KERNEL_SUPPORT", ERR_LIB_BIO, BIO_R_TFO_NO_KERNEL_SUPPORT},
155+ #else
156+ {"TFO_NO_KERNEL_SUPPORT", 32, 108},
157+ #endif
158 #ifdef BIO_R_TRANSFER_ERROR
159 {"TRANSFER_ERROR", ERR_LIB_BIO, BIO_R_TRANSFER_ERROR},
160 #else
161@@ -920,6 +962,11 @@ static struct py_ssl_error_code error_codes[] = {
162 #else
163 {"UNABLE_TO_REUSEADDR", 32, 139},
164 #endif
165+ #ifdef BIO_R_UNABLE_TO_TFO
166+ {"UNABLE_TO_TFO", ERR_LIB_BIO, BIO_R_UNABLE_TO_TFO},
167+ #else
168+ {"UNABLE_TO_TFO", 32, 109},
169+ #endif
170 #ifdef BIO_R_UNAVAILABLE_IP_FAMILY
171 {"UNAVAILABLE_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNAVAILABLE_IP_FAMILY},
172 #else
173@@ -1230,6 +1277,11 @@ static struct py_ssl_error_code error_codes[] = {
174 #else
175 {"ERROR_VALIDATING_SIGNATURE", 58, 171},
176 #endif
177+ #ifdef CMP_R_EXPECTED_POLLREQ
178+ {"EXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_EXPECTED_POLLREQ},
179+ #else
180+ {"EXPECTED_POLLREQ", 58, 104},
181+ #endif
182 #ifdef CMP_R_FAILED_BUILDING_OWN_CHAIN
183 {"FAILED_BUILDING_OWN_CHAIN", ERR_LIB_CMP, CMP_R_FAILED_BUILDING_OWN_CHAIN},
184 #else
185@@ -1250,16 +1302,51 @@ static struct py_ssl_error_code error_codes[] = {
186 #else
187 {"FAIL_INFO_OUT_OF_RANGE", 58, 129},
188 #endif
189+ #ifdef CMP_R_GENERATE_CERTREQTEMPLATE
190+ {"GENERATE_CERTREQTEMPLATE", ERR_LIB_CMP, CMP_R_GENERATE_CERTREQTEMPLATE},
191+ #else
192+ {"GENERATE_CERTREQTEMPLATE", 58, 197},
193+ #endif
194+ #ifdef CMP_R_GENERATE_CRLSTATUS
195+ {"GENERATE_CRLSTATUS", ERR_LIB_CMP, CMP_R_GENERATE_CRLSTATUS},
196+ #else
197+ {"GENERATE_CRLSTATUS", 58, 198},
198+ #endif
199+ #ifdef CMP_R_GETTING_GENP
200+ {"GETTING_GENP", ERR_LIB_CMP, CMP_R_GETTING_GENP},
201+ #else
202+ {"GETTING_GENP", 58, 192},
203+ #endif
204+ #ifdef CMP_R_GET_ITAV
205+ {"GET_ITAV", ERR_LIB_CMP, CMP_R_GET_ITAV},
206+ #else
207+ {"GET_ITAV", 58, 199},
208+ #endif
209 #ifdef CMP_R_INVALID_ARGS
210 {"INVALID_ARGS", ERR_LIB_CMP, CMP_R_INVALID_ARGS},
211 #else
212 {"INVALID_ARGS", 58, 100},
213 #endif
214+ #ifdef CMP_R_INVALID_GENP
215+ {"INVALID_GENP", ERR_LIB_CMP, CMP_R_INVALID_GENP},
216+ #else
217+ {"INVALID_GENP", 58, 193},
218+ #endif
219+ #ifdef CMP_R_INVALID_KEYSPEC
220+ {"INVALID_KEYSPEC", ERR_LIB_CMP, CMP_R_INVALID_KEYSPEC},
221+ #else
222+ {"INVALID_KEYSPEC", 58, 202},
223+ #endif
224 #ifdef CMP_R_INVALID_OPTION
225 {"INVALID_OPTION", ERR_LIB_CMP, CMP_R_INVALID_OPTION},
226 #else
227 {"INVALID_OPTION", 58, 174},
228 #endif
229+ #ifdef CMP_R_INVALID_ROOTCAKEYUPDATE
230+ {"INVALID_ROOTCAKEYUPDATE", ERR_LIB_CMP, CMP_R_INVALID_ROOTCAKEYUPDATE},
231+ #else
232+ {"INVALID_ROOTCAKEYUPDATE", 58, 195},
233+ #endif
234 #ifdef CMP_R_MISSING_CERTID
235 {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
236 #else
237@@ -1425,6 +1512,21 @@ static struct py_ssl_error_code error_codes[] = {
238 #else
239 {"TRANSFER_ERROR", 58, 159},
240 #endif
241+ #ifdef CMP_R_UNCLEAN_CTX
242+ {"UNCLEAN_CTX", ERR_LIB_CMP, CMP_R_UNCLEAN_CTX},
243+ #else
244+ {"UNCLEAN_CTX", 58, 191},
245+ #endif
246+ #ifdef CMP_R_UNEXPECTED_CERTPROFILE
247+ {"UNEXPECTED_CERTPROFILE", ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE},
248+ #else
249+ {"UNEXPECTED_CERTPROFILE", 58, 196},
250+ #endif
251+ #ifdef CMP_R_UNEXPECTED_CRLSTATUSLIST
252+ {"UNEXPECTED_CRLSTATUSLIST", ERR_LIB_CMP, CMP_R_UNEXPECTED_CRLSTATUSLIST},
253+ #else
254+ {"UNEXPECTED_CRLSTATUSLIST", 58, 201},
255+ #endif
256 #ifdef CMP_R_UNEXPECTED_PKIBODY
257 {"UNEXPECTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKIBODY},
258 #else
259@@ -1435,11 +1537,21 @@ static struct py_ssl_error_code error_codes[] = {
260 #else
261 {"UNEXPECTED_PKISTATUS", 58, 185},
262 #endif
263+ #ifdef CMP_R_UNEXPECTED_POLLREQ
264+ {"UNEXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_UNEXPECTED_POLLREQ},
265+ #else
266+ {"UNEXPECTED_POLLREQ", 58, 105},
267+ #endif
268 #ifdef CMP_R_UNEXPECTED_PVNO
269 {"UNEXPECTED_PVNO", ERR_LIB_CMP, CMP_R_UNEXPECTED_PVNO},
270 #else
271 {"UNEXPECTED_PVNO", 58, 153},
272 #endif
273+ #ifdef CMP_R_UNEXPECTED_SENDER
274+ {"UNEXPECTED_SENDER", ERR_LIB_CMP, CMP_R_UNEXPECTED_SENDER},
275+ #else
276+ {"UNEXPECTED_SENDER", 58, 106},
277+ #endif
278 #ifdef CMP_R_UNKNOWN_ALGORITHM_ID
279 {"UNKNOWN_ALGORITHM_ID", ERR_LIB_CMP, CMP_R_UNKNOWN_ALGORITHM_ID},
280 #else
281@@ -1450,6 +1562,11 @@ static struct py_ssl_error_code error_codes[] = {
282 #else
283 {"UNKNOWN_CERT_TYPE", 58, 135},
284 #endif
285+ #ifdef CMP_R_UNKNOWN_CRL_ISSUER
286+ {"UNKNOWN_CRL_ISSUER", ERR_LIB_CMP, CMP_R_UNKNOWN_CRL_ISSUER},
287+ #else
288+ {"UNKNOWN_CRL_ISSUER", 58, 200},
289+ #endif
290 #ifdef CMP_R_UNKNOWN_PKISTATUS
291 {"UNKNOWN_PKISTATUS", ERR_LIB_CMP, CMP_R_UNKNOWN_PKISTATUS},
292 #else
293@@ -1465,6 +1582,11 @@ static struct py_ssl_error_code error_codes[] = {
294 #else
295 {"UNSUPPORTED_KEY_TYPE", 58, 137},
296 #endif
297+ #ifdef CMP_R_UNSUPPORTED_PKIBODY
298+ {"UNSUPPORTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PKIBODY},
299+ #else
300+ {"UNSUPPORTED_PKIBODY", 58, 101},
301+ #endif
302 #ifdef CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC
303 {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC},
304 #else
305@@ -1825,6 +1947,11 @@ static struct py_ssl_error_code error_codes[] = {
306 #else
307 {"NO_SIGNERS", 46, 135},
308 #endif
309+ #ifdef CMS_R_OPERATION_UNSUPPORTED
310+ {"OPERATION_UNSUPPORTED", ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED},
311+ #else
312+ {"OPERATION_UNSUPPORTED", 46, 182},
313+ #endif
314 #ifdef CMS_R_PEER_KEY_ERROR
315 {"PEER_KEY_ERROR", ERR_LIB_CMS, CMS_R_PEER_KEY_ERROR},
316 #else
317@@ -1960,6 +2087,11 @@ static struct py_ssl_error_code error_codes[] = {
318 #else
319 {"UNSUPPORTED_RECIPIENT_TYPE", 46, 154},
320 #endif
321+ #ifdef CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM
322+ {"UNSUPPORTED_SIGNATURE_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM},
323+ #else
324+ {"UNSUPPORTED_SIGNATURE_ALGORITHM", 46, 195},
325+ #endif
326 #ifdef CMS_R_UNSUPPORTED_TYPE
327 {"UNSUPPORTED_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_TYPE},
328 #else
329@@ -1985,6 +2117,31 @@ static struct py_ssl_error_code error_codes[] = {
330 #else
331 {"WRAP_ERROR", 46, 159},
332 #endif
333+ #ifdef COMP_R_BROTLI_DECODE_ERROR
334+ {"BROTLI_DECODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_DECODE_ERROR},
335+ #else
336+ {"BROTLI_DECODE_ERROR", 41, 102},
337+ #endif
338+ #ifdef COMP_R_BROTLI_DEFLATE_ERROR
339+ {"BROTLI_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_DEFLATE_ERROR},
340+ #else
341+ {"BROTLI_DEFLATE_ERROR", 41, 103},
342+ #endif
343+ #ifdef COMP_R_BROTLI_ENCODE_ERROR
344+ {"BROTLI_ENCODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_ENCODE_ERROR},
345+ #else
346+ {"BROTLI_ENCODE_ERROR", 41, 106},
347+ #endif
348+ #ifdef COMP_R_BROTLI_INFLATE_ERROR
349+ {"BROTLI_INFLATE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_INFLATE_ERROR},
350+ #else
351+ {"BROTLI_INFLATE_ERROR", 41, 104},
352+ #endif
353+ #ifdef COMP_R_BROTLI_NOT_SUPPORTED
354+ {"BROTLI_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_BROTLI_NOT_SUPPORTED},
355+ #else
356+ {"BROTLI_NOT_SUPPORTED", 41, 105},
357+ #endif
358 #ifdef COMP_R_ZLIB_DEFLATE_ERROR
359 {"ZLIB_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_DEFLATE_ERROR},
360 #else
361@@ -2000,6 +2157,26 @@ static struct py_ssl_error_code error_codes[] = {
362 #else
363 {"ZLIB_NOT_SUPPORTED", 41, 101},
364 #endif
365+ #ifdef COMP_R_ZSTD_COMPRESS_ERROR
366+ {"ZSTD_COMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_COMPRESS_ERROR},
367+ #else
368+ {"ZSTD_COMPRESS_ERROR", 41, 107},
369+ #endif
370+ #ifdef COMP_R_ZSTD_DECODE_ERROR
371+ {"ZSTD_DECODE_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECODE_ERROR},
372+ #else
373+ {"ZSTD_DECODE_ERROR", 41, 108},
374+ #endif
375+ #ifdef COMP_R_ZSTD_DECOMPRESS_ERROR
376+ {"ZSTD_DECOMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECOMPRESS_ERROR},
377+ #else
378+ {"ZSTD_DECOMPRESS_ERROR", 41, 109},
379+ #endif
380+ #ifdef COMP_R_ZSTD_NOT_SUPPORTED
381+ {"ZSTD_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_ZSTD_NOT_SUPPORTED},
382+ #else
383+ {"ZSTD_NOT_SUPPORTED", 41, 110},
384+ #endif
385 #ifdef CONF_R_ERROR_LOADING_DSO
386 {"ERROR_LOADING_DSO", ERR_LIB_CONF, CONF_R_ERROR_LOADING_DSO},
387 #else
388@@ -2085,6 +2262,11 @@ static struct py_ssl_error_code error_codes[] = {
389 #else
390 {"RECURSIVE_DIRECTORY_INCLUDE", 14, 111},
391 #endif
392+ #ifdef CONF_R_RECURSIVE_SECTION_REFERENCE
393+ {"RECURSIVE_SECTION_REFERENCE", ERR_LIB_CONF, CONF_R_RECURSIVE_SECTION_REFERENCE},
394+ #else
395+ {"RECURSIVE_SECTION_REFERENCE", 14, 126},
396+ #endif
397 #ifdef CONF_R_RELATIVE_PATH
398 {"RELATIVE_PATH", ERR_LIB_CONF, CONF_R_RELATIVE_PATH},
399 #else
400@@ -2370,6 +2552,11 @@ static struct py_ssl_error_code error_codes[] = {
401 #else
402 {"TOO_MANY_BYTES", 15, 113},
403 #endif
404+ #ifdef CRYPTO_R_TOO_MANY_NAMES
405+ {"TOO_MANY_NAMES", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_NAMES},
406+ #else
407+ {"TOO_MANY_NAMES", 15, 132},
408+ #endif
409 #ifdef CRYPTO_R_TOO_MANY_RECORDS
410 {"TOO_MANY_RECORDS", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS},
411 #else
412@@ -2560,6 +2747,11 @@ static struct py_ssl_error_code error_codes[] = {
413 #else
414 {"INVALID_SECRET", 5, 128},
415 #endif
416+ #ifdef DH_R_INVALID_SIZE
417+ {"INVALID_SIZE", ERR_LIB_DH, DH_R_INVALID_SIZE},
418+ #else
419+ {"INVALID_SIZE", 5, 129},
420+ #endif
421 #ifdef DH_R_KDF_PARAMETER_ERROR
422 {"KDF_PARAMETER_ERROR", ERR_LIB_DH, DH_R_KDF_PARAMETER_ERROR},
423 #else
424@@ -2610,6 +2802,11 @@ static struct py_ssl_error_code error_codes[] = {
425 #else
426 {"PEER_KEY_ERROR", 5, 111},
427 #endif
428+ #ifdef DH_R_Q_TOO_LARGE
429+ {"Q_TOO_LARGE", ERR_LIB_DH, DH_R_Q_TOO_LARGE},
430+ #else
431+ {"Q_TOO_LARGE", 5, 130},
432+ #endif
433 #ifdef DH_R_SHARED_INFO_ERROR
434 {"SHARED_INFO_ERROR", ERR_LIB_DH, DH_R_SHARED_INFO_ERROR},
435 #else
436@@ -3545,6 +3742,11 @@ static struct py_ssl_error_code error_codes[] = {
437 #else
438 {"GENERATE_ERROR", 6, 214},
439 #endif
440+ #ifdef EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED
441+ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED},
442+ #else
443+ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", 6, 229},
444+ #endif
445 #ifdef EVP_R_GET_RAW_KEY_FAILED
446 {"GET_RAW_KEY_FAILED", ERR_LIB_EVP, EVP_R_GET_RAW_KEY_FAILED},
447 #else
448@@ -3745,6 +3947,11 @@ static struct py_ssl_error_code error_codes[] = {
449 #else
450 {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 6, 150},
451 #endif
452+ #ifdef EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE
453+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE},
454+ #else
455+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", 6, 226},
456+ #endif
457 #ifdef EVP_R_OUTPUT_WOULD_OVERFLOW
458 {"OUTPUT_WOULD_OVERFLOW", ERR_LIB_EVP, EVP_R_OUTPUT_WOULD_OVERFLOW},
459 #else
460@@ -3795,6 +4002,11 @@ static struct py_ssl_error_code error_codes[] = {
461 #else
462 {"SET_DEFAULT_PROPERTY_FAILURE", 6, 209},
463 #endif
464+ #ifdef EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE
465+ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", ERR_LIB_EVP, EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE},
466+ #else
467+ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", 6, 228},
468+ #endif
469 #ifdef EVP_R_TOO_MANY_RECORDS
470 {"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS},
471 #else
472@@ -3825,6 +4037,11 @@ static struct py_ssl_error_code error_codes[] = {
473 #else
474 {"UNABLE_TO_SET_CALLBACKS", 6, 217},
475 #endif
476+ #ifdef EVP_R_UNKNOWN_BITS
477+ {"UNKNOWN_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_BITS},
478+ #else
479+ {"UNKNOWN_BITS", 6, 166},
480+ #endif
481 #ifdef EVP_R_UNKNOWN_CIPHER
482 {"UNKNOWN_CIPHER", ERR_LIB_EVP, EVP_R_UNKNOWN_CIPHER},
483 #else
484@@ -3840,6 +4057,11 @@ static struct py_ssl_error_code error_codes[] = {
485 #else
486 {"UNKNOWN_KEY_TYPE", 6, 207},
487 #endif
488+ #ifdef EVP_R_UNKNOWN_MAX_SIZE
489+ {"UNKNOWN_MAX_SIZE", ERR_LIB_EVP, EVP_R_UNKNOWN_MAX_SIZE},
490+ #else
491+ {"UNKNOWN_MAX_SIZE", 6, 167},
492+ #endif
493 #ifdef EVP_R_UNKNOWN_OPTION
494 {"UNKNOWN_OPTION", ERR_LIB_EVP, EVP_R_UNKNOWN_OPTION},
495 #else
496@@ -3850,6 +4072,11 @@ static struct py_ssl_error_code error_codes[] = {
497 #else
498 {"UNKNOWN_PBE_ALGORITHM", 6, 121},
499 #endif
500+ #ifdef EVP_R_UNKNOWN_SECURITY_BITS
501+ {"UNKNOWN_SECURITY_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_SECURITY_BITS},
502+ #else
503+ {"UNKNOWN_SECURITY_BITS", 6, 168},
504+ #endif
505 #ifdef EVP_R_UNSUPPORTED_ALGORITHM
506 {"UNSUPPORTED_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_ALGORITHM},
507 #else
508@@ -4040,6 +4267,11 @@ static struct py_ssl_error_code error_codes[] = {
509 #else
510 {"RESPONSE_PARSE_ERROR", 61, 104},
511 #endif
512+ #ifdef HTTP_R_RESPONSE_TOO_MANY_HDRLINES
513+ {"RESPONSE_TOO_MANY_HDRLINES", ERR_LIB_HTTP, HTTP_R_RESPONSE_TOO_MANY_HDRLINES},
514+ #else
515+ {"RESPONSE_TOO_MANY_HDRLINES", 61, 130},
516+ #endif
517 #ifdef HTTP_R_RETRY_TIMEOUT
518 {"RETRY_TIMEOUT", ERR_LIB_HTTP, HTTP_R_RETRY_TIMEOUT},
519 #else
520@@ -4530,6 +4762,11 @@ static struct py_ssl_error_code error_codes[] = {
521 #else
522 {"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110},
523 #endif
524+ #ifdef PKCS12_R_CALLBACK_FAILED
525+ {"CALLBACK_FAILED", ERR_LIB_PKCS12, PKCS12_R_CALLBACK_FAILED},
526+ #else
527+ {"CALLBACK_FAILED", 35, 115},
528+ #endif
529 #ifdef PKCS12_R_CANT_PACK_STRUCTURE
530 {"CANT_PACK_STRUCTURE", ERR_LIB_PKCS12, PKCS12_R_CANT_PACK_STRUCTURE},
531 #else
532@@ -4920,6 +5157,11 @@ static struct py_ssl_error_code error_codes[] = {
533 #else
534 {"CIPHER_OPERATION_FAILED", 57, 102},
535 #endif
536+ #ifdef PROV_R_COFACTOR_REQUIRED
537+ {"COFACTOR_REQUIRED", ERR_LIB_PROV, PROV_R_COFACTOR_REQUIRED},
538+ #else
539+ {"COFACTOR_REQUIRED", 57, 236},
540+ #endif
541 #ifdef PROV_R_DERIVATION_FUNCTION_INIT_FAILED
542 {"DERIVATION_FUNCTION_INIT_FAILED", ERR_LIB_PROV, PROV_R_DERIVATION_FUNCTION_INIT_FAILED},
543 #else
544@@ -4935,6 +5177,11 @@ static struct py_ssl_error_code error_codes[] = {
545 #else
546 {"EMS_NOT_ENABLED", 57, 233},
547 #endif
548+ #ifdef PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS
549+ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS},
550+ #else
551+ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", 57, 244},
552+ #endif
553 #ifdef PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK
554 {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK},
555 #else
556@@ -4990,6 +5237,11 @@ static struct py_ssl_error_code error_codes[] = {
557 #else
558 {"FAILED_TO_SIGN", 57, 175},
559 #endif
560+ #ifdef PROV_R_FINAL_CALL_OUT_OF_ORDER
561+ {"FINAL_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_FINAL_CALL_OUT_OF_ORDER},
562+ #else
563+ {"FINAL_CALL_OUT_OF_ORDER", 57, 237},
564+ #endif
565 #ifdef PROV_R_FIPS_MODULE_CONDITIONAL_ERROR
566 {"FIPS_MODULE_CONDITIONAL_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_CONDITIONAL_ERROR},
567 #else
568@@ -5020,6 +5272,11 @@ static struct py_ssl_error_code error_codes[] = {
569 #else
570 {"INDICATOR_INTEGRITY_FAILURE", 57, 210},
571 #endif
572+ #ifdef PROV_R_INIT_CALL_OUT_OF_ORDER
573+ {"INIT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_INIT_CALL_OUT_OF_ORDER},
574+ #else
575+ {"INIT_CALL_OUT_OF_ORDER", 57, 238},
576+ #endif
577 #ifdef PROV_R_INSUFFICIENT_DRBG_STRENGTH
578 {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_PROV, PROV_R_INSUFFICIENT_DRBG_STRENGTH},
579 #else
580@@ -5030,6 +5287,11 @@ static struct py_ssl_error_code error_codes[] = {
581 #else
582 {"INVALID_AAD", 57, 108},
583 #endif
584+ #ifdef PROV_R_INVALID_AEAD
585+ {"INVALID_AEAD", ERR_LIB_PROV, PROV_R_INVALID_AEAD},
586+ #else
587+ {"INVALID_AEAD", 57, 231},
588+ #endif
589 #ifdef PROV_R_INVALID_CONFIG_DATA
590 {"INVALID_CONFIG_DATA", ERR_LIB_PROV, PROV_R_INVALID_CONFIG_DATA},
591 #else
592@@ -5070,6 +5332,11 @@ static struct py_ssl_error_code error_codes[] = {
593 #else
594 {"INVALID_DIGEST_SIZE", 57, 218},
595 #endif
596+ #ifdef PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION
597+ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", ERR_LIB_PROV, PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION},
598+ #else
599+ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", 57, 243},
600+ #endif
601 #ifdef PROV_R_INVALID_INPUT_LENGTH
602 {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INPUT_LENGTH},
603 #else
604@@ -5085,6 +5352,11 @@ static struct py_ssl_error_code error_codes[] = {
605 #else
606 {"INVALID_IV_LENGTH", 57, 109},
607 #endif
608+ #ifdef PROV_R_INVALID_KDF
609+ {"INVALID_KDF", ERR_LIB_PROV, PROV_R_INVALID_KDF},
610+ #else
611+ {"INVALID_KDF", 57, 232},
612+ #endif
613 #ifdef PROV_R_INVALID_KEY
614 {"INVALID_KEY", ERR_LIB_PROV, PROV_R_INVALID_KEY},
615 #else
616@@ -5100,6 +5372,11 @@ static struct py_ssl_error_code error_codes[] = {
617 #else
618 {"INVALID_MAC", 57, 151},
619 #endif
620+ #ifdef PROV_R_INVALID_MEMORY_SIZE
621+ {"INVALID_MEMORY_SIZE", ERR_LIB_PROV, PROV_R_INVALID_MEMORY_SIZE},
622+ #else
623+ {"INVALID_MEMORY_SIZE", 57, 235},
624+ #endif
625 #ifdef PROV_R_INVALID_MGF1_MD
626 {"INVALID_MGF1_MD", ERR_LIB_PROV, PROV_R_INVALID_MGF1_MD},
627 #else
628@@ -5120,6 +5397,11 @@ static struct py_ssl_error_code error_codes[] = {
629 #else
630 {"INVALID_PADDING_MODE", 57, 168},
631 #endif
632+ #ifdef PROV_R_INVALID_PREHASHED_DIGEST_LENGTH
633+ {"INVALID_PREHASHED_DIGEST_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_PREHASHED_DIGEST_LENGTH},
634+ #else
635+ {"INVALID_PREHASHED_DIGEST_LENGTH", 57, 241},
636+ #endif
637 #ifdef PROV_R_INVALID_PUBINFO
638 {"INVALID_PUBINFO", ERR_LIB_PROV, PROV_R_INVALID_PUBINFO},
639 #else
640@@ -5155,6 +5437,11 @@ static struct py_ssl_error_code error_codes[] = {
641 #else
642 {"INVALID_TAG_LENGTH", 57, 118},
643 #endif
644+ #ifdef PROV_R_INVALID_THREAD_POOL_SIZE
645+ {"INVALID_THREAD_POOL_SIZE", ERR_LIB_PROV, PROV_R_INVALID_THREAD_POOL_SIZE},
646+ #else
647+ {"INVALID_THREAD_POOL_SIZE", 57, 234},
648+ #endif
649 #ifdef PROV_R_INVALID_UKM_LENGTH
650 {"INVALID_UKM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_UKM_LENGTH},
651 #else
652@@ -5300,6 +5587,11 @@ static struct py_ssl_error_code error_codes[] = {
653 #else
654 {"NOT_XOF_OR_INVALID_LENGTH", 57, 113},
655 #endif
656+ #ifdef PROV_R_NO_INSTANCE_ALLOWED
657+ {"NO_INSTANCE_ALLOWED", ERR_LIB_PROV, PROV_R_NO_INSTANCE_ALLOWED},
658+ #else
659+ {"NO_INSTANCE_ALLOWED", 57, 242},
660+ #endif
661 #ifdef PROV_R_NO_KEY_SET
662 {"NO_KEY_SET", ERR_LIB_PROV, PROV_R_NO_KEY_SET},
663 #else
664@@ -5310,6 +5602,11 @@ static struct py_ssl_error_code error_codes[] = {
665 #else
666 {"NO_PARAMETERS_SET", 57, 177},
667 #endif
668+ #ifdef PROV_R_ONESHOT_CALL_OUT_OF_ORDER
669+ {"ONESHOT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_ONESHOT_CALL_OUT_OF_ORDER},
670+ #else
671+ {"ONESHOT_CALL_OUT_OF_ORDER", 57, 239},
672+ #endif
673 #ifdef PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
674 {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
675 #else
676@@ -5460,6 +5757,11 @@ static struct py_ssl_error_code error_codes[] = {
677 #else
678 {"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152},
679 #endif
680+ #ifdef PROV_R_UPDATE_CALL_OUT_OF_ORDER
681+ {"UPDATE_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_UPDATE_CALL_OUT_OF_ORDER},
682+ #else
683+ {"UPDATE_CALL_OUT_OF_ORDER", 57, 240},
684+ #endif
685 #ifdef PROV_R_URI_AUTHORITY_UNSUPPORTED
686 {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_PROV, PROV_R_URI_AUTHORITY_UNSUPPORTED},
687 #else
688@@ -5595,6 +5897,11 @@ static struct py_ssl_error_code error_codes[] = {
689 #else
690 {"INTERNAL_ERROR", 36, 113},
691 #endif
692+ #ifdef RAND_R_INVALID_PROPERTY_QUERY
693+ {"INVALID_PROPERTY_QUERY", ERR_LIB_RAND, RAND_R_INVALID_PROPERTY_QUERY},
694+ #else
695+ {"INVALID_PROPERTY_QUERY", 36, 137},
696+ #endif
697 #ifdef RAND_R_IN_ERROR_STATE
698 {"IN_ERROR_STATE", ERR_LIB_RAND, RAND_R_IN_ERROR_STATE},
699 #else
700@@ -6210,6 +6517,11 @@ static struct py_ssl_error_code error_codes[] = {
701 #else
702 {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", 20, 158},
703 #endif
704+ #ifdef SSL_R_BAD_CERTIFICATE
705+ {"BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_BAD_CERTIFICATE},
706+ #else
707+ {"BAD_CERTIFICATE", 20, 348},
708+ #endif
709 #ifdef SSL_R_BAD_CHANGE_CIPHER_SPEC
710 {"BAD_CHANGE_CIPHER_SPEC", ERR_LIB_SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC},
711 #else
712@@ -6220,6 +6532,11 @@ static struct py_ssl_error_code error_codes[] = {
713 #else
714 {"BAD_CIPHER", 20, 186},
715 #endif
716+ #ifdef SSL_R_BAD_COMPRESSION_ALGORITHM
717+ {"BAD_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_BAD_COMPRESSION_ALGORITHM},
718+ #else
719+ {"BAD_COMPRESSION_ALGORITHM", 20, 326},
720+ #endif
721 #ifdef SSL_R_BAD_DATA
722 {"BAD_DATA", ERR_LIB_SSL, SSL_R_BAD_DATA},
723 #else
724@@ -6495,6 +6812,11 @@ static struct py_ssl_error_code error_codes[] = {
725 #else
726 {"CONNECTION_TYPE_NOT_SET", 20, 144},
727 #endif
728+ #ifdef SSL_R_CONN_USE_ONLY
729+ {"CONN_USE_ONLY", ERR_LIB_SSL, SSL_R_CONN_USE_ONLY},
730+ #else
731+ {"CONN_USE_ONLY", 20, 356},
732+ #endif
733 #ifdef SSL_R_CONTEXT_NOT_DANE_ENABLED
734 {"CONTEXT_NOT_DANE_ENABLED", ERR_LIB_SSL, SSL_R_CONTEXT_NOT_DANE_ENABLED},
735 #else
736@@ -6635,6 +6957,11 @@ static struct py_ssl_error_code error_codes[] = {
737 #else
738 {"EE_KEY_TOO_SMALL", 20, 399},
739 #endif
740+ #ifdef SSL_R_EMPTY_RAW_PUBLIC_KEY
741+ {"EMPTY_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_EMPTY_RAW_PUBLIC_KEY},
742+ #else
743+ {"EMPTY_RAW_PUBLIC_KEY", 20, 349},
744+ #endif
745 #ifdef SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST
746 {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST},
747 #else
748@@ -6650,6 +6977,11 @@ static struct py_ssl_error_code error_codes[] = {
749 #else
750 {"ERROR_IN_RECEIVED_CIPHER_LIST", 20, 151},
751 #endif
752+ #ifdef SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG
753+ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", ERR_LIB_SSL, SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG},
754+ #else
755+ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", 20, 419},
756+ #endif
757 #ifdef SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN
758 {"ERROR_SETTING_TLSA_BASE_DOMAIN", ERR_LIB_SSL, SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN},
759 #else
760@@ -6680,11 +7012,26 @@ static struct py_ssl_error_code error_codes[] = {
761 #else
762 {"EXT_LENGTH_MISMATCH", 20, 163},
763 #endif
764+ #ifdef SSL_R_FAILED_TO_GET_PARAMETER
765+ {"FAILED_TO_GET_PARAMETER", ERR_LIB_SSL, SSL_R_FAILED_TO_GET_PARAMETER},
766+ #else
767+ {"FAILED_TO_GET_PARAMETER", 20, 316},
768+ #endif
769 #ifdef SSL_R_FAILED_TO_INIT_ASYNC
770 {"FAILED_TO_INIT_ASYNC", ERR_LIB_SSL, SSL_R_FAILED_TO_INIT_ASYNC},
771 #else
772 {"FAILED_TO_INIT_ASYNC", 20, 405},
773 #endif
774+ #ifdef SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE
775+ {"FEATURE_NEGOTIATION_NOT_COMPLETE", ERR_LIB_SSL, SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE},
776+ #else
777+ {"FEATURE_NEGOTIATION_NOT_COMPLETE", 20, 417},
778+ #endif
779+ #ifdef SSL_R_FEATURE_NOT_RENEGOTIABLE
780+ {"FEATURE_NOT_RENEGOTIABLE", ERR_LIB_SSL, SSL_R_FEATURE_NOT_RENEGOTIABLE},
781+ #else
782+ {"FEATURE_NOT_RENEGOTIABLE", 20, 413},
783+ #endif
784 #ifdef SSL_R_FRAGMENTED_CLIENT_HELLO
785 {"FRAGMENTED_CLIENT_HELLO", ERR_LIB_SSL, SSL_R_FRAGMENTED_CLIENT_HELLO},
786 #else
787@@ -6805,6 +7152,16 @@ static struct py_ssl_error_code error_codes[] = {
788 #else
789 {"INVALID_NULL_CMD_NAME", 20, 385},
790 #endif
791+ #ifdef SSL_R_INVALID_RAW_PUBLIC_KEY
792+ {"INVALID_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_INVALID_RAW_PUBLIC_KEY},
793+ #else
794+ {"INVALID_RAW_PUBLIC_KEY", 20, 350},
795+ #endif
796+ #ifdef SSL_R_INVALID_RECORD
797+ {"INVALID_RECORD", ERR_LIB_SSL, SSL_R_INVALID_RECORD},
798+ #else
799+ {"INVALID_RECORD", 20, 317},
800+ #endif
801 #ifdef SSL_R_INVALID_SEQUENCE_NUMBER
802 {"INVALID_SEQUENCE_NUMBER", ERR_LIB_SSL, SSL_R_INVALID_SEQUENCE_NUMBER},
803 #else
804@@ -6865,6 +7222,11 @@ static struct py_ssl_error_code error_codes[] = {
805 #else
806 {"LIBRARY_HAS_NO_CIPHERS", 20, 161},
807 #endif
808+ #ifdef SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED
809+ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", ERR_LIB_SSL, SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED},
810+ #else
811+ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", 20, 395},
812+ #endif
813 #ifdef SSL_R_MISSING_DSA_SIGNING_CERT
814 {"MISSING_DSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_DSA_SIGNING_CERT},
815 #else
816@@ -6925,6 +7287,11 @@ static struct py_ssl_error_code error_codes[] = {
817 #else
818 {"MISSING_SUPPORTED_GROUPS_EXTENSION", 20, 209},
819 #endif
820+ #ifdef SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION
821+ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION},
822+ #else
823+ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", 20, 420},
824+ #endif
825 #ifdef SSL_R_MISSING_TMP_DH_KEY
826 {"MISSING_TMP_DH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_DH_KEY},
827 #else
828@@ -7065,6 +7432,11 @@ static struct py_ssl_error_code error_codes[] = {
829 #else
830 {"NO_SRTP_PROFILES", 20, 359},
831 #endif
832+ #ifdef SSL_R_NO_STREAM
833+ {"NO_STREAM", ERR_LIB_SSL, SSL_R_NO_STREAM},
834+ #else
835+ {"NO_STREAM", 20, 355},
836+ #endif
837 #ifdef SSL_R_NO_SUITABLE_DIGEST_ALGORITHM
838 {"NO_SUITABLE_DIGEST_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_DIGEST_ALGORITHM},
839 #else
840@@ -7080,6 +7452,11 @@ static struct py_ssl_error_code error_codes[] = {
841 #else
842 {"NO_SUITABLE_KEY_SHARE", 20, 101},
843 #endif
844+ #ifdef SSL_R_NO_SUITABLE_RECORD_LAYER
845+ {"NO_SUITABLE_RECORD_LAYER", ERR_LIB_SSL, SSL_R_NO_SUITABLE_RECORD_LAYER},
846+ #else
847+ {"NO_SUITABLE_RECORD_LAYER", 20, 322},
848+ #endif
849 #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM
850 {"NO_SUITABLE_SIGNATURE_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM},
851 #else
852@@ -7160,6 +7537,11 @@ static struct py_ssl_error_code error_codes[] = {
853 #else
854 {"PIPELINE_FAILURE", 20, 406},
855 #endif
856+ #ifdef SSL_R_POLL_REQUEST_NOT_SUPPORTED
857+ {"POLL_REQUEST_NOT_SUPPORTED", ERR_LIB_SSL, SSL_R_POLL_REQUEST_NOT_SUPPORTED},
858+ #else
859+ {"POLL_REQUEST_NOT_SUPPORTED", 20, 418},
860+ #endif
861 #ifdef SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR
862 {"POST_HANDSHAKE_AUTH_ENCODING_ERR", ERR_LIB_SSL, SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR},
863 #else
864@@ -7190,6 +7572,21 @@ static struct py_ssl_error_code error_codes[] = {
865 #else
866 {"PSK_NO_SERVER_CB", 20, 225},
867 #endif
868+ #ifdef SSL_R_QUIC_HANDSHAKE_LAYER_ERROR
869+ {"QUIC_HANDSHAKE_LAYER_ERROR", ERR_LIB_SSL, SSL_R_QUIC_HANDSHAKE_LAYER_ERROR},
870+ #else
871+ {"QUIC_HANDSHAKE_LAYER_ERROR", 20, 393},
872+ #endif
873+ #ifdef SSL_R_QUIC_NETWORK_ERROR
874+ {"QUIC_NETWORK_ERROR", ERR_LIB_SSL, SSL_R_QUIC_NETWORK_ERROR},
875+ #else
876+ {"QUIC_NETWORK_ERROR", 20, 387},
877+ #endif
878+ #ifdef SSL_R_QUIC_PROTOCOL_ERROR
879+ {"QUIC_PROTOCOL_ERROR", ERR_LIB_SSL, SSL_R_QUIC_PROTOCOL_ERROR},
880+ #else
881+ {"QUIC_PROTOCOL_ERROR", 20, 382},
882+ #endif
883 #ifdef SSL_R_READ_BIO_NOT_SET
884 {"READ_BIO_NOT_SET", ERR_LIB_SSL, SSL_R_READ_BIO_NOT_SET},
885 #else
886@@ -7200,6 +7597,16 @@ static struct py_ssl_error_code error_codes[] = {
887 #else
888 {"READ_TIMEOUT_EXPIRED", 20, 312},
889 #endif
890+ #ifdef SSL_R_RECORDS_NOT_RELEASED
891+ {"RECORDS_NOT_RELEASED", ERR_LIB_SSL, SSL_R_RECORDS_NOT_RELEASED},
892+ #else
893+ {"RECORDS_NOT_RELEASED", 20, 321},
894+ #endif
895+ #ifdef SSL_R_RECORD_LAYER_FAILURE
896+ {"RECORD_LAYER_FAILURE", ERR_LIB_SSL, SSL_R_RECORD_LAYER_FAILURE},
897+ #else
898+ {"RECORD_LAYER_FAILURE", 20, 313},
899+ #endif
900 #ifdef SSL_R_RECORD_LENGTH_MISMATCH
901 {"RECORD_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_RECORD_LENGTH_MISMATCH},
902 #else
903@@ -7210,6 +7617,11 @@ static struct py_ssl_error_code error_codes[] = {
904 #else
905 {"RECORD_TOO_SMALL", 20, 298},
906 #endif
907+ #ifdef SSL_R_REMOTE_PEER_ADDRESS_NOT_SET
908+ {"REMOTE_PEER_ADDRESS_NOT_SET", ERR_LIB_SSL, SSL_R_REMOTE_PEER_ADDRESS_NOT_SET},
909+ #else
910+ {"REMOTE_PEER_ADDRESS_NOT_SET", 20, 346},
911+ #endif
912 #ifdef SSL_R_RENEGOTIATE_EXT_TOO_LONG
913 {"RENEGOTIATE_EXT_TOO_LONG", ERR_LIB_SSL, SSL_R_RENEGOTIATE_EXT_TOO_LONG},
914 #else
915@@ -7255,6 +7667,11 @@ static struct py_ssl_error_code error_codes[] = {
916 #else
917 {"SCT_VERIFICATION_FAILED", 20, 208},
918 #endif
919+ #ifdef SSL_R_SEQUENCE_CTR_WRAPPED
920+ {"SEQUENCE_CTR_WRAPPED", ERR_LIB_SSL, SSL_R_SEQUENCE_CTR_WRAPPED},
921+ #else
922+ {"SEQUENCE_CTR_WRAPPED", 20, 327},
923+ #endif
924 #ifdef SSL_R_SERVERHELLO_TLSEXT
925 {"SERVERHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_SERVERHELLO_TLSEXT},
926 #else
927@@ -7325,6 +7742,16 @@ static struct py_ssl_error_code error_codes[] = {
928 #else
929 {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042},
930 #endif
931+ #ifdef SSL_R_SSLV3_ALERT_BAD_CERTIFICATE
932+ {"SSLV3_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_CERTIFICATE},
933+ #else
934+ {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042},
935+ #endif
936+ #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC
937+ {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_RECORD_MAC},
938+ #else
939+ {"SSLV3_ALERT_BAD_RECORD_MAC", 20, 1020},
940+ #endif
941 #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC
942 {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_RECORD_MAC},
943 #else
944@@ -7335,11 +7762,26 @@ static struct py_ssl_error_code error_codes[] = {
945 #else
946 {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
947 #endif
948+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED
949+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED},
950+ #else
951+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
952+ #endif
953 #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED
954 {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED},
955 #else
956 {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044},
957 #endif
958+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED
959+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED},
960+ #else
961+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044},
962+ #endif
963+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN
964+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN},
965+ #else
966+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", 20, 1046},
967+ #endif
968 #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN
969 {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN},
970 #else
971@@ -7350,6 +7792,16 @@ static struct py_ssl_error_code error_codes[] = {
972 #else
973 {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
974 #endif
975+ #ifdef SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE
976+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE},
977+ #else
978+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
979+ #endif
980+ #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE
981+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE},
982+ #else
983+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", 20, 1040},
984+ #endif
985 #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE
986 {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE},
987 #else
988@@ -7360,11 +7812,26 @@ static struct py_ssl_error_code error_codes[] = {
989 #else
990 {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047},
991 #endif
992+ #ifdef SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER
993+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER},
994+ #else
995+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047},
996+ #endif
997 #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE
998 {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_NO_CERTIFICATE},
999 #else
1000 {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041},
1001 #endif
1002+ #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE
1003+ {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_NO_CERTIFICATE},
1004+ #else
1005+ {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041},
1006+ #endif
1007+ #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE
1008+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE},
1009+ #else
1010+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", 20, 1010},
1011+ #endif
1012 #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE
1013 {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE},
1014 #else
1015@@ -7375,6 +7842,11 @@ static struct py_ssl_error_code error_codes[] = {
1016 #else
1017 {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
1018 #endif
1019+ #ifdef SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE
1020+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE},
1021+ #else
1022+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
1023+ #endif
1024 #ifdef SSL_R_SSL_COMMAND_SECTION_EMPTY
1025 {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_EMPTY},
1026 #else
1027@@ -7450,6 +7922,36 @@ static struct py_ssl_error_code error_codes[] = {
1028 #else
1029 {"STILL_IN_INIT", 20, 121},
1030 #endif
1031+ #ifdef SSL_R_STREAM_COUNT_LIMITED
1032+ {"STREAM_COUNT_LIMITED", ERR_LIB_SSL, SSL_R_STREAM_COUNT_LIMITED},
1033+ #else
1034+ {"STREAM_COUNT_LIMITED", 20, 411},
1035+ #endif
1036+ #ifdef SSL_R_STREAM_FINISHED
1037+ {"STREAM_FINISHED", ERR_LIB_SSL, SSL_R_STREAM_FINISHED},
1038+ #else
1039+ {"STREAM_FINISHED", 20, 365},
1040+ #endif
1041+ #ifdef SSL_R_STREAM_RECV_ONLY
1042+ {"STREAM_RECV_ONLY", ERR_LIB_SSL, SSL_R_STREAM_RECV_ONLY},
1043+ #else
1044+ {"STREAM_RECV_ONLY", 20, 366},
1045+ #endif
1046+ #ifdef SSL_R_STREAM_RESET
1047+ {"STREAM_RESET", ERR_LIB_SSL, SSL_R_STREAM_RESET},
1048+ #else
1049+ {"STREAM_RESET", 20, 375},
1050+ #endif
1051+ #ifdef SSL_R_STREAM_SEND_ONLY
1052+ {"STREAM_SEND_ONLY", ERR_LIB_SSL, SSL_R_STREAM_SEND_ONLY},
1053+ #else
1054+ {"STREAM_SEND_ONLY", 20, 379},
1055+ #endif
1056+ #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
1057+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
1058+ #else
1059+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", 20, 1116},
1060+ #endif
1061 #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
1062 {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
1063 #else
1064@@ -7460,6 +7962,16 @@ static struct py_ssl_error_code error_codes[] = {
1065 #else
1066 {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
1067 #endif
1068+ #ifdef SSL_R_TLSV13_ALERT_MISSING_EXTENSION
1069+ {"TLSV13_ALERT_MISSING_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_MISSING_EXTENSION},
1070+ #else
1071+ {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
1072+ #endif
1073+ #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
1074+ {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
1075+ #else
1076+ {"TLSV1_ALERT_ACCESS_DENIED", 20, 1049},
1077+ #endif
1078 #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
1079 {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
1080 #else
1081@@ -7470,6 +7982,16 @@ static struct py_ssl_error_code error_codes[] = {
1082 #else
1083 {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
1084 #endif
1085+ #ifdef SSL_R_TLSV1_ALERT_DECODE_ERROR
1086+ {"TLSV1_ALERT_DECODE_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECODE_ERROR},
1087+ #else
1088+ {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
1089+ #endif
1090+ #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
1091+ {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
1092+ #else
1093+ {"TLSV1_ALERT_DECRYPTION_FAILED", 20, 1021},
1094+ #endif
1095 #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
1096 {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
1097 #else
1098@@ -7480,6 +8002,16 @@ static struct py_ssl_error_code error_codes[] = {
1099 #else
1100 {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
1101 #endif
1102+ #ifdef SSL_R_TLSV1_ALERT_DECRYPT_ERROR
1103+ {"TLSV1_ALERT_DECRYPT_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPT_ERROR},
1104+ #else
1105+ {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
1106+ #endif
1107+ #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
1108+ {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
1109+ #else
1110+ {"TLSV1_ALERT_EXPORT_RESTRICTION", 20, 1060},
1111+ #endif
1112 #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
1113 {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
1114 #else
1115@@ -7490,6 +8022,16 @@ static struct py_ssl_error_code error_codes[] = {
1116 #else
1117 {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
1118 #endif
1119+ #ifdef SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK
1120+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK},
1121+ #else
1122+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
1123+ #endif
1124+ #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
1125+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
1126+ #else
1127+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", 20, 1071},
1128+ #endif
1129 #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
1130 {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
1131 #else
1132@@ -7500,6 +8042,26 @@ static struct py_ssl_error_code error_codes[] = {
1133 #else
1134 {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
1135 #endif
1136+ #ifdef SSL_R_TLSV1_ALERT_INTERNAL_ERROR
1137+ {"TLSV1_ALERT_INTERNAL_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INTERNAL_ERROR},
1138+ #else
1139+ {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
1140+ #endif
1141+ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
1142+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
1143+ #else
1144+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
1145+ #endif
1146+ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
1147+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
1148+ #else
1149+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
1150+ #endif
1151+ #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
1152+ {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
1153+ #else
1154+ {"TLSV1_ALERT_NO_RENEGOTIATION", 20, 1100},
1155+ #endif
1156 #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
1157 {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
1158 #else
1159@@ -7510,21 +8072,56 @@ static struct py_ssl_error_code error_codes[] = {
1160 #else
1161 {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
1162 #endif
1163+ #ifdef SSL_R_TLSV1_ALERT_PROTOCOL_VERSION
1164+ {"TLSV1_ALERT_PROTOCOL_VERSION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION},
1165+ #else
1166+ {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
1167+ #endif
1168 #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
1169 {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
1170 #else
1171 {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
1172 #endif
1173+ #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
1174+ {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
1175+ #else
1176+ {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
1177+ #endif
1178+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
1179+ {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
1180+ #else
1181+ {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
1182+ #endif
1183 #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
1184 {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
1185 #else
1186 {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
1187 #endif
1188+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
1189+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
1190+ #else
1191+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
1192+ #endif
1193+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
1194+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
1195+ #else
1196+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
1197+ #endif
1198 #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
1199 {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
1200 #else
1201 {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
1202 #endif
1203+ #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
1204+ {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
1205+ #else
1206+ {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
1207+ #endif
1208+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
1209+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
1210+ #else
1211+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", 20, 1114},
1212+ #endif
1213 #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
1214 {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
1215 #else
1216@@ -7535,6 +8132,16 @@ static struct py_ssl_error_code error_codes[] = {
1217 #else
1218 {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
1219 #endif
1220+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE
1221+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE},
1222+ #else
1223+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
1224+ #endif
1225+ #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
1226+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
1227+ #else
1228+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", 20, 1111},
1229+ #endif
1230 #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
1231 {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
1232 #else
1233@@ -7545,6 +8152,16 @@ static struct py_ssl_error_code error_codes[] = {
1234 #else
1235 {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
1236 #endif
1237+ #ifdef SSL_R_TLSV1_UNRECOGNIZED_NAME
1238+ {"TLSV1_UNRECOGNIZED_NAME", ERR_LIB_SSL, SSL_R_TLSV1_UNRECOGNIZED_NAME},
1239+ #else
1240+ {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
1241+ #endif
1242+ #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
1243+ {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
1244+ #else
1245+ {"TLSV1_UNSUPPORTED_EXTENSION", 20, 1110},
1246+ #endif
1247 #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
1248 {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
1249 #else
1250@@ -7665,6 +8282,11 @@ static struct py_ssl_error_code error_codes[] = {
1251 #else
1252 {"UNKNOWN_KEY_EXCHANGE_TYPE", 20, 250},
1253 #endif
1254+ #ifdef SSL_R_UNKNOWN_MANDATORY_PARAMETER
1255+ {"UNKNOWN_MANDATORY_PARAMETER", ERR_LIB_SSL, SSL_R_UNKNOWN_MANDATORY_PARAMETER},
1256+ #else
1257+ {"UNKNOWN_MANDATORY_PARAMETER", 20, 323},
1258+ #endif
1259 #ifdef SSL_R_UNKNOWN_PKEY_TYPE
1260 {"UNKNOWN_PKEY_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_PKEY_TYPE},
1261 #else
1262@@ -7700,6 +8322,21 @@ static struct py_ssl_error_code error_codes[] = {
1263 #else
1264 {"UNSUPPORTED_COMPRESSION_ALGORITHM", 20, 257},
1265 #endif
1266+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE
1267+ {"UNSUPPORTED_CONFIG_VALUE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE},
1268+ #else
1269+ {"UNSUPPORTED_CONFIG_VALUE", 20, 414},
1270+ #endif
1271+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS
1272+ {"UNSUPPORTED_CONFIG_VALUE_CLASS", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS},
1273+ #else
1274+ {"UNSUPPORTED_CONFIG_VALUE_CLASS", 20, 415},
1275+ #endif
1276+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_OP
1277+ {"UNSUPPORTED_CONFIG_VALUE_OP", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_OP},
1278+ #else
1279+ {"UNSUPPORTED_CONFIG_VALUE_OP", 20, 416},
1280+ #endif
1281 #ifdef SSL_R_UNSUPPORTED_ELLIPTIC_CURVE
1282 {"UNSUPPORTED_ELLIPTIC_CURVE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE},
1283 #else
1284@@ -7720,6 +8357,11 @@ static struct py_ssl_error_code error_codes[] = {
1285 #else
1286 {"UNSUPPORTED_STATUS_TYPE", 20, 329},
1287 #endif
1288+ #ifdef SSL_R_UNSUPPORTED_WRITE_FLAG
1289+ {"UNSUPPORTED_WRITE_FLAG", ERR_LIB_SSL, SSL_R_UNSUPPORTED_WRITE_FLAG},
1290+ #else
1291+ {"UNSUPPORTED_WRITE_FLAG", 20, 412},
1292+ #endif
1293 #ifdef SSL_R_USE_SRTP_NOT_NEGOTIATED
1294 {"USE_SRTP_NOT_NEGOTIATED", ERR_LIB_SSL, SSL_R_USE_SRTP_NOT_NEGOTIATED},
1295 #else
1296@@ -7750,6 +8392,11 @@ static struct py_ssl_error_code error_codes[] = {
1297 #else
1298 {"WRONG_CURVE", 20, 378},
1299 #endif
1300+ #ifdef SSL_R_WRONG_RPK_TYPE
1301+ {"WRONG_RPK_TYPE", ERR_LIB_SSL, SSL_R_WRONG_RPK_TYPE},
1302+ #else
1303+ {"WRONG_RPK_TYPE", 20, 351},
1304+ #endif
1305 #ifdef SSL_R_WRONG_SIGNATURE_LENGTH
1306 {"WRONG_SIGNATURE_LENGTH", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_LENGTH},
1307 #else
1308@@ -8055,6 +8702,16 @@ static struct py_ssl_error_code error_codes[] = {
1309 #else
1310 {"BAD_OBJECT", 34, 119},
1311 #endif
1312+ #ifdef X509V3_R_BAD_OPTION
1313+ {"BAD_OPTION", ERR_LIB_X509V3, X509V3_R_BAD_OPTION},
1314+ #else
1315+ {"BAD_OPTION", 34, 170},
1316+ #endif
1317+ #ifdef X509V3_R_BAD_VALUE
1318+ {"BAD_VALUE", ERR_LIB_X509V3, X509V3_R_BAD_VALUE},
1319+ #else
1320+ {"BAD_VALUE", 34, 171},
1321+ #endif
1322 #ifdef X509V3_R_BN_DEC2BN_ERROR
1323 {"BN_DEC2BN_ERROR", ERR_LIB_X509V3, X509V3_R_BN_DEC2BN_ERROR},
1324 #else
1325@@ -8370,6 +9027,11 @@ static struct py_ssl_error_code error_codes[] = {
1326 #else
1327 {"UNKNOWN_OPTION", 34, 120},
1328 #endif
1329+ #ifdef X509V3_R_UNKNOWN_VALUE
1330+ {"UNKNOWN_VALUE", ERR_LIB_X509V3, X509V3_R_UNKNOWN_VALUE},
1331+ #else
1332+ {"UNKNOWN_VALUE", 34, 172},
1333+ #endif
1334 #ifdef X509V3_R_UNSUPPORTED_OPTION
1335 {"UNSUPPORTED_OPTION", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_OPTION},
1336 #else
1337@@ -8430,6 +9092,11 @@ static struct py_ssl_error_code error_codes[] = {
1338 #else
1339 {"CRL_VERIFY_FAILURE", 11, 131},
1340 #endif
1341+ #ifdef X509_R_DUPLICATE_ATTRIBUTE
1342+ {"DUPLICATE_ATTRIBUTE", ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE},
1343+ #else
1344+ {"DUPLICATE_ATTRIBUTE", 11, 140},
1345+ #endif
1346 #ifdef X509_R_ERROR_GETTING_MD_BY_NID
1347 {"ERROR_GETTING_MD_BY_NID", ERR_LIB_X509, X509_R_ERROR_GETTING_MD_BY_NID},
1348 #else
1349@@ -8590,6 +9257,11 @@ static struct py_ssl_error_code error_codes[] = {
1350 #else
1351 {"UNSUPPORTED_ALGORITHM", 11, 111},
1352 #endif
1353+ #ifdef X509_R_UNSUPPORTED_VERSION
1354+ {"UNSUPPORTED_VERSION", ERR_LIB_X509, X509_R_UNSUPPORTED_VERSION},
1355+ #else
1356+ {"UNSUPPORTED_VERSION", 11, 145},
1357+ #endif
1358 #ifdef X509_R_WRONG_LOOKUP_TYPE
1359 {"WRONG_LOOKUP_TYPE", ERR_LIB_X509, X509_R_WRONG_LOOKUP_TYPE},
1360 #else
1361diff --git a/Tools/c-analyzer/cpython/_parser.py b/Tools/c-analyzer/cpython/_parser.py
1362index 21be53e7884..a08b32fa45d 100644
1363--- a/Tools/c-analyzer/cpython/_parser.py
1364+++ b/Tools/c-analyzer/cpython/_parser.py
1365@@ -70,9 +70,7 @@ Python/thread_pthread.h
1366 Python/thread_pthread_stubs.h
1367
1368 # only huge constants (safe but parsing is slow)
1369-Modules/_ssl_data_31.h
1370-Modules/_ssl_data_300.h
1371-Modules/_ssl_data_111.h
1372+Modules/_ssl_data_*.h
1373 Modules/cjkcodecs/mappings_*.h
1374 Modules/unicodedata_db.h
1375 Modules/unicodename_db.h
1376diff --git a/Tools/ssl/make_ssl_data.py b/Tools/ssl/make_ssl_data.py
1377index 9860871..0cd05c7 100755
1378--- a/Tools/ssl/make_ssl_data.py
1379+++ b/Tools/ssl/make_ssl_data.py
1380@@ -5,9 +5,28 @@ This script should be called *manually* when we want to upgrade SSLError
1381 `library` and `reason` mnemonics to a more recent OpenSSL version.
1382
1383 It takes two arguments:
1384-- the path to the OpenSSL source tree (e.g. git checkout)
1385+- the path to the OpenSSL git checkout
1386 - the path to the header file to be generated Modules/_ssl_data_{version}.h
1387 - error codes are version specific
1388+
1389+The OpenSSL git checkout should be at a specific tag, using commands like:
1390+ git tag --list 'openssl-*'
1391+ git switch --detach openssl-3.4.0
1392+
1393+
1394+After generating the definitions, compare the result with newest pre-existing file.
1395+You can use a command like:
1396+
1397+ git diff --no-index Modules/_ssl_data_31.h Modules/_ssl_data_34.h
1398+
1399+- If the new version *only* adds new definitions, remove the pre-existing file
1400+ and adjust the #include in _ssl.c to point to the new version.
1401+- If the new version removes or renumbers some definitions, keep both files and
1402+ add a new #include in _ssl.c.
1403+
1404+A newly supported OpenSSL version should also be added to:
1405+- Tools/ssl/multissltests.py
1406+- .github/workflows/build.yml
1407 """
1408
1409 import argparse
1410@@ -16,6 +35,7 @@ import operator
1411 import os
1412 import re
1413 import sys
1414+import subprocess
1415
1416
1417 parser = argparse.ArgumentParser(
1418@@ -118,9 +138,17 @@ def main():
1419 # sort by libname, numeric error code
1420 args.reasons = sorted(reasons, key=operator.itemgetter(0, 3))
1421
1422+ git_describe = subprocess.run(
1423+ ['git', 'describe', '--long', '--dirty'],
1424+ cwd=args.srcdir,
1425+ capture_output=True,
1426+ encoding='utf-8',
1427+ check=True,
1428+ )
1429 lines = [
1430- "/* File generated by Tools/ssl/make_ssl_data.py */"
1431- f"/* Generated on {datetime.datetime.utcnow().isoformat()} */"
1432+ "/* File generated by Tools/ssl/make_ssl_data.py */",
1433+ f"/* Generated on {datetime.datetime.now(datetime.UTC).isoformat()} */",
1434+ f"/* Generated from Git commit {git_describe.stdout.strip()} */",
1435 ]
1436 lines.extend(gen_library_codes(args))
1437 lines.append("")
1438diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
1439index eae0e0c..fb06f63 100755
1440--- a/Tools/ssl/multissltests.py
1441+++ b/Tools/ssl/multissltests.py
1442@@ -51,6 +51,7 @@ OPENSSL_RECENT_VERSIONS = [
1443 "3.1.7",
1444 "3.2.3",
1445 "3.3.2",
1446+ "3.4.0",
1447 ]
1448
1449 LIBRESSL_OLD_VERSIONS = [
1450--
14512.30.2
1452
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..84ad2abb0b
--- /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,46 @@
1From 129ee75863081d9e3418acca3df1e47667f671ad 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 Lib/pty.py | 5 ++++-
29 1 file changed, 4 insertions(+), 1 deletion(-)
30
31diff --git a/Lib/pty.py b/Lib/pty.py
32index 1d97994..fa8821b 100644
33--- a/Lib/pty.py
34+++ b/Lib/pty.py
35@@ -178,7 +178,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read):
36 i_buf = i_buf[n:]
37
38 if stdin_avail and STDIN_FILENO in rfds:
39- data = stdin_read(STDIN_FILENO)
40+ try:
41+ data = stdin_read(STDIN_FILENO)
42+ except OSError:
43+ data = b""
44 if not data:
45 stdin_avail = False
46 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..ca72ebc899
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,31 @@
1From 3f4f3e917950e286d5729ea949ca342995eb3c3e 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 Lib/sysconfig/__init__.py | 5 +++++
14 1 file changed, 5 insertions(+)
15
16diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py
17index f8e1c7d..0882526 100644
18--- a/Lib/sysconfig/__init__.py
19+++ b/Lib/sysconfig/__init__.py
20@@ -494,6 +494,11 @@ def _init_config_vars():
21 _CONFIG_VARS['VPATH'] = sys._vpath
22 if os.name == 'posix':
23 _init_posix(_CONFIG_VARS)
24+ _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix']
25+ _CONFIG_VARS['base'] = _CONFIG_VARS['prefix']
26+ _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix']
27+ _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix']
28+ _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR']
29 if _HAS_USER_BASE:
30 # Setting 'userbase' is done below the call to the
31 # 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..39b62f6f26 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,25 +1,33 @@
1From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 1From e7a8a7385f561f214054cf95f0a22bfa064eee0b 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
5 5
6Upstream-Status: Inappropriate [oe-core specific] 6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 7Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
8
9Update to remove test_types from the test list, since that fails under
10qemu now.
11
12Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
8--- 13---
9 Makefile.pre.in | 3 +-- 14 Makefile.pre.in | 3 +--
10 1 file changed, 1 insertion(+), 2 deletions(-) 15 1 file changed, 1 insertion(+), 2 deletions(-)
11 16
12diff --git a/Makefile.pre.in b/Makefile.pre.in 17diff --git a/Makefile.pre.in b/Makefile.pre.in
13index a3a02a7..d5503dd 100644 18index 3bd4495f95b..8e8fc60bc76 100644
14--- a/Makefile.pre.in 19--- a/Makefile.pre.in
15+++ b/Makefile.pre.in 20+++ b/Makefile.pre.in
16@@ -507,8 +507,7 @@ build_all_generate_profile: 21@@ -751,8 +751,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)" 22 # enabled.
18 23 $(MAKE) profile-gen-stamp
19 run_profile_task: 24 # Next, run the profile task to generate the profile information.
20- @ # FIXME: can't run for a cross build 25- @ # FIXME: can't run for a cross build
21- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true 26- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
22+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true 27+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict
23
24 build_all_merge_profile:
25 $(LLVM_PROF_MERGER) 28 $(LLVM_PROF_MERGER)
29 # Remove profile generation binary since we are done with it.
30 $(MAKE) clean-retain-profile
31--
322.39.5
33
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..c8537db1fd
--- /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 8828a52ebace98199569404f01174398bcc64a00 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 5dae370..23eb971 100644
27--- a/Lib/test/_test_multiprocessing.py
28+++ b/Lib/test/_test_multiprocessing.py
29@@ -688,6 +688,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@@ -2211,6 +2212,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@@ -5299,6 +5301,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 293799f..1dbb623 100644
55--- a/Lib/test/test_time.py
56+++ b/Lib/test/test_time.py
57@@ -548,6 +548,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@@ -561,6 +562,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', 'android', '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..ab433d1836
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
@@ -0,0 +1,36 @@
1From 5bf5aa6eae1fa3eed66893e51a1858ab481426b4 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 Lib/test/test_sysconfig.py | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
25index 1ade492..4e94889 100644
26--- a/Lib/test/test_sysconfig.py
27+++ b/Lib/test/test_sysconfig.py
28@@ -423,7 +423,7 @@ class TestSysConfig(unittest.TestCase):
29 expected = os.path.normpath(global_path.replace(base, user, 1))
30 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
31 # whereas posix_prefix does.
32- if name == 'platlib':
33+ if name == 'platlib' or name == 'purelib':
34 # Replace "/lib64/python3.11/site-packages" suffix
35 # with "/lib/python3.11/site-packages".
36 py_version_abi = sysconfig._get_python_version_abi()
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-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
deleted file mode 100644
index bfddc1ad52..0000000000
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ /dev/null
@@ -1,121 +0,0 @@
1From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 22 Oct 2018 15:19:51 +0800
4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
5
6When working path contains "clang"/"gcc"/"icc", it might be part of $CC
7because of the "--sysroot" parameter. That could cause judgement error
8about clang/gcc/icc compilers. e.g.
9When "icc" is containded in working path, below errors are reported when
10compiling python3:
11x86_64-wrs-linux-gcc: error: strict: No such file or directory
12x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
13
14Here use cc_basename to replace CC for checking compiler to avoid such
15kind of issue.
16
17Upstream-Status: Pending
18
19Signed-off-by: Li Zhou <li.zhou@windriver.com>
20
21patch originally from Li Zhou, I just rework it to new version
22
23Signed-off-by: Changqing Li <changqing.li@windriver.com>
24
25---
26 configure.ac | 19 ++++++++++---------
27 1 file changed, 10 insertions(+), 9 deletions(-)
28
29diff --git a/configure.ac b/configure.ac
30index d60f052..e491e24 100644
31--- a/configure.ac
32+++ b/configure.ac
33@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
34 AC_CANONICAL_HOST
35 AC_SUBST(build)
36 AC_SUBST(host)
37+LT_INIT
38
39 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
40 rm -f pybuilddir.txt
41@@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main)
42 preset_cxx="$CXX"
43 if test -z "$CXX"
44 then
45- case "$CC" in
46+ case "$cc_basename" in
47 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
48 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
49 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
50@@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir
51
52 case $ac_sys_system in
53 hp*|HP*)
54- case $CC in
55+ case $cc_basename in
56 cc|*/cc) CC="$CC -Ae";;
57 esac;;
58 esac
59@@ -1366,7 +1367,7 @@ else
60 fi],
61 [AC_MSG_RESULT(no)])
62 if test "$Py_LTO" = 'true' ; then
63- case $CC in
64+ case $cc_basename in
65 *clang*)
66 AC_SUBST(LLVM_AR)
67 AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
68@@ -1456,7 +1457,7 @@ then
69 fi
70 fi
71 LLVM_PROF_ERR=no
72-case $CC in
73+case $cc_basename in
74 *clang*)
75 # Any changes made here should be reflected in the GCC+Darwin case below
76 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
77@@ -1517,7 +1518,7 @@ esac
78 # compiler and platform. BASECFLAGS tweaks need to be made even if the
79 # user set OPT.
80
81-case $CC in
82+case $cc_basename in
83 *clang*)
84 cc_is_clang=1
85 ;;
86@@ -1653,7 +1654,7 @@ yes)
87
88 # 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?
90- case "$CC" in
91+ case "$cc_basename" in
92 *icc*)
93 ac_cv_disable_unused_result_warning=no
94 ;;
95@@ -1993,7 +1994,7 @@ yes)
96 ;;
97 esac
98
99-case "$CC" in
100+case "$cc_basename" in
101 *icc*)
102 # ICC needs -fp-model strict or floats behave badly
103 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
104@@ -2765,7 +2766,7 @@ then
105 then
106 LINKFORSHARED="-Wl,--export-dynamic"
107 fi;;
108- SunOS/5*) case $CC in
109+ SunOS/5*) case $cc_basename in
110 *gcc*)
111 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
112 then
113@@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
114 # Some versions of gcc miscompile inline asm:
115 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
116 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
117- case $CC in
118+ case $cc_basename in
119 *gcc*)
120 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
121 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..ea103bc834
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
@@ -0,0 +1,29 @@
1From c5bdd39f8ebc4e6c58a47d7e424eac028eddb4ff 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 c5394de..ed17fb6 100644
20--- a/Lib/test/test_builtin.py
21+++ b/Lib/test/test_builtin.py
22@@ -2435,6 +2435,7 @@ class PtyTests(unittest.TestCase):
23 "byte 0xe9 in position 4: ordinal not in "
24 "range(128)")
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..b9c68a98d7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -0,0 +1,27 @@
1From bbcb17dc1ed283f41c8cd94d39f70898f0c45583 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 Lib/sysconfig/__init__.py | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py
16index 80aef34..f8e1c7d 100644
17--- a/Lib/sysconfig/__init__.py
18+++ b/Lib/sysconfig/__init__.py
19@@ -29,7 +29,7 @@ _INSTALL_SCHEMES = {
20 'posix_prefix': {
21 'stdlib': '{installed_base}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
22 'platstdlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
23- 'purelib': '{base}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
24+ 'purelib': '{base}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
25 'platlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
26 'include':
27 '{installed_base}/include/{implementation_lower}{py_version_short}{abiflags}',
diff --git a/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
new file mode 100644
index 0000000000..5f60c60b5b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
@@ -0,0 +1,27 @@
1From 540765b148d942a2339affa6c0d11445e9d0f26c Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Thu, 13 Jun 2024 10:54:31 -0400
4Subject: [PATCH] test_active_children: skip problematic test
5
6This test is failing in some tests on the Autobuilder. Since it's of a
7similar nature to other failing/hanging tests, disable it for now.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/_test_multiprocessing.py | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
17index 23eb971..b1295b2 100644
18--- a/Lib/test/_test_multiprocessing.py
19+++ b/Lib/test/_test_multiprocessing.py
20@@ -585,6 +585,7 @@ class _TestProcess(BaseTestCase):
21 self.assertTrue(type(cpus) is int)
22 self.assertTrue(cpus >= 1)
23
24+ @unittest.skip("skipping problematic test")
25 def test_active_children(self):
26 self.assertEqual(type(self.active_children()), list)
27
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..68e277d662
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
@@ -0,0 +1,33 @@
1From 0e9d0c58e77ef540d9601ce84a1aa79d9ce6ee9b 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 Lib/test/test_ctypes/test_find.py | 2 ++
15 1 file changed, 2 insertions(+)
16
17diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
18index 85b2861..b033203 100644
19--- a/Lib/test/test_ctypes/test_find.py
20+++ b/Lib/test/test_ctypes/test_find.py
21@@ -116,10 +116,12 @@ class FindLibraryLinux(unittest.TestCase):
22 # LD_LIBRARY_PATH)
23 self.assertEqual(find_library(libname), 'lib%s.so' % libname)
24
25+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
26 def test_find_library_with_gcc(self):
27 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
28 self.assertNotEqual(find_library('c'), None)
29
30+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
31 def test_find_library_with_ld(self):
32 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
33 unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
new file mode 100644
index 0000000000..3336e2913a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
@@ -0,0 +1,27 @@
1From 5a44f74549b32395109342e9299510c32db71068 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 12 Jun 2024 10:29:03 -0400
4Subject: [PATCH] test_deadlock: skip problematic test
5
6This test hangs frequently when run on the Autobuilder. Disable it in
7testing until the cause can be determined.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/test_concurrent_futures/test_deadlock.py | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/Lib/test/test_concurrent_futures/test_deadlock.py b/Lib/test/test_concurrent_futures/test_deadlock.py
17index 3c30c45..008d6c0 100644
18--- a/Lib/test/test_concurrent_futures/test_deadlock.py
19+++ b/Lib/test/test_concurrent_futures/test_deadlock.py
20@@ -90,6 +90,7 @@ class ErrorAtUnpickle(object):
21 return _raise_error_ignore_stderr, (UnpicklingError, )
22
23
24+@unittest.skip("skipping problematic test")
25 class ExecutorDeadlockTest:
26 TIMEOUT = support.LONG_TIMEOUT
27
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..2cca004b57 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 c1f3cf625c0f011060ddaa2a4096f6aa13dd1ee6 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,23 @@ 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>
27--- 29---
28 Lib/test/test_locale.py | 2 +- 30 Lib/test/test_locale.py | 2 +-
29 1 file changed, 1 insertion(+), 1 deletion(-) 31 1 file changed, 1 insertion(+), 1 deletion(-)
30 32
31diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py 33diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
32index e2c2178..558d63c 100644 34index da4bd79..fd9e67d 100644
33--- a/Lib/test/test_locale.py 35--- a/Lib/test/test_locale.py
34+++ b/Lib/test/test_locale.py 36+++ b/Lib/test/test_locale.py
35@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): 37@@ -572,7 +572,7 @@ class TestMiscellaneous(unittest.TestCase):
36 self.skipTest('test needs Turkish locale') 38 self.skipTest('test needs Turkish locale')
37 loc = locale.getlocale(locale.LC_CTYPE) 39 loc = locale.getlocale(locale.LC_CTYPE)
38 if verbose: 40 if verbose:
39- print('testing with %a' % (loc,), end=' ', flush=True) 41- print('testing with %a' % (loc,), end=' ', flush=True)
40+ print('testing with %a...' % (loc,), end=' ', flush=True) 42+ print('testing with %a...' % (loc,), end=' ', flush=True)
41 locale.setlocale(locale.LC_CTYPE, loc) 43 try:
42 self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) 44 locale.setlocale(locale.LC_CTYPE, loc)
43 45 except locale.Error as exc:
44--
452.7.4
46
diff --git a/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
new file mode 100644
index 0000000000..862a7f5ea7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
@@ -0,0 +1,44 @@
1From 1a0a145261ba4f97aaff3c0c656ac2e0ad9695a8 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Tue, 13 Aug 2024 11:07:05 -0400
4Subject: [PATCH] test_readline: skip limited history test
5
6This test was added recently and is failing on the ptest image when
7using the default PACKAGECONFIG settings (i.e. with editline instead of
8readline).. Disable it until the proper fix is determined.
9
10A bug has been opened upstream: https://github.com/python/cpython/issues/123018
11
12Upstream-Status: Inappropriate [OE-specific]
13
14Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
15---
16 Lib/test/test_readline.py | 2 ++
17 1 file changed, 2 insertions(+)
18
19--- a/Lib/test/test_readline.py
20+++ b/Lib/test/test_readline.py
21@@ -70,6 +70,7 @@ class TestHistoryManipulation (unittest.
22
23 @unittest.skipUnless(hasattr(readline, "append_history_file"),
24 "append_history not available")
25+ @unittest.skip("Skipping problematic test")
26 def test_write_read_append(self):
27 hfile = tempfile.NamedTemporaryFile(delete=False)
28 hfile.close()
29@@ -141,6 +142,7 @@ class TestHistoryManipulation (unittest.
30 self.assertEqual(readline.get_history_item(1), "entrée 1")
31 self.assertEqual(readline.get_history_item(2), "entrée 22")
32
33+ @unittest.skip("Skipping problematic test")
34 def test_write_read_limited_history(self):
35 previous_length = readline.get_history_length()
36 self.addCleanup(readline.set_history_length, previous_length)
37@@ -382,6 +384,7 @@ readline.write_history_file(history_file
38 self.assertIn(b"done", output)
39
40
41+ @unittest.skip("Skipping problematic test")
42 def test_write_read_limited_history(self):
43 previous_length = readline.get_history_length()
44 self.addCleanup(readline.set_history_length, previous_length)
diff --git a/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
new file mode 100644
index 0000000000..4e284de613
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
@@ -0,0 +1,43 @@
1From b678363156b5d40e09c1d138840180e3ddc7d20b Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 8 May 2024 11:58:09 -0400
4Subject: [PATCH] test_shutdown: skip problematic test
5
6This test hangs frequently when run on the Autobuilder. Disable it in
7testing until the cause can be determined.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/test_concurrent_futures/test_shutdown.py | 3 +++
14 1 file changed, 3 insertions(+)
15
16diff --git a/Lib/test/test_concurrent_futures/test_shutdown.py b/Lib/test/test_concurrent_futures/test_shutdown.py
17index 7a4065a..6b878a4 100644
18--- a/Lib/test/test_concurrent_futures/test_shutdown.py
19+++ b/Lib/test/test_concurrent_futures/test_shutdown.py
20@@ -20,6 +20,7 @@ def sleep_and_print(t, msg):
21 sys.stdout.flush()
22
23
24+@unittest.skip("skipping problematic test")
25 class ExecutorShutdownTest:
26 def test_run_after_shutdown(self):
27 self.executor.shutdown()
28@@ -156,6 +157,7 @@ class ExecutorShutdownTest:
29 signal.signal(signal.SIGALRM, old_handler)
30
31
32+@unittest.skip("skipping problematic test")
33 class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase):
34 def test_threads_terminate(self):
35 def acquire_lock(lock):
36@@ -252,6 +254,7 @@ class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase
37 self.assertIn(out.strip(), [b"apple", b""])
38
39
40+@unittest.skip("skipping problematic test")
41 class ProcessPoolShutdownTest(ExecutorShutdownTest):
42 def test_processes_terminate(self):
43 def acquire_lock(lock):
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..b4f873fd72
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -0,0 +1,29 @@
1From 9f252a691cd335341938489da32d6e2d4620d8ca 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 Lib/test/test_ftplib.py | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
19index bed0e6d..36602be 100644
20--- a/Lib/test/test_ftplib.py
21+++ b/Lib/test/test_ftplib.py
22@@ -627,6 +627,7 @@ class TestFTPClass(TestCase):
23 self.client.storbinary('stor', f, rest=r)
24 self.assertEqual(self.server.handler_instance.rest, str(r))
25
26+ @unittest.skip('timing related test, dependent on load')
27 def test_storlines(self):
28 data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
29 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
deleted file mode 100644
index e04a91605c..0000000000
--- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
+++ /dev/null
@@ -1,48 +0,0 @@
1From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Sun, 16 Feb 2020 17:50:25 +0100
4Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from
5 the host
6
7This leads to host contamination, and particularly can cause
8curses modules to fail at runtime if the host curses is configured
9differently to native curses (observed on current OpenSuse Tumbleweed
10as dnf failures).
11
12Upstream-Status: Inappropriate [oe-core specific]
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14---
15 configure.ac | 6 ------
16 setup.py | 2 --
17 2 files changed, 8 deletions(-)
18
19diff --git a/configure.ac b/configure.ac
20index 915f475..c911011 100644
21--- a/configure.ac
22+++ b/configure.ac
23@@ -4828,12 +4828,6 @@ then
24 [Define if you have struct stat.st_mtimensec])
25 fi
26
27-# first curses header check
28-ac_save_cppflags="$CPPFLAGS"
29-if test "$cross_compiling" = no; then
30- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
31-fi
32-
33 AC_CHECK_HEADERS(curses.h ncurses.h)
34
35 # On Solaris, term.h requires curses.h
36diff --git a/setup.py b/setup.py
37index b0f1541..7208cd0 100644
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
deleted file mode 100644
index 6c4ba54320..0000000000
--- a/meta/recipes-devtools/python/python3/cgi_py.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001
2From: Mark Hatle <mark.hatle@windriver.com>
3Date: Wed, 21 Sep 2011 20:55:33 -0500
4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
5
6Upstream-Status: Inappropriate [distribution]
7
8Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
9
10---
11 Lib/cgi.py | 11 +----------
12 1 file changed, 1 insertion(+), 10 deletions(-)
13
14diff --git a/Lib/cgi.py b/Lib/cgi.py
15index 8cf6687..094c7b4 100755
16--- a/Lib/cgi.py
17+++ b/Lib/cgi.py
18@@ -1,13 +1,4 @@
19-#! /usr/local/bin/python
20-
21-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is
22-# intentionally NOT "/usr/bin/env python". On many systems
23-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI
24-# scripts, and /usr/local/bin is the default directory where Python is
25-# installed, so /usr/bin/env would be unable to find python. Granted,
26-# binary installations by Linux vendors often install Python in
27-# /usr/bin. So let those vendors patch cgi.py to match their choice
28-# of installation.
29+#! /usr/bin/env python
30
31 """Support module for CGI (Common Gateway Interface) scripts.
32
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
index 4da02a2991..288d5ede3a 100644
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ b/meta/recipes-devtools/python/python3/create_manifest3.py
@@ -1,7 +1,7 @@
1# This script is used as a bitbake task to create a new python manifest 1# This script is used as a bitbake task to create a new python manifest
2# $ bitbake python -c create_manifest 2# $ bitbake python -c create_manifest
3# 3#
4# Our goal is to keep python-core as small as posible and add other python 4# Our goal is to keep python-core as small as possible and add other python
5# packages only when the user needs them, hence why we split upstream python 5# packages only when the user needs them, hence why we split upstream python
6# into several packages. 6# into several packages.
7# 7#
@@ -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
deleted file mode 100644
index d789ab57d4..0000000000
--- a/meta/recipes-devtools/python/python3/crosspythonpath.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD
2
3When 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
5instructions that the host CPU does not have, add CROSSPYTHONPATH
6into PYTHONPATH so we can prepend the list to find correct libs.
7
8Upstream-Status: Inappropriate [OE-Core integration specific]
9
10Credits-to: Mark Hatle <mark.hatle@windriver.com>
11Credits-to: Jackie Huang <jackie.huang@windriver.com>
12Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
13diff --git a/configure.ac b/configure.ac
14index 4ab19a6..7036a53 100644
15--- a/configure.ac
16+++ b/configure.ac
17@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then
18 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
19 fi
20 AC_MSG_RESULT($interp)
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
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
23 fi
24 elif test "$cross_compiling" = maybe; then
25 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
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..b115a6fa65
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -0,0 +1,31 @@
1From 2b458b4e1bcd57e3f135d3f0e715f64b98b27906 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 be1b9ea..9ec3a71 100644
21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in
23@@ -2485,7 +2485,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..441830833b 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -1,7 +1,7 @@
1# DO NOT (entirely) modify this file manually, please read. 1# DO NOT (entirely) modify this file manually, please read.
2# 2#
3# IMPORTANT NOTE: 3# IMPORTANT NOTE:
4# Please keep in mind that the create_manifest task relies on the fact the the 4# Please keep in mind that the create_manifest task relies on the fact that the
5# target and native Python packages are the same, and it also needs to be executed 5# target and native Python packages are the same, and it also needs to be executed
6# with a fully working native package (with all the PACKAGECONFIGs enabled and all 6# with a fully working native package (with all the PACKAGECONFIGs enabled and all
7# and all the modules should be working, check log.do_compile), otherwise the script 7# and all the modules should be working, check log.do_compile), otherwise the script
@@ -103,17 +103,6 @@
103 ], 103 ],
104 "cached": [] 104 "cached": []
105 }, 105 },
106 "2to3": {
107 "summary": "Python automated Python 2 to 3 code translator",
108 "rdepends": [
109 "core"
110 ],
111 "files": [
112 "${bindir}/2to3*",
113 "${libdir}/python${PYTHON_MAJMIN}/lib2to3"
114 ],
115 "cached": []
116 },
117 "asyncio": { 106 "asyncio": {
118 "summary": "Python Asynchronous I/O", 107 "summary": "Python Asynchronous I/O",
119 "rdepends": [ 108 "rdepends": [
@@ -138,17 +127,9 @@
138 "core" 127 "core"
139 ], 128 ],
140 "files": [ 129 "files": [
141 "${libdir}/python${PYTHON_MAJMIN}/chunk.py",
142 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/audioop.*.so",
143 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/ossaudiodev.*.so",
144 "${libdir}/python${PYTHON_MAJMIN}/sndhdr.py",
145 "${libdir}/python${PYTHON_MAJMIN}/sunau.py",
146 "${libdir}/python${PYTHON_MAJMIN}/wave.py" 130 "${libdir}/python${PYTHON_MAJMIN}/wave.py"
147 ], 131 ],
148 "cached": [ 132 "cached": [
149 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/chunk.*.pyc",
150 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sndhdr.*.pyc",
151 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sunau.*.pyc",
152 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" 133 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc"
153 ] 134 ]
154 }, 135 },
@@ -158,12 +139,9 @@
158 "core" 139 "core"
159 ], 140 ],
160 "files": [ 141 "files": [
161 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so", 142 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so"
162 "${libdir}/python${PYTHON_MAJMIN}/xdrlib.py"
163 ], 143 ],
164 "cached": [ 144 "cached": []
165 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/xdrlib.*.pyc"
166 ]
167 }, 145 },
168 "compile": { 146 "compile": {
169 "summary": "Python bytecode compilation support", 147 "summary": "Python bytecode compilation support",
@@ -189,17 +167,17 @@
189 "files": [ 167 "files": [
190 "${libdir}/python${PYTHON_MAJMIN}/gzip.py", 168 "${libdir}/python${PYTHON_MAJMIN}/gzip.py",
191 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", 169 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py",
192 "${libdir}/python${PYTHON_MAJMIN}/zipfile.py" 170 "${libdir}/python${PYTHON_MAJMIN}/zipfile",
171 "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path"
193 ], 172 ],
194 "cached": [ 173 "cached": [
195 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", 174 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc",
196 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc", 175 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc"
197 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc"
198 ] 176 ]
199 }, 177 },
200 "core": { 178 "core": {
201 "summary": "Python interpreter and core modules", 179 "summary": "Python interpreter and core modules",
202 "rdepends": [], 180 "rdepends": ["compression"],
203 "files": [ 181 "files": [
204 "${bindir}/python${PYTHON_MAJMIN}", 182 "${bindir}/python${PYTHON_MAJMIN}",
205 "${bindir}/python${PYTHON_MAJMIN}.real", 183 "${bindir}/python${PYTHON_MAJMIN}.real",
@@ -212,8 +190,12 @@
212 "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py", 190 "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py",
213 "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py", 191 "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py",
214 "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py", 192 "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",
193 "${libdir}/python${PYTHON_MAJMIN}/_colorize.py",
215 "${libdir}/python${PYTHON_MAJMIN}/_compression.py", 194 "${libdir}/python${PYTHON_MAJMIN}/_compression.py",
216 "${libdir}/python${PYTHON_MAJMIN}/_markupbase.py", 195 "${libdir}/python${PYTHON_MAJMIN}/_markupbase.py",
196 "${libdir}/python${PYTHON_MAJMIN}/_opcode_metadata.py",
197 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl",
198 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/pager.py",
217 "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py", 199 "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",
218 "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py", 200 "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py",
219 "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py", 201 "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py",
@@ -232,6 +214,7 @@
232 "${libdir}/python${PYTHON_MAJMIN}/copy.py", 214 "${libdir}/python${PYTHON_MAJMIN}/copy.py",
233 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", 215 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py",
234 "${libdir}/python${PYTHON_MAJMIN}/csv.py", 216 "${libdir}/python${PYTHON_MAJMIN}/csv.py",
217 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
235 "${libdir}/python${PYTHON_MAJMIN}/dis.py", 218 "${libdir}/python${PYTHON_MAJMIN}/dis.py",
236 "${libdir}/python${PYTHON_MAJMIN}/encodings", 219 "${libdir}/python${PYTHON_MAJMIN}/encodings",
237 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", 220 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py",
@@ -243,9 +226,11 @@
243 "${libdir}/python${PYTHON_MAJMIN}/genericpath.py", 226 "${libdir}/python${PYTHON_MAJMIN}/genericpath.py",
244 "${libdir}/python${PYTHON_MAJMIN}/getopt.py", 227 "${libdir}/python${PYTHON_MAJMIN}/getopt.py",
245 "${libdir}/python${PYTHON_MAJMIN}/gettext.py", 228 "${libdir}/python${PYTHON_MAJMIN}/gettext.py",
229 "${libdir}/python${PYTHON_MAJMIN}/glob.py",
246 "${libdir}/python${PYTHON_MAJMIN}/heapq.py", 230 "${libdir}/python${PYTHON_MAJMIN}/heapq.py",
247 "${libdir}/python${PYTHON_MAJMIN}/imp.py", 231 "${libdir}/python${PYTHON_MAJMIN}/imp.py",
248 "${libdir}/python${PYTHON_MAJMIN}/importlib", 232 "${libdir}/python${PYTHON_MAJMIN}/importlib",
233 "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py",
249 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", 234 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py",
250 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", 235 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py",
251 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", 236 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py",
@@ -253,6 +238,7 @@
253 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", 238 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py",
254 "${libdir}/python${PYTHON_MAJMIN}/inspect.py", 239 "${libdir}/python${PYTHON_MAJMIN}/inspect.py",
255 "${libdir}/python${PYTHON_MAJMIN}/io.py", 240 "${libdir}/python${PYTHON_MAJMIN}/io.py",
241 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
256 "${libdir}/python${PYTHON_MAJMIN}/keyword.py", 242 "${libdir}/python${PYTHON_MAJMIN}/keyword.py",
257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", 243 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", 244 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so",
@@ -266,8 +252,10 @@
266 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", 252 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",
267 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", 253 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so",
268 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", 254 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so",
255 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so",
269 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", 256 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so",
270 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", 257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/fcntl.*.so",
271 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", 259 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
272 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so", 260 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so",
273 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so", 261 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so",
@@ -286,11 +274,18 @@
286 "${libdir}/python${PYTHON_MAJMIN}/operator.py", 274 "${libdir}/python${PYTHON_MAJMIN}/operator.py",
287 "${libdir}/python${PYTHON_MAJMIN}/optparse.py", 275 "${libdir}/python${PYTHON_MAJMIN}/optparse.py",
288 "${libdir}/python${PYTHON_MAJMIN}/os.py", 276 "${libdir}/python${PYTHON_MAJMIN}/os.py",
277 "${libdir}/python${PYTHON_MAJMIN}/pathlib",
289 "${libdir}/python${PYTHON_MAJMIN}/pathlib.py", 278 "${libdir}/python${PYTHON_MAJMIN}/pathlib.py",
279 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_abc.py",
280 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_local.py",
290 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", 281 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py",
291 "${libdir}/python${PYTHON_MAJMIN}/platform.py", 282 "${libdir}/python${PYTHON_MAJMIN}/platform.py",
292 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", 283 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py",
293 "${libdir}/python${PYTHON_MAJMIN}/re.py", 284 "${libdir}/python${PYTHON_MAJMIN}/re",
285 "${libdir}/python${PYTHON_MAJMIN}/re/_casefix.py",
286 "${libdir}/python${PYTHON_MAJMIN}/re/_compiler.py",
287 "${libdir}/python${PYTHON_MAJMIN}/re/_constants.py",
288 "${libdir}/python${PYTHON_MAJMIN}/re/_parser.py",
294 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", 289 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py",
295 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", 290 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
296 "${libdir}/python${PYTHON_MAJMIN}/runpy.py", 291 "${libdir}/python${PYTHON_MAJMIN}/runpy.py",
@@ -307,6 +302,7 @@
307 "${libdir}/python${PYTHON_MAJMIN}/struct.py", 302 "${libdir}/python${PYTHON_MAJMIN}/struct.py",
308 "${libdir}/python${PYTHON_MAJMIN}/subprocess.py", 303 "${libdir}/python${PYTHON_MAJMIN}/subprocess.py",
309 "${libdir}/python${PYTHON_MAJMIN}/symbol.py", 304 "${libdir}/python${PYTHON_MAJMIN}/symbol.py",
305 "${libdir}/python${PYTHON_MAJMIN}/sysconfig",
310 "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py", 306 "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py",
311 "${libdir}/python${PYTHON_MAJMIN}/textwrap.py", 307 "${libdir}/python${PYTHON_MAJMIN}/textwrap.py",
312 "${libdir}/python${PYTHON_MAJMIN}/threading.py", 308 "${libdir}/python${PYTHON_MAJMIN}/threading.py",
@@ -319,14 +315,17 @@
319 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", 315 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py",
320 "${libdir}/python${PYTHON_MAJMIN}/warnings.py", 316 "${libdir}/python${PYTHON_MAJMIN}/warnings.py",
321 "${libdir}/python${PYTHON_MAJMIN}/weakref.py", 317 "${libdir}/python${PYTHON_MAJMIN}/weakref.py",
318 "${libdir}/python${PYTHON_MAJMIN}/zipimport.py",
322 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" 319 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]"
323 ], 320 ],
324 "cached": [ 321 "cached": [
325 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc", 322 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc",
326 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc", 323 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc",
327 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc", 324 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc",
325 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_colorize.*.pyc",
328 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc", 326 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc",
329 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc", 327 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc",
328 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_opcode_metadata.*.pyc",
330 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc", 329 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc",
331 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc", 330 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc",
332 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc", 331 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc",
@@ -343,6 +342,7 @@
343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", 342 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",
344 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", 343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc",
345 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", 344 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc",
345 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
346 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", 346 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc",
347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", 347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc",
348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", 348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
@@ -350,10 +350,12 @@
350 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc", 350 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc",
351 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc", 351 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc",
352 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc", 352 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc",
353 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
353 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc", 354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc",
354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", 355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc",
355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", 356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc",
356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", 357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", 359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", 360 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc",
359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", 361 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc",
@@ -393,6 +395,8 @@
393 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc", 395 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc",
394 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc", 396 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc",
395 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc", 397 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc",
398 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__",
399 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__/pager.*.pyc",
396 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__", 400 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",
397 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc", 401 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc",
398 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__", 402 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__",
@@ -400,9 +404,19 @@
400 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", 404 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc",
401 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", 405 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc",
402 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", 406 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc",
403 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", 408 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc",
404 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", 409 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc",
405 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", 410 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc",
411 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__",
412 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__/_abc.*.pyc",
413 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__/_local.*.pyc",
414 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__",
415 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_casefix.*.pyc",
416 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_compiler.*.pyc",
417 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_constants.*.pyc",
418 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_parser.*.pyc",
419 "${libdir}/python${PYTHON_MAJMIN}/sysconfig/__pycache__",
406 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", 420 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" 421 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc"
408 ] 422 ]
@@ -410,24 +424,18 @@
410 "crypt": { 424 "crypt": {
411 "summary": "Python basic cryptographic and hashing support", 425 "summary": "Python basic cryptographic and hashing support",
412 "rdepends": [ 426 "rdepends": [
413 "core", 427 "core"
414 "math",
415 "stringold"
416 ], 428 ],
417 "files": [ 429 "files": [
418 "${libdir}/python${PYTHON_MAJMIN}/crypt.py",
419 "${libdir}/python${PYTHON_MAJMIN}/hashlib.py", 430 "${libdir}/python${PYTHON_MAJMIN}/hashlib.py",
420 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so", 431 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so",
421 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_crypt.*.so",
422 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", 432 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
423 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", 433 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
424 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", 434 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
425 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so", 435 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so",
426 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so", 436 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so"
427 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"
428 ], 437 ],
429 "cached": [ 438 "cached": [
430 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc",
431 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc" 439 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc"
432 ] 440 ]
433 }, 441 },
@@ -435,7 +443,6 @@
435 "summary": "Python C types support", 443 "summary": "Python C types support",
436 "rdepends": [ 444 "rdepends": [
437 "core", 445 "core",
438 "crypt",
439 "io", 446 "io",
440 "math" 447 "math"
441 ], 448 ],
@@ -519,8 +526,7 @@
519 "${libdir}/pkgconfig" 526 "${libdir}/pkgconfig"
520 ], 527 ],
521 "rdepends": [ 528 "rdepends": [
522 "core", 529 "core"
523 "distutils"
524 ], 530 ],
525 "summary": "Python development package" 531 "summary": "Python development package"
526 }, 532 },
@@ -536,27 +542,6 @@
536 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" 542 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc"
537 ] 543 ]
538 }, 544 },
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": { 545 "doctest": {
561 "summary": "Python framework for running examples in docstrings", 546 "summary": "Python framework for running examples in docstrings",
562 "rdepends": [ 547 "rdepends": [
@@ -579,7 +564,6 @@
579 "summary": "Python email support", 564 "summary": "Python email support",
580 "rdepends": [ 565 "rdepends": [
581 "core", 566 "core",
582 "crypt",
583 "datetime", 567 "datetime",
584 "io", 568 "io",
585 "math", 569 "math",
@@ -595,6 +579,16 @@
595 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" 579 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc"
596 ] 580 ]
597 }, 581 },
582 "ensurepip": {
583 "summary": "Support for bootstrapping the pip installer",
584 "rdepends": [
585 "core"
586 ],
587 "files": [
588 "${libdir}/python${PYTHON_MAJMIN}/ensurepip/"
589 ],
590 "cached": []
591 },
598 "fcntl": { 592 "fcntl": {
599 "summary": "Python's fcntl interface", 593 "summary": "Python's fcntl interface",
600 "rdepends": [ 594 "rdepends": [
@@ -621,12 +615,9 @@
621 "core" 615 "core"
622 ], 616 ],
623 "files": [ 617 "files": [
624 "${libdir}/python${PYTHON_MAJMIN}/formatter.py",
625 "${libdir}/python${PYTHON_MAJMIN}/html" 618 "${libdir}/python${PYTHON_MAJMIN}/html"
626 ], 619 ],
627 "cached": [ 620 "cached": []
628 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc"
629 ]
630 }, 621 },
631 "idle": { 622 "idle": {
632 "summary": "Python Integrated Development Environment", 623 "summary": "Python Integrated Development Environment",
@@ -645,38 +636,30 @@
645 "core" 636 "core"
646 ], 637 ],
647 "files": [ 638 "files": [
648 "${libdir}/python${PYTHON_MAJMIN}/colorsys.py", 639 "${libdir}/python${PYTHON_MAJMIN}/colorsys.py"
649 "${libdir}/python${PYTHON_MAJMIN}/imghdr.py"
650 ], 640 ],
651 "cached": [ 641 "cached": [
652 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc", 642 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc"
653 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imghdr.*.pyc"
654 ] 643 ]
655 }, 644 },
656 "io": { 645 "io": {
657 "summary": "Python low-level I/O", 646 "summary": "Python low-level I/O",
658 "rdepends": [ 647 "rdepends": [
659 "core", 648 "core",
660 "crypt",
661 "math", 649 "math",
662 "netclient", 650 "netclient"
663 "shell"
664 ], 651 ],
665 "files": [ 652 "files": [
666 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", 653 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
667 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
668 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", 654 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so",
669 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", 655 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so",
670 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", 656 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so",
671 "${libdir}/python${PYTHON_MAJMIN}/pipes.py",
672 "${libdir}/python${PYTHON_MAJMIN}/socket.py", 657 "${libdir}/python${PYTHON_MAJMIN}/socket.py",
673 "${libdir}/python${PYTHON_MAJMIN}/ssl.py", 658 "${libdir}/python${PYTHON_MAJMIN}/ssl.py",
674 "${libdir}/python${PYTHON_MAJMIN}/tempfile.py" 659 "${libdir}/python${PYTHON_MAJMIN}/tempfile.py"
675 ], 660 ],
676 "cached": [ 661 "cached": [
677 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", 662 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc",
678 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
679 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc",
680 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", 663 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc",
681 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", 664 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc",
682 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc" 665 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc"
@@ -712,10 +695,8 @@
712 "summary": "Python mailbox format support", 695 "summary": "Python mailbox format support",
713 "rdepends": [ 696 "rdepends": [
714 "core", 697 "core",
715 "crypt",
716 "datetime", 698 "datetime",
717 "email", 699 "email",
718 "fcntl",
719 "io", 700 "io",
720 "math", 701 "math",
721 "mime", 702 "mime",
@@ -732,8 +713,7 @@
732 "math": { 713 "math": {
733 "summary": "Python math support", 714 "summary": "Python math support",
734 "rdepends": [ 715 "rdepends": [
735 "core", 716 "core"
736 "crypt"
737 ], 717 ],
738 "files": [ 718 "files": [
739 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so", 719 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so",
@@ -750,12 +730,10 @@
750 "core" 730 "core"
751 ], 731 ],
752 "files": [ 732 "files": [
753 "${libdir}/python${PYTHON_MAJMIN}/quopri.py", 733 "${libdir}/python${PYTHON_MAJMIN}/quopri.py"
754 "${libdir}/python${PYTHON_MAJMIN}/uu.py"
755 ], 734 ],
756 "cached": [ 735 "cached": [
757 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc", 736 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc"
758 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uu.*.pyc"
759 ] 737 ]
760 }, 738 },
761 "mmap": { 739 "mmap": {
@@ -772,7 +750,6 @@
772 "cached": [], 750 "cached": [],
773 "files": [], 751 "files": [],
774 "rdepends": [ 752 "rdepends": [
775 "2to3",
776 "asyncio", 753 "asyncio",
777 "audio", 754 "audio",
778 "codecs", 755 "codecs",
@@ -786,9 +763,9 @@
786 "db", 763 "db",
787 "debugger", 764 "debugger",
788 "difflib", 765 "difflib",
789 "distutils",
790 "doctest", 766 "doctest",
791 "email", 767 "email",
768 "ensurepip",
792 "fcntl", 769 "fcntl",
793 "html", 770 "html",
794 "idle", 771 "idle",
@@ -812,21 +789,20 @@
812 "pydoc", 789 "pydoc",
813 "resource", 790 "resource",
814 "shell", 791 "shell",
815 "smtpd",
816 "sqlite3", 792 "sqlite3",
793 "statistics",
817 "stringold", 794 "stringold",
818 "syslog", 795 "syslog",
819 "terminal", 796 "terminal",
820 "threading", 797 "threading",
821 "tkinter", 798 "tkinter",
799 "tomllib",
822 "unittest", 800 "unittest",
823 "unixadmin", 801 "unixadmin",
824 "venv", 802 "venv",
825 "xml", 803 "xml",
826 "xmlrpc" 804 "xmlrpc",
827 ], 805 "zoneinfo"
828 "rrecommends": [
829 "distutils-windows"
830 ], 806 ],
831 "summary": "All Python modules" 807 "summary": "All Python modules"
832 }, 808 },
@@ -870,11 +846,10 @@
870 "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__", 846 "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__",
871 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so", 847 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so",
872 "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py", 848 "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",
873 "${libdir}/python${PYTHON_MAJMIN}/nntplib.py",
874 "${libdir}/python${PYTHON_MAJMIN}/poplib.py", 849 "${libdir}/python${PYTHON_MAJMIN}/poplib.py",
875 "${libdir}/python${PYTHON_MAJMIN}/secrets.py", 850 "${libdir}/python${PYTHON_MAJMIN}/secrets.py",
876 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", 851 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py",
877 "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", 852 "${libdir}/python${PYTHON_MAJMIN}/urllib",
878 "${libdir}/python${PYTHON_MAJMIN}/uuid.py" 853 "${libdir}/python${PYTHON_MAJMIN}/uuid.py"
879 ], 854 ],
880 "cached": [ 855 "cached": [
@@ -882,11 +857,9 @@
882 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc", 857 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc",
883 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc", 858 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc",
884 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc", 859 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc",
885 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/nntplib.*.pyc",
886 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc", 860 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc",
887 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc", 861 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc",
888 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc", 862 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc",
889 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/telnetlib.*.pyc",
890 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc" 863 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc"
891 ] 864 ]
892 }, 865 },
@@ -894,22 +867,12 @@
894 "summary": "Python Internet Protocol servers", 867 "summary": "Python Internet Protocol servers",
895 "rdepends": [ 868 "rdepends": [
896 "core", 869 "core",
897 "crypt", 870 "io"
898 "datetime",
899 "email",
900 "html",
901 "io",
902 "math",
903 "mime",
904 "netclient",
905 "stringold"
906 ], 871 ],
907 "files": [ 872 "files": [
908 "${libdir}/python${PYTHON_MAJMIN}/cgi.py",
909 "${libdir}/python${PYTHON_MAJMIN}/socketserver.py" 873 "${libdir}/python${PYTHON_MAJMIN}/socketserver.py"
910 ], 874 ],
911 "cached": [ 875 "cached": [
912 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgi.*.pyc",
913 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc" 876 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc"
914 ] 877 ]
915 }, 878 },
@@ -995,14 +958,12 @@
995 ], 958 ],
996 "files": [ 959 "files": [
997 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", 960 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py",
998 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
999 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", 961 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so",
1000 "${libdir}/python${PYTHON_MAJMIN}/profile.py", 962 "${libdir}/python${PYTHON_MAJMIN}/profile.py",
1001 "${libdir}/python${PYTHON_MAJMIN}/pstats.py" 963 "${libdir}/python${PYTHON_MAJMIN}/pstats.py"
1002 ], 964 ],
1003 "cached": [ 965 "cached": [
1004 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", 966 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc",
1005 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", 967 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc",
1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" 968 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
1008 ] 969 ]
@@ -1039,40 +1000,13 @@
1039 ], 1000 ],
1040 "files": [ 1001 "files": [
1041 "${libdir}/python${PYTHON_MAJMIN}/cmd.py", 1002 "${libdir}/python${PYTHON_MAJMIN}/cmd.py",
1042 "${libdir}/python${PYTHON_MAJMIN}/glob.py",
1043 "${libdir}/python${PYTHON_MAJMIN}/shlex.py" 1003 "${libdir}/python${PYTHON_MAJMIN}/shlex.py"
1044 ], 1004 ],
1045 "cached": [ 1005 "cached": [
1046 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc", 1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc",
1047 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
1048 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" 1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc"
1049 ] 1008 ]
1050 }, 1009 },
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": { 1010 "sqlite3": {
1077 "summary": "Python Sqlite3 database support", 1011 "summary": "Python Sqlite3 database support",
1078 "rdepends": [ 1012 "rdepends": [
@@ -1085,8 +1019,23 @@
1085 ], 1019 ],
1086 "cached": [] 1020 "cached": []
1087 }, 1021 },
1022 "statistics": {
1023 "summary": "Basic statistics module",
1024 "rdepends": [
1025 "core",
1026 "math",
1027 "numbers"
1028 ],
1029 "files": [
1030 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_statistics.*.so",
1031 "${libdir}/python${PYTHON_MAJMIN}/statistics.py"
1032 ],
1033 "cached": [
1034 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc"
1035 ]
1036 },
1088 "stringold": { 1037 "stringold": {
1089 "summary": "Python string APIs [deprecated]", 1038 "summary": "Common string operations",
1090 "rdepends": [ 1039 "rdepends": [
1091 "core" 1040 "core"
1092 ], 1041 ],
@@ -1143,11 +1092,20 @@
1143 "core" 1092 "core"
1144 ], 1093 ],
1145 "files": [ 1094 "files": [
1146 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so",
1147 "${libdir}/python${PYTHON_MAJMIN}/tkinter" 1095 "${libdir}/python${PYTHON_MAJMIN}/tkinter"
1148 ], 1096 ],
1149 "cached": [] 1097 "cached": []
1150 }, 1098 },
1099 "tomllib": {
1100 "summary": "Provides an interface for parsing TOML",
1101 "rdepends": [
1102 "core"
1103 ],
1104 "files": [
1105 "${libdir}/python${PYTHON_MAJMIN}/tomllib/"
1106 ],
1107 "cached": []
1108 },
1151 "unittest": { 1109 "unittest": {
1152 "summary": "Python unit testing framework", 1110 "summary": "Python unit testing framework",
1153 "rdepends": [ 1111 "rdepends": [
@@ -1175,8 +1133,7 @@
1175 "io" 1133 "io"
1176 ], 1134 ],
1177 "files": [ 1135 "files": [
1178 "${libdir}/python${PYTHON_MAJMIN}/getpass.py", 1136 "${libdir}/python${PYTHON_MAJMIN}/getpass.py"
1179 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/nis.*.so"
1180 ], 1137 ],
1181 "cached": [ 1138 "cached": [
1182 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc" 1139 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc"
@@ -1212,13 +1169,10 @@
1212 "rdepends": [ 1169 "rdepends": [
1213 "compression", 1170 "compression",
1214 "core", 1171 "core",
1215 "crypt",
1216 "datetime", 1172 "datetime",
1217 "email", 1173 "email",
1218 "fcntl",
1219 "html", 1174 "html",
1220 "io", 1175 "io",
1221 "math",
1222 "mime", 1176 "mime",
1223 "netclient", 1177 "netclient",
1224 "netserver", 1178 "netserver",
@@ -1232,5 +1186,30 @@
1232 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" 1186 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__"
1233 ], 1187 ],
1234 "cached": [] 1188 "cached": []
1189 },
1190 "zipapp": {
1191 "summary": "Tools to manage the creation of zip files containing Python code",
1192 "rdepends": [
1193 "compression",
1194 "core"
1195 ],
1196 "files": [
1197 "${libdir}/python${PYTHON_MAJMIN}/zipapp.py"
1198 ],
1199 "cached": [
1200 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipapp.*.pyc"
1201 ]
1202 },
1203 "zoneinfo": {
1204 "summary": "IANA time zone support",
1205 "rdepends": [
1206 "core",
1207 "datetime"
1208 ],
1209 "files": [
1210 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_zoneinfo.*.so",
1211 "${libdir}/python${PYTHON_MAJMIN}/zoneinfo"
1212 ],
1213 "cached": []
1235 } 1214 }
1236} 1215}
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'
diff --git a/meta/recipes-devtools/python/python3/valid-dists.patch b/meta/recipes-devtools/python/python3/valid-dists.patch
new file mode 100644
index 0000000000..1b2c078c21
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/valid-dists.patch
@@ -0,0 +1,160 @@
1From a65c29adc027b3615154cab73aaedd58a6aa23da Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Tue, 23 Jul 2024 08:36:16 -0400
4Subject: [PATCH] Prioritize valid dists to invalid dists when retrieving by
5 name.
6
7Closes python/importlib_metadata#489
8
9Upstream-Status: Backport [https://github.com/python/importlib_metadata/commit/a65c29adc027b3615154cab73aaedd58a6aa23da]
10Signed-off-by: Ross Burton <ross.burton@arm.com>
11
12diff --git i/Lib/importlib/metadata/__init__.py w/Lib/importlib/metadata/__init__.py
13index 8ce62dd864f..085378caabc 100644
14--- i/Lib/importlib/metadata/__init__.py
15+++ w/Lib/importlib/metadata/__init__.py
16@@ -21,7 +21,7 @@
17 from . import _meta
18 from ._collections import FreezableDefaultDict, Pair
19 from ._functools import method_cache, pass_none
20-from ._itertools import always_iterable, unique_everseen
21+from ._itertools import always_iterable, bucket, unique_everseen
22 from ._meta import PackageMetadata, SimplePath
23
24 from contextlib import suppress
25@@ -404,7 +404,7 @@ def from_name(cls, name: str) -> Distribution:
26 if not name:
27 raise ValueError("A distribution name is required.")
28 try:
29- return next(iter(cls.discover(name=name)))
30+ return next(iter(cls._prefer_valid(cls.discover(name=name))))
31 except StopIteration:
32 raise PackageNotFoundError(name)
33
34@@ -428,6 +428,16 @@ def discover(
35 resolver(context) for resolver in cls._discover_resolvers()
36 )
37
38+ @staticmethod
39+ def _prefer_valid(dists: Iterable[Distribution]) -> Iterable[Distribution]:
40+ """
41+ Prefer (move to the front) distributions that have metadata.
42+
43+ Ref python/importlib_resources#489.
44+ """
45+ buckets = bucket(dists, lambda dist: bool(dist.metadata))
46+ return itertools.chain(buckets[True], buckets[False])
47+
48 @staticmethod
49 def at(path: str | os.PathLike[str]) -> Distribution:
50 """Return a Distribution for the indicated metadata path.
51diff --git i/Lib/importlib/metadata/_itertools.py w/Lib/importlib/metadata/_itertools.py
52index d4ca9b9140e..79d37198ce7 100644
53--- i/Lib/importlib/metadata/_itertools.py
54+++ w/Lib/importlib/metadata/_itertools.py
55@@ -1,3 +1,4 @@
56+from collections import defaultdict, deque
57 from itertools import filterfalse
58
59
60@@ -71,3 +72,100 @@ def always_iterable(obj, base_type=(str, bytes)):
61 return iter(obj)
62 except TypeError:
63 return iter((obj,))
64+
65+
66+# Copied from more_itertools 10.3
67+class bucket:
68+ """Wrap *iterable* and return an object that buckets the iterable into
69+ child iterables based on a *key* function.
70+
71+ >>> iterable = ['a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'b3']
72+ >>> s = bucket(iterable, key=lambda x: x[0]) # Bucket by 1st character
73+ >>> sorted(list(s)) # Get the keys
74+ ['a', 'b', 'c']
75+ >>> a_iterable = s['a']
76+ >>> next(a_iterable)
77+ 'a1'
78+ >>> next(a_iterable)
79+ 'a2'
80+ >>> list(s['b'])
81+ ['b1', 'b2', 'b3']
82+
83+ The original iterable will be advanced and its items will be cached until
84+ they are used by the child iterables. This may require significant storage.
85+
86+ By default, attempting to select a bucket to which no items belong will
87+ exhaust the iterable and cache all values.
88+ If you specify a *validator* function, selected buckets will instead be
89+ checked against it.
90+
91+ >>> from itertools import count
92+ >>> it = count(1, 2) # Infinite sequence of odd numbers
93+ >>> key = lambda x: x % 10 # Bucket by last digit
94+ >>> validator = lambda x: x in {1, 3, 5, 7, 9} # Odd digits only
95+ >>> s = bucket(it, key=key, validator=validator)
96+ >>> 2 in s
97+ False
98+ >>> list(s[2])
99+ []
100+
101+ """
102+
103+ def __init__(self, iterable, key, validator=None):
104+ self._it = iter(iterable)
105+ self._key = key
106+ self._cache = defaultdict(deque)
107+ self._validator = validator or (lambda x: True)
108+
109+ def __contains__(self, value):
110+ if not self._validator(value):
111+ return False
112+
113+ try:
114+ item = next(self[value])
115+ except StopIteration:
116+ return False
117+ else:
118+ self._cache[value].appendleft(item)
119+
120+ return True
121+
122+ def _get_values(self, value):
123+ """
124+ Helper to yield items from the parent iterator that match *value*.
125+ Items that don't match are stored in the local cache as they
126+ are encountered.
127+ """
128+ while True:
129+ # If we've cached some items that match the target value, emit
130+ # the first one and evict it from the cache.
131+ if self._cache[value]:
132+ yield self._cache[value].popleft()
133+ # Otherwise we need to advance the parent iterator to search for
134+ # a matching item, caching the rest.
135+ else:
136+ while True:
137+ try:
138+ item = next(self._it)
139+ except StopIteration:
140+ return
141+ item_value = self._key(item)
142+ if item_value == value:
143+ yield item
144+ break
145+ elif self._validator(item_value):
146+ self._cache[item_value].append(item)
147+
148+ def __iter__(self):
149+ for item in self._it:
150+ item_value = self._key(item)
151+ if self._validator(item_value):
152+ self._cache[item_value].append(item)
153+
154+ yield from self._cache.keys()
155+
156+ def __getitem__(self, value):
157+ if not self._validator(value):
158+ return iter(())
159+
160+ return self._get_values(value)