summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/python')
-rw-r--r--meta/recipes-devtools/python/python-extras.inc11
-rw-r--r--meta/recipes-devtools/python/python-pycryptodome.inc28
-rw-r--r--meta/recipes-devtools/python/python-six.inc11
-rw-r--r--meta/recipes-devtools/python/python3-alabaster_1.0.0.bb12
-rw-r--r--meta/recipes-devtools/python/python3-asn1crypto_1.5.1.bb24
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb16
-rw-r--r--meta/recipes-devtools/python/python3-attrs_25.3.0.bb28
-rw-r--r--meta/recipes-devtools/python/python3-babel_2.17.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt-crates.inc106
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt_4.3.0.bb21
-rw-r--r--meta/recipes-devtools/python/python3-beartype_0.21.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-booleanpy_5.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-build_1.3.0.bb27
-rw-r--r--meta/recipes-devtools/python/python3-calver_2025.04.17.bb15
-rw-r--r--meta/recipes-devtools/python/python3-certifi_2025.8.3.bb16
-rw-r--r--meta/recipes-devtools/python/python3-cffi/0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch34
-rw-r--r--meta/recipes-devtools/python/python3-cffi/run-ptest7
-rw-r--r--meta/recipes-devtools/python/python3-cffi_1.17.1.bb39
-rw-r--r--meta/recipes-devtools/python/python3-chardet_5.2.0.bb21
-rw-r--r--meta/recipes-devtools/python/python3-click_8.2.2.bb34
-rw-r--r--meta/recipes-devtools/python/python3-coherent-licensed_0.5.2.bb16
-rw-r--r--meta/recipes-devtools/python/python3-colorama_0.4.6.bb10
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-common.inc6
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-crates.inc76
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-vectors.bb19
-rw-r--r--meta/recipes-devtools/python/python3-cryptography.bb71
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch40
-rwxr-xr-xmeta/recipes-devtools/python/python3-cryptography/check-memfree.py10
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/run-ptest9
-rw-r--r--meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch72
-rw-r--r--meta/recipes-devtools/python/python3-cython_3.1.3.bb48
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.4.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.37.0.bb22
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.22.bb16
-rw-r--r--meta/recipes-devtools/python/python3-dtc_1.7.2.bb22
-rw-r--r--meta/recipes-devtools/python/python3-dtschema_2025.8.bb20
-rw-r--r--meta/recipes-devtools/python/python3-editables_0.5.bb13
-rw-r--r--meta/recipes-devtools/python/python3-extras_1.0.0.bb2
-rw-r--r--meta/recipes-devtools/python/python3-flit-core_3.12.0.bb31
-rw-r--r--meta/recipes-devtools/python/python3-git_3.1.43.bb33
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_4.0.12.bb22
-rw-r--r--meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_25.1.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-hatch-vcs_0.5.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-hatchling_1.27.0.bb17
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py135
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/test_rle.py101
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis_6.142.2.bb36
-rw-r--r--meta/recipes-devtools/python/python3-idna_3.11.bb13
-rw-r--r--meta/recipes-devtools/python/python3-imagesize_1.4.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-installer/0001-src-installer-utils.py-sort-entries-before-writing-o.patch27
-rw-r--r--meta/recipes-devtools/python/python3-installer/interpreter.patch71
-rw-r--r--meta/recipes-devtools/python/python3-installer_0.7.0.bb35
-rw-r--r--meta/recipes-devtools/python/python3-iso8601_2.1.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_3.1.6.bb41
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer_3.0.0.bb28
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema-specifications_2025.9.1.bb17
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema_4.25.1.bb48
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c/0001-ffi-Insert-a-replacable-anchor-for-find_library.patch29
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c/new-libarchive.patch41
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c/run-ptest6
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c_5.1.bb45
-rw-r--r--meta/recipes-devtools/python/python3-license-expression_30.4.4.bb30
-rw-r--r--meta/recipes-devtools/python/python3-lxml_6.0.2.bb44
-rw-r--r--meta/recipes-devtools/python/python3-magic_0.4.27.bb22
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.3.10.bb27
-rw-r--r--meta/recipes-devtools/python/python3-markdown_3.9.bb12
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb13
-rw-r--r--meta/recipes-devtools/python/python3-maturin-crates.inc748
-rw-r--r--meta/recipes-devtools/python/python3-maturin_1.9.4.bb42
-rw-r--r--meta/recipes-devtools/python/python3-meson-python_0.18.0.bb28
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch69
-rw-r--r--meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch40
-rw-r--r--meta/recipes-devtools/python/python3-numpy/run-ptest17
-rw-r--r--meta/recipes-devtools/python/python3-numpy_2.3.4.bb79
-rw-r--r--meta/recipes-devtools/python/python3-packaging/run-ptest.in2
-rw-r--r--meta/recipes-devtools/python/python3-packaging_25.0.bb43
-rw-r--r--meta/recipes-devtools/python/python3-pathspec_0.12.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pbr_7.0.1.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pdm-backend_2.4.5.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pdm_2.25.9.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pefile/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pefile_2024.8.26.bb18
-rw-r--r--meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch36
-rw-r--r--meta/recipes-devtools/python/python3-pip_25.2.bb50
-rw-r--r--meta/recipes-devtools/python/python3-pluggy_1.6.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-ply_3.11.bb17
-rw-r--r--meta/recipes-devtools/python/python3-poetry-core_2.1.3.bb41
-rw-r--r--meta/recipes-devtools/python/python3-pretend_1.0.9.bb10
-rw-r--r--meta/recipes-devtools/python/python3-psutil_7.0.0.bb43
-rw-r--r--meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb17
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.28.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-pycparser_2.22.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb9
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.32.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.19.2.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.52.3.bb41
-rw-r--r--meta/recipes-devtools/python/python3-pyopenssl_25.1.0.bb21
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_3.2.4.bb28
-rw-r--r--meta/recipes-devtools/python/python3-pyproject-hooks_1.2.0.bb25
-rw-r--r--meta/recipes-devtools/python/python3-pyproject-metadata_0.9.1.bb28
-rw-r--r--meta/recipes-devtools/python/python3-pyrsistent_0.20.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pysocks_1.7.1.bb21
-rw-r--r--meta/recipes-devtools/python/python3-pytest-subtests_0.14.2.bb24
-rw-r--r--meta/recipes-devtools/python/python3-pytest_8.4.2.bb35
-rw-r--r--meta/recipes-devtools/python/python3-pytz_2025.2.bb30
-rw-r--r--meta/recipes-devtools/python/python3-pyyaml_6.0.2.bb24
-rw-r--r--meta/recipes-devtools/python/python3-rdflib_7.1.4.bb21
-rw-r--r--meta/recipes-devtools/python/python3-referencing_0.37.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh11
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.32.5.bb35
-rw-r--r--meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb21
-rw-r--r--meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb10
-rw-r--r--meta/recipes-devtools/python/python3-roman-numerals-py_3.1.0.bb12
-rw-r--r--meta/recipes-devtools/python/python3-rpds-py-crates.inc54
-rw-r--r--meta/recipes-devtools/python/python3-rpds-py_0.27.1.bb22
-rw-r--r--meta/recipes-devtools/python/python3-ruamel-yaml_0.18.15.bb20
-rw-r--r--meta/recipes-devtools/python/python3-scons_4.9.1.bb29
-rw-r--r--meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb31
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb28
-rw-r--r--meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch58
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_80.9.0.bb55
-rw-r--r--meta/recipes-devtools/python/python3-six_1.17.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch53
-rw-r--r--meta/recipes-devtools/python/python3-smartypants_2.0.2.bb12
-rw-r--r--meta/recipes-devtools/python/python3-smmap_6.0.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-snowballstemmer_3.0.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb9
-rw-r--r--meta/recipes-devtools/python/python3-spdx-tools_0.8.3.bb30
-rw-r--r--meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb10
-rw-r--r--meta/recipes-devtools/python/python3-sphinx-rtd-theme_3.0.2.bb26
-rw-r--r--meta/recipes-devtools/python/python3-sphinx_8.2.1.bb35
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_2.0.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_2.0.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.1.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-jquery_4.1.bb12
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-jsmath_1.0.1.bb12
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_2.0.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_2.0.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.4.4.bb15
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.7.2.bb22
-rw-r--r--meta/recipes-devtools/python/python3-trove-classifiers_2025.9.11.17.bb15
-rw-r--r--meta/recipes-devtools/python/python3-typing-extensions_4.15.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-typogrify_2.1.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-unittest-automake-output_0.3.bb14
-rw-r--r--meta/recipes-devtools/python/python3-uritools_5.0.0.bb11
-rw-r--r--meta/recipes-devtools/python/python3-urllib3_2.5.0.bb33
-rw-r--r--meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb11
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb16
-rw-r--r--meta/recipes-devtools/python/python3-webcolors_24.11.1.bb14
-rw-r--r--meta/recipes-devtools/python/python3-websockets_15.0.1.bb15
-rw-r--r--meta/recipes-devtools/python/python3-wheel_0.46.1.bb20
-rw-r--r--meta/recipes-devtools/python/python3-xmltodict_0.15.1.bb19
-rw-r--r--meta/recipes-devtools/python/python3-yamllint_1.37.1.bb14
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.23.0.bb15
-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-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-prefix-value-from-build-configu.patch31
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch33
-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-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.patch45
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch46
-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
-rwxr-xr-xmeta/recipes-devtools/python/python3/check_build_completeness.py17
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py444
-rw-r--r--meta/recipes-devtools/python/python3/get_module_deps3.py174
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch31
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json1215
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py21
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3/valid-dists.patch164
-rw-r--r--meta/recipes-devtools/python/python3_3.13.9.bb487
186 files changed, 0 insertions, 9360 deletions
diff --git a/meta/recipes-devtools/python/python-extras.inc b/meta/recipes-devtools/python/python-extras.inc
deleted file mode 100644
index b562f90d12..0000000000
--- a/meta/recipes-devtools/python/python-extras.inc
+++ /dev/null
@@ -1,11 +0,0 @@
1SUMMARY = "Useful extra bits for Python - things that should be in the standard library"
2HOMEPAGE = "https://pypi.org/project/extras/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=6d108f338b2f68fe48ac366c4650bd8b"
6
7inherit pypi
8
9SRC_URI[sha256sum] = "132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e"
10
11BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python-pycryptodome.inc b/meta/recipes-devtools/python/python-pycryptodome.inc
deleted file mode 100644
index ec9241e6d5..0000000000
--- a/meta/recipes-devtools/python/python-pycryptodome.inc
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "Cryptographic library for Python"
2DESCRIPTION = "PyCryptodome is a self-contained Python package of low-level\
3 cryptographic primitives."
4HOMEPAGE = "http://www.pycryptodome.org"
5LICENSE = "PD & BSD-2-Clause"
6LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=29242a70410a4eeff488a28164e7ab93"
7
8inherit pypi
9
10RDEPENDS:${PN} += " \
11 python3-cffi \
12 python3-ctypes \
13 python3-io \
14 python3-math \
15"
16
17RDEPENDS:${PN}-tests += " \
18 python3-unittest \
19"
20
21PACKAGES =+ "${PN}-tests"
22
23FILES:${PN}-tests = " \
24 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
25 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
deleted file mode 100644
index f7a62b6068..0000000000
--- a/meta/recipes-devtools/python/python-six.inc
+++ /dev/null
@@ -1,11 +0,0 @@
1SUMMARY = "Python 2 and 3 compatibility library"
2HOMEPAGE = "https://pypi.org/project/six/"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e50fab7e9501f3dfc920eafeb24b46ea"
6
7inherit pypi
8
9RDEPENDS:${PN} = "python3-io"
10
11BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-alabaster_1.0.0.bb b/meta/recipes-devtools/python/python3-alabaster_1.0.0.bb
deleted file mode 100644
index 40be6039eb..0000000000
--- a/meta/recipes-devtools/python/python3-alabaster_1.0.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "Alabaster is a visually (c)lean, responsive, configurable theme for the Sphinx documentation system."
2HOMEPAGE = "https://alabaster.readthedocs.io/en/latest/"
3BUGTRACKER = "https://github.com/sphinx-doc/alabaster/issues"
4SECTION = "devel/python"
5LICENSE = "BSD-3-Clause"
6LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=21860fdb805bf4e0bfaf94b566b747fa"
7
8SRC_URI[sha256sum] = "c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"
9
10inherit python_flit_core pypi
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-asn1crypto_1.5.1.bb b/meta/recipes-devtools/python/python3-asn1crypto_1.5.1.bb
deleted file mode 100644
index 322497b09b..0000000000
--- a/meta/recipes-devtools/python/python3-asn1crypto_1.5.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "A fast, pure Python library for parsing and serializing ASN.1 structures"
2HOMEPAGE = "https://github.com/wbond/asn1crypto"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=b5cda97fbd7959ad47a952651a87051a"
6
7PYPI_PACKAGE = "asn1crypto"
8
9SRC_URI[sha256sum] = "13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"
10
11inherit pypi setuptools3
12
13RDEPENDS:${PN}:class-target += " \
14 python3-codecs \
15 python3-crypt \
16 python3-ctypes \
17 python3-datetime \
18 python3-io \
19 python3-netclient \
20 python3-numbers \
21 python3-shell \
22"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
deleted file mode 100644
index b14b62ab2f..0000000000
--- a/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
+++ /dev/null
@@ -1,16 +0,0 @@
1SUMMARY = "Powerful Python library for atomic file writes"
2HOMEPAGE = "https://github.com/untitaker/python-atomicwrites"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4"
5
6SRC_URI[sha256sum] = "81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"
7
8inherit pypi setuptools3 ptest-python-pytest
9
10RDEPENDS:${PN}-ptest += " \
11 python3-unixadmin \
12"
13
14RDEPENDS:${PN} = "python3-misc"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-attrs_25.3.0.bb b/meta/recipes-devtools/python/python3-attrs_25.3.0.bb
deleted file mode 100644
index bed26a5184..0000000000
--- a/meta/recipes-devtools/python/python3-attrs_25.3.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "Classes Without Boilerplate"
2HOMEPAGE = "http://www.attrs.org/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=5e55731824cf9205cfabeab9a0600887"
5
6SRC_URI[sha256sum] = "75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"
7
8inherit pypi ptest-python-pytest python_hatchling
9
10DEPENDS += " \
11 python3-hatch-vcs-native \
12 python3-hatch-fancy-pypi-readme-native \
13"
14
15RDEPENDS:${PN} += " \
16 python3-compression \
17 python3-crypt \
18"
19
20RDEPENDS:${PN}-ptest += " \
21 python3-hypothesis \
22"
23
24do_install_ptest:append() {
25 install ${S}/conftest.py ${D}${PTEST_PATH}/
26}
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-babel_2.17.0.bb b/meta/recipes-devtools/python/python3-babel_2.17.0.bb
deleted file mode 100644
index adffaa044c..0000000000
--- a/meta/recipes-devtools/python/python3-babel_2.17.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
1SUMMARY = "A collection of tools for internationalizing Python applications"
2HOMEPAGE = "http://babel.edgewall.org/"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=e83509a66c69efcb4f3a7d4f27fd0693"
5
6SRC_URI[sha256sum] = "0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"
7
8inherit pypi setuptools3
9
10S = "${UNPACKDIR}/babel-${PV}"
11
12CLEANBROKEN = "1"
13
14RDEPENDS:${PN} += " \
15 python3-codecs \
16 python3-difflib \
17 python3-netserver \
18 python3-numbers \
19 python3-pickle \
20 python3-pytz \
21 python3-setuptools \
22 python3-shell \
23 python3-threading \
24"
25
26BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-bcrypt-crates.inc b/meta/recipes-devtools/python/python3-bcrypt-crates.inc
deleted file mode 100644
index e0a2926519..0000000000
--- a/meta/recipes-devtools/python/python3-bcrypt-crates.inc
+++ /dev/null
@@ -1,106 +0,0 @@
1# Autogenerated with 'bitbake -c update_crates python3-bcrypt'
2
3# from src/_bcrypt/Cargo.lock
4SRC_URI += " \
5 crate://crates.io/autocfg/1.4.0 \
6 crate://crates.io/base64/0.22.1 \
7 crate://crates.io/bcrypt/0.17.0 \
8 crate://crates.io/bcrypt-pbkdf/0.10.0 \
9 crate://crates.io/bitflags/2.8.0 \
10 crate://crates.io/block-buffer/0.10.4 \
11 crate://crates.io/blowfish/0.9.1 \
12 crate://crates.io/byteorder/1.5.0 \
13 crate://crates.io/cfg-if/1.0.0 \
14 crate://crates.io/cipher/0.4.4 \
15 crate://crates.io/cpufeatures/0.2.17 \
16 crate://crates.io/crypto-common/0.1.6 \
17 crate://crates.io/digest/0.10.7 \
18 crate://crates.io/generic-array/0.14.7 \
19 crate://crates.io/getrandom/0.3.1 \
20 crate://crates.io/heck/0.5.0 \
21 crate://crates.io/indoc/2.0.5 \
22 crate://crates.io/inout/0.1.4 \
23 crate://crates.io/libc/0.2.170 \
24 crate://crates.io/memoffset/0.9.1 \
25 crate://crates.io/once_cell/1.20.3 \
26 crate://crates.io/pbkdf2/0.12.2 \
27 crate://crates.io/portable-atomic/1.11.0 \
28 crate://crates.io/proc-macro2/1.0.93 \
29 crate://crates.io/pyo3/0.23.5 \
30 crate://crates.io/pyo3-build-config/0.23.5 \
31 crate://crates.io/pyo3-ffi/0.23.5 \
32 crate://crates.io/pyo3-macros/0.23.5 \
33 crate://crates.io/pyo3-macros-backend/0.23.5 \
34 crate://crates.io/quote/1.0.38 \
35 crate://crates.io/sha2/0.10.8 \
36 crate://crates.io/subtle/2.6.1 \
37 crate://crates.io/syn/2.0.98 \
38 crate://crates.io/target-lexicon/0.12.16 \
39 crate://crates.io/typenum/1.18.0 \
40 crate://crates.io/unicode-ident/1.0.17 \
41 crate://crates.io/unindent/0.2.3 \
42 crate://crates.io/version_check/0.9.5 \
43 crate://crates.io/wasi/0.13.3+wasi-0.2.2 \
44 crate://crates.io/windows-targets/0.52.6 \
45 crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
46 crate://crates.io/windows_aarch64_msvc/0.52.6 \
47 crate://crates.io/windows_i686_gnu/0.52.6 \
48 crate://crates.io/windows_i686_gnullvm/0.52.6 \
49 crate://crates.io/windows_i686_msvc/0.52.6 \
50 crate://crates.io/windows_x86_64_gnu/0.52.6 \
51 crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
52 crate://crates.io/windows_x86_64_msvc/0.52.6 \
53 crate://crates.io/wit-bindgen-rt/0.33.0 \
54 crate://crates.io/zeroize/1.8.1 \
55"
56
57SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
58SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
59SRC_URI[bcrypt-0.17.0.sha256sum] = "92758ad6077e4c76a6cadbce5005f666df70d4f13b19976b1a8062eef880040f"
60SRC_URI[bcrypt-pbkdf-0.10.0.sha256sum] = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2"
61SRC_URI[bitflags-2.8.0.sha256sum] = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
62SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
63SRC_URI[blowfish-0.9.1.sha256sum] = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7"
64SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
65SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
66SRC_URI[cipher-0.4.4.sha256sum] = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
67SRC_URI[cpufeatures-0.2.17.sha256sum] = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
68SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
69SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
70SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
71SRC_URI[getrandom-0.3.1.sha256sum] = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
72SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
73SRC_URI[indoc-2.0.5.sha256sum] = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
74SRC_URI[inout-0.1.4.sha256sum] = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
75SRC_URI[libc-0.2.170.sha256sum] = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
76SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
77SRC_URI[once_cell-1.20.3.sha256sum] = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
78SRC_URI[pbkdf2-0.12.2.sha256sum] = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
79SRC_URI[portable-atomic-1.11.0.sha256sum] = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
80SRC_URI[proc-macro2-1.0.93.sha256sum] = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
81SRC_URI[pyo3-0.23.5.sha256sum] = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
82SRC_URI[pyo3-build-config-0.23.5.sha256sum] = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
83SRC_URI[pyo3-ffi-0.23.5.sha256sum] = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
84SRC_URI[pyo3-macros-0.23.5.sha256sum] = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
85SRC_URI[pyo3-macros-backend-0.23.5.sha256sum] = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
86SRC_URI[quote-1.0.38.sha256sum] = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
87SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
88SRC_URI[subtle-2.6.1.sha256sum] = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
89SRC_URI[syn-2.0.98.sha256sum] = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
90SRC_URI[target-lexicon-0.12.16.sha256sum] = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
91SRC_URI[typenum-1.18.0.sha256sum] = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
92SRC_URI[unicode-ident-1.0.17.sha256sum] = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
93SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
94SRC_URI[version_check-0.9.5.sha256sum] = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
95SRC_URI[wasi-0.13.3+wasi-0.2.2.sha256sum] = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
96SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
97SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
98SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
99SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
100SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
101SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
102SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
103SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
104SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
105SRC_URI[wit-bindgen-rt-0.33.0.sha256sum] = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
106SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
diff --git a/meta/recipes-devtools/python/python3-bcrypt_4.3.0.bb b/meta/recipes-devtools/python/python3-bcrypt_4.3.0.bb
deleted file mode 100644
index 931aae4310..0000000000
--- a/meta/recipes-devtools/python/python3-bcrypt_4.3.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "Modern password hashing for your software and your servers."
2LICENSE = "Apache-2.0"
3LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c"
4HOMEPAGE = "https://pypi.org/project/bcrypt/"
5
6DEPENDS += "python3-cffi-native"
7LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '-fuse-ld=bfd', '', d)}"
8
9SRC_URI[sha256sum] = "3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18"
10
11inherit pypi python_setuptools3_rust cargo-update-recipe-crates ptest-python-pytest
12
13CARGO_SRC_DIR = "src/_bcrypt"
14
15require ${BPN}-crates.inc
16
17RDEPENDS:${PN}:class-target += "\
18 python3-cffi \
19 python3-ctypes \
20 python3-shell \
21"
diff --git a/meta/recipes-devtools/python/python3-beartype_0.21.0.bb b/meta/recipes-devtools/python/python3-beartype_0.21.0.bb
deleted file mode 100644
index 43427c1472..0000000000
--- a/meta/recipes-devtools/python/python3-beartype_0.21.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Unbearably fast runtime type checking in pure Python."
2HOMEPAGE = "https://beartype.readthedocs.io"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=3a5bc05a109d235912da97a053cd7a58"
6
7SRC_URI[sha256sum] = "f9a5078f5ce87261c2d22851d19b050b64f6a805439e8793aecf01ce660d3244"
8
9inherit pypi python_hatchling
10
11RDEPENDS:${PN} += "python3-numbers python3-io"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-booleanpy_5.0.bb b/meta/recipes-devtools/python/python3-booleanpy_5.0.bb
deleted file mode 100644
index e51ad9d2c1..0000000000
--- a/meta/recipes-devtools/python/python3-booleanpy_5.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL"
2HOMEPAGE = "https://github.com/bastikr/boolean.py"
3
4LICENSE = "BSD-2-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d118b5feceee598ebeca76e13395c2bd"
6
7SRC_URI[sha256sum] = "60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95"
8
9PYPI_PACKAGE = "boolean_py"
10UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
11
12inherit pypi setuptools3
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-build_1.3.0.bb b/meta/recipes-devtools/python/python3-build_1.3.0.bb
deleted file mode 100644
index 2bf08ca08b..0000000000
--- a/meta/recipes-devtools/python/python3-build_1.3.0.bb
+++ /dev/null
@@ -1,27 +0,0 @@
1SUMMARY = "A simple, correct PEP517 package builder"
2HOMEPAGE = "https://github.com/pypa/build"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=310439af287b0fb4780b2ad6907c256c"
5
6SRC_URI[sha256sum] = "698edd0ea270bde950f53aed21f3a0135672206f3911e0176261a31e0e07b397"
7
8inherit pypi python_flit_core
9
10DEPENDS += "python3-pyproject-hooks-native"
11
12do_compile:class-native() {
13 python_flit_core_do_manual_build
14}
15
16RDEPENDS:${PN} += " \
17 python3-compression \
18 python3-difflib \
19 python3-ensurepip \
20 python3-logging \
21 python3-packaging \
22 python3-pyproject-hooks \
23 python3-tomllib \
24 python3-venv \
25"
26
27BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-calver_2025.04.17.bb b/meta/recipes-devtools/python/python3-calver_2025.04.17.bb
deleted file mode 100644
index 85ad18701c..0000000000
--- a/meta/recipes-devtools/python/python3-calver_2025.04.17.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Setuptools extension for CalVer package versions"
2HOMEPAGE = "https://github.com/di/calver"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
5
6SRC_URI = "git://github.com/di/calver;branch=master;protocol=https;tag=${PV}"
7SRCREV = "3b74bdce35f2814eb2b65db39a133d5c849ddea7"
8
9inherit python_setuptools_build_meta ptest-python-pytest
10
11RDEPENDS:${PN}-ptest += " \
12 python3-pretend \
13"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-certifi_2025.8.3.bb b/meta/recipes-devtools/python/python3-certifi_2025.8.3.bb
deleted file mode 100644
index d3e842b4bd..0000000000
--- a/meta/recipes-devtools/python/python3-certifi_2025.8.3.bb
+++ /dev/null
@@ -1,16 +0,0 @@
1SUMMARY = "Python package for providing Mozilla's CA Bundle."
2DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \
3Python code. This is useful for verifying HTTP requests, for example. This is the same CA Bundle \
4which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set."
5HOMEPAGE = " http://certifi.io/"
6
7LICENSE = "ISC"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=11618cb6a975948679286b1211bd573c"
9
10SRC_URI[sha256sum] = "e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407"
11
12inherit pypi python_setuptools_build_meta
13
14BBCLASSEXTEND = "native nativesdk"
15
16RDEPENDS:${PN} += "python3-io"
diff --git a/meta/recipes-devtools/python/python3-cffi/0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch b/meta/recipes-devtools/python/python3-cffi/0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch
deleted file mode 100644
index a919f4f6fb..0000000000
--- a/meta/recipes-devtools/python/python3-cffi/0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 2ac63f8765e62f1492ef3ee06791636700bc6cfb Mon Sep 17 00:00:00 2001
2From: triallax <triallax@tutanota.com>
3Date: Sat, 29 Jun 2024 15:25:24 +0100
4Subject: [PATCH] Cast offset to size_t to avoid c++11-narrowing warning (#92)
5
6e.g. with clang 18 on chimera linux:
7
8_CFFI_test_verify_anonymous_struct_with_star_typedef.cpp:583:10: error: non-constant-expression cannot be narrowed from type 'long' to 'size_t' (aka 'unsigned long') in initializer list [-Wc++11-narrowing]
9 583 | { "a", ((char *)&((foo_t)4096)->a) - (char *)4096,
10 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11_CFFI_test_verify_anonymous_struct_with_star_typedef.cpp:583:10: note: insert an explicit cast to silence this issue
12 583 | { "a", ((char *)&((foo_t)4096)->a) - (char *)4096,
13 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 | static_cast<size_t>( )
15
16Upstream-Status: Backport [https://github.com/python-cffi/cffi/pull/92]
17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18---
19 src/cffi/recompiler.py | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
22diff --git a/src/cffi/recompiler.py b/src/cffi/recompiler.py
23index ac6c163e..14d578ee 100644
24--- a/src/cffi/recompiler.py
25+++ b/src/cffi/recompiler.py
26@@ -953,7 +953,7 @@ class Recompiler:
27 if cname is None or fbitsize >= 0:
28 offset = '(size_t)-1'
29 elif named_ptr is not None:
30- offset = '((char *)&((%s)4096)->%s) - (char *)4096' % (
31+ offset = '(size_t)(((char *)&((%s)4096)->%s) - (char *)4096)' % (
32 named_ptr.name, fldname)
33 else:
34 offset = 'offsetof(%s, %s)' % (tp.get_c_name(''), fldname)
diff --git a/meta/recipes-devtools/python/python3-cffi/run-ptest b/meta/recipes-devtools/python/python3-cffi/run-ptest
deleted file mode 100644
index 24ee6f2156..0000000000
--- a/meta/recipes-devtools/python/python3-cffi/run-ptest
+++ /dev/null
@@ -1,7 +0,0 @@
1#!/bin/sh
2
3# test_passing_large_list often causes an OOM, skip for now
4
5# test_version verifies that versions match across the source tree, ignore
6# as we don't have a source tree
7pytest --automake -k 'not test_passing_large_list and not test_version'
diff --git a/meta/recipes-devtools/python/python3-cffi_1.17.1.bb b/meta/recipes-devtools/python/python3-cffi_1.17.1.bb
deleted file mode 100644
index 5a3af03d9f..0000000000
--- a/meta/recipes-devtools/python/python3-cffi_1.17.1.bb
+++ /dev/null
@@ -1,39 +0,0 @@
1SUMMARY = "Foreign Function Interface for Python calling C code"
2HOMEPAGE = "http://cffi.readthedocs.org/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf"
5DEPENDS += "libffi python3-pycparser"
6
7SRC_URI[sha256sum] = "1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"
8
9SRC_URI += "file://run-ptest \
10 file://0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch"
11
12inherit pypi python_setuptools_build_meta ptest pkgconfig
13
14do_install_ptest() {
15 cp -r ${S}/testing ${D}${PTEST_PATH}
16 # These two files from the source tree are needed by the tests
17 install -D -m644 ${S}/src/c/parse_c_type.c ${D}${PTEST_PATH}/src/c/parse_c_type.c
18 install -D -m644 ${S}/src/cffi/parse_c_type.h ${D}${PTEST_PATH}/src/cffi/parse_c_type.h
19}
20
21RDEPENDS:${PN} = " \
22 python3-ctypes \
23 python3-io \
24 python3-pycparser \
25 python3-setuptools \
26 python3-shell \
27"
28
29RDEPENDS:${PN}-ptest += " \
30 python3-pytest \
31 python3-unittest-automake-output \
32 python3-dev \
33 gcc-symlinks \
34 g++-symlinks \
35"
36
37INSANE_SKIP:${PN}-ptest = "dev-deps"
38
39BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-chardet_5.2.0.bb b/meta/recipes-devtools/python/python3-chardet_5.2.0.bb
deleted file mode 100644
index 9acbeeb3f2..0000000000
--- a/meta/recipes-devtools/python/python3-chardet_5.2.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "Universal encoding detector for Python 2 and 3"
2HOMEPAGE = "https://pypi.org/project/chardet/"
3LICENSE = "LGPL-2.1-only"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c"
5
6SRC_URI[sha256sum] = "1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"
7
8inherit pypi python_setuptools_build_meta
9
10PACKAGES =+ "${PN}-cli"
11FILES:${PN}-cli += " \
12 ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \
13"
14
15RDEPENDS:${PN}-cli = "${PN} "
16
17RDEPENDS:${PN}:class-target += " \
18 python3-logging \
19"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-click_8.2.2.bb b/meta/recipes-devtools/python/python3-click_8.2.2.bb
deleted file mode 100644
index 9710e8a71c..0000000000
--- a/meta/recipes-devtools/python/python3-click_8.2.2.bb
+++ /dev/null
@@ -1,34 +0,0 @@
1SUMMARY = "A simple wrapper around optparse for powerful command line utilities."
2DESCRIPTION = "\
3Click is a Python package for creating beautiful command line interfaces \
4in a composable way with as little code as necessary. It's the "Command \
5Line Interface Creation Kit". It's highly configurable but comes with \
6sensible defaults out of the box."
7HOMEPAGE = "http://click.pocoo.org/"
8LICENSE = "BSD-3-Clause"
9LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1fa98232fd645608937a0fdc82e999b8"
10
11SRC_URI[sha256sum] = "068616e6ef9705a07b6db727cb9c248f4eb9dae437a30239f56fa94b18b852ef"
12
13inherit pypi python_flit_core ptest-python-pytest
14
15RDEPENDS:${PN}-ptest += " \
16 python3-pytest \
17 python3-terminal \
18 python3-unixadmin \
19"
20
21do_install_ptest:append() {
22 cp -rf ${S}/pyproject.toml ${D}${PTEST_PATH}/
23 cp -rf ${S}/docs ${D}${PTEST_PATH}/
24}
25
26CLEANBROKEN = "1"
27
28RDEPENDS:${PN} += "\
29 python3-io \
30 python3-threading \
31 "
32RDEPENDS:${PN}-ptest += "coreutils less"
33
34BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-coherent-licensed_0.5.2.bb b/meta/recipes-devtools/python/python3-coherent-licensed_0.5.2.bb
deleted file mode 100644
index 538154118f..0000000000
--- a/meta/recipes-devtools/python/python3-coherent-licensed_0.5.2.bb
+++ /dev/null
@@ -1,16 +0,0 @@
1SUMMARY = "License management tooling for Coherent System and skeleton projects"
2DESCRIPTION = "This library was built for coherent.build and skeleton projects \
3to inject a license file at build time to reflect the license declared in the \
4License Expression."
5HOMEPAGE = "https://github.com/coherent-oss/coherent.licensed"
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=1aeae65f25a15b1e46d4381f2f094e0a"
8
9SRC_URI[sha256sum] = "d8071403ce742d3ac3592ddc4fb7057a46caffb415b928b4d52802e5f208416d"
10
11inherit pypi python_flit_core
12
13PYPI_PACKAGE = "coherent_licensed"
14UPSTREAM_CHECK_PYPI_PACKAGE = "coherent_licensed"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-colorama_0.4.6.bb b/meta/recipes-devtools/python/python3-colorama_0.4.6.bb
deleted file mode 100644
index c33310b969..0000000000
--- a/meta/recipes-devtools/python/python3-colorama_0.4.6.bb
+++ /dev/null
@@ -1,10 +0,0 @@
1SUMMARY = "Cross-platform colored terminal text."
2HOMEPAGE = "https://github.com/tartley/colorama"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b4936429a56a652b84c5c01280dcaa26"
5
6inherit pypi python_hatchling
7
8SRC_URI[sha256sum] = "08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"
9
10BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cryptography-common.inc b/meta/recipes-devtools/python/python3-cryptography-common.inc
deleted file mode 100644
index bcb907b645..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography-common.inc
+++ /dev/null
@@ -1,6 +0,0 @@
1# Sharing PV between cryptography and cryptography-vectors will
2# ensure that updating one but not the other will cause a build error.
3#
4# Additionally AUH will detect that they share this .inc file and
5# perform a lockstep upgrade for both.
6PV = "45.0.7"
diff --git a/meta/recipes-devtools/python/python3-cryptography-crates.inc b/meta/recipes-devtools/python/python3-cryptography-crates.inc
deleted file mode 100644
index e178790448..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography-crates.inc
+++ /dev/null
@@ -1,76 +0,0 @@
1# Autogenerated with 'bitbake -c update_crates python3-cryptography'
2
3# from Cargo.lock
4SRC_URI += " \
5 crate://crates.io/asn1/0.21.3 \
6 crate://crates.io/asn1_derive/0.21.3 \
7 crate://crates.io/autocfg/1.4.0 \
8 crate://crates.io/base64/0.22.1 \
9 crate://crates.io/bitflags/2.9.1 \
10 crate://crates.io/cc/1.2.23 \
11 crate://crates.io/cfg-if/1.0.0 \
12 crate://crates.io/foreign-types/0.3.2 \
13 crate://crates.io/foreign-types-shared/0.1.1 \
14 crate://crates.io/heck/0.5.0 \
15 crate://crates.io/indoc/2.0.6 \
16 crate://crates.io/itoa/1.0.15 \
17 crate://crates.io/libc/0.2.172 \
18 crate://crates.io/memoffset/0.9.1 \
19 crate://crates.io/once_cell/1.21.3 \
20 crate://crates.io/openssl/0.10.72 \
21 crate://crates.io/openssl-macros/0.1.1 \
22 crate://crates.io/openssl-sys/0.9.108 \
23 crate://crates.io/pem/3.0.5 \
24 crate://crates.io/pkg-config/0.3.32 \
25 crate://crates.io/portable-atomic/1.11.0 \
26 crate://crates.io/proc-macro2/1.0.95 \
27 crate://crates.io/pyo3/0.25.0 \
28 crate://crates.io/pyo3-build-config/0.25.0 \
29 crate://crates.io/pyo3-ffi/0.25.0 \
30 crate://crates.io/pyo3-macros/0.25.0 \
31 crate://crates.io/pyo3-macros-backend/0.25.0 \
32 crate://crates.io/quote/1.0.40 \
33 crate://crates.io/self_cell/1.2.0 \
34 crate://crates.io/shlex/1.3.0 \
35 crate://crates.io/syn/2.0.101 \
36 crate://crates.io/target-lexicon/0.13.2 \
37 crate://crates.io/unicode-ident/1.0.18 \
38 crate://crates.io/unindent/0.2.4 \
39 crate://crates.io/vcpkg/0.2.15 \
40"
41
42SRC_URI[asn1-0.21.3.sha256sum] = "2d9c3502a6f1b50a2c69b97b71638a81ad3b21b9874604880401b9b2b0bf758f"
43SRC_URI[asn1_derive-0.21.3.sha256sum] = "1766ebcb519d8dd186d60dfa912571edcaa2c1f995e2e56643a261a87df69a61"
44SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
45SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
46SRC_URI[bitflags-2.9.1.sha256sum] = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
47SRC_URI[cc-1.2.23.sha256sum] = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766"
48SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
49SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
50SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
51SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
52SRC_URI[indoc-2.0.6.sha256sum] = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
53SRC_URI[itoa-1.0.15.sha256sum] = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
54SRC_URI[libc-0.2.172.sha256sum] = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
55SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
56SRC_URI[once_cell-1.21.3.sha256sum] = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
57SRC_URI[openssl-0.10.72.sha256sum] = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
58SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
59SRC_URI[openssl-sys-0.9.108.sha256sum] = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847"
60SRC_URI[pem-3.0.5.sha256sum] = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3"
61SRC_URI[pkg-config-0.3.32.sha256sum] = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
62SRC_URI[portable-atomic-1.11.0.sha256sum] = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
63SRC_URI[proc-macro2-1.0.95.sha256sum] = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
64SRC_URI[pyo3-0.25.0.sha256sum] = "f239d656363bcee73afef85277f1b281e8ac6212a1d42aa90e55b90ed43c47a4"
65SRC_URI[pyo3-build-config-0.25.0.sha256sum] = "755ea671a1c34044fa165247aaf6f419ca39caa6003aee791a0df2713d8f1b6d"
66SRC_URI[pyo3-ffi-0.25.0.sha256sum] = "fc95a2e67091e44791d4ea300ff744be5293f394f1bafd9f78c080814d35956e"
67SRC_URI[pyo3-macros-0.25.0.sha256sum] = "a179641d1b93920829a62f15e87c0ed791b6c8db2271ba0fd7c2686090510214"
68SRC_URI[pyo3-macros-backend-0.25.0.sha256sum] = "9dff85ebcaab8c441b0e3f7ae40a6963ecea8a9f5e74f647e33fcf5ec9a1e89e"
69SRC_URI[quote-1.0.40.sha256sum] = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
70SRC_URI[self_cell-1.2.0.sha256sum] = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749"
71SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
72SRC_URI[syn-2.0.101.sha256sum] = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
73SRC_URI[target-lexicon-0.13.2.sha256sum] = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
74SRC_URI[unicode-ident-1.0.18.sha256sum] = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
75SRC_URI[unindent-0.2.4.sha256sum] = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
76SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
diff --git a/meta/recipes-devtools/python/python3-cryptography-vectors.bb b/meta/recipes-devtools/python/python3-cryptography-vectors.bb
deleted file mode 100644
index e845486a94..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography-vectors.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "Test vectors for the cryptography package."
2HOMEPAGE = "https://cryptography.io/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0 | BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \
6 file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
7 file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b"
8
9# NOTE: Make sure to keep this recipe at the same version as python3-cryptography
10# Upgrade both recipes at the same time
11require python3-cryptography-common.inc
12SRC_URI[sha256sum] = "48e71fc4ac5f6298b2de53a99726ddc4a9e5ef0a94d921820109e7b90baf9f56"
13
14PYPI_PACKAGE = "cryptography_vectors"
15UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
16
17inherit pypi python_flit_core
18
19BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cryptography.bb b/meta/recipes-devtools/python/python3-cryptography.bb
deleted file mode 100644
index 55fdf13972..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography.bb
+++ /dev/null
@@ -1,71 +0,0 @@
1SUMMARY = "Provides cryptographic recipes and primitives to python developers"
2HOMEPAGE = "https://cryptography.io/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0 | BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \
6 file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \
7 file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b \
8 "
9LDSHARED += "-pthread"
10
11# NOTE: Make sure to keep this recipe at the same version as python3-cryptography-vectors
12# Upgrade both recipes at the same time
13require python3-cryptography-common.inc
14SRC_URI[sha256sum] = "4b1654dfc64ea479c242508eb8c724044f1e964a47d1d1cacc5132292d851971"
15
16SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
17 file://check-memfree.py \
18 file://run-ptest \
19 "
20
21require ${BPN}-crates.inc
22
23inherit pypi python_maturin cargo-update-recipe-crates pkgconfig
24
25DEPENDS += " \
26 python3-cffi-native \
27 openssl \
28"
29
30RDEPENDS:${PN} += " \
31 python3-cffi \
32"
33
34RDEPENDS:${PN}:append:class-target = " \
35 python3-numbers \
36 python3-threading \
37"
38
39RDEPENDS:${PN}-ptest += " \
40 python3-bcrypt \
41 python3-cryptography-vectors (= ${PV}) \
42 python3-hypothesis \
43 python3-iso8601 \
44 python3-mmap \
45 python3-pretend \
46 python3-psutil \
47 python3-pytest \
48 python3-unittest-automake-output \
49 python3-pytest-subtests \
50 python3-pytz \
51"
52
53inherit ptest
54
55do_install_ptest() {
56 install -D ${UNPACKDIR}/check-memfree.py ${D}${PTEST_PATH}/
57 install -d ${D}${PTEST_PATH}/tests
58 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
59 # remove test_x509.py as it needs benchmark and we don't
60 # want to introduce the benchmark dependency
61 rm -rf ${D}${PTEST_PATH}/tests/bench/test_x509.py
62 install -d ${D}${PTEST_PATH}/tests/hazmat
63 cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
64 cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/
65}
66
67FILES:${PN}-dbg += " \
68 ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \
69"
70
71BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch b/meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch
deleted file mode 100644
index 16681e80a8..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From b033cd32813a104fb216135cdca7da7180912e56 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Tue, 17 May 2022 17:22:48 +0800
4Subject: [PATCH] pyproject.toml: remove --benchmark-disable option
5
6The new version introduced below change, so remove the option
7to avoid python3-pytest-benchmark rdepends to fix the gap.
8496703c8 Refs #7079 -- added basic scaffholding for benchmarks (#7087)
9
10Fixes:
11 # ./run-ptest
12 Free memory: 31.283 GB
13 ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...]
14 pytest: error: unrecognized arguments: --benchmark-disable
15 inifile: /usr/lib/python3-cryptography/ptest/pyproject.toml
16 rootdir: /usr/lib/python3-cryptography/ptest
17
18Upstream-Status: Inappropriate [OE specific]
19
20Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
21
22Refresh for 42.02
23Signed-off-by: Tim Orling <tim.orling@konsulko.com>
24---
25 pyproject.toml | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
27
28diff --git a/pyproject.toml b/pyproject.toml
29index 4746201..df98351 100644
30--- a/pyproject.toml
31+++ b/pyproject.toml
32@@ -129,7 +129,7 @@ exclude = [
33 ]
34
35 [tool.pytest.ini_options]
36-addopts = "-r s --capture=no --strict-markers --benchmark-disable"
37+addopts = "-r s --capture=no --strict-markers"
38 console_output_style = "progress-even-when-capture-no"
39 markers = [
40 "skip_fips: this test is not executed in FIPS mode",
diff --git a/meta/recipes-devtools/python/python3-cryptography/check-memfree.py b/meta/recipes-devtools/python/python3-cryptography/check-memfree.py
deleted file mode 100755
index ed680d8d5b..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography/check-memfree.py
+++ /dev/null
@@ -1,10 +0,0 @@
1#!/usr/bin/env python3
2# https://stackoverflow.com/questions/22102999/get-total-physical-memory-in-python/28161352
3import sys
4meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines())
5mem_free = meminfo['MemTotal']/1024./1024.
6if mem_free < 2.:
7 print("Insufficient free memory({:.3f}): requires > 2 GB".format(mem_free))
8 sys.exit(1)
9else:
10 print("Free memory: {:.3f} GB".format(mem_free))
diff --git a/meta/recipes-devtools/python/python3-cryptography/run-ptest b/meta/recipes-devtools/python/python3-cryptography/run-ptest
deleted file mode 100644
index fe191a5dc4..0000000000
--- a/meta/recipes-devtools/python/python3-cryptography/run-ptest
+++ /dev/null
@@ -1,9 +0,0 @@
1#!/bin/sh
2
3if ./check-memfree.py; then
4 # Skip the bench test module, we don't yet have pytest3-benchmark in core
5 # and these are more benchmarks than unit tests.
6 pytest --automake -k 'not bench'
7else
8 echo "SKIP: crytography.not_enough_memory"
9fi
diff --git a/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch b/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch
deleted file mode 100644
index 1fbbd8fd48..0000000000
--- a/meta/recipes-devtools/python/python3-cython/0001-Replace-not-predictable-build-path-prefix-with-hardc.patch
+++ /dev/null
@@ -1,72 +0,0 @@
1From 1690c505f1387e1884565021991a162e2f88f2b9 Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Wed, 17 Sep 2025 01:42:08 -0700
4Subject: [PATCH] Replace not predictable build path prefix with hardcode
5 string in the generated output file
6
7The build path may contain tmp dir which is not predictable, it caused
8the generated output file is not stable at each build and made
9the generated library is not reproducible [1] between builds
10
11vim frozenlist/_frozenlist.cpp
12...
13/* BEGIN: Cython Metadata
14{
15 "distutils": {
16 "depends": [],
17 "language": "c++",
18 "name": "frozenlist._frozenlist",
19 "sources": [
20 "/tmp/.tmp-frozenlist-pep517-cfdvygni/src/frozenlist/_frozenlist.pyx"
21 ]
22 },
23 "module_name": "frozenlist._frozenlist"
24}
25END: Cython Metadata */
26...
27
28Replace build path prefix with hardcode `build_path', it is no harm to
29tweak comments in source file, after applied this commit,
30vim frozenlist/_frozenlist.cpp
31...
32/* BEGIN: Cython Metadata
33{
34 "distutils": {
35 "depends": [],
36 "language": "c++",
37 "name": "frozenlist._frozenlist",
38 "sources": [
39 "build_path/frozenlist/_frozenlist.pyx"
40 ]
41 },
42 "module_name": "frozenlist._frozenlist"
43}
44END: Cython Metadata */
45...
46
47[1] https://reproducible-builds.org/
48
49Upstream-Status: Submitted [https://github.com/cython/cython/pull/7162]
50Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
51---
52 Cython/Compiler/ModuleNode.py | 4 +++-
53 1 file changed, 3 insertions(+), 1 deletion(-)
54
55diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py
56index 6672cb986..b1123515e 100644
57--- a/Cython/Compiler/ModuleNode.py
58+++ b/Cython/Compiler/ModuleNode.py
59@@ -779,7 +779,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
60 code.put_generated_by()
61 if metadata:
62 code.putln("/* BEGIN: Cython Metadata")
63- code.putln(json.dumps(metadata, indent=4, sort_keys=True))
64+ _metadata = json.dumps(metadata, indent=4, sort_keys=True)
65+ _metadata = _metadata.replace(os.getcwd(), 'build_path')
66+ code.putln(_metadata)
67 code.putln("END: Cython Metadata */")
68 code.putln("")
69
70--
712.49.0
72
diff --git a/meta/recipes-devtools/python/python3-cython_3.1.3.bb b/meta/recipes-devtools/python/python3-cython_3.1.3.bb
deleted file mode 100644
index 3b2835d9c5..0000000000
--- a/meta/recipes-devtools/python/python3-cython_3.1.3.bb
+++ /dev/null
@@ -1,48 +0,0 @@
1SUMMARY = "The Cython language"
2HOMEPAGE = "https://pypi.org/project/Cython/"
3DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
4It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
5and the messy, low-level world of C."
6SECTION = "devel/python"
7LICENSE = "Apache-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c"
9
10SRC_URI[sha256sum] = "10ee785e42328924b78f75a74f66a813cb956b4a9bc91c44816d089d5934c089"
11
12inherit pypi setuptools3 cython
13
14SRC_URI += " \
15 file://0001-Replace-not-predictable-build-path-prefix-with-hardc.patch \
16"
17
18# No need to depend on self
19DEPENDS:remove = "python3-cython-native"
20
21do_install:append() {
22 # rename scripts that would conflict with the Python 2 build of Cython
23 mv ${D}${bindir}/cython ${D}${bindir}/cython3
24 mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
25 mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
26}
27
28RDEPENDS:${PN}:class-target += "\
29 python3-misc \
30 python3-netserver \
31 python3-pkgutil \
32 python3-pyparsing \
33 python3-setuptools \
34 python3-shell \
35 python3-xml \
36"
37
38RDEPENDS:${PN}:class-nativesdk += "\
39 nativesdk-python3-misc \
40 nativesdk-python3-netserver \
41 nativesdk-python3-pkgutil \
42 nativesdk-python3-pyparsing \
43 nativesdk-python3-setuptools \
44 nativesdk-python3-shell \
45 nativesdk-python3-xml \
46"
47
48BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dbus_1.4.0.bb b/meta/recipes-devtools/python/python3-dbus_1.4.0.bb
deleted file mode 100644
index 2854eda30a..0000000000
--- a/meta/recipes-devtools/python/python3-dbus_1.4.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
1SUMMARY = "Python bindings for the DBus inter-process communication system"
2SECTION = "devel/python"
3HOMEPAGE = "http://www.freedesktop.org/Software/dbus"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://COPYING;md5=97f58951300aa52a9f9e3a62bd5c846c"
6DEPENDS = "expat dbus glib-2.0 virtual/libintl"
7
8SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.xz"
9
10SRC_URI[sha256sum] = "c36b28f10ffcc8f1f798aca973bcc132f91f33eb9b6b8904381b4077766043d5"
11
12S = "${UNPACKDIR}/dbus-python-${PV}"
13
14inherit setuptools3-base meson pkgconfig
15
16# requires dbus-run-session
17EXTRA_OEMESON += "-Dtests=false"
18
19RDEPENDS:${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml"
20
21FILES:${PN}-dev += "${libdir}/pkgconfig"
22
23BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dbusmock_0.37.0.bb b/meta/recipes-devtools/python/python3-dbusmock_0.37.0.bb
deleted file mode 100644
index 9592c83727..0000000000
--- a/meta/recipes-devtools/python/python3-dbusmock_0.37.0.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
2HOMEPAGE = "https://pypi.org/project/python-dbusmock/"
3
4LICENSE = "GPL-3.0-only"
5LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
6
7SRC_URI[sha256sum] = "38754c5ad2ad8f3936ff67d4b058bca416588a72bc094e91ded9f8f401b06310"
8
9PYPI_PACKAGE = "python_dbusmock"
10
11inherit pypi python_setuptools_build_meta
12DEPENDS += "python3-setuptools-scm-native"
13
14RDEPENDS:${PN} += "\
15 python3-dbus \
16 python3-unittest \
17 python3-xml \
18 "
19
20RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'gobject-introspection-data', '${MLPREFIX}python3-pygobject', '', d)}"
21
22BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-docutils_0.22.bb b/meta/recipes-devtools/python/python3-docutils_0.22.bb
deleted file mode 100644
index 2dafa034fb..0000000000
--- a/meta/recipes-devtools/python/python3-docutils_0.22.bb
+++ /dev/null
@@ -1,16 +0,0 @@
1SUMMARY = "Docutils is a modular system for processing documentation into useful formats"
2HOMEPAGE = "http://docutils.sourceforge.net"
3SECTION = "devel/python"
4LICENSE = "CC0-1.0 & BSD-2-Clause & GPL-3.0-only"
5LIC_FILES_CHKSUM = "file://COPYING.rst;md5=ce467b04b35c7ac3429b6908fc8b318e"
6
7SRC_URI[sha256sum] = "ba9d57750e92331ebe7c08a1bbf7a7f8143b86c476acd51528b042216a6aad0f"
8
9inherit pypi python_flit_core
10
11RDEPENDS:${PN} += "python3-pprint"
12
13# We don't install the emacs lisp, which is the only piece of GPLv3
14LICENSE:${PN} = "CC0-1.0 & BSD-2-Clause"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dtc_1.7.2.bb b/meta/recipes-devtools/python/python3-dtc_1.7.2.bb
deleted file mode 100644
index 9525c340cd..0000000000
--- a/meta/recipes-devtools/python/python3-dtc_1.7.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "Python Library for the Device Tree Compiler"
2HOMEPAGE = "https://devicetree.org/"
3DESCRIPTION = "A python library for the Device Tree Compiler, a tool used to manipulate Device Tree files which contain a data structure for describing hardware."
4SECTION = "bootloader"
5LICENSE = "GPL-2.0-only | BSD-2-Clause"
6
7DEPENDS = "flex-native bison-native swig-native python3-setuptools-scm-native libyaml dtc"
8
9SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=main \
10 "
11
12UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
13
14LIC_FILES_CHKSUM = "file://pylibfdt/libfdt.i;beginline=1;endline=6;md5=afda088c974174a29108c8d80b5dce90"
15
16SRCREV = "2d10aa2afe35527728db30b35ec491ecb6959e5c"
17
18PYPA_WHEEL = "${S}/dist/libfdt-1.6.2*.whl"
19
20inherit setuptools3 pkgconfig
21
22BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dtschema_2025.8.bb b/meta/recipes-devtools/python/python3-dtschema_2025.8.bb
deleted file mode 100644
index 9aba5f85ee..0000000000
--- a/meta/recipes-devtools/python/python3-dtschema_2025.8.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1SUMMARY = "Tooling for devicetree validation using YAML and jsonschema"
2HOMEPAGE = "https://github.com/devicetree-org/dt-schema"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=457495c8fa03540db4a576bf7869e811"
5
6inherit pypi python_setuptools_build_meta
7
8PYPI_PACKAGE = "dtschema"
9
10SRC_URI[sha256sum] = "3c63b643fa76215b32cc6cbea9fd0dc7627dc71c67f3dca14fc04d70a7e1235e"
11
12DEPENDS += "python3-setuptools-scm-native"
13RDEPENDS:${PN} += "\
14 python3-dtc \
15 python3-jsonschema \
16 python3-rfc3987 \
17 python3-ruamel-yaml \
18 "
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-editables_0.5.bb b/meta/recipes-devtools/python/python3-editables_0.5.bb
deleted file mode 100644
index 11566f096b..0000000000
--- a/meta/recipes-devtools/python/python3-editables_0.5.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "A Python library for creating editable wheels"
2HOMEPAGE = "https://github.com/pfmoore/editables"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=41bc1be47b7bb8240db3ef928c7cb0bf"
6
7SRC_URI[sha256sum] = "309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2"
8
9inherit pypi python_flit_core
10
11RDEPENDS:${PN} += "python3-io"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-extras_1.0.0.bb b/meta/recipes-devtools/python/python3-extras_1.0.0.bb
deleted file mode 100644
index 76f87f2640..0000000000
--- a/meta/recipes-devtools/python/python3-extras_1.0.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
1inherit setuptools3
2require python-extras.inc
diff --git a/meta/recipes-devtools/python/python3-flit-core_3.12.0.bb b/meta/recipes-devtools/python/python3-flit-core_3.12.0.bb
deleted file mode 100644
index e40ffd0d0f..0000000000
--- a/meta/recipes-devtools/python/python3-flit-core_3.12.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
1SUMMARY = "This provides a PEP 517 build backend for packages using Flit."
2DESCRIPTION = "This provides a PEP 517 build backend for packages using \
3Flit. The only public interface is the API specified by PEP 517, at \
4flit_core.buildapi."
5HOMEPAGE = "https://github.com/pypa/flit"
6BUGTRACKER = "https://github.com/pypa/flit/issues"
7
8LICENSE = "BSD-3-Clause"
9LIC_FILES_CHKSUM = "file://LICENSE;md5=41eb78fa8a872983a882c694a8305f08"
10
11SRC_URI[sha256sum] = "1c80f34dd96992e7758b40423d2809f48f640ca285d0b7821825e50745ec3740"
12
13inherit pypi python_flit_core
14
15# Need to install by hand as there's a dependency loop
16DEPENDS:remove:class-native = " python3-build-native python3-installer-native"
17DEPENDS:append:class-native = " unzip-native"
18
19# We need the full flit tarball
20PYPI_PACKAGE = "flit"
21PEP517_SOURCE_PATH = "${S}/flit_core"
22
23do_compile:class-native () {
24 python_flit_core_do_manual_build
25}
26
27do_install:class-native () {
28 python_pep517_do_bootstrap_install
29}
30
31BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-git_3.1.43.bb b/meta/recipes-devtools/python/python3-git_3.1.43.bb
deleted file mode 100644
index 2126b5e92b..0000000000
--- a/meta/recipes-devtools/python/python3-git_3.1.43.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1SUMMARY = "Python library used to interact with Git repositories"
2DESCRIPTION = "GitPython provides object model read and write access to \
3a git repository. Access repository information conveniently, alter the \
4index directly, handle remotes, or go down to low-level object database \
5access with big-files support."
6HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
7SECTION = "devel/python"
8LICENSE = "BSD-3-Clause"
9LIC_FILES_CHKSUM = "file://LICENSE;md5=5279a7ab369ba336989dcf2a107e5c8e"
10
11PYPI_PACKAGE = "GitPython"
12UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
13
14inherit pypi python_setuptools_build_meta
15
16SRC_URI[sha256sum] = "35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"
17
18DEPENDS += " python3-gitdb"
19
20RDEPENDS:${PN} += " \
21 python3-datetime \
22 python3-gitdb \
23 python3-io \
24 python3-logging \
25 python3-math \
26 python3-netclient \
27 python3-stringold \
28 python3-unittest \
29 python3-unixadmin \
30 git \
31"
32
33BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-gitdb_4.0.12.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.12.bb
deleted file mode 100644
index 0b7eec876f..0000000000
--- a/meta/recipes-devtools/python/python3-gitdb_4.0.12.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "A pure-Python git object database"
2HOMEPAGE = "http://github.com/gitpython-developers/gitdb"
3SECTION = "devel/python"
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528"
6
7DEPENDS = "python3-smmap"
8
9inherit pypi setuptools3
10
11PYPI_PACKAGE = "gitdb"
12
13SRC_URI[sha256sum] = "5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571"
14
15RDEPENDS:${PN} += "python3-compression \
16 python3-crypt \
17 python3-io \
18 python3-mmap \
19 python3-shell \
20 python3-smmap \
21"
22BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_25.1.0.bb b/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_25.1.0.bb
deleted file mode 100644
index 5d8d82edd8..0000000000
--- a/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_25.1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Hatch plugin for fancy PyPI readmes "
2HOMEPAGE = "https://pypi.org/project/hatch-fancy-pypi-readme/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ba5633c60bd3e243091013aa83b4d807"
5
6inherit pypi python_hatchling
7
8PYPI_PACKAGE = "hatch_fancy_pypi_readme"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11SRC_URI[sha256sum] = "9c58ed3dff90d51f43414ce37009ad1d5b0f08ffc9fc216998a06380f01c0045"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-hatch-vcs_0.5.0.bb b/meta/recipes-devtools/python/python3-hatch-vcs_0.5.0.bb
deleted file mode 100644
index 011e28eb81..0000000000
--- a/meta/recipes-devtools/python/python3-hatch-vcs_0.5.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Hatch plugin for versioning with your preferred VCS"
2HOMEPAGE = "https://pypi.org/project/hatch-vcs/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=26501cfd0bbddf830ee820e95551fa3d"
5
6inherit pypi python_hatchling
7
8PYPI_PACKAGE = "hatch_vcs"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11SRC_URI[sha256sum] = "0395fa126940340215090c344a2bf4e2a77bcbe7daab16f41b37b98c95809ff9"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-hatchling_1.27.0.bb b/meta/recipes-devtools/python/python3-hatchling_1.27.0.bb
deleted file mode 100644
index 5239d8155c..0000000000
--- a/meta/recipes-devtools/python/python3-hatchling_1.27.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "The extensible, standards compliant build backend used by Hatch"
2HOMEPAGE = "https://hatch.pypa.io/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cbe2fd33fc9297692812fc94b7d27fd9"
5
6inherit pypi python_hatchling
7
8DEPENDS += "python3-pluggy-native python3-pathspec-native python3-packaging-native python3-editables-native python3-trove-classifiers-native"
9DEPENDS:remove:class-native = "python3-hatchling-native"
10
11SRC_URI[sha256sum] = "971c296d9819abb3811112fc52c7a9751c8d381898f36533bb16f9791e941fd6"
12
13do_compile:prepend() {
14 export PYTHONPATH=src
15}
16
17BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py b/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
deleted file mode 100644
index 21267c4ac2..0000000000
--- a/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
+++ /dev/null
@@ -1,135 +0,0 @@
1# This file is part of Hypothesis, which may be found at
2# https://github.com/HypothesisWorks/hypothesis/
3#
4# Most of this work is copyright (C) 2013-2021 David R. MacIver
5# (david@drmaciver.com), but it contains contributions by others. See
6# CONTRIBUTING.rst for a full list of people who may hold copyright, and
7# consult the git log if you need to determine who owns an individual
8# contribution.
9#
10# This Source Code Form is subject to the terms of the Mozilla Public License,
11# v. 2.0. If a copy of the MPL was not distributed with this file, You can
12# obtain one at https://mozilla.org/MPL/2.0/.
13#
14# END HEADER
15#
16# SPDX-License-Identifier: MPL-2.0
17
18"""This file demonstrates testing a binary search.
19
20It's a useful example because the result of the binary search is so clearly
21determined by the invariants it must satisfy, so we can simply test for those
22invariants.
23
24It also demonstrates the useful testing technique of testing how the answer
25should change (or not) in response to movements in the underlying data.
26"""
27
28from hypothesis import given, strategies as st
29
30
31def binary_search(ls, v):
32 """Take a list ls and a value v such that ls is sorted and v is comparable
33 with the elements of ls.
34
35 Return an index i such that 0 <= i <= len(v) with the properties:
36
37 1. ls.insert(i, v) is sorted
38 2. ls.insert(j, v) is not sorted for j < i
39 """
40 # Without this check we will get an index error on the next line when the
41 # list is empty.
42 if not ls:
43 return 0
44
45 # Without this check we will miss the case where the insertion point should
46 # be zero: The invariant we maintain in the next section is that lo is
47 # always strictly lower than the insertion point.
48 if v <= ls[0]:
49 return 0
50
51 # Invariant: There is no insertion point i with i <= lo
52 lo = 0
53
54 # Invariant: There is an insertion point i with i <= hi
55 hi = len(ls)
56 while lo + 1 < hi:
57 mid = (lo + hi) // 2
58 if v > ls[mid]:
59 # Inserting v anywhere below mid would result in an unsorted list
60 # because it's > the value at mid. Therefore mid is a valid new lo
61 lo = mid
62 # Uncommenting the following lines will cause this to return a valid
63 # insertion point which is not always minimal.
64 # elif v == ls[mid]:
65 # return mid
66 else:
67 # Either v == ls[mid] in which case mid is a valid insertion point
68 # or v < ls[mid], in which case all valid insertion points must be
69 # < hi. Either way, mid is a valid new hi.
70 hi = mid
71 assert lo + 1 == hi
72 # We now know that there is a valid insertion point <= hi and there is no
73 # valid insertion point < hi because hi - 1 is lo. Therefore hi is the
74 # answer we were seeking
75 return hi
76
77
78def is_sorted(ls):
79 """Is this list sorted?"""
80 for i in range(len(ls) - 1):
81 if ls[i] > ls[i + 1]:
82 return False
83 return True
84
85
86Values = st.integers()
87
88# We generate arbitrary lists and turn this into generating sorting lists
89# by just sorting them.
90SortedLists = st.lists(Values).map(sorted)
91
92# We could also do it this way, but that would be a bad idea:
93# SortedLists = st.lists(Values).filter(is_sorted)
94# The problem is that Hypothesis will only generate long sorted lists with very
95# low probability, so we are much better off post-processing values into the
96# form we want than filtering them out.
97
98
99@given(ls=SortedLists, v=Values)
100def test_insert_is_sorted(ls, v):
101 """We test the first invariant: binary_search should return an index such
102 that inserting the value provided at that index would result in a sorted
103 set."""
104 ls.insert(binary_search(ls, v), v)
105 assert is_sorted(ls)
106
107
108@given(ls=SortedLists, v=Values)
109def test_is_minimal(ls, v):
110 """We test the second invariant: binary_search should return an index such
111 that no smaller index is a valid insertion point for v."""
112 for i in range(binary_search(ls, v)):
113 ls2 = list(ls)
114 ls2.insert(i, v)
115 assert not is_sorted(ls2)
116
117
118@given(ls=SortedLists, v=Values)
119def test_inserts_into_same_place_twice(ls, v):
120 """In this we test a *consequence* of the second invariant: When we insert
121 a value into a list twice, the insertion point should be the same both
122 times. This is because we know that v is > the previous element and == the
123 next element.
124
125 In theory if the former passes, this should always pass. In practice,
126 failures are detected by this test with much higher probability because it
127 deliberately puts the data into a shape that is likely to trigger a
128 failure.
129
130 This is an instance of a good general category of test: Testing how the
131 function moves in responses to changes in the underlying data.
132 """
133 i = binary_search(ls, v)
134 ls.insert(i, v)
135 assert binary_search(ls, v) == i
diff --git a/meta/recipes-devtools/python/python3-hypothesis/test_rle.py b/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
deleted file mode 100644
index 4d618865ac..0000000000
--- a/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
+++ /dev/null
@@ -1,101 +0,0 @@
1# This file is part of Hypothesis, which may be found at
2# https://github.com/HypothesisWorks/hypothesis/
3#
4# Most of this work is copyright (C) 2013-2021 David R. MacIver
5# (david@drmaciver.com), but it contains contributions by others. See
6# CONTRIBUTING.rst for a full list of people who may hold copyright, and
7# consult the git log if you need to determine who owns an individual
8# contribution.
9#
10# This Source Code Form is subject to the terms of the Mozilla Public License,
11# v. 2.0. If a copy of the MPL was not distributed with this file, You can
12# obtain one at https://mozilla.org/MPL/2.0/.
13#
14# END HEADER
15#
16# SPDX-License-Identifier: MPL-2.0
17
18"""This example demonstrates testing a run length encoding scheme. That is, we
19take a sequence and represent it by a shorter sequence where each 'run' of
20consecutive equal elements is represented as a single element plus a count. So
21e.g.
22
23[1, 1, 1, 1, 2, 1] is represented as [[1, 4], [2, 1], [1, 1]]
24
25This demonstrates the useful decode(encode(x)) == x invariant that is often
26a fruitful source of testing with Hypothesis.
27
28It also has an example of testing invariants in response to changes in the
29underlying data.
30"""
31
32from hypothesis import assume, given, strategies as st
33
34
35def run_length_encode(seq):
36 """Encode a sequence as a new run-length encoded sequence."""
37 if not seq:
38 return []
39 # By starting off the count at zero we simplify the iteration logic
40 # slightly.
41 result = [[seq[0], 0]]
42 for s in seq:
43 if (
44 # If you uncomment this line this branch will be skipped and we'll
45 # always append a new run of length 1. Note which tests fail.
46 # False and
47 s
48 == result[-1][0]
49 # Try uncommenting this line and see what problems occur:
50 # and result[-1][-1] < 2
51 ):
52 result[-1][1] += 1
53 else:
54 result.append([s, 1])
55 return result
56
57
58def run_length_decode(seq):
59 """Take a previously encoded sequence and reconstruct the original from
60 it."""
61 result = []
62 for s, i in seq:
63 for _ in range(i):
64 result.append(s)
65 return result
66
67
68# We use lists of a type that should have a relatively high duplication rate,
69# otherwise we'd almost never get any runs.
70Lists = st.lists(st.integers(0, 10))
71
72
73@given(Lists)
74def test_decodes_to_starting_sequence(ls):
75 """If we encode a sequence and then decode the result, we should get the
76 original sequence back.
77
78 Otherwise we've done something very wrong.
79 """
80 assert run_length_decode(run_length_encode(ls)) == ls
81
82
83@given(Lists, st.data())
84def test_duplicating_an_element_does_not_increase_length(ls, data):
85 """The previous test could be passed by simply returning the input sequence
86 so we need something that tests the compression property of our encoding.
87
88 In this test we deliberately introduce or extend a run and assert
89 that this does not increase the length of our encoding, because they
90 should be part of the same run in the final result.
91 """
92 # We use assume to get a valid index into the list. We could also have used
93 # e.g. flatmap, but this is relatively straightforward and will tend to
94 # perform better.
95 assume(ls)
96 i = data.draw(st.integers(0, len(ls) - 1))
97 ls2 = list(ls)
98 # duplicating the value at i right next to it guarantees they are part of
99 # the same run in the resulting compression.
100 ls2.insert(i, ls2[i])
101 assert len(run_length_encode(ls2)) == len(run_length_encode(ls))
diff --git a/meta/recipes-devtools/python/python3-hypothesis_6.142.2.bb b/meta/recipes-devtools/python/python3-hypothesis_6.142.2.bb
deleted file mode 100644
index 5ba7c66577..0000000000
--- a/meta/recipes-devtools/python/python3-hypothesis_6.142.2.bb
+++ /dev/null
@@ -1,36 +0,0 @@
1SUMMARY = "A library for property-based testing"
2HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python"
3LICENSE = "MPL-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c"
5
6PYPI_PACKAGE = "hypothesis"
7PTEST_PYTEST_DIR ?= "examples"
8
9inherit pypi python_setuptools_build_meta ptest-python-pytest
10
11SRC_URI += " \
12 file://test_binary_search.py \
13 file://test_rle.py \
14 "
15
16SRC_URI[sha256sum] = "c4204a2ce327e45fbaf83a2b58142a285135698dc1d08e368ae9901f06b49e64"
17
18RDEPENDS:${PN} += " \
19 python3-attrs \
20 python3-compression \
21 python3-core \
22 python3-json \
23 python3-pytest \
24 python3-sortedcontainers \
25 python3-statistics \
26 python3-unittest \
27 python3-zoneinfo \
28 "
29
30do_install_ptest:append() {
31 install -d ${D}${PTEST_PATH}/${PTEST_PYTEST_DIR}
32 install -m 0755 ${UNPACKDIR}/test_binary_search.py ${D}${PTEST_PATH}/${PTEST_PYTEST_DIR}/
33 install -m 0755 ${UNPACKDIR}/test_rle.py ${D}${PTEST_PATH}/${PTEST_PYTEST_DIR}/
34}
35
36BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-idna_3.11.bb b/meta/recipes-devtools/python/python3-idna_3.11.bb
deleted file mode 100644
index de4595c1d4..0000000000
--- a/meta/recipes-devtools/python/python3-idna_3.11.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Internationalised Domain Names in Applications"
2HOMEPAGE = "https://github.com/kjd/idna"
3LICENSE = "BSD-3-Clause & Python-2.0 & Unicode-TOU"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=18a4795c19833413a7e2f1cb3cd3b143"
5
6SRC_URI[sha256sum] = "795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902"
7
8inherit pypi python_flit_core ptest-python-pytest
9
10RDEPENDS:${PN} += "python3-codecs"
11RDEPENDS:${PN}-ptest += "python3-unittest-automake-output"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-imagesize_1.4.1.bb b/meta/recipes-devtools/python/python3-imagesize_1.4.1.bb
deleted file mode 100644
index 7d37e2be24..0000000000
--- a/meta/recipes-devtools/python/python3-imagesize_1.4.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Parses image files' header and return image size."
2HOMEPAGE = "https://github.com/shibukawa/imagesize_py"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=0c128f0f7e8a02e1b83884c0b5a41cda"
6
7SRC_URI[sha256sum] = "69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"
8
9inherit setuptools3 pypi
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} = "python3-xml"
diff --git a/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb b/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb
deleted file mode 100644
index d9b31aea4a..0000000000
--- a/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "A small and simple INI-file parser module"
2HOMEPAGE = "https://pypi.org/project/iniconfig/"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=4a73af4b5f1f3a8731e5def70e8c1254"
6
7SRC_URI[sha256sum] = "3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"
8
9DEPENDS += "python3-hatch-vcs-native"
10
11inherit pypi python_hatchling
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-installer/0001-src-installer-utils.py-sort-entries-before-writing-o.patch b/meta/recipes-devtools/python/python3-installer/0001-src-installer-utils.py-sort-entries-before-writing-o.patch
deleted file mode 100644
index a6715ed457..0000000000
--- a/meta/recipes-devtools/python/python3-installer/0001-src-installer-utils.py-sort-entries-before-writing-o.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 760ddf50ce559abd67bbdd31797267d00bcddfb3 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Tue, 1 Oct 2024 19:22:11 +0200
4Subject: [PATCH] src/installer/utils.py: sort entries before writing out
5 RECORD file
6
7This helps build reproducibility.
8
9Upstream-Status: Submitted [https://github.com/pypa/installer/pull/245]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11---
12 src/installer/utils.py | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/src/installer/utils.py b/src/installer/utils.py
16index 3e601d6..073297c 100644
17--- a/src/installer/utils.py
18+++ b/src/installer/utils.py
19@@ -207,7 +207,7 @@ def construct_record_file(
20 io.BytesIO(), encoding="utf-8", write_through=True, newline=""
21 )
22 writer = csv.writer(stream, delimiter=",", quotechar='"', lineterminator="\n")
23- for scheme, record in records:
24+ for scheme, record in sorted(records, key=lambda x: x[1].path):
25 writer.writerow(record.to_row(prefix_for_scheme(scheme)))
26 stream.seek(0)
27 return stream.detach()
diff --git a/meta/recipes-devtools/python/python3-installer/interpreter.patch b/meta/recipes-devtools/python/python3-installer/interpreter.patch
deleted file mode 100644
index 7906769b90..0000000000
--- a/meta/recipes-devtools/python/python3-installer/interpreter.patch
+++ /dev/null
@@ -1,71 +0,0 @@
1From 74fe171fa4a25c120607e9f8450cbdfee675c959 Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@arm.com>
3Date: Mon, 14 Mar 2022 14:39:22 +0000
4Subject: [PATCH] python3-installer: add installer module
5
6Let us override the hashbang directly (possibly upstreamable), and don't
7play games with hashbangs: for now assume that even hashbangs with spaces
8are simple (assume the spaces are only used to separate arguments) and
9we don't have long hashbangs.
10
11Upstream-Status: Inappropriate
12Signed-off-by: Ross Burton <ross.burton@arm.com>
13
14---
15 src/installer/__main__.py | 9 ++++++++-
16 src/installer/scripts.py | 15 +--------------
17 2 files changed, 9 insertions(+), 15 deletions(-)
18
19diff --git a/src/installer/__main__.py b/src/installer/__main__.py
20index 51014b9..38de286 100644
21--- a/src/installer/__main__.py
22+++ b/src/installer/__main__.py
23@@ -30,6 +30,13 @@ def _get_main_parser() -> argparse.ArgumentParser:
24 type=str,
25 help="override prefix to install packages to",
26 )
27+ parser.add_argument(
28+ "--interpreter",
29+ "-i",
30+ type=str,
31+ default=sys.executable,
32+ help=f"interpreter (defaults to {sys.executable})",
33+ )
34 parser.add_argument(
35 "--compile-bytecode",
36 action="append",
37@@ -86,7 +93,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None:
38 with WheelFile.open(args.wheel) as source:
39 destination = SchemeDictionaryDestination(
40 scheme_dict=_get_scheme_dict(source.distribution, prefix=args.prefix),
41- interpreter=sys.executable,
42+ interpreter=args.interpreter,
43 script_kind=get_launcher_kind(),
44 bytecode_optimization_levels=bytecode_levels,
45 destdir=args.destdir,
46diff --git a/src/installer/scripts.py b/src/installer/scripts.py
47index 7e3c8fc..ba6ed5a 100644
48--- a/src/installer/scripts.py
49+++ b/src/installer/scripts.py
50@@ -59,20 +59,7 @@ def _build_shebang(executable: str, forlauncher: bool) -> bytes:
51 https://bitbucket.org/pypa/distlib/src/58cd5c6/distlib/scripts.py#lines-124
52 """
53 executable_bytes = executable.encode("utf-8")
54- if forlauncher: # The launcher can just use the command as-is.
55- return b"#!" + executable_bytes
56- if _is_executable_simple(executable_bytes):
57- return b"#!" + executable_bytes
58-
59- # Shebang support for an executable with a space in it is under-specified
60- # and platform-dependent, so we use a clever hack to generate a script to
61- # run in ``/bin/sh`` that should work on all reasonably modern platforms.
62- # Read the following message to understand how the hack works:
63- # https://github.com/pradyunsg/installer/pull/4#issuecomment-623668717
64-
65- quoted = shlex.quote(executable).encode("utf-8")
66- # I don't understand a lick what this is trying to do.
67- return b"#!/bin/sh\n'''exec' " + quoted + b' "$0" "$@"\n' + b"' '''"
68+ return b"#!" + executable_bytes
69
70
71 class InvalidScript(ValueError):
diff --git a/meta/recipes-devtools/python/python3-installer_0.7.0.bb b/meta/recipes-devtools/python/python3-installer_0.7.0.bb
deleted file mode 100644
index 6aaf1b3a37..0000000000
--- a/meta/recipes-devtools/python/python3-installer_0.7.0.bb
+++ /dev/null
@@ -1,35 +0,0 @@
1SUMMARY = "Library and tool for installing Python wheels"
2DESCRIPTION = "A low-level library for installing a Python package from a wheel distribution."
3HOMEPAGE = "https://installer.readthedocs.io/"
4BUGTRACKER = "https://github.com/pypa/installer/issues"
5
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=5038641aec7a77451e31da828ebfae00"
8
9SRC_URI += "file://interpreter.patch \
10 file://0001-src-installer-utils.py-sort-entries-before-writing-o.patch"
11
12SRC_URI[sha256sum] = "a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631"
13
14inherit pypi python_flit_core
15
16# Bootstrap the native build
17DEPENDS:remove:class-native = "python3-build-native python3-installer-native"
18
19RDEPENDS:${PN} += " \
20 python3-compile \
21 python3-compression \
22 python3-netclient \
23"
24
25INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
26
27do_compile:class-native () {
28 python_flit_core_do_manual_build
29}
30
31do_install:prepend:class-native() {
32 export PYTHONPATH="${S}/src"
33}
34
35BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-iso8601_2.1.0.bb b/meta/recipes-devtools/python/python3-iso8601_2.1.0.bb
deleted file mode 100644
index d7ab4a5a77..0000000000
--- a/meta/recipes-devtools/python/python3-iso8601_2.1.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Simple module to parse ISO 8601 dates"
2HOMEPAGE = "http://pyiso8601.readthedocs.org/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=aab31f2ef7ba214a5a341eaa47a7f367"
5
6SRC_URI[sha256sum] = "6b1d3829ee8921c4301998c909f7829fa9ed3cbdac0d3b16af2d743aed1ba8df"
7
8inherit pypi python_poetry_core
9
10RDEPENDS:${PN} += "\
11 python3-datetime \
12 python3-numbers \
13"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb b/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb
deleted file mode 100644
index 2e96eb0dcb..0000000000
--- a/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb
+++ /dev/null
@@ -1,41 +0,0 @@
1SUMMARY = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
2HOMEPAGE = "https://pypi.org/project/Jinja2/"
3
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=5dc88300786f1c214c1e9827a5229462"
6
7SRC_URI[sha256sum] = "0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"
8
9PYPI_PACKAGE = "jinja2"
10
11CVE_PRODUCT = "jinja2 jinja"
12
13CLEANBROKEN = "1"
14
15inherit pypi python_flit_core ptest-python-pytest
16
17do_install_ptest:append() {
18 # test_async items require trio module
19 rm -f ${D}${PTEST_PATH}/tests/test_async.py ${D}${PTEST_PATH}/tests/test_async_filters.py
20}
21
22RDEPENDS:${PN}-ptest += " \
23 python3-unixadmin \
24"
25
26RDEPENDS:${PN} += " \
27 python3-asyncio \
28 python3-crypt \
29 python3-io \
30 python3-json \
31 python3-markupsafe \
32 python3-math \
33 python3-netclient \
34 python3-numbers\
35 python3-pickle \
36 python3-pprint \
37 python3-shell \
38 python3-threading \
39"
40
41BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jsonpointer/run-ptest b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest
deleted file mode 100644
index 7ebd69231f..0000000000
--- a/meta/recipes-devtools/python/python3-jsonpointer/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3python3 -mputao.unittest tests.py
diff --git a/meta/recipes-devtools/python/python3-jsonpointer_3.0.0.bb b/meta/recipes-devtools/python/python3-jsonpointer_3.0.0.bb
deleted file mode 100644
index 0a23dc3100..0000000000
--- a/meta/recipes-devtools/python/python3-jsonpointer_3.0.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "Resolve JSON Pointers in Python"
2HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b15c843b7a329130f4e266a281ebb3"
5
6inherit pypi ptest setuptools3
7
8SRC_URI[sha256sum] = "2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"
9
10SRC_URI += " \
11 file://run-ptest \
12"
13
14do_install_ptest() {
15 cp -f ${S}/tests.py ${D}${PTEST_PATH}/
16}
17
18RDEPENDS:${PN} += " \
19 python3-json \
20"
21
22RDEPENDS:${PN}-ptest += " \
23 python3-doctest \
24 python3-unittest \
25 python3-unittest-automake-output \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jsonschema-specifications_2025.9.1.bb b/meta/recipes-devtools/python/python3-jsonschema-specifications_2025.9.1.bb
deleted file mode 100644
index 5ad761bad3..0000000000
--- a/meta/recipes-devtools/python/python3-jsonschema-specifications_2025.9.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
2DESCRIPTION = "JSON support files from the JSON Schema Specifications (metaschemas, \
3vocabularies, etc.), packaged for runtime access from Python as a referencing-based Schema Registry."
4HOMEPAGE = "https://pypi.org/project/jsonschema-specifications/"
5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://COPYING;md5=93eb9740964b59e9ba30281255b044e2"
7
8SRC_URI[sha256sum] = "b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d"
9
10inherit pypi python_hatchling
11
12PYPI_PACKAGE = "jsonschema_specifications"
13UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
14
15DEPENDS += "python3-hatch-vcs-native"
16
17BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jsonschema_4.25.1.bb b/meta/recipes-devtools/python/python3-jsonschema_4.25.1.bb
deleted file mode 100644
index 5ccb829ff4..0000000000
--- a/meta/recipes-devtools/python/python3-jsonschema_4.25.1.bb
+++ /dev/null
@@ -1,48 +0,0 @@
1SUMMARY = "An implementation of JSON Schema validation for Python"
2HOMEPAGE = "https://github.com/python-jsonschema/jsonschema"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \
5 file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af"
6
7SRC_URI[sha256sum] = "e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85"
8
9inherit pypi python_hatchling
10
11PACKAGES =+ "${PN}-tests"
12FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/jsonschema/tests"
13
14DEPENDS += "python3-hatch-fancy-pypi-readme-native python3-hatch-vcs-native "
15
16PACKAGECONFIG ??= "format"
17PACKAGECONFIG[format] = ",,,\
18 python3-idna \
19 python3-jsonpointer \
20 python3-webcolors \
21 python3-rfc3987 \
22 python3-rfc3339-validator \
23"
24PACKAGECONFIG[format-nongpl] = ",,,\
25 python3-idna \
26 python3-jsonpointer \
27 python3-webcolors \
28 python3-rfc3986-validator \
29 python3-rfc3339-validator \
30"
31
32RDEPENDS:${PN} += " \
33 python3-attrs \
34 python3-core \
35 python3-datetime \
36 python3-io \
37 python3-json \
38 python3-jsonschema-specifications \
39 python3-netclient \
40 python3-numbers \
41 python3-pprint \
42 python3-referencing \
43 python3-rpds-py \
44"
45
46RDEPENDS:${PN}-tests = "${PN}"
47
48BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-libarchive-c/0001-ffi-Insert-a-replacable-anchor-for-find_library.patch b/meta/recipes-devtools/python/python3-libarchive-c/0001-ffi-Insert-a-replacable-anchor-for-find_library.patch
deleted file mode 100644
index 7b8775802f..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c/0001-ffi-Insert-a-replacable-anchor-for-find_library.patch
+++ /dev/null
@@ -1,29 +0,0 @@
1From ed20aba335996d3aa97d99dfc122eb5a3a26ba1b Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 2 Nov 2024 11:06:01 -0700
4Subject: [PATCH] ffi: Insert a replacable anchor for find_library
5
6@@REPLACE_FIND_LIBRARY_API@@ must be sustituted from bitbake environment via
7recipe. This also helps in detecting changes to code from upstream in
8this area as this patch will fail to apply.
9
10Upstream-Status: Inappropriate [OE-Specific]
11
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13---
14 libarchive/ffi.py | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/libarchive/ffi.py b/libarchive/ffi.py
18index 1fc321a..991f1b6 100644
19--- a/libarchive/ffi.py
20+++ b/libarchive/ffi.py
21@@ -22,7 +22,7 @@ logger = logging.getLogger('libarchive')
22
23 page_size = mmap.PAGESIZE
24
25-libarchive_path = os.environ.get('LIBARCHIVE') or find_library('archive')
26+libarchive_path = os.environ.get('LIBARCHIVE') or @@REPLACE_FIND_LIBRARY_API@@
27 libarchive = ctypes.cdll.LoadLibrary(libarchive_path)
28
29
diff --git a/meta/recipes-devtools/python/python3-libarchive-c/new-libarchive.patch b/meta/recipes-devtools/python/python3-libarchive-c/new-libarchive.patch
deleted file mode 100644
index 681e03a465..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c/new-libarchive.patch
+++ /dev/null
@@ -1,41 +0,0 @@
1From adb206946721a4f5bd1190ab9c975bab4373e35c Mon Sep 17 00:00:00 2001
2From: Changaco <changaco@changaco.oy.lc>
3Date: Fri, 27 Sep 2024 11:51:22 +0200
4Subject: [PATCH] update a test failing with new libarchive versions
5
6fixes #130
7
8Upstream-Status: Submitted [https://github.com/Changaco/python-libarchive-c/pull/131]
9Signed-off-by: Ross Burton <ross.burton@arm.com>
10---
11 tests/test_entry.py | 10 ++++++++--
12 1 file changed, 8 insertions(+), 2 deletions(-)
13
14diff --git a/tests/test_entry.py b/tests/test_entry.py
15index 419cecb..34543a5 100644
16--- a/tests/test_entry.py
17+++ b/tests/test_entry.py
18@@ -9,7 +9,7 @@
19
20 import pytest
21
22-from libarchive import memory_reader, memory_writer
23+from libarchive import ArchiveError, memory_reader, memory_writer
24 from libarchive.entry import ArchiveEntry, ConsumedArchiveEntry, PassedArchiveEntry
25
26 from . import data_dir, get_entries, get_tarinfos
27@@ -64,7 +64,13 @@ def test_check_ArchiveEntry_against_TarInfo():
28
29
30 def test_check_archiveentry_using_python_testtar():
31- check_entries(join(data_dir, 'testtar.tar'))
32+ # This test behaves differently depending on the libarchive version:
33+ # 3.5, 3.6 and presumably all future versions reject the archive as damaged,
34+ # whereas older versions accepted it.
35+ try:
36+ check_entries(join(data_dir, 'testtar.tar'))
37+ except ArchiveError as e:
38+ assert e.msg == "Damaged tar archive"
39
40
41 def test_check_archiveentry_with_unicode_and_binary_entries_tar():
diff --git a/meta/recipes-devtools/python/python3-libarchive-c/run-ptest b/meta/recipes-devtools/python/python3-libarchive-c/run-ptest
deleted file mode 100644
index ddfbba7f94..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c/run-ptest
+++ /dev/null
@@ -1,6 +0,0 @@
1#!/bin/sh
2
3# export needed to set the locale to support accentuated and non-latin chars in tests
4export LC_ALL=en_US.UTF-8
5
6pytest --automake
diff --git a/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb b/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
deleted file mode 100644
index 8b5de01b69..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
+++ /dev/null
@@ -1,45 +0,0 @@
1SUMMARY = "Python interface to libarchive"
2DESCRIPTION = "A Python interface to libarchive. It uses the standard ctypes module to \
3 dynamically load and access the C library."
4HOMEPAGE = "https://github.com/Changaco/python-libarchive-c"
5LICENSE = "CC0-1.0"
6LIC_FILES_CHKSUM = "file://LICENSE.md;md5=bcab380227a83bc147350b40a81e6ffc"
7
8SRC_URI += " \
9 file://new-libarchive.patch \
10 file://0001-ffi-Insert-a-replacable-anchor-for-find_library.patch \
11 file://run-ptest \
12"
13
14PYPI_PACKAGE = "libarchive-c"
15
16inherit pypi setuptools3 ptest-python-pytest
17
18SRC_URI[sha256sum] = "7bcce24ea6c0fa3bc62468476c6d2f6264156db2f04878a372027c10615a2721"
19
20DEPENDS += "patchelf-native libarchive"
21# Avoid using find_library API which needs ldconfig and ld/objdump
22# https://docs.python.org/3/library/ctypes.html#ctypes-reference
23#
24do_configure:append() {
25 sed -i -e "s|@@REPLACE_FIND_LIBRARY_API@@|'${libdir}/$(patchelf --print-soname ${STAGING_LIBDIR}/libarchive.so)'|" ${S}/libarchive/ffi.py
26}
27
28RDEPENDS:${PN} += "\
29 libarchive \
30 python3-ctypes \
31 python3-mmap \
32 python3-logging \
33"
34
35RDEPENDS:${PN}-ptest += " \
36 locale-base-en-us \
37"
38
39BBCLASSEXTEND = "native"
40
41do_install_ptest:append() {
42 install -d ${D}${PTEST_PATH}/libarchive
43 cp ${S}/libarchive/* ${D}${PTEST_PATH}/libarchive/
44 cp ${S}/README.rst ${D}${PTEST_PATH}/README.rst
45}
diff --git a/meta/recipes-devtools/python/python3-license-expression_30.4.4.bb b/meta/recipes-devtools/python/python3-license-expression_30.4.4.bb
deleted file mode 100644
index 690149123a..0000000000
--- a/meta/recipes-devtools/python/python3-license-expression_30.4.4.bb
+++ /dev/null
@@ -1,30 +0,0 @@
1SUMMARY = "Utility library to parse, compare, simplify and normalize license expressions"
2HOMEPAGE = "https://github.com/nexB/license-expression"
3
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
6
7SRC_URI[sha256sum] = "73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd"
8
9inherit pypi ptest-python-pytest python_setuptools_build_meta
10PYPI_PACKAGE = "license_expression"
11UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
12
13DEPENDS += "python3-setuptools-scm-native"
14
15RDEPENDS:${PN} += "\
16 python3-booleanpy \
17 python3-core \
18 python3-json \
19 python3-stringold \
20 python3-logging \
21"
22
23BBCLASSEXTEND = "native nativesdk"
24
25do_install_ptest:append() {
26 # The tests need some files from the source tree
27 install -d ${D}${PTEST_PATH}/src
28 ln -s ${PYTHON_SITEPACKAGES_DIR}/license_expression/ ${D}${PTEST_PATH}/src/
29 install -m644 ${S}/setup.cfg ${D}${PTEST_PATH}/
30}
diff --git a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb b/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
deleted file mode 100644
index 876fda93b6..0000000000
--- a/meta/recipes-devtools/python/python3-lxml_6.0.2.bb
+++ /dev/null
@@ -1,44 +0,0 @@
1SUMMARY = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
2DESCRIPTION = "lxml is a Pythonic, mature binding for the libxml2 and \
3libxslt libraries. It provides safe and convenient access to these \
4libraries using the ElementTree API. It extends the ElementTree API \
5significantly to offer support for XPath, RelaxNG, XML Schema, XSLT, \
6C14N and much more."
7HOMEPAGE = "https://lxml.de/"
8SECTION = "devel/python"
9LICENSE = "BSD-3-Clause & GPL-2.0-only & MIT & PSF-2.0"
10LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \
11 file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \
12 file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \
13 file://doc/licenses/GPL.txt;md5=94d55d512a9ba36caa9b7df079bae19f \
14 file://src/lxml/isoschematron/resources/rng/iso-schematron.rng;beginline=2;endline=7;md5=fc85684a8dd5fa272c086bceb0d99e10 \
15 file://src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl;beginline=2;endline=24;md5=cc86b7b2bbc678e13f58ea403eb9929b \
16 file://src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl;beginline=2;endline=7;md5=5b03236d293dc3784205542b409d2f53 \
17 "
18
19DEPENDS += "libxml2 libxslt"
20
21SRC_URI[sha256sum] = "cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62"
22
23SRC_URI += "${PYPI_SRC_URI}"
24inherit pkgconfig pypi setuptools3
25
26# {standard input}: Assembler messages:
27# {standard input}:1488805: Error: branch out of range
28DEBUG_OPTIMIZATION:remove:mips = " -Og"
29DEBUG_OPTIMIZATION:append:mips = " -O"
30BUILD_OPTIMIZATION:remove:mips = " -Og"
31BUILD_OPTIMIZATION:append:mips = " -O"
32
33DEBUG_OPTIMIZATION:remove:mipsel = " -Og"
34DEBUG_OPTIMIZATION:append:mipsel = " -O"
35BUILD_OPTIMIZATION:remove:mipsel = " -Og"
36BUILD_OPTIMIZATION:append:mipsel = " -O"
37
38BBCLASSEXTEND = "native nativesdk"
39
40RDEPENDS:${PN} += "libxml2 libxslt python3-compression"
41
42CVE_PRODUCT = "lxml"
43
44CLEANBROKEN = "1"
diff --git a/meta/recipes-devtools/python/python3-magic_0.4.27.bb b/meta/recipes-devtools/python/python3-magic_0.4.27.bb
deleted file mode 100644
index 2e561e69d7..0000000000
--- a/meta/recipes-devtools/python/python3-magic_0.4.27.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "File type identification using libmagic"
2DESCRIPTION = "This module uses ctypes to access the libmagic file type \
3 identification library. It makes use of the local magic database and supports \
4 both textual and MIME-type output."
5HOMEPAGE = "http://github.com/ahupp/python-magic"
6
7LICENSE = "MIT"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=61495c152d794e6be5799a9edca149e3"
9
10PYPI_PACKAGE = "python-magic"
11
12inherit pypi setuptools3
13
14SRC_URI[sha256sum] = "c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"
15
16RDEPENDS:${PN} += "file \
17 python3-ctypes \
18 python3-io \
19 python3-logging \
20 python3-shell"
21
22BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-mako_1.3.10.bb b/meta/recipes-devtools/python/python3-mako_1.3.10.bb
deleted file mode 100644
index 2d937dc184..0000000000
--- a/meta/recipes-devtools/python/python3-mako_1.3.10.bb
+++ /dev/null
@@ -1,27 +0,0 @@
1SUMMARY = "Templating library for Python"
2HOMEPAGE = "http://www.makotemplates.org/"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=73026b50800163bd3c75cfdc121d9eb5"
6
7PYPI_PACKAGE = "mako"
8
9inherit pypi python_setuptools_build_meta ptest-python-pytest
10
11SRC_URI[sha256sum] = "99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28"
12
13RDEPENDS:${PN} = "python3-html \
14 python3-markupsafe \
15 python3-misc \
16 python3-netclient \
17 python3-pygments \
18 python3-threading \
19"
20
21PTEST_PYTEST_DIR = "test"
22
23do_install_ptest:append() {
24 install -m 0644 ${S}/setup.cfg ${D}${PTEST_PATH}/
25}
26
27BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-markdown_3.9.bb b/meta/recipes-devtools/python/python3-markdown_3.9.bb
deleted file mode 100644
index 67375e1321..0000000000
--- a/meta/recipes-devtools/python/python3-markdown_3.9.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "A Python implementation of John Gruber's Markdown."
2HOMEPAGE = "https://python-markdown.github.io/"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ec58cdf7cfed06a21f7a9362627a5480"
5
6inherit pypi python_setuptools_build_meta
7
8SRC_URI[sha256sum] = "d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a"
9
10BBCLASSEXTEND = "native nativesdk"
11
12RDEPENDS:${PN} += "python3-logging python3-setuptools"
diff --git a/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb b/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb
deleted file mode 100644
index b90dd84f48..0000000000
--- a/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Implements a XML/HTML/XHTML Markup safe string for Python"
2HOMEPAGE = "http://github.com/mitsuhiko/markupsafe"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
5
6SRC_URI[sha256sum] = "ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"
7
8PYPI_PACKAGE = "markupsafe"
9inherit pypi python_setuptools_build_meta ptest-python-pytest
10
11RDEPENDS:${PN} += "python3-html python3-stringold"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-maturin-crates.inc b/meta/recipes-devtools/python/python3-maturin-crates.inc
deleted file mode 100644
index 28551ff4ca..0000000000
--- a/meta/recipes-devtools/python/python3-maturin-crates.inc
+++ /dev/null
@@ -1,748 +0,0 @@
1# Autogenerated with 'bitbake -c update_crates python3-maturin'
2
3# from Cargo.lock
4SRC_URI += " \
5 crate://crates.io/adler2/2.0.0 \
6 crate://crates.io/ahash/0.8.11 \
7 crate://crates.io/aho-corasick/1.1.3 \
8 crate://crates.io/allocator-api2/0.2.18 \
9 crate://crates.io/anstream/0.6.14 \
10 crate://crates.io/anstyle/1.0.7 \
11 crate://crates.io/anstyle-parse/0.2.4 \
12 crate://crates.io/anstyle-query/1.1.0 \
13 crate://crates.io/anstyle-wincon/3.0.3 \
14 crate://crates.io/anyhow/1.0.89 \
15 crate://crates.io/arbitrary/1.4.1 \
16 crate://crates.io/autocfg/1.3.0 \
17 crate://crates.io/automod/1.0.14 \
18 crate://crates.io/base64/0.21.7 \
19 crate://crates.io/base64/0.22.1 \
20 crate://crates.io/bitflags/1.3.2 \
21 crate://crates.io/bitflags/2.5.0 \
22 crate://crates.io/block-buffer/0.10.4 \
23 crate://crates.io/boxcar/0.2.8 \
24 crate://crates.io/bstr/1.10.0 \
25 crate://crates.io/bumpalo/3.16.0 \
26 crate://crates.io/byteorder/1.5.0 \
27 crate://crates.io/bytes/1.9.0 \
28 crate://crates.io/bytesize/1.3.0 \
29 crate://crates.io/bzip2/0.5.2 \
30 crate://crates.io/bzip2-sys/0.1.13+1.0.8 \
31 crate://crates.io/cab/0.6.0 \
32 crate://crates.io/camino/1.1.9 \
33 crate://crates.io/cargo-config2/0.1.26 \
34 crate://crates.io/cargo-options/0.7.4 \
35 crate://crates.io/cargo-platform/0.1.8 \
36 crate://crates.io/cargo-xwin/0.18.6 \
37 crate://crates.io/cargo-zigbuild/0.20.0 \
38 crate://crates.io/cargo_metadata/0.19.0 \
39 crate://crates.io/cbindgen/0.29.0 \
40 crate://crates.io/cc/1.2.16 \
41 crate://crates.io/cfb/0.10.0 \
42 crate://crates.io/cfg-if/1.0.0 \
43 crate://crates.io/charset/0.1.5 \
44 crate://crates.io/chumsky/0.9.3 \
45 crate://crates.io/clap/4.5.7 \
46 crate://crates.io/clap_builder/4.5.7 \
47 crate://crates.io/clap_complete/4.5.5 \
48 crate://crates.io/clap_complete_command/0.6.1 \
49 crate://crates.io/clap_complete_nushell/4.5.2 \
50 crate://crates.io/clap_derive/4.5.5 \
51 crate://crates.io/clap_lex/0.7.1 \
52 crate://crates.io/cli-table/0.4.7 \
53 crate://crates.io/colorchoice/1.0.1 \
54 crate://crates.io/configparser/3.1.0 \
55 crate://crates.io/console/0.15.8 \
56 crate://crates.io/content_inspector/0.2.4 \
57 crate://crates.io/core-foundation/0.9.4 \
58 crate://crates.io/core-foundation-sys/0.8.6 \
59 crate://crates.io/cpufeatures/0.2.12 \
60 crate://crates.io/crc/3.2.1 \
61 crate://crates.io/crc-catalog/2.4.0 \
62 crate://crates.io/crc32fast/1.4.2 \
63 crate://crates.io/crossbeam-channel/0.5.15 \
64 crate://crates.io/crossbeam-deque/0.8.5 \
65 crate://crates.io/crossbeam-epoch/0.9.18 \
66 crate://crates.io/crossbeam-utils/0.8.20 \
67 crate://crates.io/crypto-common/0.1.6 \
68 crate://crates.io/data-encoding/2.6.0 \
69 crate://crates.io/deranged/0.3.11 \
70 crate://crates.io/derive_arbitrary/1.4.1 \
71 crate://crates.io/dialoguer/0.11.0 \
72 crate://crates.io/diff/0.1.13 \
73 crate://crates.io/digest/0.10.7 \
74 crate://crates.io/dirs/5.0.1 \
75 crate://crates.io/dirs-sys/0.4.1 \
76 crate://crates.io/displaydoc/0.2.5 \
77 crate://crates.io/dissimilar/1.0.9 \
78 crate://crates.io/dunce/1.0.5 \
79 crate://crates.io/dyn-clone/1.0.17 \
80 crate://crates.io/either/1.13.0 \
81 crate://crates.io/encode_unicode/0.3.6 \
82 crate://crates.io/encoding_rs/0.8.34 \
83 crate://crates.io/equivalent/1.0.1 \
84 crate://crates.io/errno/0.3.9 \
85 crate://crates.io/expect-test/1.5.0 \
86 crate://crates.io/fastrand/2.1.0 \
87 crate://crates.io/fat-macho/0.4.9 \
88 crate://crates.io/filetime/0.2.23 \
89 crate://crates.io/flate2/1.0.33 \
90 crate://crates.io/fnv/1.0.7 \
91 crate://crates.io/foreign-types/0.3.2 \
92 crate://crates.io/foreign-types-shared/0.1.1 \
93 crate://crates.io/form_urlencoded/1.2.1 \
94 crate://crates.io/fs-err/3.0.0 \
95 crate://crates.io/fs4/0.12.0 \
96 crate://crates.io/futures/0.3.30 \
97 crate://crates.io/futures-channel/0.3.31 \
98 crate://crates.io/futures-core/0.3.31 \
99 crate://crates.io/futures-executor/0.3.30 \
100 crate://crates.io/futures-io/0.3.31 \
101 crate://crates.io/futures-macro/0.3.31 \
102 crate://crates.io/futures-sink/0.3.31 \
103 crate://crates.io/futures-task/0.3.31 \
104 crate://crates.io/futures-timer/3.0.3 \
105 crate://crates.io/futures-util/0.3.31 \
106 crate://crates.io/generic-array/0.14.7 \
107 crate://crates.io/getrandom/0.2.15 \
108 crate://crates.io/getrandom/0.3.3 \
109 crate://crates.io/glob/0.3.1 \
110 crate://crates.io/globset/0.4.16 \
111 crate://crates.io/goblin/0.9.2 \
112 crate://crates.io/hashbrown/0.14.5 \
113 crate://crates.io/hashbrown/0.15.2 \
114 crate://crates.io/heck/0.5.0 \
115 crate://crates.io/home/0.5.9 \
116 crate://crates.io/humantime/2.1.0 \
117 crate://crates.io/humantime-serde/1.1.1 \
118 crate://crates.io/icu_collections/1.5.0 \
119 crate://crates.io/icu_locid/1.5.0 \
120 crate://crates.io/icu_locid_transform/1.5.0 \
121 crate://crates.io/icu_locid_transform_data/1.5.0 \
122 crate://crates.io/icu_normalizer/1.5.0 \
123 crate://crates.io/icu_normalizer_data/1.5.0 \
124 crate://crates.io/icu_properties/1.5.1 \
125 crate://crates.io/icu_properties_data/1.5.0 \
126 crate://crates.io/icu_provider/1.5.0 \
127 crate://crates.io/icu_provider_macros/1.5.0 \
128 crate://crates.io/idna/1.0.3 \
129 crate://crates.io/idna_adapter/1.2.0 \
130 crate://crates.io/ignore/0.4.23 \
131 crate://crates.io/indexmap/2.6.0 \
132 crate://crates.io/indicatif/0.17.9 \
133 crate://crates.io/indoc/2.0.5 \
134 crate://crates.io/insta/1.43.1 \
135 crate://crates.io/is_terminal_polyfill/1.70.0 \
136 crate://crates.io/itertools/0.12.1 \
137 crate://crates.io/itertools/0.13.0 \
138 crate://crates.io/itoa/1.0.11 \
139 crate://crates.io/jobserver/0.1.33 \
140 crate://crates.io/js-sys/0.3.73 \
141 crate://crates.io/keyring/2.3.3 \
142 crate://crates.io/lazy_static/1.4.0 \
143 crate://crates.io/lddtree/0.3.7 \
144 crate://crates.io/libc/0.2.172 \
145 crate://crates.io/libmimalloc-sys/0.1.39 \
146 crate://crates.io/libredox/0.1.3 \
147 crate://crates.io/linux-keyutils/0.2.4 \
148 crate://crates.io/linux-raw-sys/0.4.14 \
149 crate://crates.io/litemap/0.7.3 \
150 crate://crates.io/lock_api/0.4.12 \
151 crate://crates.io/lockfree-object-pool/0.1.6 \
152 crate://crates.io/log/0.4.22 \
153 crate://crates.io/lzma-rs/0.3.0 \
154 crate://crates.io/lzma-sys/0.1.20 \
155 crate://crates.io/lzxd/0.2.5 \
156 crate://crates.io/mailparse/0.15.0 \
157 crate://crates.io/matchers/0.1.0 \
158 crate://crates.io/memchr/2.7.4 \
159 crate://crates.io/mimalloc/0.1.43 \
160 crate://crates.io/mime/0.3.17 \
161 crate://crates.io/mime_guess/2.0.4 \
162 crate://crates.io/minijinja/2.5.0 \
163 crate://crates.io/minimal-lexical/0.2.1 \
164 crate://crates.io/miniz_oxide/0.8.0 \
165 crate://crates.io/msi/0.8.0 \
166 crate://crates.io/multipart/0.18.0 \
167 crate://crates.io/native-tls/0.2.12 \
168 crate://crates.io/nom/7.1.3 \
169 crate://crates.io/normalize-line-endings/0.3.0 \
170 crate://crates.io/normpath/1.2.0 \
171 crate://crates.io/nu-ansi-term/0.46.0 \
172 crate://crates.io/num-conv/0.1.0 \
173 crate://crates.io/number_prefix/0.4.0 \
174 crate://crates.io/once_cell/1.20.2 \
175 crate://crates.io/openssl/0.10.72 \
176 crate://crates.io/openssl-macros/0.1.1 \
177 crate://crates.io/openssl-probe/0.1.5 \
178 crate://crates.io/openssl-sys/0.9.107 \
179 crate://crates.io/option-ext/0.2.0 \
180 crate://crates.io/os_pipe/1.2.0 \
181 crate://crates.io/overload/0.1.1 \
182 crate://crates.io/parking_lot/0.12.3 \
183 crate://crates.io/parking_lot_core/0.9.10 \
184 crate://crates.io/paste/1.0.15 \
185 crate://crates.io/path-slash/0.2.1 \
186 crate://crates.io/pep440_rs/0.7.3 \
187 crate://crates.io/pep508_rs/0.9.2 \
188 crate://crates.io/percent-encoding/2.3.1 \
189 crate://crates.io/pin-project-lite/0.2.15 \
190 crate://crates.io/pin-utils/0.1.0 \
191 crate://crates.io/pkg-config/0.3.30 \
192 crate://crates.io/plain/0.2.3 \
193 crate://crates.io/platform-info/2.0.5 \
194 crate://crates.io/portable-atomic/1.6.0 \
195 crate://crates.io/powerfmt/0.2.0 \
196 crate://crates.io/ppv-lite86/0.2.17 \
197 crate://crates.io/pretty_assertions/1.4.1 \
198 crate://crates.io/proc-macro-crate/3.1.0 \
199 crate://crates.io/proc-macro2/1.0.92 \
200 crate://crates.io/psm/0.1.21 \
201 crate://crates.io/pyproject-toml/0.13.5 \
202 crate://crates.io/python-pkginfo/0.6.5 \
203 crate://crates.io/quote/1.0.37 \
204 crate://crates.io/quoted_printable/0.5.0 \
205 crate://crates.io/r-efi/5.2.0 \
206 crate://crates.io/rand/0.8.5 \
207 crate://crates.io/rand_chacha/0.3.1 \
208 crate://crates.io/rand_core/0.6.4 \
209 crate://crates.io/rayon/1.10.0 \
210 crate://crates.io/rayon-core/1.12.1 \
211 crate://crates.io/redox_syscall/0.4.1 \
212 crate://crates.io/redox_syscall/0.5.1 \
213 crate://crates.io/redox_users/0.4.5 \
214 crate://crates.io/regex/1.11.1 \
215 crate://crates.io/regex-automata/0.1.10 \
216 crate://crates.io/regex-automata/0.4.9 \
217 crate://crates.io/regex-syntax/0.6.29 \
218 crate://crates.io/regex-syntax/0.8.5 \
219 crate://crates.io/relative-path/1.9.3 \
220 crate://crates.io/rfc2047-decoder/1.0.6 \
221 crate://crates.io/ring/0.17.13 \
222 crate://crates.io/rstest/0.22.0 \
223 crate://crates.io/rstest_macros/0.22.0 \
224 crate://crates.io/rustc-hash/2.0.0 \
225 crate://crates.io/rustc_version/0.4.1 \
226 crate://crates.io/rustflags/0.1.6 \
227 crate://crates.io/rustix/0.38.41 \
228 crate://crates.io/rustls/0.23.19 \
229 crate://crates.io/rustls-pemfile/2.1.3 \
230 crate://crates.io/rustls-pki-types/1.10.0 \
231 crate://crates.io/rustls-webpki/0.102.8 \
232 crate://crates.io/rustversion/1.0.18 \
233 crate://crates.io/ryu/1.0.18 \
234 crate://crates.io/same-file/1.0.6 \
235 crate://crates.io/schannel/0.1.23 \
236 crate://crates.io/schemars/0.8.21 \
237 crate://crates.io/schemars_derive/0.8.21 \
238 crate://crates.io/scopeguard/1.2.0 \
239 crate://crates.io/scroll/0.12.0 \
240 crate://crates.io/scroll_derive/0.12.0 \
241 crate://crates.io/security-framework/2.11.0 \
242 crate://crates.io/security-framework-sys/2.11.0 \
243 crate://crates.io/semver/1.0.23 \
244 crate://crates.io/serde/1.0.217 \
245 crate://crates.io/serde_derive/1.0.217 \
246 crate://crates.io/serde_derive_internals/0.29.1 \
247 crate://crates.io/serde_json/1.0.135 \
248 crate://crates.io/serde_spanned/0.6.8 \
249 crate://crates.io/sha2/0.10.8 \
250 crate://crates.io/sharded-slab/0.1.7 \
251 crate://crates.io/shell-words/1.1.0 \
252 crate://crates.io/shlex/1.3.0 \
253 crate://crates.io/simd-adler32/0.3.7 \
254 crate://crates.io/similar/2.5.0 \
255 crate://crates.io/slab/0.4.9 \
256 crate://crates.io/smallvec/1.13.2 \
257 crate://crates.io/smawk/0.3.2 \
258 crate://crates.io/snapbox/0.6.16 \
259 crate://crates.io/snapbox-macros/0.3.10 \
260 crate://crates.io/socks/0.3.4 \
261 crate://crates.io/stable_deref_trait/1.2.0 \
262 crate://crates.io/stacker/0.1.15 \
263 crate://crates.io/static_assertions/1.1.0 \
264 crate://crates.io/strsim/0.11.1 \
265 crate://crates.io/subtle/2.5.0 \
266 crate://crates.io/syn/2.0.90 \
267 crate://crates.io/synstructure/0.13.1 \
268 crate://crates.io/tar/0.4.43 \
269 crate://crates.io/target-lexicon/0.13.1 \
270 crate://crates.io/tempfile/3.11.0 \
271 crate://crates.io/termcolor/1.4.1 \
272 crate://crates.io/terminal_size/0.3.0 \
273 crate://crates.io/textwrap/0.16.1 \
274 crate://crates.io/thiserror/1.0.69 \
275 crate://crates.io/thiserror/2.0.12 \
276 crate://crates.io/thiserror-impl/1.0.69 \
277 crate://crates.io/thiserror-impl/2.0.12 \
278 crate://crates.io/thread_local/1.1.8 \
279 crate://crates.io/time/0.3.36 \
280 crate://crates.io/time-core/0.1.2 \
281 crate://crates.io/time-macros/0.2.18 \
282 crate://crates.io/tinystr/0.7.6 \
283 crate://crates.io/toml/0.8.19 \
284 crate://crates.io/toml_datetime/0.6.8 \
285 crate://crates.io/toml_edit/0.21.1 \
286 crate://crates.io/toml_edit/0.22.22 \
287 crate://crates.io/tracing/0.1.41 \
288 crate://crates.io/tracing-attributes/0.1.28 \
289 crate://crates.io/tracing-core/0.1.33 \
290 crate://crates.io/tracing-log/0.2.0 \
291 crate://crates.io/tracing-serde/0.2.0 \
292 crate://crates.io/tracing-subscriber/0.3.19 \
293 crate://crates.io/trycmd/0.15.6 \
294 crate://crates.io/twox-hash/1.6.3 \
295 crate://crates.io/typenum/1.17.0 \
296 crate://crates.io/unicase/2.7.0 \
297 crate://crates.io/unicode-ident/1.0.12 \
298 crate://crates.io/unicode-linebreak/0.1.5 \
299 crate://crates.io/unicode-width/0.1.13 \
300 crate://crates.io/unicode-width/0.2.0 \
301 crate://crates.io/unicode-xid/0.2.6 \
302 crate://crates.io/unscanny/0.1.0 \
303 crate://crates.io/untrusted/0.9.0 \
304 crate://crates.io/ureq/2.11.0 \
305 crate://crates.io/url/2.5.4 \
306 crate://crates.io/urlencoding/2.1.3 \
307 crate://crates.io/utf16_iter/1.0.5 \
308 crate://crates.io/utf8_iter/1.0.4 \
309 crate://crates.io/utf8parse/0.2.2 \
310 crate://crates.io/uuid/1.8.0 \
311 crate://crates.io/valuable/0.1.0 \
312 crate://crates.io/vcpkg/0.2.15 \
313 crate://crates.io/version-ranges/0.1.1 \
314 crate://crates.io/version_check/0.9.4 \
315 crate://crates.io/versions/6.2.0 \
316 crate://crates.io/wait-timeout/0.2.0 \
317 crate://crates.io/walkdir/2.5.0 \
318 crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
319 crate://crates.io/wasi/0.14.2+wasi-0.2.4 \
320 crate://crates.io/wasm-bindgen/0.2.96 \
321 crate://crates.io/wasm-bindgen-backend/0.2.96 \
322 crate://crates.io/wasm-bindgen-macro/0.2.96 \
323 crate://crates.io/wasm-bindgen-macro-support/0.2.96 \
324 crate://crates.io/wasm-bindgen-shared/0.2.96 \
325 crate://crates.io/web-time/1.1.0 \
326 crate://crates.io/webpki-roots/0.26.2 \
327 crate://crates.io/which/7.0.0 \
328 crate://crates.io/wild/2.2.1 \
329 crate://crates.io/winapi/0.3.9 \
330 crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
331 crate://crates.io/winapi-util/0.1.8 \
332 crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
333 crate://crates.io/windows-sys/0.48.0 \
334 crate://crates.io/windows-sys/0.52.0 \
335 crate://crates.io/windows-targets/0.48.5 \
336 crate://crates.io/windows-targets/0.52.5 \
337 crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
338 crate://crates.io/windows_aarch64_gnullvm/0.52.5 \
339 crate://crates.io/windows_aarch64_msvc/0.48.5 \
340 crate://crates.io/windows_aarch64_msvc/0.52.5 \
341 crate://crates.io/windows_i686_gnu/0.48.5 \
342 crate://crates.io/windows_i686_gnu/0.52.5 \
343 crate://crates.io/windows_i686_gnullvm/0.52.5 \
344 crate://crates.io/windows_i686_msvc/0.48.5 \
345 crate://crates.io/windows_i686_msvc/0.52.5 \
346 crate://crates.io/windows_x86_64_gnu/0.48.5 \
347 crate://crates.io/windows_x86_64_gnu/0.52.5 \
348 crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
349 crate://crates.io/windows_x86_64_gnullvm/0.52.5 \
350 crate://crates.io/windows_x86_64_msvc/0.48.5 \
351 crate://crates.io/windows_x86_64_msvc/0.52.5 \
352 crate://crates.io/winnow/0.5.40 \
353 crate://crates.io/winnow/0.6.20 \
354 crate://crates.io/winsafe/0.0.19 \
355 crate://crates.io/wit-bindgen-rt/0.39.0 \
356 crate://crates.io/write16/1.0.0 \
357 crate://crates.io/writeable/0.5.5 \
358 crate://crates.io/xattr/1.3.1 \
359 crate://crates.io/xwin/0.6.5 \
360 crate://crates.io/xz2/0.1.7 \
361 crate://crates.io/yansi/1.0.1 \
362 crate://crates.io/yoke/0.7.4 \
363 crate://crates.io/yoke-derive/0.7.5 \
364 crate://crates.io/zerocopy/0.7.35 \
365 crate://crates.io/zerocopy-derive/0.7.35 \
366 crate://crates.io/zerofrom/0.1.4 \
367 crate://crates.io/zerofrom-derive/0.1.5 \
368 crate://crates.io/zeroize/1.8.1 \
369 crate://crates.io/zerovec/0.10.4 \
370 crate://crates.io/zerovec-derive/0.10.3 \
371 crate://crates.io/zip/2.3.0 \
372 crate://crates.io/zopfli/0.8.1 \
373 crate://crates.io/zstd/0.13.3 \
374 crate://crates.io/zstd-safe/7.2.4 \
375 crate://crates.io/zstd-sys/2.0.15+zstd.1.5.7 \
376"
377
378SRC_URI[adler2-2.0.0.sha256sum] = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
379SRC_URI[ahash-0.8.11.sha256sum] = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
380SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
381SRC_URI[allocator-api2-0.2.18.sha256sum] = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
382SRC_URI[anstream-0.6.14.sha256sum] = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
383SRC_URI[anstyle-1.0.7.sha256sum] = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
384SRC_URI[anstyle-parse-0.2.4.sha256sum] = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
385SRC_URI[anstyle-query-1.1.0.sha256sum] = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391"
386SRC_URI[anstyle-wincon-3.0.3.sha256sum] = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
387SRC_URI[anyhow-1.0.89.sha256sum] = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
388SRC_URI[arbitrary-1.4.1.sha256sum] = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
389SRC_URI[autocfg-1.3.0.sha256sum] = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
390SRC_URI[automod-1.0.14.sha256sum] = "edf3ee19dbc0a46d740f6f0926bde8c50f02bdbc7b536842da28f6ac56513a8b"
391SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
392SRC_URI[base64-0.22.1.sha256sum] = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
393SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
394SRC_URI[bitflags-2.5.0.sha256sum] = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
395SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
396SRC_URI[boxcar-0.2.8.sha256sum] = "2721c3c5a6f0e7f7e607125d963fedeb765f545f67adc9d71ed934693881eb42"
397SRC_URI[bstr-1.10.0.sha256sum] = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c"
398SRC_URI[bumpalo-3.16.0.sha256sum] = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
399SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
400SRC_URI[bytes-1.9.0.sha256sum] = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
401SRC_URI[bytesize-1.3.0.sha256sum] = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
402SRC_URI[bzip2-0.5.2.sha256sum] = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47"
403SRC_URI[bzip2-sys-0.1.13+1.0.8.sha256sum] = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14"
404SRC_URI[cab-0.6.0.sha256sum] = "171228650e6721d5acc0868a462cd864f49ac5f64e4a42cde270406e64e404d2"
405SRC_URI[camino-1.1.9.sha256sum] = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
406SRC_URI[cargo-config2-0.1.26.sha256sum] = "d83ce0be8bd1479e5de6202def660e6c7e27e4e0599bffa4fed05bd380ec2ede"
407SRC_URI[cargo-options-0.7.4.sha256sum] = "f3540247c0a37a76eb324acc238dc617786ea22c43b95da560c82a8f2714321f"
408SRC_URI[cargo-platform-0.1.8.sha256sum] = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
409SRC_URI[cargo-xwin-0.18.6.sha256sum] = "5dff83aad332bd6ee29072dd874b48892cd22c58e233c25735eb4417b3999685"
410SRC_URI[cargo-zigbuild-0.20.0.sha256sum] = "3f6e9e856390d5b0a859acaeda16528f8a61c964bdb894c3216c254908f1c2ea"
411SRC_URI[cargo_metadata-0.19.0.sha256sum] = "afc309ed89476c8957c50fb818f56fe894db857866c3e163335faa91dc34eb85"
412SRC_URI[cbindgen-0.29.0.sha256sum] = "975982cdb7ad6a142be15bdf84aea7ec6a9e5d4d797c004d43185b24cfe4e684"
413SRC_URI[cc-1.2.16.sha256sum] = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c"
414SRC_URI[cfb-0.10.0.sha256sum] = "d8a4f8e55be323b378facfcf1f06aa97f6ec17cf4ac84fb17325093aaf62da41"
415SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
416SRC_URI[charset-0.1.5.sha256sum] = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e"
417SRC_URI[chumsky-0.9.3.sha256sum] = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9"
418SRC_URI[clap-4.5.7.sha256sum] = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f"
419SRC_URI[clap_builder-4.5.7.sha256sum] = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f"
420SRC_URI[clap_complete-4.5.5.sha256sum] = "d2020fa13af48afc65a9a87335bda648309ab3d154cd03c7ff95b378c7ed39c4"
421SRC_URI[clap_complete_command-0.6.1.sha256sum] = "da8e198c052315686d36371e8a3c5778b7852fc75cc313e4e11eeb7a644a1b62"
422SRC_URI[clap_complete_nushell-4.5.2.sha256sum] = "1accf1b463dee0d3ab2be72591dccdab8bef314958340447c882c4c72acfe2a3"
423SRC_URI[clap_derive-4.5.5.sha256sum] = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6"
424SRC_URI[clap_lex-0.7.1.sha256sum] = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70"
425SRC_URI[cli-table-0.4.7.sha256sum] = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d"
426SRC_URI[colorchoice-1.0.1.sha256sum] = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
427SRC_URI[configparser-3.1.0.sha256sum] = "e57e3272f0190c3f1584272d613719ba5fc7df7f4942fe542e63d949cf3a649b"
428SRC_URI[console-0.15.8.sha256sum] = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
429SRC_URI[content_inspector-0.2.4.sha256sum] = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
430SRC_URI[core-foundation-0.9.4.sha256sum] = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
431SRC_URI[core-foundation-sys-0.8.6.sha256sum] = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
432SRC_URI[cpufeatures-0.2.12.sha256sum] = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
433SRC_URI[crc-3.2.1.sha256sum] = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636"
434SRC_URI[crc-catalog-2.4.0.sha256sum] = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
435SRC_URI[crc32fast-1.4.2.sha256sum] = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
436SRC_URI[crossbeam-channel-0.5.15.sha256sum] = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
437SRC_URI[crossbeam-deque-0.8.5.sha256sum] = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
438SRC_URI[crossbeam-epoch-0.9.18.sha256sum] = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
439SRC_URI[crossbeam-utils-0.8.20.sha256sum] = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
440SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
441SRC_URI[data-encoding-2.6.0.sha256sum] = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2"
442SRC_URI[deranged-0.3.11.sha256sum] = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
443SRC_URI[derive_arbitrary-1.4.1.sha256sum] = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
444SRC_URI[dialoguer-0.11.0.sha256sum] = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
445SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
446SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
447SRC_URI[dirs-5.0.1.sha256sum] = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
448SRC_URI[dirs-sys-0.4.1.sha256sum] = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
449SRC_URI[displaydoc-0.2.5.sha256sum] = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
450SRC_URI[dissimilar-1.0.9.sha256sum] = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d"
451SRC_URI[dunce-1.0.5.sha256sum] = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
452SRC_URI[dyn-clone-1.0.17.sha256sum] = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125"
453SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
454SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
455SRC_URI[encoding_rs-0.8.34.sha256sum] = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
456SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
457SRC_URI[errno-0.3.9.sha256sum] = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
458SRC_URI[expect-test-1.5.0.sha256sum] = "9e0be0a561335815e06dab7c62e50353134c796e7a6155402a64bcff66b6a5e0"
459SRC_URI[fastrand-2.1.0.sha256sum] = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
460SRC_URI[fat-macho-0.4.9.sha256sum] = "4c9c45caa6c6edfaee4cb3bd84ea9686e115df7f0efb530e15fb466eccb0b345"
461SRC_URI[filetime-0.2.23.sha256sum] = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
462SRC_URI[flate2-1.0.33.sha256sum] = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
463SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
464SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
465SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
466SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
467SRC_URI[fs-err-3.0.0.sha256sum] = "8bb60e7409f34ef959985bc9d9c5ee8f5db24ee46ed9775850548021710f807f"
468SRC_URI[fs4-0.12.0.sha256sum] = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521"
469SRC_URI[futures-0.3.30.sha256sum] = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
470SRC_URI[futures-channel-0.3.31.sha256sum] = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
471SRC_URI[futures-core-0.3.31.sha256sum] = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
472SRC_URI[futures-executor-0.3.30.sha256sum] = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
473SRC_URI[futures-io-0.3.31.sha256sum] = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
474SRC_URI[futures-macro-0.3.31.sha256sum] = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
475SRC_URI[futures-sink-0.3.31.sha256sum] = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
476SRC_URI[futures-task-0.3.31.sha256sum] = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
477SRC_URI[futures-timer-3.0.3.sha256sum] = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
478SRC_URI[futures-util-0.3.31.sha256sum] = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
479SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
480SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
481SRC_URI[getrandom-0.3.3.sha256sum] = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
482SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
483SRC_URI[globset-0.4.16.sha256sum] = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5"
484SRC_URI[goblin-0.9.2.sha256sum] = "53ab3f32d1d77146981dea5d6b1e8fe31eedcb7013e5e00d6ccd1259a4b4d923"
485SRC_URI[hashbrown-0.14.5.sha256sum] = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
486SRC_URI[hashbrown-0.15.2.sha256sum] = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
487SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
488SRC_URI[home-0.5.9.sha256sum] = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
489SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
490SRC_URI[humantime-serde-1.1.1.sha256sum] = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c"
491SRC_URI[icu_collections-1.5.0.sha256sum] = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
492SRC_URI[icu_locid-1.5.0.sha256sum] = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
493SRC_URI[icu_locid_transform-1.5.0.sha256sum] = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
494SRC_URI[icu_locid_transform_data-1.5.0.sha256sum] = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
495SRC_URI[icu_normalizer-1.5.0.sha256sum] = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
496SRC_URI[icu_normalizer_data-1.5.0.sha256sum] = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
497SRC_URI[icu_properties-1.5.1.sha256sum] = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
498SRC_URI[icu_properties_data-1.5.0.sha256sum] = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
499SRC_URI[icu_provider-1.5.0.sha256sum] = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
500SRC_URI[icu_provider_macros-1.5.0.sha256sum] = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
501SRC_URI[idna-1.0.3.sha256sum] = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
502SRC_URI[idna_adapter-1.2.0.sha256sum] = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
503SRC_URI[ignore-0.4.23.sha256sum] = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b"
504SRC_URI[indexmap-2.6.0.sha256sum] = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
505SRC_URI[indicatif-0.17.9.sha256sum] = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281"
506SRC_URI[indoc-2.0.5.sha256sum] = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
507SRC_URI[insta-1.43.1.sha256sum] = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371"
508SRC_URI[is_terminal_polyfill-1.70.0.sha256sum] = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
509SRC_URI[itertools-0.12.1.sha256sum] = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
510SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
511SRC_URI[itoa-1.0.11.sha256sum] = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
512SRC_URI[jobserver-0.1.33.sha256sum] = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a"
513SRC_URI[js-sys-0.3.73.sha256sum] = "fb15147158e79fd8b8afd0252522769c4f48725460b37338544d8379d94fc8f9"
514SRC_URI[keyring-2.3.3.sha256sum] = "363387f0019d714aa60cc30ab4fe501a747f4c08fc58f069dd14be971bd495a0"
515SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
516SRC_URI[lddtree-0.3.7.sha256sum] = "e0779ac94bd7b6ab781fa12388dbf79ac45ec1fa433e7d25521753be8227b08e"
517SRC_URI[libc-0.2.172.sha256sum] = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
518SRC_URI[libmimalloc-sys-0.1.39.sha256sum] = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44"
519SRC_URI[libredox-0.1.3.sha256sum] = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
520SRC_URI[linux-keyutils-0.2.4.sha256sum] = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e"
521SRC_URI[linux-raw-sys-0.4.14.sha256sum] = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
522SRC_URI[litemap-0.7.3.sha256sum] = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
523SRC_URI[lock_api-0.4.12.sha256sum] = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
524SRC_URI[lockfree-object-pool-0.1.6.sha256sum] = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e"
525SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
526SRC_URI[lzma-rs-0.3.0.sha256sum] = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e"
527SRC_URI[lzma-sys-0.1.20.sha256sum] = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27"
528SRC_URI[lzxd-0.2.5.sha256sum] = "5de7336a183103429ad66d11d56d8bdc9c4a2916f6b85a8f11e5b127bde12001"
529SRC_URI[mailparse-0.15.0.sha256sum] = "3da03d5980411a724e8aaf7b61a7b5e386ec55a7fb49ee3d0ff79efc7e5e7c7e"
530SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
531SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
532SRC_URI[mimalloc-0.1.43.sha256sum] = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633"
533SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
534SRC_URI[mime_guess-2.0.4.sha256sum] = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
535SRC_URI[minijinja-2.5.0.sha256sum] = "2c37e1b517d1dcd0e51dc36c4567b9d5a29262b3ec8da6cb5d35e27a8fb529b5"
536SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
537SRC_URI[miniz_oxide-0.8.0.sha256sum] = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
538SRC_URI[msi-0.8.0.sha256sum] = "4a2332f87a064dea9cce571408c879e0da8dc193b3af06a2b3b2604ee4182a32"
539SRC_URI[multipart-0.18.0.sha256sum] = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182"
540SRC_URI[native-tls-0.2.12.sha256sum] = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466"
541SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
542SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
543SRC_URI[normpath-1.2.0.sha256sum] = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804"
544SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
545SRC_URI[num-conv-0.1.0.sha256sum] = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
546SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
547SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
548SRC_URI[openssl-0.10.72.sha256sum] = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
549SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
550SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
551SRC_URI[openssl-sys-0.9.107.sha256sum] = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
552SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
553SRC_URI[os_pipe-1.2.0.sha256sum] = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209"
554SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
555SRC_URI[parking_lot-0.12.3.sha256sum] = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
556SRC_URI[parking_lot_core-0.9.10.sha256sum] = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
557SRC_URI[paste-1.0.15.sha256sum] = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
558SRC_URI[path-slash-0.2.1.sha256sum] = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
559SRC_URI[pep440_rs-0.7.3.sha256sum] = "31095ca1f396e3de32745f42b20deef7bc09077f918b085307e8eab6ddd8fb9c"
560SRC_URI[pep508_rs-0.9.2.sha256sum] = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05"
561SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
562SRC_URI[pin-project-lite-0.2.15.sha256sum] = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
563SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
564SRC_URI[pkg-config-0.3.30.sha256sum] = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
565SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
566SRC_URI[platform-info-2.0.5.sha256sum] = "7539aeb3fdd8cb4f6a331307cf71a1039cee75e94e8a71725b9484f4a0d9451a"
567SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
568SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
569SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
570SRC_URI[pretty_assertions-1.4.1.sha256sum] = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d"
571SRC_URI[proc-macro-crate-3.1.0.sha256sum] = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
572SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
573SRC_URI[psm-0.1.21.sha256sum] = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
574SRC_URI[pyproject-toml-0.13.5.sha256sum] = "7b0f6160dc48298b9260d9b958ad1d7f96f6cd0b9df200b22329204e09334663"
575SRC_URI[python-pkginfo-0.6.5.sha256sum] = "c21f58880fc45e91d29b2f639ab4051aaa6a2b054534c2d343a953347d0dd600"
576SRC_URI[quote-1.0.37.sha256sum] = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
577SRC_URI[quoted_printable-0.5.0.sha256sum] = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0"
578SRC_URI[r-efi-5.2.0.sha256sum] = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
579SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
580SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
581SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
582SRC_URI[rayon-1.10.0.sha256sum] = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
583SRC_URI[rayon-core-1.12.1.sha256sum] = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
584SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
585SRC_URI[redox_syscall-0.5.1.sha256sum] = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
586SRC_URI[redox_users-0.4.5.sha256sum] = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
587SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
588SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
589SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
590SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
591SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
592SRC_URI[relative-path-1.9.3.sha256sum] = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2"
593SRC_URI[rfc2047-decoder-1.0.6.sha256sum] = "bc36545d1021456a751b573517cb52e8c339b2f662e6b2778ef629282678de29"
594SRC_URI[ring-0.17.13.sha256sum] = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee"
595SRC_URI[rstest-0.22.0.sha256sum] = "7b423f0e62bdd61734b67cd21ff50871dfaeb9cc74f869dcd6af974fbcb19936"
596SRC_URI[rstest_macros-0.22.0.sha256sum] = "c5e1711e7d14f74b12a58411c542185ef7fb7f2e7f8ee6e2940a883628522b42"
597SRC_URI[rustc-hash-2.0.0.sha256sum] = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
598SRC_URI[rustc_version-0.4.1.sha256sum] = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
599SRC_URI[rustflags-0.1.6.sha256sum] = "d7fc92159fb50a431c5da366f7627751fe7263cf867f8a30f27fa6063ba02ac0"
600SRC_URI[rustix-0.38.41.sha256sum] = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6"
601SRC_URI[rustls-0.23.19.sha256sum] = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1"
602SRC_URI[rustls-pemfile-2.1.3.sha256sum] = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425"
603SRC_URI[rustls-pki-types-1.10.0.sha256sum] = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b"
604SRC_URI[rustls-webpki-0.102.8.sha256sum] = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9"
605SRC_URI[rustversion-1.0.18.sha256sum] = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248"
606SRC_URI[ryu-1.0.18.sha256sum] = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
607SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
608SRC_URI[schannel-0.1.23.sha256sum] = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
609SRC_URI[schemars-0.8.21.sha256sum] = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92"
610SRC_URI[schemars_derive-0.8.21.sha256sum] = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e"
611SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
612SRC_URI[scroll-0.12.0.sha256sum] = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
613SRC_URI[scroll_derive-0.12.0.sha256sum] = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932"
614SRC_URI[security-framework-2.11.0.sha256sum] = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0"
615SRC_URI[security-framework-sys-2.11.0.sha256sum] = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7"
616SRC_URI[semver-1.0.23.sha256sum] = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
617SRC_URI[serde-1.0.217.sha256sum] = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
618SRC_URI[serde_derive-1.0.217.sha256sum] = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
619SRC_URI[serde_derive_internals-0.29.1.sha256sum] = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
620SRC_URI[serde_json-1.0.135.sha256sum] = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9"
621SRC_URI[serde_spanned-0.6.8.sha256sum] = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
622SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
623SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
624SRC_URI[shell-words-1.1.0.sha256sum] = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
625SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
626SRC_URI[simd-adler32-0.3.7.sha256sum] = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
627SRC_URI[similar-2.5.0.sha256sum] = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640"
628SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
629SRC_URI[smallvec-1.13.2.sha256sum] = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
630SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
631SRC_URI[snapbox-0.6.16.sha256sum] = "027c936207f85d10d015e21faf5c676c7e08c453ed371adf55c0874c443ca77a"
632SRC_URI[snapbox-macros-0.3.10.sha256sum] = "16569f53ca23a41bb6f62e0a5084aa1661f4814a67fa33696a79073e03a664af"
633SRC_URI[socks-0.3.4.sha256sum] = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
634SRC_URI[stable_deref_trait-1.2.0.sha256sum] = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
635SRC_URI[stacker-0.1.15.sha256sum] = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce"
636SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
637SRC_URI[strsim-0.11.1.sha256sum] = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
638SRC_URI[subtle-2.5.0.sha256sum] = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
639SRC_URI[syn-2.0.90.sha256sum] = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
640SRC_URI[synstructure-0.13.1.sha256sum] = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
641SRC_URI[tar-0.4.43.sha256sum] = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6"
642SRC_URI[target-lexicon-0.13.1.sha256sum] = "dc12939a1c9b9d391e0b7135f72fd30508b73450753e28341fed159317582a77"
643SRC_URI[tempfile-3.11.0.sha256sum] = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53"
644SRC_URI[termcolor-1.4.1.sha256sum] = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
645SRC_URI[terminal_size-0.3.0.sha256sum] = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
646SRC_URI[textwrap-0.16.1.sha256sum] = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
647SRC_URI[thiserror-1.0.69.sha256sum] = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
648SRC_URI[thiserror-2.0.12.sha256sum] = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708"
649SRC_URI[thiserror-impl-1.0.69.sha256sum] = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
650SRC_URI[thiserror-impl-2.0.12.sha256sum] = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d"
651SRC_URI[thread_local-1.1.8.sha256sum] = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
652SRC_URI[time-0.3.36.sha256sum] = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
653SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
654SRC_URI[time-macros-0.2.18.sha256sum] = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
655SRC_URI[tinystr-0.7.6.sha256sum] = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
656SRC_URI[toml-0.8.19.sha256sum] = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e"
657SRC_URI[toml_datetime-0.6.8.sha256sum] = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
658SRC_URI[toml_edit-0.21.1.sha256sum] = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
659SRC_URI[toml_edit-0.22.22.sha256sum] = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
660SRC_URI[tracing-0.1.41.sha256sum] = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
661SRC_URI[tracing-attributes-0.1.28.sha256sum] = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
662SRC_URI[tracing-core-0.1.33.sha256sum] = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
663SRC_URI[tracing-log-0.2.0.sha256sum] = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
664SRC_URI[tracing-serde-0.2.0.sha256sum] = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1"
665SRC_URI[tracing-subscriber-0.3.19.sha256sum] = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
666SRC_URI[trycmd-0.15.6.sha256sum] = "3e8673f1dc45acdff8e25a06cc62f8e529563e8acd84237ce83d5a28e2befa12"
667SRC_URI[twox-hash-1.6.3.sha256sum] = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
668SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
669SRC_URI[unicase-2.7.0.sha256sum] = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
670SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
671SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
672SRC_URI[unicode-width-0.1.13.sha256sum] = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
673SRC_URI[unicode-width-0.2.0.sha256sum] = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
674SRC_URI[unicode-xid-0.2.6.sha256sum] = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
675SRC_URI[unscanny-0.1.0.sha256sum] = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47"
676SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
677SRC_URI[ureq-2.11.0.sha256sum] = "b30e6f97efe1fa43535ee241ee76967d3ff6ff3953ebb430d8d55c5393029e7b"
678SRC_URI[url-2.5.4.sha256sum] = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
679SRC_URI[urlencoding-2.1.3.sha256sum] = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
680SRC_URI[utf16_iter-1.0.5.sha256sum] = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
681SRC_URI[utf8_iter-1.0.4.sha256sum] = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
682SRC_URI[utf8parse-0.2.2.sha256sum] = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
683SRC_URI[uuid-1.8.0.sha256sum] = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
684SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
685SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
686SRC_URI[version-ranges-0.1.1.sha256sum] = "f8d079415ceb2be83fc355adbadafe401307d5c309c7e6ade6638e6f9f42f42d"
687SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
688SRC_URI[versions-6.2.0.sha256sum] = "38a8931f8d167b6448076020e70b9de46dcf5ea1731212481a092d0071c4ac5b"
689SRC_URI[wait-timeout-0.2.0.sha256sum] = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
690SRC_URI[walkdir-2.5.0.sha256sum] = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
691SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
692SRC_URI[wasi-0.14.2+wasi-0.2.4.sha256sum] = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
693SRC_URI[wasm-bindgen-0.2.96.sha256sum] = "21d3b25c3ea1126a2ad5f4f9068483c2af1e64168f847abe863a526b8dbfe00b"
694SRC_URI[wasm-bindgen-backend-0.2.96.sha256sum] = "52857d4c32e496dc6537646b5b117081e71fd2ff06de792e3577a150627db283"
695SRC_URI[wasm-bindgen-macro-0.2.96.sha256sum] = "920b0ffe069571ebbfc9ddc0b36ba305ef65577c94b06262ed793716a1afd981"
696SRC_URI[wasm-bindgen-macro-support-0.2.96.sha256sum] = "bf59002391099644be3524e23b781fa43d2be0c5aa0719a18c0731b9d195cab6"
697SRC_URI[wasm-bindgen-shared-0.2.96.sha256sum] = "e5047c5392700766601942795a436d7d2599af60dcc3cc1248c9120bfb0827b0"
698SRC_URI[web-time-1.1.0.sha256sum] = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
699SRC_URI[webpki-roots-0.26.2.sha256sum] = "3c452ad30530b54a4d8e71952716a212b08efd0f3562baa66c29a618b07da7c3"
700SRC_URI[which-7.0.0.sha256sum] = "c9cad3279ade7346b96e38731a641d7343dd6a53d55083dd54eadfa5a1b38c6b"
701SRC_URI[wild-2.2.1.sha256sum] = "a3131afc8c575281e1e80f36ed6a092aa502c08b18ed7524e86fbbb12bb410e1"
702SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
703SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
704SRC_URI[winapi-util-0.1.8.sha256sum] = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
705SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
706SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
707SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
708SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
709SRC_URI[windows-targets-0.52.5.sha256sum] = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
710SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
711SRC_URI[windows_aarch64_gnullvm-0.52.5.sha256sum] = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
712SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
713SRC_URI[windows_aarch64_msvc-0.52.5.sha256sum] = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
714SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
715SRC_URI[windows_i686_gnu-0.52.5.sha256sum] = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
716SRC_URI[windows_i686_gnullvm-0.52.5.sha256sum] = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
717SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
718SRC_URI[windows_i686_msvc-0.52.5.sha256sum] = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
719SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
720SRC_URI[windows_x86_64_gnu-0.52.5.sha256sum] = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
721SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
722SRC_URI[windows_x86_64_gnullvm-0.52.5.sha256sum] = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
723SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
724SRC_URI[windows_x86_64_msvc-0.52.5.sha256sum] = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
725SRC_URI[winnow-0.5.40.sha256sum] = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
726SRC_URI[winnow-0.6.20.sha256sum] = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
727SRC_URI[winsafe-0.0.19.sha256sum] = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
728SRC_URI[wit-bindgen-rt-0.39.0.sha256sum] = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
729SRC_URI[write16-1.0.0.sha256sum] = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
730SRC_URI[writeable-0.5.5.sha256sum] = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
731SRC_URI[xattr-1.3.1.sha256sum] = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
732SRC_URI[xwin-0.6.5.sha256sum] = "ca7e4546db1514c186778f0a257d89732ed9ed75587d0953ac25be7519d9f0d1"
733SRC_URI[xz2-0.1.7.sha256sum] = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2"
734SRC_URI[yansi-1.0.1.sha256sum] = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
735SRC_URI[yoke-0.7.4.sha256sum] = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5"
736SRC_URI[yoke-derive-0.7.5.sha256sum] = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
737SRC_URI[zerocopy-0.7.35.sha256sum] = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
738SRC_URI[zerocopy-derive-0.7.35.sha256sum] = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
739SRC_URI[zerofrom-0.1.4.sha256sum] = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55"
740SRC_URI[zerofrom-derive-0.1.5.sha256sum] = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
741SRC_URI[zeroize-1.8.1.sha256sum] = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
742SRC_URI[zerovec-0.10.4.sha256sum] = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
743SRC_URI[zerovec-derive-0.10.3.sha256sum] = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
744SRC_URI[zip-2.3.0.sha256sum] = "84e9a772a54b54236b9b744aaaf8d7be01b4d6e99725523cb82cb32d1c81b1d7"
745SRC_URI[zopfli-0.8.1.sha256sum] = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946"
746SRC_URI[zstd-0.13.3.sha256sum] = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
747SRC_URI[zstd-safe-7.2.4.sha256sum] = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
748SRC_URI[zstd-sys-2.0.15+zstd.1.5.7.sha256sum] = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237"
diff --git a/meta/recipes-devtools/python/python3-maturin_1.9.4.bb b/meta/recipes-devtools/python/python3-maturin_1.9.4.bb
deleted file mode 100644
index f47c8061bb..0000000000
--- a/meta/recipes-devtools/python/python3-maturin_1.9.4.bb
+++ /dev/null
@@ -1,42 +0,0 @@
1SUMMARY = "Build and publish crates with pyo3, rust-cpython, cffi bindings and rust binaries as python packages"
2HOMEPAGE = "https://github.com/pyo3/maturin"
3SECTION = "devel/python"
4LICENSE = "MIT | Apache-2.0"
5LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \
6 file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797"
7
8SRC_URI[sha256sum] = "235163a0c99bc6f380fb8786c04fd14dcf6cd622ff295ea3de525015e6ac40cf"
9
10S = "${UNPACKDIR}/maturin-${PV}"
11
12CFLAGS += "-ffile-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home"
13
14DEPENDS += "\
15 python3-setuptools-rust-native \
16 python3-semantic-version-native \
17 python3-setuptools-rust \
18"
19
20require ${BPN}-crates.inc
21
22inherit pypi cargo-update-recipe-crates python_pyo3 python_setuptools_build_meta
23
24do_configure() {
25 python_pyo3_do_configure
26 cargo_common_do_configure
27 python_pep517_do_configure
28}
29
30RDEPENDS:${PN} += "\
31 cargo \
32 python3-json \
33 rust \
34"
35
36RRECOMMENDS:${PN} += "\
37 python3-ensurepip \
38 python3-pip \
39 python3-venv \
40"
41
42BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-meson-python_0.18.0.bb b/meta/recipes-devtools/python/python3-meson-python_0.18.0.bb
deleted file mode 100644
index 742a2580a7..0000000000
--- a/meta/recipes-devtools/python/python3-meson-python_0.18.0.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "Meson Python build backend (PEP 517)"
2HOMEPAGE = "https://github.com/mesonbuild/meson-python"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=d580b27e67cc0892a5b005b0be114b60"
5
6DEPENDS = " \
7 meson-native \
8 ninja-native \
9 patchelf-native \
10 python3-pyproject-metadata-native \
11"
12
13PYPI_PACKAGE = "meson_python"
14UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
15
16inherit pypi python_mesonpy
17SRC_URI[sha256sum] = "c56a99ec9df669a40662fe46960321af6e4b14106c14db228709c1628e23848d"
18
19DEPENDS:remove:class-native = "python3-meson-python-native"
20
21RDEPENDS:${PN} = " \
22 meson \
23 ninja \
24 patchelf \
25 python3-pyproject-metadata \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb b/meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb
deleted file mode 100644
index 5447a7af8e..0000000000
--- a/meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
1SUMMARY = "More routines for operating on iterables, beyond itertools"
2HOMEPAGE = "https://github.com/erikrose/more-itertools"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5"
5
6SRC_URI[sha256sum] = "2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"
7
8inherit pypi python_flit_core ptest-python-pytest
9
10RDEPENDS:${PN} += " \
11 python3-asyncio \
12 "
13
14RDEPENDS:${PN}-ptest += " \
15 python3-statistics \
16 "
17
18BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch b/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
deleted file mode 100644
index 3e08b43587..0000000000
--- a/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
+++ /dev/null
@@ -1,69 +0,0 @@
1From b036c984b019d941ead2efd5a05d1588c4bc193a Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 10 Dec 2015 13:20:30 +0200
4Subject: [PATCH] Don't search /usr and so on for libraries by default to
5
6 avoid host contamination.
7
8Upstream-Status: Inappropriate (As the code stands, this is a hack)
9Signed-off-by: Ross Burton <ross.burton@intel.com>
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11---
12 numpy/distutils/system_info.py | 42 +++++-----------------------------
13 1 file changed, 6 insertions(+), 36 deletions(-)
14
15diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py
16index 6478548..c0620e7 100644
17--- a/numpy/distutils/system_info.py
18+++ b/numpy/distutils/system_info.py
19@@ -326,44 +326,14 @@ def add_system_root(library_root):
20 add_system_root(os.path.join(conda_dir, 'Library'))
21
22 else:
23- default_lib_dirs = libpaths(['/usr/local/lib', '/opt/lib', '/usr/lib',
24- '/opt/local/lib', '/sw/lib'], platform_bits)
25 default_runtime_dirs = []
26- default_include_dirs = ['/usr/local/include',
27- '/opt/include',
28- # path of umfpack under macports
29- '/opt/local/include/ufsparse',
30- '/opt/local/include', '/sw/include',
31- '/usr/include/suitesparse']
32- default_src_dirs = ['.', '/usr/local/src', '/opt/src', '/sw/src']
33-
34- default_x11_lib_dirs = libpaths(['/usr/X11R6/lib', '/usr/X11/lib',
35- '/usr/lib'], platform_bits)
36- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include']
37-
38- if os.path.exists('/usr/lib/X11'):
39- globbed_x11_dir = glob('/usr/lib/*/libX11.so')
40- if globbed_x11_dir:
41- x11_so_dir = os.path.split(globbed_x11_dir[0])[0]
42- default_x11_lib_dirs.extend([x11_so_dir, '/usr/lib/X11'])
43- default_x11_include_dirs.extend(['/usr/lib/X11/include',
44- '/usr/include/X11'])
45-
46- with open(os.devnull, 'w') as tmp:
47- try:
48- p = subprocess.Popen(["gcc", "-print-multiarch"], stdout=subprocess.PIPE,
49- stderr=tmp)
50- except (OSError, DistutilsError):
51- # OSError if gcc is not installed, or SandboxViolation (DistutilsError
52- # subclass) if an old setuptools bug is triggered (see gh-3160).
53- pass
54- else:
55- triplet = str(p.communicate()[0].decode().strip())
56- if p.returncode == 0:
57- # gcc supports the "-print-multiarch" option
58- default_x11_lib_dirs += [os.path.join("/usr/lib/", triplet)]
59- default_lib_dirs += [os.path.join("/usr/lib/", triplet)]
60
61+ default_lib_dirs = libpaths(['/deadir/lib'], platform_bits)
62+ default_include_dirs = ['/deaddir/include']
63+ default_src_dirs = ['.', '/deaddir/src']
64+
65+ default_x11_lib_dirs = libpaths(['/deaddir/lib'], platform_bits)
66+ default_x11_include_dirs = ['/deaddir/include']
67
68 if os.path.join(sys.prefix, 'lib') not in default_lib_dirs:
69 default_lib_dirs.insert(0, os.path.join(sys.prefix, 'lib'))
diff --git a/meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch b/meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch
deleted file mode 100644
index 8b39b7bcfe..0000000000
--- a/meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch
+++ /dev/null
@@ -1,40 +0,0 @@
1From 45d76002bc989a9098141f2bfcd2d2fabc5a04d5 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Fri, 29 Sep 2023 22:53:24 +0100
4Subject: [PATCH] This regex decides whether to use O3 opimisation on numpy or
5 not.
6
7It includes "od", which happens to be a substring of "reproducible"
8but not "qemux86-world".
9
10The regex will run against all compiler options including things like:
11
12-fmacro-prefix-map=/XXX/build/tmp/work/core2-64-poky-linux/python3-numpy/1.26.0/numpy-1.26.0=/usr/src/debug/python3-numpy/1.26.0-r0
13
14i.e. including build paths.
15
16Reduce the regex to something deterministic for our builds, assuming
17nobody builds in /home/debug:full/
18
19The autobuilder race depended upon whether qemux86-world or the
20reproducible target ran first and won the race to populate sstate.
21
22Upstream-Status: Inappropriate [upstream have dropped distutils and switched to meson]
23Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
24---
25 numpy/distutils/ccompiler_opt.py | 2 +-
26 1 file changed, 1 insertion(+), 1 deletion(-)
27
28diff --git a/numpy/distutils/ccompiler_opt.py b/numpy/distutils/ccompiler_opt.py
29index b1a6fa3..7b0302b 100644
30--- a/numpy/distutils/ccompiler_opt.py
31+++ b/numpy/distutils/ccompiler_opt.py
32@@ -991,7 +991,7 @@ def __init__(self):
33 ("cc_is_nocc", "", ""),
34 )
35 detect_args = (
36- ("cc_has_debug", ".*(O0|Od|ggdb|coverage|debug:full).*", ""),
37+ ("cc_has_debug", ".*debug:full.*", ""),
38 ("cc_has_native",
39 ".*(-march=native|-xHost|/QxHost|-mcpu=a64fx).*", ""),
40 # in case if the class run with -DNPY_DISABLE_OPTIMIZATION
diff --git a/meta/recipes-devtools/python/python3-numpy/run-ptest b/meta/recipes-devtools/python/python3-numpy/run-ptest
deleted file mode 100644
index a1c80323d6..0000000000
--- a/meta/recipes-devtools/python/python3-numpy/run-ptest
+++ /dev/null
@@ -1,17 +0,0 @@
1#!/bin/sh
2
3# By default, numpy will use /tmp as the root path for temporary files used
4# during tests, but if this is a tmpfs it may fill up quickly and cause many of
5# the tests to report "no space left on device" errors. Create a custom
6# directory for these and point pytest at it so we can take advantage of the
7# storage provided in the rootfs.
8export PYTEST_DEBUG_TEMPROOT="/usr/lib/python3-numpy/ptest/tmp"
9mkdir -p "$PYTEST_DEBUG_TEMPROOT"
10
11# test_mem_policy fails if there's no C compiler present, but we don't want to
12# include gcc as a ptest dependency, so skip that. test_big_arrays uses up a
13# large amount of storage, so skip that too.
14# remove test_validate_transcendentals if
15# https://github.com/numpy/numpy/issues/27460 is resolved
16pytest --automake -m "not slow" -k "not test_mem_policy and not test_big_arrays and not test_validate_transcendentals" /usr/lib/python3.*/site-packages/numpy
17rm -rf "$PYTEST_DEBUG_TEMPROOT"
diff --git a/meta/recipes-devtools/python/python3-numpy_2.3.4.bb b/meta/recipes-devtools/python/python3-numpy_2.3.4.bb
deleted file mode 100644
index 7f82ca87a7..0000000000
--- a/meta/recipes-devtools/python/python3-numpy_2.3.4.bb
+++ /dev/null
@@ -1,79 +0,0 @@
1SUMMARY = "A sophisticated Numeric Processing Package for Python"
2HOMEPAGE = "https://numpy.org/"
3DESCRIPTION = "NumPy is the fundamental package needed for scientific computing with Python."
4SECTION = "devel/python"
5LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF-2.0 & Apache-2.0 & MIT"
6LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=26080bf81b2662c7119d3ef28ae197fd"
7
8SRCNAME = "numpy"
9
10SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${SRCNAME}-${PV}.tar.gz \
11 file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
12 file://fix_reproducibility.patch \
13 file://run-ptest \
14 "
15SRC_URI[sha256sum] = "a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a"
16
17GITHUB_BASE_URI = "https://github.com/numpy/numpy/releases"
18UPSTREAM_CHECK_REGEX = "releases/tag/v?(?P<pver>\d+(\.\d+)+)$"
19
20inherit pkgconfig ptest python_mesonpy github-releases cython
21
22S = "${UNPACKDIR}/numpy-${PV}"
23
24PACKAGECONFIG[svml] = "-Ddisable-svml=false,-Ddisable-svml=true"
25
26# the overflow tests fail with compiler-rt on aarch64
27LDFLAGS:append:toolchain-clang:aarch64 = " -rtlib=libgcc -unwindlib=libgcc"
28
29# Remove references to buildpaths from numpy's __config__.py
30do_install:append() {
31 sed -i \
32 -e 's|${S}=||g' \
33 -e 's|${B}=||g' \
34 -e 's|${RECIPE_SYSROOT_NATIVE}=||g' \
35 -e 's|${RECIPE_SYSROOT_NATIVE}||g' \
36 -e 's|${RECIPE_SYSROOT}=||g' \
37 -e 's|${RECIPE_SYSROOT}||g' ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/__config__.py
38
39 nativepython3 -mcompileall -s ${D} ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/__config__.py
40}
41
42FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/_core/lib/*.a \
43 ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a \
44"
45
46# install what is needed for numpy.test()
47RDEPENDS:${PN} = "\
48 python3-compression \
49 python3-ctypes \
50 python3-datetime \
51 python3-difflib \
52 python3-doctest \
53 python3-email \
54 python3-json \
55 python3-misc \
56 python3-mmap \
57 python3-multiprocessing \
58 python3-netclient \
59 python3-numbers \
60 python3-pickle \
61 python3-pkgutil \
62 python3-pprint \
63 python3-pydoc \
64 python3-shell \
65 python3-threading \
66 python3-unittest \
67"
68RDEPENDS:${PN}-ptest += "\
69 ldd \
70 meson \
71 python3-hypothesis \
72 python3-pytest \
73 python3-resource \
74 python3-sortedcontainers \
75 python3-typing-extensions \
76 python3-unittest-automake-output \
77"
78
79BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-packaging/run-ptest.in b/meta/recipes-devtools/python/python3-packaging/run-ptest.in
deleted file mode 100644
index 508538463b..0000000000
--- a/meta/recipes-devtools/python/python3-packaging/run-ptest.in
+++ /dev/null
@@ -1,2 +0,0 @@
1#!/bin/sh
2pytest --automake IGNOREDTESTS
diff --git a/meta/recipes-devtools/python/python3-packaging_25.0.bb b/meta/recipes-devtools/python/python3-packaging_25.0.bb
deleted file mode 100644
index 9cb5c68f58..0000000000
--- a/meta/recipes-devtools/python/python3-packaging_25.0.bb
+++ /dev/null
@@ -1,43 +0,0 @@
1SUMMARY = "Core utilities for Python packages"
2HOMEPAGE = "https://github.com/pypa/packaging"
3LICENSE = "Apache-2.0 | BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91"
5
6SRC_URI[sha256sum] = "d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"
7
8SRC_URI += "file://run-ptest.in"
9
10inherit pypi python_flit_core ptest
11
12BBCLASSEXTEND = "native nativesdk"
13
14# Bootstrap the native build
15DEPENDS:remove:class-native = "python3-build-native"
16RDEPENDS:${PN} += "python3-profile"
17
18# https://github.com/pypa/packaging/issues/850
19SKIPLIST ?= ""
20SKIPLIST:libc-musl = "--deselect tests/test_manylinux.py::test_is_manylinux_compatible_old --ignore=tests/test_tags.py"
21
22do_compile:class-native () {
23 python_flit_core_do_manual_build
24}
25
26do_install_ptest() {
27 cp -r ${S}/tests ${D}${PTEST_PATH}/
28 # We don't need this script which is used to build the binaries
29 rm -f ${D}${PTEST_PATH}/tests/manylinux/build.sh
30 sed -e 's|IGNOREDTESTS|${SKIPLIST}|' ${UNPACKDIR}/run-ptest.in > ${D}${PTEST_PATH}/run-ptest
31 chmod 0755 ${D}${PTEST_PATH}/run-ptest
32}
33
34RDEPENDS:${PN}-ptest = "\
35 python3-ctypes \
36 python3-pretend \
37 python3-pytest \
38 python3-unittest-automake-output \
39"
40
41# The ptest package contains prebuilt test binaries
42INSANE_SKIP:${PN} = "already-stripped"
43INSANE_SKIP:${PN}-ptest = "arch"
diff --git a/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb b/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb
deleted file mode 100644
index 2c80b24c28..0000000000
--- a/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Utility library for gitignore style pattern matching of file paths."
2HOMEPAGE = "https://github.com/cpburnz/python-path-specification"
3SECTION = "devel/python"
4LICENSE = "MPL-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=815ca599c9df247a0c7f619bab123dad"
6
7SRC_URI[sha256sum] = "a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"
8
9inherit pypi python_flit_core
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} += "python3-profile"
diff --git a/meta/recipes-devtools/python/python3-pbr_7.0.1.bb b/meta/recipes-devtools/python/python3-pbr_7.0.1.bb
deleted file mode 100644
index 6878fa0967..0000000000
--- a/meta/recipes-devtools/python/python3-pbr_7.0.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Python Build Reasonableness"
2DESCRIPTION = "PBR is a library that injects some useful and sensible default behaviors into your setuptools run"
3HOMEPAGE = "https://pypi.org/project/pbr"
4SECTION = "devel/python"
5LICENSE = "Apache-2.0"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
7
8inherit pypi python_setuptools_build_meta
9
10RDEPENDS:${PN} += "python3-pip"
11
12BBCLASSEXTEND = "native nativesdk"
13
14SRC_URI[sha256sum] = "3ecbcb11d2b8551588ec816b3756b1eb4394186c3b689b17e04850dfc20f7e57"
diff --git a/meta/recipes-devtools/python/python3-pdm-backend_2.4.5.bb b/meta/recipes-devtools/python/python3-pdm-backend_2.4.5.bb
deleted file mode 100644
index 5e6d75c188..0000000000
--- a/meta/recipes-devtools/python/python3-pdm-backend_2.4.5.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "The build backend used by PDM that supports latest packaging standards"
2HOMEPAGE = "https://github.com/pdm-project/pdm-backend"
3LICENSE = "MIT"
4SECTION = "devel/python"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=4a564297b3c5b629a528b92fd8ff61ea"
6
7SRC_URI[sha256sum] = "56c019c440308adad5d057c08cbb777e65f43b991a3b0920749781258972fe5b"
8
9inherit pypi python_pep517
10
11PYPI_PACKAGE = "pdm_backend"
12UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb b/meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb
deleted file mode 100644
index e8f2ad0e93..0000000000
--- a/meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "pdm plugin to publish locked dependencies as optional-dependencies"
2HOMEPAGE = "https://github.com/pdm-project/pdm-build-locked"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=19382cdf9c143df4f00b9caa0b60c75a"
5
6SRC_URI[sha256sum] = "ab2f381e00d79841d46be2e6909c265038b9fa951de2bf551ca6adb7f6844201"
7
8inherit pypi python_pdm
9
10PYPI_PACKAGE = "pdm_build_locked"
11UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
12
13BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pdm_2.25.9.bb b/meta/recipes-devtools/python/python3-pdm_2.25.9.bb
deleted file mode 100644
index 6938edb82f..0000000000
--- a/meta/recipes-devtools/python/python3-pdm_2.25.9.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "A modern Python package and dependency manager supporting the latest PEP standards"
2HOMEPAGE = "https://pdm-project.org/latest/"
3LICENSE = "MIT"
4SECTION = "devel/python"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
6
7SRC_URI[sha256sum] = "fb5fcd561986db1d83255d01e97e2e16f80debf743934d891a62ff2933ccc80c"
8
9inherit pypi python_pdm
10
11DEPENDS += " \
12 python3-pdm-build-locked-native \
13"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pefile/run-ptest b/meta/recipes-devtools/python/python3-pefile/run-ptest
deleted file mode 100644
index 95ae72306f..0000000000
--- a/meta/recipes-devtools/python/python3-pefile/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest --automake --ignore=./tests/pefile_test.py
diff --git a/meta/recipes-devtools/python/python3-pefile_2024.8.26.bb b/meta/recipes-devtools/python/python3-pefile_2024.8.26.bb
deleted file mode 100644
index 11765b3cb3..0000000000
--- a/meta/recipes-devtools/python/python3-pefile_2024.8.26.bb
+++ /dev/null
@@ -1,18 +0,0 @@
1SUMMARY = "Python PE parsing module"
2DESCRIPTION = "A multi-platform Python module to parse and work with Portable Executable (PE) files."
3HOMEPAGE = "https://github.com/erocarrera/pefile"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e34c75178086aca0a17551ffbacaca53"
6
7inherit setuptools3 ptest-python-pytest
8SRCREV = "4b3b1e2e568a88d4f1897d694d684f23d9e270c4"
9SRC_URI = "git://github.com/erocarrera/pefile;branch=master;protocol=https \
10 file://run-ptest"
11
12BBCLASSEXTEND = "native nativesdk"
13
14RDEPENDS:${PN} += " \
15 python3-mmap \
16 python3-netclient \
17 python3-stringold \
18"
diff --git a/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
deleted file mode 100644
index 7f15e9c0da..0000000000
--- a/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From 6adf47097928ee3bb1b02c204126ed923faa7446 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Wed, 23 Feb 2022 12:27:06 +0000
4Subject: [PATCH] python3-pip: Don't change shebang
5
6Patch pip to disable shebang mangling and also force the python executable
7to be python3 from the environment when building anything for the target
8(or nativesdk). This avoids incorrect interpreter paths in the target scripts.
9
10Upstream-Status: Inappropriate [OE specific config]
11---
12 src/pip/_vendor/distlib/scripts.py | 4 +++-
13 1 file changed, 3 insertions(+), 1 deletion(-)
14
15diff --git a/src/pip/_vendor/distlib/scripts.py b/src/pip/_vendor/distlib/scripts.py
16index 195dc3f..a0e0d61 100644
17--- a/src/pip/_vendor/distlib/scripts.py
18+++ b/src/pip/_vendor/distlib/scripts.py
19@@ -155,6 +155,8 @@ class ScriptMaker(object):
20 See also: http://www.in-ulm.de/~mascheck/various/shebang/#length
21 https://hg.mozilla.org/mozilla-central/file/tip/mach
22 """
23+ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ:
24+ return b'#!/usr/bin/env python3'
25 if os.name != 'posix':
26 simple_shebang = True
27 elif getattr(sys, "cross_compiling", False):
28@@ -363,7 +365,7 @@ class ScriptMaker(object):
29 return
30
31 match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n'))
32- if match:
33+ if False:
34 adjust = True
35 post_interp = match.group(1) or b''
36
diff --git a/meta/recipes-devtools/python/python3-pip_25.2.bb b/meta/recipes-devtools/python/python3-pip_25.2.bb
deleted file mode 100644
index 350092d9ad..0000000000
--- a/meta/recipes-devtools/python/python3-pip_25.2.bb
+++ /dev/null
@@ -1,50 +0,0 @@
1SUMMARY = "The PyPA recommended tool for installing Python packages"
2HOMEPAGE = "https://pypi.org/project/pip"
3SECTION = "devel/python"
4LICENSE = "MIT & Apache-2.0 & MPL-2.0 & LGPL-2.1-only & BSD-3-Clause & PSF-2.0 & BSD-2-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=63ec52baf95163b597008bb46db68030 \
6 file://src/pip/_vendor/cachecontrol/LICENSE.txt;md5=6572692148079ebbbd800be4b9f36c6d \
7 file://src/pip/_vendor/certifi/LICENSE;md5=11618cb6a975948679286b1211bd573c \
8 file://src/pip/_vendor/distlib/LICENSE.txt;md5=f6a11430d5cd6e2cd3832ee94f22ddfc \
9 file://src/pip/_vendor/distro/LICENSE;md5=d2794c0df5b907fdace235a619d80314 \
10 file://src/pip/_vendor/idna/LICENSE.md;md5=204c0612e40a4dd46012a78d02c80fb1 \
11 file://src/pip/_vendor/msgpack/COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751 \
12 file://src/pip/_vendor/packaging/LICENSE;md5=faadaedca9251a90b205c9167578ce91 \
13 file://src/pip/_vendor/pkg_resources/LICENSE;md5=141643e11c48898150daa83802dbc65f \
14 file://src/pip/_vendor/platformdirs/LICENSE;md5=ea4f5a41454746a9ed111e3d8723d17a \
15 file://src/pip/_vendor/pygments/LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592 \
16 file://src/pip/_vendor/pyproject_hooks/LICENSE;md5=aad69c93f605003e3342b174d9b0708c \
17 file://src/pip/_vendor/requests/LICENSE;md5=34400b68072d710fecd0a2940a0d1658 \
18 file://src/pip/_vendor/resolvelib/LICENSE;md5=78e1c0248051c32a38a7f820c30bd7a5 \
19 file://src/pip/_vendor/rich/LICENSE;md5=b5f0b94fbc94f5ad9ae4efcf8a778303 \
20 file://src/pip/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \
21 file://src/pip/_vendor/truststore/LICENSE;md5=74420fc3965c4558a4a1529e63c2867f \
22 file://src/pip/_vendor/urllib3/LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c \
23 "
24
25inherit pypi python_setuptools_build_meta
26
27SRC_URI += "file://no_shebang_mangling.patch"
28
29SRC_URI[sha256sum] = "578283f006390f85bb6282dffb876454593d637f5d1be494b5202ce4877e71f2"
30
31RDEPENDS:${PN} = "\
32 python3-compile \
33 python3-html \
34 python3-image \
35 python3-io \
36 python3-json \
37 python3-multiprocessing \
38 python3-netserver \
39 python3-pickle \
40 python3-setuptools \
41 python3-tomllib \
42 python3-unixadmin \
43 python3-xmlrpc \
44"
45
46BBCLASSEXTEND = "native nativesdk"
47
48# This used to use the bootstrap install which didn't compile. Until we bump the
49# tmpdir version we can't compile the native otherwise the sysroot unpack fails
50INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb b/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb
deleted file mode 100644
index b8e4bbc75b..0000000000
--- a/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Plugin and hook calling mechanisms for python"
2HOMEPAGE = "https://github.com/pytest-dev/pluggy"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2"
5
6SRC_URI[sha256sum] = "7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"
7
8DEPENDS += "python3-setuptools-scm-native"
9
10inherit pypi ptest-python-pytest python_setuptools_build_meta
11
12PTEST_PYTEST_DIR = "testing"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-ply_3.11.bb b/meta/recipes-devtools/python/python3-ply_3.11.bb
deleted file mode 100644
index 2c5fa3f215..0000000000
--- a/meta/recipes-devtools/python/python3-ply_3.11.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "Python Lex and Yacc"
2DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python"
3HOMEPAGE = "https://pypi.python.org/pypi/ply"
4SECTION = "devel/python"
5LICENSE = "BSD-3-Clause"
6LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c"
7
8SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
9
10inherit pypi setuptools3
11
12RDEPENDS:${PN}:class-target += "\
13 python3-netclient \
14 python3-shell \
15"
16
17BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-poetry-core_2.1.3.bb b/meta/recipes-devtools/python/python3-poetry-core_2.1.3.bb
deleted file mode 100644
index 12c4751de8..0000000000
--- a/meta/recipes-devtools/python/python3-poetry-core_2.1.3.bb
+++ /dev/null
@@ -1,41 +0,0 @@
1SUMMARY = "Poetry PEP 517 Build Backend"
2DESCRIPTION = "Poetry PEP 517 Build Backend"
3HOMEPAGE = "https://github.com/python-poetry/poetry-core"
4BUGTRACKER = "https://github.com/python-poetry/poetry-core"
5CHANGELOG = "https://github.com/python-poetry/poetry-core/blob/master/CHANGELOG.md"
6
7LICENSE = "Apache-2.0 & BSD-2-Clause & BSD-3-Clause & MIT"
8LIC_FILES_CHKSUM = "\
9 file://LICENSE;md5=78c39cfd009863ae44237a7ab1f9cedc \
10 file://src/poetry/core/_vendor/fastjsonschema/LICENSE;md5=18950e8362b69c0c617b42b8bd8e7532 \
11 file://src/poetry/core/_vendor/lark/LICENSE;md5=fcfbf1e2ecc0f37acbb5871aa0267500 \
12 file://src/poetry/core/_vendor/packaging/LICENSE;md5=faadaedca9251a90b205c9167578ce91 \
13 file://src/poetry/core/_vendor/packaging/LICENSE.APACHE;md5=2ee41112a44fe7014dce33e26468ba93 \
14 file://src/poetry/core/_vendor/packaging/LICENSE.BSD;md5=7bef9bf4a8e4263634d0597e7ba100b8 \
15 file://src/poetry/core/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \
16"
17
18SRC_URI[sha256sum] = "0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4"
19
20inherit python_poetry_core pypi
21
22PYPI_PACKAGE = "poetry_core"
23UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
24
25RDEPENDS:${PN}:append:class-target = "\
26 python3-compression \
27 python3-core \
28 python3-crypt \
29 python3-io \
30 python3-json \
31 python3-logging \
32 python3-netclient \
33 python3-pprint \
34 python3-shell \
35"
36
37RDEPENDS:${PN} += "\
38 python3-pip \
39"
40
41BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pretend_1.0.9.bb b/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
deleted file mode 100644
index 60c02de488..0000000000
--- a/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
+++ /dev/null
@@ -1,10 +0,0 @@
1SUMMARY = "A library for stubbing in Python"
2HOMEPAGE = "https://github.com/alex/pretend"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99"
5
6SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
7
8inherit pypi setuptools3
9
10BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-psutil_7.0.0.bb b/meta/recipes-devtools/python/python3-psutil_7.0.0.bb
deleted file mode 100644
index a2af198083..0000000000
--- a/meta/recipes-devtools/python/python3-psutil_7.0.0.bb
+++ /dev/null
@@ -1,43 +0,0 @@
1SUMMARY = "A cross-platform process and system utilities module for Python"
2LICENSE = "BSD-3-Clause"
3LIC_FILES_CHKSUM = "file://LICENSE;md5=a9c72113a843d0d732a0ac1c200d81b1"
4HOMEPAGE = "https://pypi.org/project/psutil/"
5
6SRC_URI[sha256sum] = "7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456"
7
8inherit pypi python_setuptools_build_meta
9
10PACKAGES =+ "${PN}-tests"
11
12FILES:${PN}-tests += " \
13 ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
14 ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
15"
16
17RDEPENDS:${PN} += " \
18 python3-shell \
19 python3-threading \
20 python3-xml \
21 python3-netclient \
22 python3-ctypes \
23 python3-resource \
24"
25
26RDEPENDS:${PN}-tests += " \
27 ${PN} \
28 python3 \
29 coreutils \
30 procps \
31 binutils \
32 gcc \
33 gcc-symlinks \
34 libstdc++ \
35 libstdc++-dev \
36"
37RDEPENDS:${PN}-tests:class-native = ""
38
39INSANE_SKIP:${PN}-tests += "dev-deps"
40
41CVE_PRODUCT = "psutil"
42
43BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb b/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb
deleted file mode 100644
index 820ef27d2b..0000000000
--- a/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "Python library implementing ASN.1 types."
2HOMEPAGE = "http://pyasn1.sourceforge.net/"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=190f79253908c986e6cacf380c3a5f6d"
5
6SRC_URI[sha256sum] = "6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"
7
8inherit pypi python_setuptools_build_meta ptest-python-pytest
9
10RDEPENDS:${PN}:class-target += " \
11 python3-codecs \
12 python3-logging \
13 python3-math \
14 python3-shell \
15"
16
17BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.28.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.28.0.bb
deleted file mode 100644
index 498c4db586..0000000000
--- a/meta/recipes-devtools/python/python3-pycairo_1.28.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
1SUMMARY = "Python bindings for the Cairo canvas library"
2HOMEPAGE = "http://cairographics.org/pycairo"
3BUGTRACKER = "http://bugs.freedesktop.org"
4SECTION = "python-devel"
5LICENSE = "LGPL-2.1-only & MPL-1.1"
6LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \
7 file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \
8 file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325"
9
10# cairo >= 1.14
11DEPENDS = "cairo python3"
12
13SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/pycairo-${PV}.tar.gz"
14GITHUB_BASE_URI = "https://github.com/pygobject/pycairo/releases/"
15
16SRC_URI[sha256sum] = "26ec5c6126781eb167089a123919f87baa2740da2cca9098be8b3a6b91cc5fbc"
17
18S = "${UNPACKDIR}/pycairo-${PV}"
19
20inherit meson pkgconfig python3targetconfig github-releases
21
22CFLAGS += "-fPIC"
23
24BBCLASSEXTEND = "native"
25
26FILES:${PN} = "${PYTHON_SITEPACKAGES_DIR}/*"
diff --git a/meta/recipes-devtools/python/python3-pycparser_2.22.bb b/meta/recipes-devtools/python/python3-pycparser_2.22.bb
deleted file mode 100644
index 0be39ea383..0000000000
--- a/meta/recipes-devtools/python/python3-pycparser_2.22.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "Parser of the C language, written in pure Python"
2HOMEPAGE = "https://github.com/eliben/pycparser"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=9761c3ffee7ba99c60dca0408fd3262b"
5
6SRC_URI[sha256sum] = "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"
7
8inherit pypi setuptools3
9
10BBCLASSEXTEND = "native nativesdk"
11
12RDEPENDS:${PN}:class-target += "\
13 python3-netclient \
14"
15
16RSUGGESTS:${PN}:class-target += "\
17 cpp \
18 cpp-symlinks \
19 "
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb
deleted file mode 100644
index 2528162ff8..0000000000
--- a/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
1require python-pycryptodome.inc
2inherit python_setuptools_build_meta
3
4SRC_URI[sha256sum] = "447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef"
5
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb
deleted file mode 100644
index 43dba3faa3..0000000000
--- a/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1require python-pycryptodome.inc
2inherit python_setuptools_build_meta
3
4SRC_URI[sha256sum] = "71909758f010c82bc99b0abf4ea12012c98962fbf0583c2164f8b84533c2e4da"
5
6FILES:${PN}-tests = " \
7 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
8 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
9"
diff --git a/meta/recipes-devtools/python/python3-pyelftools_0.32.bb b/meta/recipes-devtools/python/python3-pyelftools_0.32.bb
deleted file mode 100644
index 13e9efff8d..0000000000
--- a/meta/recipes-devtools/python/python3-pyelftools_0.32.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "pyelftools is a pure-Python library for parsing and analyzing ELF files and DWARF debugging information"
2HOMEPAGE = "https://github.com/eliben/pyelftools"
3SECTION = "devel/python"
4LICENSE = "PD"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=5ce2a2b07fca326bc7c146d10105ccfc"
6
7SRC_URI[sha256sum] = "6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5"
8
9PYPI_PACKAGE = "pyelftools"
10
11inherit pypi python_setuptools_build_meta
12
13BBCLASSEXTEND = "native"
14
15RDEPENDS:${PN} += "python3-debugger python3-pprint"
diff --git a/meta/recipes-devtools/python/python3-pygments_2.19.2.bb b/meta/recipes-devtools/python/python3-pygments_2.19.2.bb
deleted file mode 100644
index a1f73b441d..0000000000
--- a/meta/recipes-devtools/python/python3-pygments_2.19.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Pygments is a syntax highlighting package written in Python."
2DESCRIPTION = "Pygments is a syntax highlighting package written in Python."
3HOMEPAGE = "http://pygments.org/"
4LICENSE = "BSD-2-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592"
6
7inherit python_hatchling
8SRC_URI[sha256sum] = "636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"
9
10inherit pypi
11
12BBCLASSEXTEND = "native nativesdk"
13
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb b/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb
deleted file mode 100644
index 42b071ca08..0000000000
--- a/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb
+++ /dev/null
@@ -1,41 +0,0 @@
1SUMMARY = "Python GObject bindings"
2HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject"
3DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more."
4SECTION = "devel/python"
5LICENSE = "LGPL-2.1-only"
6LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
7
8GIR_MESON_OPTION = ""
9
10inherit gnomebase setuptools3-base gobject-introspection upstream-version-is-even
11
12python() {
13 if d.getVar('CLASSOVERRIDE') == "class-target" and not bb.utils.to_boolean(d.getVar("GI_DATA_ENABLED")):
14 raise bb.parse.SkipRecipe("GI not available")
15}
16
17DEPENDS += "python3 glib-2.0"
18
19SRCNAME = "pygobject"
20
21SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.gz"
22SRC_URI[sha256sum] = "00e427d291e957462a8fad659a9f9c8be776ff82a8b76bdf402f1eaeec086d82"
23
24S = "${UNPACKDIR}/${SRCNAME}-${PV}"
25
26PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
27
28RDEPENDS:${PN} += " \
29 python3-asyncio \
30 python3-io \
31 python3-pkgutil \
32 gobject-introspection \
33"
34
35# python3-pycairo is checked on configuration -> DEPENDS
36# we don't link against python3-pycairo -> RDEPENDS
37PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
38PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,"
39
40BBCLASSEXTEND = "native"
41PACKAGECONFIG:class-native = ""
diff --git a/meta/recipes-devtools/python/python3-pyopenssl_25.1.0.bb b/meta/recipes-devtools/python/python3-pyopenssl_25.1.0.bb
deleted file mode 100644
index c1f571c552..0000000000
--- a/meta/recipes-devtools/python/python3-pyopenssl_25.1.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "Simple Python wrapper around the OpenSSL library"
2HOMEPAGE = "https://pyopenssl.org/"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
5
6DEPENDS += "openssl python3-cryptography"
7
8SRC_URI[sha256sum] = "8d031884482e0c67ee92bf9a4d8cceb08d92aba7136432ffb0703c5280fc205b"
9
10inherit pypi setuptools3
11
12PACKAGES =+ "${PN}-tests"
13FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
14
15RDEPENDS:${PN}:class-target = " \
16 python3-cryptography \
17 python3-threading \
18"
19RDEPENDS:${PN}-tests = "${PN}"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyparsing_3.2.4.bb b/meta/recipes-devtools/python/python3-pyparsing_3.2.4.bb
deleted file mode 100644
index 46556e6fb8..0000000000
--- a/meta/recipes-devtools/python/python3-pyparsing_3.2.4.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "Python parsing module"
2DESCRIPTION = "The pyparsing module is an alternative approach to creating \
3and executing simple grammars, vs. the traditional lex/yacc approach, or \
4the use of regular expressions. The pyparsing module provides a library of \
5classes that client code uses to construct the grammar directly in Python \
6code."
7HOMEPAGE = "https://github.com/pyparsing/pyparsing/"
8BUGTRACKER = "https://github.com/pyparsing/pyparsing/issues"
9
10LICENSE = "MIT"
11LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
12
13SRC_URI[sha256sum] = "fff89494f45559d0f2ce46613b419f632bbb6afbdaed49696d322bcf98a58e99"
14
15inherit pypi python_flit_core
16
17RDEPENDS:${PN} += " \
18 python3-datetime \
19 python3-debugger \
20 python3-html \
21 python3-json \
22 python3-netclient \
23 python3-pprint \
24 python3-stringold \
25 python3-threading \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyproject-hooks_1.2.0.bb b/meta/recipes-devtools/python/python3-pyproject-hooks_1.2.0.bb
deleted file mode 100644
index c68760e293..0000000000
--- a/meta/recipes-devtools/python/python3-pyproject-hooks_1.2.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
1SUMMARY = "A low-level library for calling build-backends in pyproject.toml-based projects"
2HOMEPAGE = "https://github.com/pypa/pyproject-hooks"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=aad69c93f605003e3342b174d9b0708c"
5
6SRC_URI[sha256sum] = "1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8"
7
8inherit pypi python_flit_core
9
10PYPI_PACKAGE = "pyproject_hooks"
11UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
12
13BBCLASSEXTEND = "native nativesdk"
14
15# Bootstrap the native build
16DEPENDS:remove:class-native = "python3-build-native"
17
18RDEPENDS:${PN} += " \
19 python3-io \
20 python3-json \
21"
22
23do_compile:class-native () {
24 python_flit_core_do_manual_build
25}
diff --git a/meta/recipes-devtools/python/python3-pyproject-metadata_0.9.1.bb b/meta/recipes-devtools/python/python3-pyproject-metadata_0.9.1.bb
deleted file mode 100644
index d3a93efa31..0000000000
--- a/meta/recipes-devtools/python/python3-pyproject-metadata_0.9.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "PEP 621 metadata parsing"
2DESCRIPTION = "Dataclass for PEP 621 metadata with support for core \
3metadata generation \
4\
5This project does not implement the parsing of pyproject.toml containing \
6PEP 621 metadata.\
7\
8Instead, given a Python data structure representing PEP 621 metadata \
9(already parsed), it will validate this input and generate a \
10PEP 643-compliant metadata file (e.g. PKG-INFO)."
11HOMEPAGE = "https://github.com/FFY00/python-pyproject-metadata"
12LICENSE = "MIT"
13LIC_FILES_CHKSUM = "file://LICENSE;md5=310439af287b0fb4780b2ad6907c256c"
14
15PYPI_PACKAGE = "pyproject_metadata"
16UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
17
18inherit pypi python_flit_core
19
20SRC_URI[sha256sum] = "b8b2253dd1b7062b78cf949a115f02ba7fa4114aabe63fa10528e9e1a954a816"
21
22RDEPENDS:${PN} += " \
23 python3-logging \
24 python3-packaging \
25 python3-profile \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyrsistent_0.20.0.bb b/meta/recipes-devtools/python/python3-pyrsistent_0.20.0.bb
deleted file mode 100644
index 7de70942a9..0000000000
--- a/meta/recipes-devtools/python/python3-pyrsistent_0.20.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Persistent/Immutable/Functional data structures for Python"
2HOMEPAGE = "https://github.com/tobgu/pyrsistent"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.mit;md5=f798dc4222a29fea881fa998cdf4a8c8"
5
6SRC_URI[sha256sum] = "4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4"
7
8inherit pypi python_setuptools_build_meta
9
10RDEPENDS:${PN} += " \
11 python3-numbers \
12"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pysocks_1.7.1.bb b/meta/recipes-devtools/python/python3-pysocks_1.7.1.bb
deleted file mode 100644
index dbf0fb0ee6..0000000000
--- a/meta/recipes-devtools/python/python3-pysocks_1.7.1.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "A Python SOCKS client module"
2HOMEPAGE = "http://python-requests.org"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=1d457bcffb9661b45f799d4efee72f16"
5
6SRC_URI[sha256sum] = "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"
7
8PYPI_PACKAGE = "PySocks"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi setuptools3
12
13RDEPENDS:${PN}:class-target += "\
14 python3-email \
15 python3-io \
16 python3-logging \
17 python3-netclient \
18 python3-shell \
19"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest-subtests_0.14.2.bb b/meta/recipes-devtools/python/python3-pytest-subtests_0.14.2.bb
deleted file mode 100644
index 58212bfb1c..0000000000
--- a/meta/recipes-devtools/python/python3-pytest-subtests_0.14.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "unittest subTest() support and subtests fixture."
2DESCRIPTION = "Adds support for TestCase.subTest.\
3New subtests fixture, providing similar functionality for pure pytest tests."
4HOMEPAGE = "https://github.com/pytest-dev/pytest-subtests"
5BUGTRACKER = "https://github.com/pytest-dev/pytest-subtests/issues"
6
7LICENSE = "MIT"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=242b4e17fa287dcf7aef372f6bc3dcb1"
9
10SRC_URI[sha256sum] = "7154a8665fd528ee70a76d00216a44d139dc3c9c83521a0f779f7b0ad4f800de"
11
12PYPI_PACKAGE = "pytest_subtests"
13UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
14
15inherit pypi python_setuptools_build_meta
16
17DEPENDS += "python3-setuptools-scm-native"
18
19RDEPENDS:${PN} += " \
20 python3-attrs \
21 python3-pytest \
22"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest_8.4.2.bb b/meta/recipes-devtools/python/python3-pytest_8.4.2.bb
deleted file mode 100644
index d85033cd1f..0000000000
--- a/meta/recipes-devtools/python/python3-pytest_8.4.2.bb
+++ /dev/null
@@ -1,35 +0,0 @@
1SUMMARY = "Simple powerful testing with python"
2HOMEPAGE = "https://pypi.org/project/pytest/"
3DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries."
4
5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=bd27e41b6550fe0fc45356d1d81ee37c"
7
8SRC_URI[sha256sum] = "86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01"
9
10DEPENDS += "python3-setuptools-scm-native"
11
12inherit update-alternatives pypi python_setuptools_build_meta
13
14RDEPENDS:${PN} += " \
15 python3-colorama \
16 python3-debugger \
17 python3-doctest \
18 python3-iniconfig \
19 python3-json \
20 python3-packaging \
21 python3-pluggy \
22 python3-pygments \
23 python3-tomllib \
24 python3-xml \
25"
26
27ALTERNATIVE:${PN} += "py.test pytest"
28
29NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
30ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
31
32ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
33ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
34
35BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytz_2025.2.bb b/meta/recipes-devtools/python/python3-pytz_2025.2.bb
deleted file mode 100644
index 86bfceadc8..0000000000
--- a/meta/recipes-devtools/python/python3-pytz_2025.2.bb
+++ /dev/null
@@ -1,30 +0,0 @@
1SUMMARY = "World timezone definitions, modern and historical"
2HOMEPAGE = "http://pythonhosted.org/pytz"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999"
5
6inherit pypi setuptools3 ptest-python-pytest
7
8PTEST_PYTEST_DIR = "pytz/tests"
9
10SRC_URI[sha256sum] = "360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"
11
12RDEPENDS:${PN}:class-target += "\
13 python3-datetime \
14 python3-doctest \
15 python3-io \
16 python3-pickle \
17 python3-pprint \
18 python3-threading \
19"
20
21BBCLASSEXTEND = "native nativesdk"
22
23RDEPENDS:${PN}-ptest += " \
24 python3-pytest \
25 python3-unittest-automake-output \
26"
27
28do_install_ptest:append() {
29 cp -f ${S}/README.rst ${D}${PTEST_PATH}/
30}
diff --git a/meta/recipes-devtools/python/python3-pyyaml_6.0.2.bb b/meta/recipes-devtools/python/python3-pyyaml_6.0.2.bb
deleted file mode 100644
index 7ebe3f7d9f..0000000000
--- a/meta/recipes-devtools/python/python3-pyyaml_6.0.2.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "Python support for YAML"
2HOMEPAGE = "https://pyyaml.org/"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079"
6
7SRC_URI[sha256sum] = "d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"
8
9SRC_URI += "\
10 https://raw.githubusercontent.com/yaml/pyyaml/a98fd6088e81d7aca571220c966bbfe2ac43c335/tests/test_dump_load.py;name=test \
11"
12SRC_URI[test.sha256sum] = "b6a8a2825d89fdc8aee226560f66b8196e872012a0ea7118cbef1a832359434a"
13
14inherit pypi python_setuptools_build_meta ptest-python-pytest cython
15
16PACKAGECONFIG ?= "libyaml"
17PACKAGECONFIG[libyaml] = "--with-libyaml,--without-libyaml,libyaml"
18
19RDEPENDS:${PN} += "\
20 python3-datetime \
21 python3-netclient \
22"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rdflib_7.1.4.bb b/meta/recipes-devtools/python/python3-rdflib_7.1.4.bb
deleted file mode 100644
index 01841cda4f..0000000000
--- a/meta/recipes-devtools/python/python3-rdflib_7.1.4.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "RDFLib is a pure Python package for working with RDF"
2HOMEPAGE = "https://github.com/RDFLib/rdflib"
3SECTION = "devel/python"
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=7006e973486c4700556f6d58cba0ab6c"
6
7SRC_URI[sha256sum] = "fed46e24f26a788e2ab8e445f7077f00edcf95abb73bcef4b86cefa8b62dd174"
8
9inherit pypi python_poetry_core
10
11RDEPENDS:${PN} += " \
12 python3-datetime \
13 python3-pyparsing \
14 python3-logging \
15 python3-numbers \
16 python3-xml \
17 python3-compression \
18 python3-core \
19"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-referencing_0.37.0.bb b/meta/recipes-devtools/python/python3-referencing_0.37.0.bb
deleted file mode 100644
index a75f5f80d4..0000000000
--- a/meta/recipes-devtools/python/python3-referencing_0.37.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "An implementation-agnostic implementation of JSON reference resolution."
2HOMEPAGE = "https://github.com/python-jsonschema/referencing"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://COPYING;md5=93eb9740964b59e9ba30281255b044e2"
5
6SRC_URI[sha256sum] = "44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8"
7
8inherit pypi python_hatchling
9
10DEPENDS += "python3-hatch-vcs-native"
11
12RDEPENDS:${PN} += "python3-rpds-py"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh b/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh
deleted file mode 100644
index 400972814b..0000000000
--- a/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh
+++ /dev/null
@@ -1,11 +0,0 @@
1# Respect host env REQUESTS_CA_BUNDLE first, then auto-detected host cert, then cert in buildtools
2# CAFILE/CAPATH is auto-deteced when source buildtools
3if [ -z "${REQUESTS_CA_BUNDLE:-}" ]; then
4 if [ -n "${CAFILE:-}" ];then
5 export REQUESTS_CA_BUNDLE="$CAFILE"
6 elif [ -e "${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt" ];then
7 export REQUESTS_CA_BUNDLE="${OECORE_NATIVE_SYSROOT}/etc/ssl/certs/ca-certificates.crt"
8 fi
9fi
10
11export BB_ENV_PASSTHROUGH_ADDITIONS="${BB_ENV_PASSTHROUGH_ADDITIONS:-} REQUESTS_CA_BUNDLE"
diff --git a/meta/recipes-devtools/python/python3-requests_2.32.5.bb b/meta/recipes-devtools/python/python3-requests_2.32.5.bb
deleted file mode 100644
index 43b63e32b1..0000000000
--- a/meta/recipes-devtools/python/python3-requests_2.32.5.bb
+++ /dev/null
@@ -1,35 +0,0 @@
1SUMMARY = "Python HTTP for Humans."
2HOMEPAGE = "https://requests.readthedocs.io"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
5
6SRC_URI:append:class-nativesdk = " \
7 file://environment.d-python3-requests.sh \
8"
9
10SRC_URI[sha256sum] = "dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf"
11
12inherit pypi python_setuptools_build_meta
13
14do_install:append:class-nativesdk() {
15 mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
16 install -m 644 ${UNPACKDIR}/environment.d-python3-requests.sh ${D}${SDKPATHNATIVE}/environment-setup.d/python3-requests.sh
17}
18
19RDEPENDS:${PN} += " \
20 python3-certifi \
21 python3-email \
22 python3-json \
23 python3-netserver \
24 python3-pysocks \
25 python3-urllib3 \
26 python3-chardet \
27 python3-idna \
28 python3-compression \
29"
30
31FILES:${PN}:append:class-nativesdk = " ${SDKPATHNATIVE}/environment-setup.d/python3-requests.sh"
32
33CVE_PRODUCT = "requests"
34
35BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb b/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb
deleted file mode 100644
index 1e60c763d8..0000000000
--- a/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb
+++ /dev/null
@@ -1,21 +0,0 @@
1SUMMARY = "A pure python RFC3339 validator"
2HOMEPAGE = "https://github.com/naimetti/rfc3339-validator"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
5
6FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3339-validator:"
7
8SRC_URI[sha256sum] = "138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"
9
10PYPI_PACKAGE = "rfc3339_validator"
11UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
12
13inherit pypi setuptools3
14
15RDEPENDS:${PN} += "\
16 python3-core \
17 python3-datetime \
18 python3-six \
19"
20
21BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb b/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
deleted file mode 100644
index c13a765660..0000000000
--- a/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
+++ /dev/null
@@ -1,10 +0,0 @@
1SUMMARY = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)"
2HOMEPAGE = "https://pypi.org/project/rfc3987/"
3LICENSE = "GPL-3.0-or-later"
4LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=9;md5=2b723edf67b2f3088bc5e339b1ceda2d"
5
6SRC_URI[sha256sum] = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"
7
8inherit pypi setuptools3
9
10BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-roman-numerals-py_3.1.0.bb b/meta/recipes-devtools/python/python3-roman-numerals-py_3.1.0.bb
deleted file mode 100644
index 9a76df0de2..0000000000
--- a/meta/recipes-devtools/python/python3-roman-numerals-py_3.1.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "Manipulate roman numerals"
2HOMEPAGE = "https://github.com/AA-Turner/roman-numerals/"
3LICENSE = "0BSD & CC0-1.0"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=bfcc8b16e42929aafeb9d414360bc2fd"
5
6SRC_URI[sha256sum] = "be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d"
7PYPI_PACKAGE = "roman_numerals_py"
8UPSTREAM_CHECK_PYPI_PACKAGE = "roman_numerals_py"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rpds-py-crates.inc b/meta/recipes-devtools/python/python3-rpds-py-crates.inc
deleted file mode 100644
index a0b669df2d..0000000000
--- a/meta/recipes-devtools/python/python3-rpds-py-crates.inc
+++ /dev/null
@@ -1,54 +0,0 @@
1# Autogenerated with 'bitbake -c update_crates python3-rpds-py'
2
3# from Cargo.lock
4SRC_URI += " \
5 crate://crates.io/archery/1.2.1 \
6 crate://crates.io/autocfg/1.4.0 \
7 crate://crates.io/cc/1.2.25 \
8 crate://crates.io/heck/0.5.0 \
9 crate://crates.io/indoc/2.0.6 \
10 crate://crates.io/libc/0.2.172 \
11 crate://crates.io/memoffset/0.9.1 \
12 crate://crates.io/once_cell/1.21.3 \
13 crate://crates.io/portable-atomic/1.11.0 \
14 crate://crates.io/proc-macro2/1.0.95 \
15 crate://crates.io/pyo3/0.25.1 \
16 crate://crates.io/pyo3-build-config/0.25.1 \
17 crate://crates.io/pyo3-ffi/0.25.1 \
18 crate://crates.io/pyo3-macros/0.25.1 \
19 crate://crates.io/pyo3-macros-backend/0.25.1 \
20 crate://crates.io/python3-dll-a/0.2.14 \
21 crate://crates.io/quote/1.0.40 \
22 crate://crates.io/rpds/1.1.1 \
23 crate://crates.io/shlex/1.3.0 \
24 crate://crates.io/syn/2.0.101 \
25 crate://crates.io/target-lexicon/0.13.2 \
26 crate://crates.io/triomphe/0.1.14 \
27 crate://crates.io/unicode-ident/1.0.18 \
28 crate://crates.io/unindent/0.2.4 \
29"
30
31SRC_URI[archery-1.2.1.sha256sum] = "eae2ed21cd55021f05707a807a5fc85695dafb98832921f6cfa06db67ca5b869"
32SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
33SRC_URI[cc-1.2.25.sha256sum] = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951"
34SRC_URI[heck-0.5.0.sha256sum] = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
35SRC_URI[indoc-2.0.6.sha256sum] = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd"
36SRC_URI[libc-0.2.172.sha256sum] = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
37SRC_URI[memoffset-0.9.1.sha256sum] = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
38SRC_URI[once_cell-1.21.3.sha256sum] = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
39SRC_URI[portable-atomic-1.11.0.sha256sum] = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
40SRC_URI[proc-macro2-1.0.95.sha256sum] = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
41SRC_URI[pyo3-0.25.1.sha256sum] = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a"
42SRC_URI[pyo3-build-config-0.25.1.sha256sum] = "458eb0c55e7ece017adeba38f2248ff3ac615e53660d7c71a238d7d2a01c7598"
43SRC_URI[pyo3-ffi-0.25.1.sha256sum] = "7114fe5457c61b276ab77c5055f206295b812608083644a5c5b2640c3102565c"
44SRC_URI[pyo3-macros-0.25.1.sha256sum] = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50"
45SRC_URI[pyo3-macros-backend-0.25.1.sha256sum] = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc"
46SRC_URI[python3-dll-a-0.2.14.sha256sum] = "d381ef313ae70b4da5f95f8a4de773c6aa5cd28f73adec4b4a31df70b66780d8"
47SRC_URI[quote-1.0.40.sha256sum] = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
48SRC_URI[rpds-1.1.1.sha256sum] = "a7f89f654d51fffdd6026289d07d1fd523244d46ae0a8bc22caa6dd7f9e8cb0b"
49SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
50SRC_URI[syn-2.0.101.sha256sum] = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
51SRC_URI[target-lexicon-0.13.2.sha256sum] = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
52SRC_URI[triomphe-0.1.14.sha256sum] = "ef8f7726da4807b58ea5c96fdc122f80702030edc33b35aff9190a51148ccc85"
53SRC_URI[unicode-ident-1.0.18.sha256sum] = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
54SRC_URI[unindent-0.2.4.sha256sum] = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
diff --git a/meta/recipes-devtools/python/python3-rpds-py_0.27.1.bb b/meta/recipes-devtools/python/python3-rpds-py_0.27.1.bb
deleted file mode 100644
index dfaffb6546..0000000000
--- a/meta/recipes-devtools/python/python3-rpds-py_0.27.1.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "Python bindings to the Rust rpds crate for persistent data structures."
2HOMEPAGE = "https://pypi.org/project/rpds-py/"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=7767fa537c4596c54141f32882c4a984"
6
7SRC_URI[sha256sum] = "26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8"
8
9require ${BPN}-crates.inc
10
11inherit pypi cargo-update-recipe-crates python_maturin ptest-python-pytest
12
13PYPI_PACKAGE = "rpds_py"
14UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
15
16RDEPENDS:${PN}-ptest += " \
17 python3-iniconfig \
18 python3-packaging \
19 python3-pluggy \
20 "
21
22BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.15.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.15.bb
deleted file mode 100644
index f14d043f56..0000000000
--- a/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.15.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1SUMMARY = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order."
2HOMEPAGE = "https://pypi.org/project/ruamel.yaml/"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=5cc5d45e8a30c81dade6ca1928caa515"
6
7PYPI_PACKAGE = "ruamel.yaml"
8UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
9
10inherit pypi python_setuptools_build_meta
11
12SRC_URI[sha256sum] = "dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700"
13
14RDEPENDS:${PN} += "\
15 python3-shell \
16 python3-datetime \
17 python3-netclient \
18"
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-scons_4.9.1.bb b/meta/recipes-devtools/python/python3-scons_4.9.1.bb
deleted file mode 100644
index 1eac1ce5a9..0000000000
--- a/meta/recipes-devtools/python/python3-scons_4.9.1.bb
+++ /dev/null
@@ -1,29 +0,0 @@
1SUMMARY = "Software Construction tool (make/autotools replacement)"
2HOMEPAGE = "https://github.com/SCons/scons"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d903b0b8027f461402bac9b5169b36f7"
6
7SRC_URI[sha256sum] = "bacac880ba2e86d6a156c116e2f8f2bfa82b257046f3ac2666c85c53c615c338"
8
9inherit pypi python_setuptools_build_meta
10
11S = "${UNPACKDIR}/scons-${PV}"
12
13RDEPENDS:${PN}:class-target = "\
14 python3-core \
15 python3-compression \
16 python3-fcntl \
17 python3-io \
18 python3-json \
19 python3-shell \
20 python3-pickle \
21 python3-pkg-resources \
22 python3-pprint \
23 "
24
25do_install:append:class-native() {
26 create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
27}
28
29BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb b/meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb
deleted file mode 100644
index 78763a911e..0000000000
--- a/meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "A library implementing the 'SemVer' scheme."
2DESCRIPTION = "Semantic version comparison for Python (see http://semver.org/)"
3HOMEPAGE = "https://github.com/rbarrois/python-semanticversion"
4LICENSE = "BSD-2-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=4fb31e3c1c7eeb8b5e8c07657cdd54e2"
6
7SRC_URI[sha256sum] = "bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"
8
9PYPI_PACKAGE = "semantic_version"
10UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
11
12inherit pypi setuptools3
13
14RDEPENDS:${PN} += " \
15 python3-pkg-resources \
16"
17
18BBCLASSEXTEND = "native nativesdk"
19
diff --git a/meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb b/meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb
deleted file mode 100644
index 491f512706..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools-rust_1.12.0.bb
+++ /dev/null
@@ -1,31 +0,0 @@
1SUMMARY = "Setuptools Rust extension plugin"
2DESCRIPTION = "setuptools-rust is a plugin for setuptools to build Rust \
3Python extensions implemented with PyO3 or rust-cpython.\
4\
5Compile and distribute Python extensions written in Rust as easily as if they were written in C."
6HOMEPAGE = "https://github.com/PyO3/setuptools-rust"
7BUGTRACKER = "https://github.com/PyO3/setuptools-rust/issues"
8
9LICENSE = "MIT"
10LIC_FILES_CHKSUM = "file://LICENSE;md5=011cd92e702dd9e6b1a26157b6fd53f5"
11
12SRC_URI[sha256sum] = "d94a93f0c97751c17014565f07bdc324bee45d396cd1bba83d8e7af92b945f0c"
13
14PYPI_PACKAGE = "setuptools_rust"
15UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
16
17inherit cargo pypi python_setuptools_build_meta
18
19DEPENDS += "python3-setuptools-scm-native python3-wheel-native"
20
21RDEPENDS:${PN} += " \
22 python3-json \
23 python3-semantic-version \
24 python3-setuptools \
25 python3-setuptools-scm \
26 python3-shell \
27 python3-typing-extensions \
28 python3-wheel \
29"
30
31BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb b/meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb
deleted file mode 100644
index 81e04ddea5..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1SUMMARY = "the blessed package to manage your versions by scm tags"
2HOMEPAGE = "https://pypi.org/project/setuptools-scm/"
3DESCRIPTION = "setuptools_scm handles managing your Python package \
4versions in SCM metadata instead of declaring them as the version \
5argument or in a SCM managed file."
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=838c366f69b72c5df05c96dff79b35f2"
8
9SRC_URI[sha256sum] = "3d555e92b75dacd037d32bafdf94f97af51ea29ae8c7b234cf94b7a5bd242a63"
10
11PYPI_PACKAGE = "setuptools_scm"
12UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
13
14inherit pypi python_setuptools_build_meta
15
16DEPENDS += "python3-packaging-native"
17
18RDEPENDS:${PN} = "\
19 python3-packaging \
20 python3-setuptools \
21"
22
23RDEPENDS:${PN}:append:class-target = " \
24 python3-debugger \
25 python3-json \
26"
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch
deleted file mode 100644
index 39153883b0..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch
+++ /dev/null
@@ -1,58 +0,0 @@
1From e2eab8c254f16c461de25123f6859b8a18db5cd8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Wed, 11 May 2022 21:41:14 +0200
4Subject: [PATCH] _distutils/sysconfig.py: make it possible to substite the
5 prefix to target sysroot
6
7This is done by probing STAGING_INCDIR/STAGING_LIBDIRenv vars:
8not the most elegant solution, but distutils/sysconfig has been
9tweaked to do this for many, many year, and so it's easiest
10to replicate here as well, the original is
11meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
12
13I'm not sure exactly why setuptools now needs a copy, and what
14would happen to this module in light of distutils deprecation.
15
16Upstream-Status: Inappropriate [oe-core specific]
17Signed-off-by: Alexander Kanavin <alex@linutronix.de>
18---
19 setuptools/_distutils/sysconfig.py | 12 ++++++++++--
20 1 file changed, 10 insertions(+), 2 deletions(-)
21
22diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py
23index 7ddc869..01a06af 100644
24--- a/setuptools/_distutils/sysconfig.py
25+++ b/setuptools/_distutils/sysconfig.py
26@@ -134,6 +134,8 @@ def get_python_inc(plat_specific: bool = False, prefix: str | None = None) -> st
27 sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
28 """
29 default_prefix = BASE_EXEC_PREFIX if plat_specific else BASE_PREFIX
30+ if os.environ.get('STAGING_INCDIR', ""):
31+ default_prefix = os.environ['STAGING_INCDIR'].rstrip('include')
32 resolved_prefix = prefix if prefix is not None else default_prefix
33 # MinGW imitates posix like layout, but os.name != posix
34 os_name = "posix" if is_mingw() else os.name
35@@ -246,7 +248,13 @@ def get_python_lib(
36
37 early_prefix = prefix
38
39- if prefix is None:
40+ if os.environ.get('STAGING_LIBDIR', ""):
41+ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
42+ else:
43+ lib_basename = "lib"
44+ if prefix is None and os.environ.get('STAGING_LIBDIR', ""):
45+ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
46+ elif prefix is None:
47 if standard_lib:
48 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
49 else:
50@@ -261,7 +269,7 @@ def get_python_lib(
51 # Pure Python
52 libdir = "lib"
53 implementation = 'pypy' if IS_PYPY else 'python'
54- libpython = os.path.join(prefix, libdir, implementation + get_python_version())
55+ libpython = os.path.join(prefix, lib_basename, implementation + get_python_version())
56 return _posix_lib(standard_lib, libpython, early_prefix, prefix)
57 elif os.name == "nt":
58 if standard_lib:
diff --git a/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb b/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb
deleted file mode 100644
index 533d8ce3d4..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb
+++ /dev/null
@@ -1,55 +0,0 @@
1SUMMARY = "Download, build, install, upgrade, and uninstall Python packages"
2HOMEPAGE = "https://pypi.org/project/setuptools"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f"
6
7inherit pypi python_setuptools_build_meta
8
9CVE_PRODUCT = "python3-setuptools python:setuptools"
10
11SRC_URI += " \
12 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch"
13
14SRC_URI[sha256sum] = "f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"
15
16DEPENDS += "python3"
17
18RDEPENDS:${PN} = "\
19 python3-compile \
20 python3-compression \
21 python3-ctypes \
22 python3-email \
23 python3-html \
24 python3-json \
25 python3-netserver \
26 python3-numbers \
27 python3-pickle \
28 python3-pkg-resources \
29 python3-pkgutil \
30 python3-plistlib \
31 python3-shell \
32 python3-stringold \
33 python3-threading \
34 python3-unittest \
35 python3-unixadmin \
36 python3-xml \
37"
38
39BBCLASSEXTEND = "native nativesdk"
40
41# The pkg-resources module can be used by itself, without the package downloader
42# and easy_install. Ship it in a separate package so that it can be used by
43# minimal distributions.
44PACKAGES =+ "python3-pkg-resources "
45FILES:python3-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
46RDEPENDS:python3-pkg-resources = "\
47 python3-compression \
48 python3-email \
49 python3-plistlib \
50 python3-pprint \
51"
52
53# This used to use the bootstrap install which didn't compile. Until we bump the
54# tmpdir version we can't compile the native otherwise the sysroot unpack fails
55INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-six_1.17.0.bb b/meta/recipes-devtools/python/python3-six_1.17.0.bb
deleted file mode 100644
index 693f1818d3..0000000000
--- a/meta/recipes-devtools/python/python3-six_1.17.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
1inherit setuptools3
2require python-six.inc
3
4SRC_URI[sha256sum] = "ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"
diff --git a/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch b/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
deleted file mode 100644
index 63bd523cb7..0000000000
--- a/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
+++ /dev/null
@@ -1,53 +0,0 @@
1From 7425e49166e6f16743ec9528697d06bc4103dc5e Mon Sep 17 00:00:00 2001
2From: Tim Orling <tim.orling@konsulko.com>
3Date: Sun, 20 Feb 2022 18:55:50 -0800
4Subject: [PATCH] Change hash bang to python3
5
6In setup.py, smartypants and smartypants.py set hash bang to python3.
7
8Upstream-Status: Inappropriate [oe-core specific]
9
10Signed-off-by: Tim Orling <tim.orling@konsulko.com>
11
12Update to apply on v2.0.2.
13
14Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
15---
16 setup.py | 2 +-
17 smartypants | 2 +-
18 smartypants.py | 2 +-
19 3 files changed, 3 insertions(+), 3 deletions(-)
20
21diff --git a/setup.py b/setup.py
22index c183fc0..e10d757 100755
23--- a/setup.py
24+++ b/setup.py
25@@ -1,4 +1,4 @@
26-#!/usr/bin/env python
27+#!/usr/bin/env python3
28 # Copyright (c) 2025–present Justin Mayer
29 # For detail license information, See COPYING
30
31diff --git a/smartypants b/smartypants
32index 1dabf7d..20c130e 100755
33--- a/smartypants
34+++ b/smartypants
35@@ -1,4 +1,4 @@
36-#!/usr/bin/env python
37+#!/usr/bin/env python3
38 # Copyright (c) 2025–present Justin Mayer
39 # Licensed under the BSD License, for detailed license information, see COPYING
40
41diff --git a/smartypants.py b/smartypants.py
42index 62c1472..a440d14 100755
43--- a/smartypants.py
44+++ b/smartypants.py
45@@ -1,4 +1,4 @@
46-#!/usr/bin/python
47+#!/usr/bin/python3
48 # Copyright (c) 2025–present Justin Mayer
49 # Copyright (c) 2017 Leo Hemsted
50 # Copyright (c) 2013, 2014, 2016 Yu-Jie Lin
51--
522.49.0
53
diff --git a/meta/recipes-devtools/python/python3-smartypants_2.0.2.bb b/meta/recipes-devtools/python/python3-smartypants_2.0.2.bb
deleted file mode 100644
index a439f8a880..0000000000
--- a/meta/recipes-devtools/python/python3-smartypants_2.0.2.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "Translator of plain ASCII punctuation characters into 'smart' typographic punctuation HTML entities"
2HOMEPAGE = "https://pythonhosted.org/smartypants/"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://COPYING;md5=ca325788d94ee694fef2a308c5073454"
5
6inherit pypi setuptools3
7
8PYPI_PACKAGE = "smartypants"
9SRC_URI += "file://0001-Change-hash-bang-to-python3.patch"
10SRC_URI[sha256sum] = "39d64ce1d7cc6964b698297bdf391bc12c3251b7f608e6e55d857cd7c5f800c6"
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-smmap_6.0.0.bb b/meta/recipes-devtools/python/python3-smmap_6.0.0.bb
deleted file mode 100644
index 6abed1205f..0000000000
--- a/meta/recipes-devtools/python/python3-smmap_6.0.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "Python implementation of a sliding window memory map manager"
2DESCRIPTION = "A pure Python implementation of a sliding memory map to \
3help unifying memory mapped access on 32 and 64 bit systems and to help \
4managing resources more efficiently."
5HOMEPAGE = "http://github.com/gitpython-developers/GitPython"
6SECTION = "devel/python"
7LICENSE = "BSD-3-Clause"
8LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
9
10inherit pypi setuptools3
11
12PYPI_PACKAGE = "smmap"
13
14SRC_URI[sha256sum] = "8d79028ea6cc131da5eab099a5d95a998d43c6779956fffe3b455040911076da"
15
16RDEPENDS:${PN} += "python3-codecs \
17 python3-mmap \
18"
19BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-snowballstemmer_3.0.1.bb b/meta/recipes-devtools/python/python3-snowballstemmer_3.0.1.bb
deleted file mode 100644
index 37cfbce7dc..0000000000
--- a/meta/recipes-devtools/python/python3-snowballstemmer_3.0.1.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Snowball compiler and stemming algorithms"
2HOMEPAGE = "https://github.com/snowballstem/snowball"
3
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://COPYING;md5=19139aaf3c8c8fa1ca6edd59c072fb9f"
6
7SRC_URI[sha256sum] = "6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895"
8
9PYPI_PACKAGE = "snowballstemmer"
10
11inherit pypi python_setuptools_build_meta
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
deleted file mode 100644
index 0755d3e177..0000000000
--- a/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1SUMMARY = "Sorted Containers is an Apache2 licensed sorted collections library, written in pure-Python, and fast as C-extensions."
2HOMEPAGE = "http://www.grantjenks.com/docs/sortedcontainers/"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae"
5
6inherit pypi setuptools3
7SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"
8
9BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-spdx-tools_0.8.3.bb b/meta/recipes-devtools/python/python3-spdx-tools_0.8.3.bb
deleted file mode 100644
index 0f05679322..0000000000
--- a/meta/recipes-devtools/python/python3-spdx-tools_0.8.3.bb
+++ /dev/null
@@ -1,30 +0,0 @@
1SUMMARY = "Python tool to parse, validate and convert spdx files"
2HOMEPAGE = "https://github.com/spdx/tools-python"
3
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=dc7f21ccff0f672f2a7cd6f412ae627d"
6
7SRC_URI[sha256sum] = "68b8f9ce2893b5216bd90b2e63f1c821c2884e4ebc4fd295ebbf1fa8b8a94b93"
8
9BBCLASSEXTEND = "native nativesdk"
10
11inherit pypi python_setuptools_build_meta
12
13DEPENDS += "python3-setuptools-scm-native"
14
15# Dependency required for pyspdxtools : python3-click
16# Dependencies required for conversion to spdx3 : python3-semantic-version, python3-ply
17RDEPENDS:${PN} += "\
18 python3-core \
19 python3-beartype \
20 python3-click \
21 python3-datetime \
22 python3-json \
23 python3-license-expression \
24 python3-ply \
25 python3-pyyaml \
26 python3-rdflib \
27 python3-semantic-version \
28 python3-uritools \
29 python3-xmltodict \
30 "
diff --git a/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb b/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb
deleted file mode 100644
index 554fb3eb51..0000000000
--- a/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "A sphinx extension that automatically documents argparse commands and options"
2HOMEPAGE = "https://sphinx-argparse.readthedocs.io/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=5c1cd8f13774629fee215681e66a1056"
5
6SRC_URI[sha256sum] = "e5352f8fa894b6fb6fda0498ba28a9f8d435971ef4bbc1a6c9c6414e7644f032"
7
8PYPI_PACKAGE = "sphinx_argparse"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb b/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb
deleted file mode 100644
index 0441804661..0000000000
--- a/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
1SUMMARY = "Add a copy button to code blocks in Sphinx"
2HOMEPAGE = "https://sphinx-copybutton.readthedocs.io"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=c60e920848b6d2ecec51ea44a1a33bf0"
5
6SRC_URI[sha256sum] = "4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd"
7
8inherit setuptools3 pypi
9
10BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinx-rtd-theme_3.0.2.bb b/meta/recipes-devtools/python/python3-sphinx-rtd-theme_3.0.2.bb
deleted file mode 100644
index 03e7a50125..0000000000
--- a/meta/recipes-devtools/python/python3-sphinx-rtd-theme_3.0.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
1SUMMARY = "Sphinx Theme reader"
2HOMEPAGE = "https://github.com/readthedocs/sphinx_rtd_theme"
3SECTION = "devel/python"
4LICENSE = "MIT & OFL-1.1"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=a1db7d4ef426c2935227264e1d4ae8f9 \
6 file://OFL-License.txt;md5=4534c22e0147eadb6828bd9fe86d4868 \
7 file://Apache-License-2.0.txt;md5=8a75796f0ef19c3f601d69857f5a9a5b"
8
9RDEPENDS:${PN} += " \
10 python3-compile \
11 python3-sphinx \
12 python3-sphinxcontrib-jquery \
13"
14
15PYPI_PACKAGE = "sphinx_rtd_theme"
16UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
17
18SRC_URI[sha256sum] = "b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"
19
20inherit setuptools3 pypi
21
22#Fake out the setup scipt
23export CI = "True"
24export TOX_ENV_NAME = "True"
25
26BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinx_8.2.1.bb b/meta/recipes-devtools/python/python3-sphinx_8.2.1.bb
deleted file mode 100644
index 614566b8f4..0000000000
--- a/meta/recipes-devtools/python/python3-sphinx_8.2.1.bb
+++ /dev/null
@@ -1,35 +0,0 @@
1SUMMARY = "Python documentation generator"
2HOMEPAGE = "http://sphinx-doc.org/"
3SECTION = "devel/python"
4LICENSE = "BSD-2-Clause & MIT"
5LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=e30c37a2b7fb0afa3adc0d72b85e8b04"
6
7SRC_URI[sha256sum] = "e4b932951b9c18b039f73b72e4e63afe967d90408700ec222b981ac24647c01e"
8
9inherit python_flit_core pypi
10
11do_install:append () {
12 # The cache format of "{None, 'en', 'ja'}" doesn't seem to be consistent (dict ordering?)
13 rm ${D}${libdir}/${PYTHON_DIR}/site-packages/sphinx/writers/__pycache__/*latex*
14}
15
16RDEPENDS:${PN} = "\
17 python3-alabaster \
18 python3-babel \
19 python3-docutils \
20 python3-imagesize \
21 python3-jinja2 \
22 python3-packaging \
23 python3-pygments \
24 python3-requests \
25 python3-roman-numerals-py \
26 python3-snowballstemmer \
27 python3-sphinxcontrib-applehelp \
28 python3-sphinxcontrib-devhelp \
29 python3-sphinxcontrib-htmlhelp \
30 python3-sphinxcontrib-jsmath \
31 python3-sphinxcontrib-qthelp \
32 python3-sphinxcontrib-serializinghtml \
33 "
34
35BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_2.0.0.bb
deleted file mode 100644
index a63b7ad014..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_2.0.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
2HOMEPAGE = "https://www.sphinx-doc.org"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=c7715857042d4c8c0105999ca0c072c5"
5
6SRC_URI[sha256sum] = "2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"
7
8PYPI_PACKAGE = "sphinxcontrib_applehelp"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_2.0.0.bb
deleted file mode 100644
index abce915a19..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_2.0.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
2HOMEPAGE = "https://www.sphinx-doc.org"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=fd30d9972a142c857a80c9f312e92b93"
5
6SRC_URI[sha256sum] = "411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"
7
8PYPI_PACKAGE = "sphinxcontrib_devhelp"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.1.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.1.0.bb
deleted file mode 100644
index 44885d7dc3..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.1.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
2HOMEPAGE = "https://www.sphinx-doc.org"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=24dce5ef6a13563241c24bc366f48886"
5
6SRC_URI[sha256sum] = "c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"
7
8PYPI_PACKAGE = "sphinxcontrib_htmlhelp"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-jquery_4.1.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-jquery_4.1.bb
deleted file mode 100644
index 5f915663c2..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-jquery_4.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "Extension to include jQuery on newer Sphinx releases"
2HOMEPAGE = "https://pypi.org/project/sphinxcontrib-jquery/"
3LICENSE = "0BSD"
4LIC_FILES_CHKSUM = "file://LICENCE;md5=926e8b7e89e3ebb2a2d1dfaf0873f241"
5
6SRC_URI[sha256sum] = "1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"
7
8PYPI_PACKAGE = "sphinxcontrib-jquery"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-jsmath_1.0.1.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-jsmath_1.0.1.bb
deleted file mode 100644
index 7c11cfeec5..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-jsmath_1.0.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
1SUMMARY = "A sphinx extension which renders display math in HTML via JavaScript"
2HOMEPAGE = "https://www.sphinx-doc.org"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=f0064c10bd544bcffccbc67a41c108d3"
5
6SRC_URI[sha256sum] = "a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"
7
8PYPI_PACKAGE = "sphinxcontrib-jsmath"
9
10inherit pypi setuptools3
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_2.0.0.bb
deleted file mode 100644
index 141d1c4862..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_2.0.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = "Is a sphinx extension which outputs QtHelp document."
2HOMEPAGE = "http://babel.edgewall.org/"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=f7a83b72ea86d04827575ec0b63430eb"
5
6SRC_URI[sha256sum] = "4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"
7
8PYPI_PACKAGE = "sphinxcontrib_qthelp"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_2.0.0.bb
deleted file mode 100644
index 95ee596b3b..0000000000
--- a/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_2.0.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1SUMMARY = 'sphinxcontrib-serializinghtml is a sphinx extension which outputs "serialized" HTML files (json and pickle).'
2HOMEPAGE = "https://www.sphinx-doc.org"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENCE.rst;md5=32a84ac5cd3bbd10c4d479233ad588b6"
5
6SRC_URI[sha256sum] = "e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"
7
8PYPI_PACKAGE = "sphinxcontrib_serializinghtml"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-subunit_1.4.4.bb b/meta/recipes-devtools/python/python3-subunit_1.4.4.bb
deleted file mode 100644
index 269b057427..0000000000
--- a/meta/recipes-devtools/python/python3-subunit_1.4.4.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Python implementation of subunit test streaming protocol"
2HOMEPAGE = "https://pypi.org/project/python-subunit/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0 | BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://COPYING;beginline=1;endline=20;md5=b1121e68d06c8d9ea544fcd895df0d39"
6
7PYPI_PACKAGE = "python-subunit"
8
9SRC_URI[sha256sum] = "1079363131aa1d3f45259237265bc2e61a77e35f20edfb6e3d1d2558a2cdea34"
10
11inherit pypi python_setuptools_build_meta
12
13RDEPENDS:${PN} = " python3-testtools python3-iso8601"
14
15BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python3-testtools_2.7.2.bb b/meta/recipes-devtools/python/python3-testtools_2.7.2.bb
deleted file mode 100644
index 8d7759b4a7..0000000000
--- a/meta/recipes-devtools/python/python3-testtools_2.7.2.bb
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "Extensions to the Python standard library unit testing framework"
2HOMEPAGE = "https://pypi.org/project/testtools/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a"
6
7DEPENDS += "python3-hatch-vcs-native"
8
9inherit pypi python_hatchling
10
11SRC_URI[sha256sum] = "5be5bbc1f0fa0f8b60aca6ceec07845d41d0c475cf445bfadb4d2c45ec397ea3"
12
13RDEPENDS:${PN} += "\
14 python3-compression \
15 python3-doctest \
16 python3-extras \
17 python3-json \
18 python3-six \
19 "
20
21BBCLASSEXTEND = "nativesdk"
22
diff --git a/meta/recipes-devtools/python/python3-trove-classifiers_2025.9.11.17.bb b/meta/recipes-devtools/python/python3-trove-classifiers_2025.9.11.17.bb
deleted file mode 100644
index 4bbdd243ef..0000000000
--- a/meta/recipes-devtools/python/python3-trove-classifiers_2025.9.11.17.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Canonical source for classifiers on PyPI (pypi.org)."
2HOMEPAGE = "https://github.com/pypa/trove-classifiers"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
5
6SRC_URI[sha256sum] = "931ca9841a5e9c9408bc2ae67b50d28acf85bef56219b56860876dd1f2d024dd"
7
8PYPI_PACKAGE = "trove_classifiers"
9UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
10
11inherit pypi python_setuptools_build_meta ptest-python-pytest
12
13DEPENDS += " python3-calver-native"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typing-extensions_4.15.0.bb b/meta/recipes-devtools/python/python3-typing-extensions_4.15.0.bb
deleted file mode 100644
index 3e3ce33ca8..0000000000
--- a/meta/recipes-devtools/python/python3-typing-extensions_4.15.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
1SUMMARY = "Backported and Experimental Type Hints for Python 3.7+"
2DESCRIPTION = "The typing_extensions module serves two related purposes:\
3\
4* Enable use of new type system features on older Python versions. For \
5 example, typing.TypeGuard is new in Python 3.10, but typing_extensions \
6 allows users on previous Python versions to use it too.\
7* Enable experimentation with new type system PEPs before they are accepted \
8 and added to the typing module."
9HOMEPAGE = "https://github.com/python/typing_extensions"
10BUGTRACKER = "https://github.com/python/typing_extensions/issues"
11SECTIONS = "libs"
12LICENSE = "PSF-2.0"
13LIC_FILES_CHKSUM = "file://LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2"
14
15# The name on PyPi is slightly different.
16PYPI_PACKAGE = "typing_extensions"
17UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
18
19SRC_URI[sha256sum] = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"
20
21inherit pypi python_flit_core
22
23BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typogrify_2.1.0.bb b/meta/recipes-devtools/python/python3-typogrify_2.1.0.bb
deleted file mode 100644
index 0cb31468bd..0000000000
--- a/meta/recipes-devtools/python/python3-typogrify_2.1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Filters to enhance web typography, including support for Django & Jinja templates"
2HOMEPAGE = "https://github.com/mintchaos/typogrify"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b8558ebcc682078c1a44d0227573006d"
5
6inherit pypi python_hatchling
7
8PYPI_PACKAGE = "typogrify"
9SRC_URI[sha256sum] = "f0aa004e98032a6e6be4c9da65e7eb7150e36ca3bf508adbcda82b4d003e61ee"
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} += "python3-smartypants"
14
diff --git a/meta/recipes-devtools/python/python3-unittest-automake-output_0.3.bb b/meta/recipes-devtools/python/python3-unittest-automake-output_0.3.bb
deleted file mode 100644
index 66c1abee34..0000000000
--- a/meta/recipes-devtools/python/python3-unittest-automake-output_0.3.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Modules to make unittest and pytest look like Automake output, for ptest"
2HOMEPAGE = "https://gitlab.com/rossburton/python-unittest-automake-output"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=f6f16008d9fb7349f06609329f1ab93b"
5
6SRC_URI = "git://gitlab.com/rossburton/python-unittest-automake-output;protocol=https;branch=main;tag=${PV}"
7
8SRCREV = "3376ff9bc319f8338849b7b9f63b9325d7b7663a"
9
10inherit python_flit_core
11
12RDEPENDS:${PN} += "python3-unittest"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-uritools_5.0.0.bb b/meta/recipes-devtools/python/python3-uritools_5.0.0.bb
deleted file mode 100644
index 35a8f2a0d9..0000000000
--- a/meta/recipes-devtools/python/python3-uritools_5.0.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
1SUMMARY = "URI parsing, classification and composition"
2HOMEPAGE = "https://github.com/tkem/uritools/"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e21bbe53b2730bfe1911cf381b81821e"
6
7SRC_URI[sha256sum] = "68180cad154062bd5b5d9ffcdd464f8de6934414b25462ae807b00b8df9345de"
8
9inherit pypi python_setuptools_build_meta ptest-python-pytest
10
11BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb b/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb
deleted file mode 100644
index 62fdf8e345..0000000000
--- a/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
2HOMEPAGE = "https://github.com/urllib3/urllib3"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda"
5
6SRC_URI[sha256sum] = "3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"
7
8inherit pypi python_hatchling
9
10DEPENDS += "python3-hatch-vcs-native"
11
12PACKAGECONFIG ??= ""
13# This is not recommended for use upstream, and has large dependencies
14PACKAGECONFIG[openssl] = ",,,python3-cryptography python3-pyopenssl"
15
16do_install:append() {
17 if ! ${@bb.utils.contains("PACKAGECONFIG", "openssl", "true", "false", d)}; then
18 rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/urllib3/contrib/pyopenssl.py
19 fi
20}
21
22RDEPENDS:${PN} += "\
23 python3-idna \
24 python3-email \
25 python3-json \
26 python3-netclient \
27 python3-threading \
28 python3-logging \
29"
30
31CVE_PRODUCT = "urllib3"
32
33BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb b/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
deleted file mode 100644
index 2f5e0ad141..0000000000
--- a/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
1SUMMARY = "Python vcversioner, automagically update the project's version"
2HOMEPAGE = "https://github.com/habnabit/vcversioner"
3
4LICENSE = "ISC"
5LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3"
6
7SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
8
9inherit pypi setuptools3
10
11BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
deleted file mode 100644
index 71bb1a2703..0000000000
--- a/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
+++ /dev/null
@@ -1,16 +0,0 @@
1SUMMARY = "Library for building powerful interactive command lines in Python"
2DESCRIPTION = "Measures the displayed width of unicode strings in a terminal"
3HOMEPAGE = "https://github.com/jquast/wcwidth"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb"
6
7SRC_URI[sha256sum] = "72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"
8
9inherit pypi setuptools3 ptest-python-pytest
10
11do_install_ptest:aapend() {
12 install -d ${D}${PTEST_PATH}/bin
13 cp -rf ${S}/bin/* ${D}${PTEST_PATH}/bin/
14}
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-webcolors_24.11.1.bb b/meta/recipes-devtools/python/python3-webcolors_24.11.1.bb
deleted file mode 100644
index d537614545..0000000000
--- a/meta/recipes-devtools/python/python3-webcolors_24.11.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Simple Python module for working with HTML/CSS color definitions."
2HOMEPAGE = "https://pypi.org/project/webcolors/"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=cbaebec43b7d199c7fd8f5411b3b0448"
5
6SRC_URI[sha256sum] = "ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"
7
8inherit pypi python_pdm ptest-python-pytest
9
10RDEPENDS:${PN}:class-target = "\
11 python3-stringold \
12"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-websockets_15.0.1.bb b/meta/recipes-devtools/python/python3-websockets_15.0.1.bb
deleted file mode 100644
index 2e1b0f0919..0000000000
--- a/meta/recipes-devtools/python/python3-websockets_15.0.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)"
2HOMEPAGE = "https://github.com/aaugustin/websockets"
3
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=51924a6af4495b8cfaee1b1da869b6f4"
6
7inherit pypi python_setuptools_build_meta
8
9SRC_URI[sha256sum] = "82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee"
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} = " \
14 python3-asyncio \
15"
diff --git a/meta/recipes-devtools/python/python3-wheel_0.46.1.bb b/meta/recipes-devtools/python/python3-wheel_0.46.1.bb
deleted file mode 100644
index 058af2f0e7..0000000000
--- a/meta/recipes-devtools/python/python3-wheel_0.46.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1SUMMARY = "The official binary distribution format for Python "
2HOMEPAGE = "https://github.com/pypa/wheel"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7ffb0db04527cfe380e4f2726bd05ebf"
6
7SRC_URI[sha256sum] = "fd477efb5da0f7df1d3c76c73c14394002c844451bd63229d8570f376f5e6a38"
8
9inherit python_flit_core pypi ptest-python-pytest
10
11RDEPENDS:${PN} += "python3-packaging"
12
13# One test is skipped but requires the "full" python3-flit, not just python3-flit-core
14RDEPENDS:${PN}-ptest += "python3-setuptools"
15
16BBCLASSEXTEND = "native nativesdk"
17
18# This used to use the bootstrap install which didn't compile. Until we bump the
19# tmpdir version we can't compile the native otherwise the sysroot unpack fails
20INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-xmltodict_0.15.1.bb b/meta/recipes-devtools/python/python3-xmltodict_0.15.1.bb
deleted file mode 100644
index a1d1bb47e4..0000000000
--- a/meta/recipes-devtools/python/python3-xmltodict_0.15.1.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1SUMMARY = "Makes working with XML feel like you are working with JSON"
2HOMEPAGE = "https://github.com/martinblech/xmltodict"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=01441d50dc74476db58a41ac10cb9fa2"
5
6SRC_URI[sha256sum] = "3d8d49127f3ce6979d40a36dbcad96f8bab106d232d24b49efdd4bd21716983c"
7
8PYPI_PACKAGE = "xmltodict"
9
10BBCLASSEXTEND = "native nativesdk"
11
12inherit pypi setuptools3 ptest-python-pytest
13
14RDEPENDS:${PN} += " \
15 python3-core \
16 python3-xml \
17 python3-io \
18"
19
diff --git a/meta/recipes-devtools/python/python3-yamllint_1.37.1.bb b/meta/recipes-devtools/python/python3-yamllint_1.37.1.bb
deleted file mode 100644
index 1b0ddde873..0000000000
--- a/meta/recipes-devtools/python/python3-yamllint_1.37.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "A linter for YAML files."
2HOMEPAGE = "https://github.com/adrienverge/yamllint"
3LICENSE = "GPL-3.0-only"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464"
5
6inherit pypi python_setuptools_build_meta
7
8PYPI_PACKAGE = "yamllint"
9
10SRC_URI[sha256sum] = "81f7c0c5559becc8049470d86046b36e96113637bcbe4753ecef06977c00245d"
11
12RDEPENDS:${PN} += "python3-pathspec python3-pyyaml"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-zipp_3.23.0.bb b/meta/recipes-devtools/python/python3-zipp_3.23.0.bb
deleted file mode 100644
index 31420dcb83..0000000000
--- a/meta/recipes-devtools/python/python3-zipp_3.23.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Backport of pathlib-compatible object wrapper for zip files"
2HOMEPAGE = "https://github.com/jaraco/zipp"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=1aeae65f25a15b1e46d4381f2f094e0a"
5
6SRC_URI[sha256sum] = "a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"
7
8DEPENDS += "python3-setuptools-scm-native python3-coherent-licensed-native"
9
10inherit pypi python_setuptools_build_meta
11
12RDEPENDS:${PN} += "python3-compression \
13 python3-math"
14
15BBCLASSEXTEND = "native nativesdk"
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
deleted file mode 100644
index eaf5ea5049..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
+++ /dev/null
@@ -1,30 +0,0 @@
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@@ -2585,6 +2585,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-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
deleted file mode 100644
index 327124e4e3..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch
+++ /dev/null
@@ -1,1452 +0,0 @@
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.6",
1445 "3.3.5",
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
deleted file mode 100644
index 84ad2abb0b..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
+++ /dev/null
@@ -1,46 +0,0 @@
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-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
deleted file mode 100644
index ffdf9affd9..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
+++ /dev/null
@@ -1,31 +0,0 @@
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@@ -501,6 +501,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.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
deleted file mode 100644
index 39b62f6f26..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From e7a8a7385f561f214054cf95f0a22bfa064eee0b Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 30 Jan 2019 12:41:04 +0100
4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data
5
6Upstream-Status: Inappropriate [oe-core specific]
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>
13---
14 Makefile.pre.in | 3 +--
15 1 file changed, 1 insertion(+), 2 deletions(-)
16
17diff --git a/Makefile.pre.in b/Makefile.pre.in
18index 3bd4495f95b..8e8fc60bc76 100644
19--- a/Makefile.pre.in
20+++ b/Makefile.pre.in
21@@ -751,8 +751,7 @@ profile-run-stamp:
22 # enabled.
23 $(MAKE) profile-gen-stamp
24 # Next, run the profile task to generate the profile information.
25- @ # FIXME: can't run for a cross build
26- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
27+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict
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
deleted file mode 100644
index 8fa794b5e7..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
+++ /dev/null
@@ -1,72 +0,0 @@
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@@ -701,6 +701,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@@ -2232,6 +2233,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@@ -5320,6 +5322,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
deleted file mode 100644
index adaca4ff77..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
+++ /dev/null
@@ -1,36 +0,0 @@
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@@ -430,7 +430,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-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
deleted file mode 100644
index 9bc8b091cc..0000000000
--- a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
+++ /dev/null
@@ -1,29 +0,0 @@
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@@ -2474,6 +2474,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
deleted file mode 100644
index b9c68a98d7..0000000000
--- a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
+++ /dev/null
@@ -1,27 +0,0 @@
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
deleted file mode 100644
index 08ac5861b3..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
+++ /dev/null
@@ -1,27 +0,0 @@
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@@ -594,6 +594,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
deleted file mode 100644
index 68e277d662..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
+++ /dev/null
@@ -1,33 +0,0 @@
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
deleted file mode 100644
index 3336e2913a..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
+++ /dev/null
@@ -1,27 +0,0 @@
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
deleted file mode 100644
index 189246911b..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
+++ /dev/null
@@ -1,45 +0,0 @@
1From c1f3cf625c0f011060ddaa2a4096f6aa13dd1ee6 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Mon, 5 Aug 2019 15:57:39 +0800
4Subject: [PATCH] test_locale.py: correct the test output format
5
6Before this patch:
7 # python3 -m test -v test_locale
8 [snip]
9 test_getsetlocale_issue1813 (test.test_locale.TestMiscellaneous) ... testing with ('tr_TR', 'ISO8859-9') ok
10 [snip]
11
12 After this patch:
13 # python3 -m test -v test_locale
14 [snip]
15 test_getsetlocale_issue1813 (test.test_locale.TestMiscellaneous) ... testing with ('tr_TR', 'ISO8859-9')... ok
16 [snip]
17
18 Make the test ended with "... ok" is common in python
19 unittest world, we should make it keep consistent
20 with other test cases in case it may be ignored to
21 record in the report if we use the common filter
22 "... ok".
23
24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
25
26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
27
28Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
29---
30 Lib/test/test_locale.py | 2 +-
31 1 file changed, 1 insertion(+), 1 deletion(-)
32
33diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
34index da4bd79..fd9e67d 100644
35--- a/Lib/test/test_locale.py
36+++ b/Lib/test/test_locale.py
37@@ -501,7 +501,7 @@ class TestRealLocales(unittest.TestCase):
38 self.skipTest('test needs Turkish locale')
39 loc = locale.getlocale(locale.LC_CTYPE)
40 if verbose:
41- print('testing with %a' % (loc,), end=' ', flush=True)
42+ print('testing with %a...' % (loc,), end=' ', flush=True)
43 try:
44 locale.setlocale(locale.LC_CTYPE, loc)
45 except locale.Error as exc:
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
deleted file mode 100644
index a619d51c10..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
+++ /dev/null
@@ -1,46 +0,0 @@
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 | 3 +++
17 1 file changed, 3 insertions(+)
18
19diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py
20index 537a9fb..ddf0323 100644
21--- a/Lib/test/test_readline.py
22+++ b/Lib/test/test_readline.py
23@@ -71,6 +71,7 @@ class TestHistoryManipulation (unittest.TestCase):
24
25 @unittest.skipUnless(hasattr(readline, "append_history_file"),
26 "append_history not available")
27+ @unittest.skip("Skipping problematic test")
28 def test_write_read_append(self):
29 hfile = tempfile.NamedTemporaryFile(delete=False)
30 hfile.close()
31@@ -142,6 +143,7 @@ class TestHistoryManipulation (unittest.TestCase):
32 self.assertEqual(readline.get_history_item(1), "entrée 1")
33 self.assertEqual(readline.get_history_item(2), "entrée 22")
34
35+ @unittest.skip("Skipping problematic test")
36 def test_write_read_limited_history(self):
37 previous_length = readline.get_history_length()
38 self.addCleanup(readline.set_history_length, previous_length)
39@@ -390,6 +392,7 @@ readline.write_history_file(history_file)
40 self.assertIn(b"done", output)
41
42
43+ @unittest.skip("Skipping problematic test")
44 def test_write_read_limited_history(self):
45 previous_length = readline.get_history_length()
46 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
deleted file mode 100644
index 4e284de613..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
+++ /dev/null
@@ -1,43 +0,0 @@
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
deleted file mode 100644
index b452c6556f..0000000000
--- a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
+++ /dev/null
@@ -1,29 +0,0 @@
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@@ -630,6 +630,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/check_build_completeness.py b/meta/recipes-devtools/python/python3/check_build_completeness.py
deleted file mode 100755
index a1eace3f57..0000000000
--- a/meta/recipes-devtools/python/python3/check_build_completeness.py
+++ /dev/null
@@ -1,17 +0,0 @@
1#!/usr/bin/env python3
2import sys
3logfile = open(sys.argv[1]).read()
4
5necessary_bits = logfile.find("The necessary bits to build these optional modules were not found")
6to_find_bits = logfile.find("To find the necessary bits, look in setup.py in detect_modules() for the module's name.")
7if necessary_bits != -1:
8 print("%s" %(logfile[necessary_bits:to_find_bits]))
9
10failed_to_build = logfile.find("Failed to build these modules:")
11if failed_to_build != -1:
12 failed_to_build_end = logfile.find("\n\n", failed_to_build)
13 print("%s" %(logfile[failed_to_build:failed_to_build_end]))
14
15if necessary_bits != -1 or failed_to_build != -1:
16 sys.exit(1)
17
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
deleted file mode 100644
index 288d5ede3a..0000000000
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ /dev/null
@@ -1,444 +0,0 @@
1# This script is used as a bitbake task to create a new python manifest
2# $ bitbake python -c create_manifest
3#
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
6# into several packages.
7#
8# In a very simplistic way what this does is:
9# Launch python and see specifically what is required for it to run at a minimum
10#
11# Go through the python-manifest file and launch a separate task for every single
12# one of the files on each package, this task will check what was required for that
13# specific module to run, these modules will be called dependencies.
14# The output of such task will be a list of the modules or dependencies that were
15# found for that file.
16#
17# Such output will be parsed by this script, we will look for each dependency on the
18# manifest and if we find that another package already includes it, then we will add
19# that package as an RDEPENDS to the package we are currently checking; in case we dont
20# find the current dependency on any other package we will add it to the current package
21# as part of FILES.
22#
23#
24# This way we will create a new manifest from the data structure that was built during
25# this process, on this new manifest each package will contain specifically only
26# what it needs to run.
27#
28# There are some caveats which we try to deal with, such as repeated files on different
29# packages, packages that include folders, wildcards, and special packages.
30# Its also important to note that this method only works for python files, and shared
31# libraries. Static libraries, header files and binaries need to be dealt with manually.
32#
33# This script differs from its python2 version mostly on how shared libraries are handled
34# The manifest file for python3 has an extra field which contains the cached files for
35# each package.
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.
38#
39# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
40
41
42import sys
43import subprocess
44import json
45import os
46import collections
47
48if '-d' in sys.argv:
49 debugFlag = '-d'
50else:
51 debugFlag = ''
52
53# Get python version from ${PYTHON_MAJMIN}
54pyversion = str(sys.argv[1])
55
56# Hack to get native python search path (for folders), not fond of it but it works for now
57pivot = 'recipe-sysroot-native'
58for p in sys.path:
59 if pivot in p:
60 nativelibfolder = p[:p.find(pivot)+len(pivot)]
61
62# Empty dict to hold the whole manifest
63new_manifest = collections.OrderedDict()
64
65# Check for repeated files, folders and wildcards
66allfiles = []
67repeated = []
68wildcards = []
69
70hasfolders = []
71allfolders = []
72
73def isFolder(value):
74 value = value.replace('${PYTHON_MAJMIN}',pyversion)
75 if os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib64')) or os.path.isdir(value.replace('${libdir}',nativelibfolder+'/usr/lib32')):
76 return True
77 else:
78 return False
79
80def isCached(item):
81 if '__pycache__' in item:
82 return True
83 else:
84 return False
85
86def prepend_comments(comments, json_manifest):
87 with open(json_manifest, 'r+') as manifest:
88 json_contents = manifest.read()
89 manifest.seek(0, 0)
90 manifest.write(comments + json_contents)
91
92def print_indent(msg, offset):
93 for l in msg.splitlines():
94 msg = ' ' * offset + l
95 print(msg)
96
97
98# Read existing JSON manifest
99with open('python3-manifest.json') as manifest:
100 # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker
101 manifest_str = manifest.read()
102 json_start = manifest_str.find('# EOC') + 6 # EOC + \n
103 manifest.seek(0)
104 comments = manifest.read(json_start)
105 manifest_str = manifest.read()
106 old_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
107
108#
109# First pass to get core-package functionality, because we base everything on the fact that core is actually working
110# Not exactly the same so it should not be a function
111#
112
113print_indent('Getting dependencies for package: core', 0)
114
115
116# This special call gets the core dependencies and
117# appends to the old manifest so it doesnt hurt what it
118# currently holds.
119# This way when other packages check for dependencies
120# on the new core package, they will still find them
121# even when checking the old_manifest
122
123output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8')
124for coredep in output.split():
125 coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}')
126 if isCached(coredep):
127 if coredep not in old_manifest['core']['cached']:
128 old_manifest['core']['cached'].append(coredep)
129 else:
130 if coredep not in old_manifest['core']['files']:
131 old_manifest['core']['files'].append(coredep)
132
133
134# The second step is to loop through the existing files contained in the core package
135# according to the old manifest, identify if they are modules, or some other type
136# of file that we cant import (directories, binaries, configs) in which case we
137# can only assume they were added correctly (manually) so we ignore those and
138# pass them to the manifest directly.
139
140for filedep in old_manifest['core']['files']:
141 if isFolder(filedep):
142 if isCached(filedep):
143 if filedep not in old_manifest['core']['cached']:
144 old_manifest['core']['cached'].append(filedep)
145 else:
146 if filedep not in old_manifest['core']['files']:
147 old_manifest['core']['files'].append(filedep)
148 continue
149 if '${bindir}' in filedep:
150 if filedep not in old_manifest['core']['files']:
151 old_manifest['core']['files'].append(filedep)
152 continue
153 if filedep == '':
154 continue
155 if '${includedir}' in filedep:
156 if filedep not in old_manifest['core']['files']:
157 old_manifest['core']['files'].append(filedep)
158 continue
159
160 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
161 pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0]
162
163 # We now know that were dealing with a python module, so we can import it
164 # and check what its dependencies are.
165 # We launch a separate task for each module for deterministic behavior.
166 # Each module will only import what is necessary for it to work in specific.
167 # The output of each task will contain each module's dependencies
168
169 print_indent('Getting dependencies for module: %s' % pymodule, 2)
170 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
171 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
172 print_indent(output, 6)
173
174
175 for pymodule_dep in output.split():
176 pymodule_dep = pymodule_dep.replace(pyversion,'${PYTHON_MAJMIN}')
177
178 if isCached(pymodule_dep):
179 if pymodule_dep not in old_manifest['core']['cached']:
180 old_manifest['core']['cached'].append(pymodule_dep)
181 else:
182 if pymodule_dep not in old_manifest['core']['files']:
183 old_manifest['core']['files'].append(pymodule_dep)
184
185
186# At this point we are done with the core package.
187# The old_manifest dictionary is updated only for the core package because
188# all others will use this a base.
189
190
191print('\n\nChecking for directories...\n')
192# To improve the script speed, we check which packages contain directories
193# since we will be looping through (only) those later.
194for pypkg in old_manifest:
195 for filedep in old_manifest[pypkg]['files']:
196 if isFolder(filedep):
197 print_indent('%s is a directory' % filedep, 2)
198 if pypkg not in hasfolders:
199 hasfolders.append(pypkg)
200 if filedep not in allfolders:
201 allfolders.append(filedep)
202
203
204
205# This is the main loop that will handle each package.
206# It works in a similar fashion than the step before, but
207# we will now be updating a new dictionary that will eventually
208# become the new manifest.
209#
210# The following loops though all packages in the manifest,
211# through all files on each of them, and checks whether or not
212# they are modules and can be imported.
213# If they can be imported, then it checks for dependencies for
214# each of them by launching a separate task.
215# The output of that task is then parsed and the manifest is updated
216# accordingly, wether it should add the module on FILES for the current package
217# or if that module already belongs to another package then the current one
218# will RDEPEND on it
219
220for pypkg in old_manifest:
221 # Use an empty dict as data structure to hold data for each package and fill it up
222 new_manifest[pypkg] = collections.OrderedDict()
223 new_manifest[pypkg]['summary'] = old_manifest[pypkg]['summary']
224 new_manifest[pypkg]['rdepends'] = []
225 new_manifest[pypkg]['files'] = []
226 new_manifest[pypkg]['cached'] = old_manifest[pypkg]['cached']
227
228 # All packages should depend on core
229 if pypkg != 'core':
230 new_manifest[pypkg]['rdepends'].append('core')
231 new_manifest[pypkg]['cached'] = []
232
233 print('\n')
234 print('--------------------------')
235 print('Handling package %s' % pypkg)
236 print('--------------------------')
237
238 # Handle special cases, we assume that when they were manually added
239 # to the manifest we knew what we were doing.
240 special_packages = ['misc', 'modules', 'dev', 'tests']
241 if pypkg in special_packages or 'staticdev' in pypkg:
242 print_indent('Passing %s package directly' % pypkg, 2)
243 new_manifest[pypkg] = old_manifest[pypkg]
244 continue
245
246 for filedep in old_manifest[pypkg]['files']:
247 # We already handled core on the first pass, we can ignore it now
248 if pypkg == 'core':
249 if filedep not in new_manifest[pypkg]['files']:
250 new_manifest[pypkg]['files'].append(filedep)
251 continue
252
253 # Handle/ignore what we cant import
254 if isFolder(filedep):
255 new_manifest[pypkg]['files'].append(filedep)
256 # Asyncio (and others) are both the package and the folder name, we should not skip those...
257 path,mod = os.path.split(filedep)
258 if mod != pypkg:
259 continue
260 if '${bindir}' in filedep:
261 if filedep not in new_manifest[pypkg]['files']:
262 new_manifest[pypkg]['files'].append(filedep)
263 continue
264 if filedep == '':
265 continue
266 if '${includedir}' in filedep:
267 if filedep not in new_manifest[pypkg]['files']:
268 new_manifest[pypkg]['files'].append(filedep)
269 continue
270
271 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
272 # We need to check if the imported module comes from another (e.g. sqlite3.dump)
273 path, pymodule = os.path.split(filedep)
274 path = os.path.basename(path)
275 pymodule = os.path.splitext(os.path.basename(pymodule))[0]
276
277 # If this condition is met, it means we need to import it from another module
278 # or its the folder itself (e.g. unittest)
279 if path == pypkg:
280 if pymodule:
281 pymodule = path + '.' + pymodule
282 else:
283 pymodule = path
284
285
286
287 # We now know that were dealing with a python module, so we can import it
288 # and check what its dependencies are.
289 # We launch a separate task for each module for deterministic behavior.
290 # Each module will only import what is necessary for it to work in specific.
291 # The output of each task will contain each module's dependencies
292
293 print_indent('\nGetting dependencies for module: %s' % pymodule, 2)
294 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
295 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
296 print_indent(output, 6)
297
298 reportFILES = []
299 reportRDEPS = []
300
301 for pymodule_dep in output.split():
302
303 # Warning: This first part is ugly
304 # One of the dependencies that was found, could be inside of one of the folders included by another package
305 # We need to check if this happens so we can add the package containing the folder as an rdependency
306 # e.g. Folder encodings contained in codecs
307 # This would be solved if no packages included any folders
308
309 # This can be done in two ways:
310 # 1 - We assume that if we take out the filename from the path we would get
311 # the folder string, then we would check if folder string is in the list of folders
312 # This would not work if a package contains a folder which contains another folder
313 # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2
314 # folder_string would not match any value contained in the list of folders
315 #
316 # 2 - We do it the other way around, checking if the folder is contained in the path
317 # e.g. path/folder1/folder2/filename folder_string= path/folder1/folder2
318 # is folder_string inside path/folder1/folder2/filename?,
319 # Yes, it works, but we waste a couple of milliseconds.
320
321 pymodule_dep = pymodule_dep.replace(pyversion,'${PYTHON_MAJMIN}')
322 inFolders = False
323 for folder in allfolders:
324 # The module could have a directory named after it, e.g. xml, if we take out the filename from the path
325 # we'll end up with ${libdir}, and we want ${libdir}/xml
326 if isFolder(pymodule_dep):
327 check_path = pymodule_dep
328 else:
329 check_path = os.path.dirname(pymodule_dep)
330 if folder in check_path :
331 inFolders = True # Did we find a folder?
332 folderFound = False # Second flag to break inner for
333 # Loop only through packages which contain folders
334 for pypkg_with_folder in hasfolders:
335 if (folderFound == False):
336 # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder))
337 for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']:
338 if folder_dep == folder:
339 print ('%s directory found in %s' % (folder, pypkg_with_folder))
340 folderFound = True
341 if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg:
342 new_manifest[pypkg]['rdepends'].append(pypkg_with_folder)
343 else:
344 break
345
346 # A folder was found so we're done with this item, we can go on
347 if inFolders:
348 continue
349
350
351
352 # No directories beyond this point
353 # We might already have this module on the dictionary since it could depend on a (previously checked) module
354 if pymodule_dep not in new_manifest[pypkg]['files'] and pymodule_dep not in new_manifest[pypkg]['cached']:
355 # Handle core as a special package, we already did it so we pass it to NEW data structure directly
356 if pypkg == 'core':
357 print('Adding %s to %s FILES' % (pymodule_dep, pypkg))
358 if pymodule_dep.endswith('*'):
359 wildcards.append(pymodule_dep)
360 if isCached(pymodule_dep):
361 new_manifest[pypkg]['cached'].append(pymodule_dep)
362 else:
363 new_manifest[pypkg]['files'].append(pymodule_dep)
364
365 # Check for repeated files
366 if pymodule_dep not in allfiles:
367 allfiles.append(pymodule_dep)
368 else:
369 if pymodule_dep not in repeated:
370 repeated.append(pymodule_dep)
371 else:
372
373
374 # Last step: Figure out if we this belongs to FILES or RDEPENDS
375 # We check if this module is already contained on another package, so we add that one
376 # as an RDEPENDS, or if its not, it means it should be contained on the current
377 # package, and we should add it to FILES
378 for possible_rdep in old_manifest:
379 # Debug
380 # print('Checking %s ' % pymodule_dep + ' in %s' % possible_rdep)
381 if pymodule_dep in old_manifest[possible_rdep]['files'] or pymodule_dep in old_manifest[possible_rdep]['cached']:
382 # Since were nesting, we need to check its not the same pypkg
383 if(possible_rdep != pypkg):
384 if possible_rdep not in new_manifest[pypkg]['rdepends']:
385 # Add it to the new manifest data struct as RDEPENDS since it contains something this module needs
386 reportRDEPS.append('Adding %s to %s RDEPENDS, because it contains %s\n' % (possible_rdep, pypkg, pymodule_dep))
387 new_manifest[pypkg]['rdepends'].append(possible_rdep)
388 break
389 else:
390
391 # Since this module wasnt found on another package, it is not an RDEP,
392 # so we add it to FILES for this package.
393 # A module shouldn't contain itself (${libdir}/python3/sqlite3 shouldnt be on sqlite3 files)
394 if os.path.basename(pymodule_dep) != pypkg:
395 reportFILES.append(('Adding %s to %s FILES\n' % (pymodule_dep, pypkg)))
396 if isCached(pymodule_dep):
397 new_manifest[pypkg]['cached'].append(pymodule_dep)
398 else:
399 new_manifest[pypkg]['files'].append(pymodule_dep)
400 if pymodule_dep.endswith('*'):
401 wildcards.append(pymodule_dep)
402 if pymodule_dep not in allfiles:
403 allfiles.append(pymodule_dep)
404 else:
405 if pymodule_dep not in repeated:
406 repeated.append(pymodule_dep)
407
408 print('\n')
409 print('#################################')
410 print('Summary for module %s' % pymodule)
411 print('FILES found for module %s:' % pymodule)
412 print(''.join(reportFILES))
413 print('RDEPENDS found for module %s:' % pymodule)
414 print(''.join(reportRDEPS))
415 print('#################################')
416
417print('The following FILES contain wildcards, please check if they are necessary')
418print(wildcards)
419print('The following FILES contain folders, please check if they are necessary')
420print(hasfolders)
421
422
423# Sort it just so it looks nicer
424for pypkg in new_manifest:
425 new_manifest[pypkg]['files'].sort()
426 new_manifest[pypkg]['cached'].sort()
427 new_manifest[pypkg]['rdepends'].sort()
428
429# Create the manifest from the data structure that was built
430with open('python3-manifest.json.new','w') as outfile:
431 json.dump(new_manifest,outfile, indent=4)
432 outfile.write('\n')
433
434prepend_comments(comments,'python3-manifest.json.new')
435
436if (repeated):
437 error_msg = '\n\nERROR:\n'
438 error_msg += 'The following files were found in more than one package),\n'
439 error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n'
440 error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n'
441 error_msg += '\n'.join(repeated)
442 error_msg += '\n'
443 sys.exit(error_msg)
444
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py
deleted file mode 100644
index 8e432b49af..0000000000
--- a/meta/recipes-devtools/python/python3/get_module_deps3.py
+++ /dev/null
@@ -1,174 +0,0 @@
1# This script is launched on separate task for each python module
2# It checks for dependencies for that specific module and prints
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
5#
6# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
7
8
9import sys
10import os
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
18# We can get a list of the modules which are currently required to run python
19# so we run python-core and get its modules, we then import what we need
20# and check what modules are currently running, if we substract them from the
21# modules we had initially, we get the dependencies for the module we imported.
22
23# We use importlib to achieve this, so we also need to know what modules importlib needs
24import importlib
25
26core_deps = set(sys.modules)
27
28def fix_path(dep_path):
29 import os
30 # We DONT want the path on our HOST system
31 pivot = 'recipe-sysroot-native'
32 dep_path = dep_path[dep_path.find(pivot)+len(pivot):]
33
34 if '/usr/bin' in dep_path:
35 dep_path = dep_path.replace('/usr/bin','${bindir}')
36
37 # Handle multilib, is there a better way?
38 if '/usr/lib32' in dep_path:
39 dep_path = dep_path.replace('/usr/lib32','${libdir}')
40 if '/usr/lib64' in dep_path:
41 dep_path = dep_path.replace('/usr/lib64','${libdir}')
42 if '/usr/lib' in dep_path:
43 dep_path = dep_path.replace('/usr/lib','${libdir}')
44 if '/usr/include' in dep_path:
45 dep_path = dep_path.replace('/usr/include','${includedir}')
46 if '__init__.' in dep_path:
47 dep_path = os.path.split(dep_path)[0]
48 return dep_path
49
50
51# Module to import was passed as an argument
52current_module = str(sys.argv[1]).rstrip()
53if debug == True:
54 log = open('temp/log_%s' % current_module.strip('.*'),'w')
55 log.write('Module %s generated the following dependencies:\n' % current_module)
56try:
57 m = importlib.import_module(current_module)
58 # handle python packages which may not include all modules in the __init__
59 if hasattr(m, '__file__') and os.path.basename(m.__file__) == "__init__.py":
60 modulepath = os.path.dirname(m.__file__)
61 for i in os.listdir(modulepath):
62 if i.startswith("_") or not(i.endswith(".py")):
63 continue
64 submodule = "{}.{}".format(current_module, i[:-3])
65 try:
66 importlib.import_module(submodule)
67 except:
68 pass # ignore all import or other exceptions raised during import
69except ImportError as e:
70 if debug == True:
71 log.write('Module was not found\n')
72 pass
73
74
75# Get current module dependencies, dif will contain a list of specific deps for this module
76module_deps = set(sys.modules)
77
78# We handle the core package (1st pass on create_manifest.py) as a special case
79if current_module == 'python-core-package':
80 dif = core_deps
81else:
82 # We know this is not the core package, so there must be a difference.
83 dif = module_deps-core_deps
84
85
86# Check where each dependency came from
87for item in dif:
88 # Main module returns script filename, __main matches mp_main__ as well
89 if 'main__' in item:
90 continue
91
92 dep_path = ''
93 try:
94 if debug == True:
95 log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n')
96 dep_path = sys.modules['%s' % item].__file__
97 except AttributeError as e:
98 # Deals with thread (builtin module) not having __file__ attribute
99 if debug == True:
100 log.write(item + ' ')
101 log.write(str(e))
102 log.write('\n')
103 pass
104 except NameError as e:
105 # Deals with NameError: name 'dep_path' is not defined
106 # because module is not found (wasn't compiled?), e.g. bddsm
107 if debug == True:
108 log.write(item+' ')
109 log.write(str(e))
110 pass
111
112 if dep_path == '':
113 continue
114 if debug == True:
115 log.write('Dependency path found:\n%s\n' % dep_path)
116
117 # Site-customize is a special case since we (OpenEmbedded) put it there manually
118 if 'sitecustomize' in dep_path:
119 dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py'
120 # Prints out result, which is what will be used by create_manifest
121 print (dep_path)
122 continue
123
124 dep_path = fix_path(dep_path)
125
126 import sysconfig
127 soabi = sysconfig.get_config_var('SOABI')
128 # Check if its a shared library and deconstruct it
129 if soabi in dep_path:
130 if debug == True:
131 log.write('Shared library found in %s\n' % dep_path)
132 dep_path = dep_path.replace(soabi,'*')
133 print (dep_path)
134 continue
135 if "_sysconfigdata" in dep_path:
136 dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
137
138 if debug == True:
139 log.write(dep_path+'\n')
140 # Prints out result, which is what will be used by create_manifest
141 print (dep_path)
142
143
144 cpython_tag = sys.implementation.cache_tag
145 cached = ''
146 # Theres no naive way to find *.pyc files on python3
147 try:
148 if debug == True:
149 log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n')
150 cached = sys.modules['%s' % item].__cached__
151 except AttributeError as e:
152 # Deals with thread (builtin module) not having __cached__ attribute
153 if debug == True:
154 log.write(item + ' ')
155 log.write(str(e))
156 log.write('\n')
157 pass
158 except NameError as e:
159 # Deals with NameError: name 'cached' is not defined
160 if debug == True:
161 log.write(item+' ')
162 log.write(str(e))
163 pass
164 if cached is not None:
165 if debug == True:
166 log.write(cached + '\n')
167 cached = fix_path(cached)
168 cached = cached.replace(cpython_tag,'*')
169 if "_sysconfigdata" in cached:
170 cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
171 print (cached)
172
173if debug == True:
174 log.close()
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
deleted file mode 100644
index bf73135e09..0000000000
--- a/meta/recipes-devtools/python/python3/makerace.patch
+++ /dev/null
@@ -1,31 +0,0 @@
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@@ -2492,7 +2492,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/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
deleted file mode 100644
index 441830833b..0000000000
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ /dev/null
@@ -1,1215 +0,0 @@
1# DO NOT (entirely) modify this file manually, please read.
2#
3# IMPORTANT NOTE:
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
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
8# will fail to find dependencies correctly, this note is valid either if you are
9# upgrading to a new Python version or adding a new package.
10#
11#
12# If you are adding a new package please follow the next steps:
13# How to add a new package:
14# - If a user wants to add a new package all that has to be done is:
15# Modify the python3-manifest.json file, and add the required file(s) to the FILES list,
16# fill up the SUMMARY section as well, the script should handle all the rest.
17#
18# Real example:
19# We want to add a web browser package, including the file webbrowser.py
20# which at the moment is on python3-misc.
21# "webbrowser": {
22# "files": ["${libdir}/python${PYTHON_MAJMIN}/lib-dynload/webbrowser.py"],
23# "rdepends": [],
24# "summary": "Python Web Browser support"}
25#
26# * Note that the rdepends field was left empty
27#
28# We run $ bitbake python3 -c create_manifest and the resulting manifest
29# should be completed after a few seconds, showing something like:
30# "webbrowser": {
31# "files": ["${libdir}/python${PYTHON_MAJMIN}/webbrowser.py"],
32# "rdepends": ["core","fcntl","io","pickle","shell","subprocess"],
33# "summary": "Python Web Browser support"}
34#
35#
36# If you are upgrading Python to a new version please follow the next steps:
37# After each Python upgrade, the create_manifest task should be executed, because we
38# don't control what changes on upstream Python, so, some module dependency
39# might have changed without us realizing it, a certain module can either have
40# more or less dependencies, or could be depending on a new file that was just
41# created on the new release and for obvious reasons we wouldn't have it on our
42# old manifest, all of these issues would cause runtime errors on our system.
43#
44# - Upgrade both the native and target Python packages to a new version
45# - Run the create_manifest task for the target Python package as its shown below:
46#
47# $ bitbake python3 -c create_manifest
48#
49# This will automatically replace your manifest file located under the Python directory
50# with an new one, which contains the new dependencies (if any).
51#
52# Several things could have gone wrong here, I will try to explain a few:
53#
54# a) A new file was introduced on this release, e.g. sha3*.so:
55# The task will check what its needed to import every module, more than one module would
56# would probably depend on sha3*.so, although only one module should contain it.
57#
58# After running the task, the new manifest will have the sha3*.so file on more than one
59# module, you need to manually decide which one of them should get it and delete it from
60# the others, for example sha3*.so should likely be on ${PN}-crypt.
61# Once you have deleted from the others you need to run the create_manifest task again,
62# this will populate the other module's rdepends fields, with ${PN}-crypt and you should be
63# good to go.
64#
65# b) The native package wasn't built correctly and its missing a certain module:
66# As mentioned before, you need to make sure the native package was built with all the modules
67# because it is used as base to build the manifest file, you need to manually check log.do_compile
68# since it won't error out the compile function if its only missing a couple of modules.
69#
70# e.g. missing the _uuid module, log.do_compile would show the following:
71# Python build finished successfully!
72# The necessary bits to build these optional modules were not found:
73# _uuid
74#
75# What will happen here is that the new manifest would not be aware that the _uuid module exists, so
76# not only we won't know of any dependencies to it, but also, the _uuid* files will be packaged on
77# the misc package (which is where any file that doesn't belong anywhere else ends up).
78#
79# This will eventually cause runtime errors on our system if we don't include the misc package on
80# on our image, because the _uuid files will be missing.
81# If we build the _uuid module correctly and run the create_manifest task the _uuid files will be
82# detected correctly along with its dependencies, and we will get a working manifest.
83#
84# This is the reason why it is important to make sure we have a fully working native build,
85# so we can avoid these errors.
86#
87#
88#
89# DO NOT MODIFY THE NEXT LINE!, IT IS USED AS A MARKER FOR THE ACTUAL JSON MANIFEST
90# EOC
91{
92 "tests": {
93 "summary": "Python test suite",
94 "rdepends": [
95 "core",
96 "modules"
97 ],
98 "files": [
99 "${libdir}/python${PYTHON_MAJMIN}/*/test",
100 "${libdir}/python${PYTHON_MAJMIN}/*/tests",
101 "${libdir}/python${PYTHON_MAJMIN}/idlelib/idle_test/",
102 "${libdir}/python${PYTHON_MAJMIN}/test"
103 ],
104 "cached": []
105 },
106 "asyncio": {
107 "summary": "Python Asynchronous I/O",
108 "rdepends": [
109 "core",
110 "io",
111 "logging",
112 "netclient",
113 "numbers",
114 "stringold"
115 ],
116 "files": [
117 "${libdir}/python${PYTHON_MAJMIN}/asyncio",
118 "${libdir}/python${PYTHON_MAJMIN}/concurrent",
119 "${libdir}/python${PYTHON_MAJMIN}/concurrent/futures",
120 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_asyncio.*.so"
121 ],
122 "cached": []
123 },
124 "audio": {
125 "summary": "Python Audio Handling",
126 "rdepends": [
127 "core"
128 ],
129 "files": [
130 "${libdir}/python${PYTHON_MAJMIN}/wave.py"
131 ],
132 "cached": [
133 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc"
134 ]
135 },
136 "codecs": {
137 "summary": "Python codec",
138 "rdepends": [
139 "core"
140 ],
141 "files": [
142 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so"
143 ],
144 "cached": []
145 },
146 "compile": {
147 "summary": "Python bytecode compilation support",
148 "rdepends": [
149 "core"
150 ],
151 "files": [
152 "${libdir}/python${PYTHON_MAJMIN}/compileall.py",
153 "${libdir}/python${PYTHON_MAJMIN}/filecmp.py",
154 "${libdir}/python${PYTHON_MAJMIN}/py_compile.py"
155 ],
156 "cached": [
157 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/compileall.*.pyc",
158 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/filecmp.*.pyc",
159 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/py_compile.*.pyc"
160 ]
161 },
162 "compression": {
163 "summary": "Python high-level compression support",
164 "rdepends": [
165 "core"
166 ],
167 "files": [
168 "${libdir}/python${PYTHON_MAJMIN}/gzip.py",
169 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py",
170 "${libdir}/python${PYTHON_MAJMIN}/zipfile",
171 "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path"
172 ],
173 "cached": [
174 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc",
175 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc"
176 ]
177 },
178 "core": {
179 "summary": "Python interpreter and core modules",
180 "rdepends": ["compression"],
181 "files": [
182 "${bindir}/python${PYTHON_MAJMIN}",
183 "${bindir}/python${PYTHON_MAJMIN}.real",
184 "${bindir}/python3",
185 "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h",
186 "${libdir}/python${PYTHON_MAJMIN}/UserDict.py",
187 "${libdir}/python${PYTHON_MAJMIN}/UserList.py",
188 "${libdir}/python${PYTHON_MAJMIN}/UserString.py",
189 "${libdir}/python${PYTHON_MAJMIN}/__future__.py",
190 "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py",
191 "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py",
192 "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",
193 "${libdir}/python${PYTHON_MAJMIN}/_colorize.py",
194 "${libdir}/python${PYTHON_MAJMIN}/_compression.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",
199 "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",
200 "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py",
201 "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py",
202 "${libdir}/python${PYTHON_MAJMIN}/abc.py",
203 "${libdir}/python${PYTHON_MAJMIN}/argparse.py",
204 "${libdir}/python${PYTHON_MAJMIN}/ast.py",
205 "${libdir}/python${PYTHON_MAJMIN}/bisect.py",
206 "${libdir}/python${PYTHON_MAJMIN}/bz2.py",
207 "${libdir}/python${PYTHON_MAJMIN}/code.py",
208 "${libdir}/python${PYTHON_MAJMIN}/codecs.py",
209 "${libdir}/python${PYTHON_MAJMIN}/codeop.py",
210 "${libdir}/python${PYTHON_MAJMIN}/collections",
211 "${libdir}/python${PYTHON_MAJMIN}/collections/abc.py",
212 "${libdir}/python${PYTHON_MAJMIN}/configparser.py",
213 "${libdir}/python${PYTHON_MAJMIN}/contextlib.py",
214 "${libdir}/python${PYTHON_MAJMIN}/copy.py",
215 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py",
216 "${libdir}/python${PYTHON_MAJMIN}/csv.py",
217 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
218 "${libdir}/python${PYTHON_MAJMIN}/dis.py",
219 "${libdir}/python${PYTHON_MAJMIN}/encodings",
220 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py",
221 "${libdir}/python${PYTHON_MAJMIN}/encodings/latin_1.py",
222 "${libdir}/python${PYTHON_MAJMIN}/encodings/utf_8.py",
223 "${libdir}/python${PYTHON_MAJMIN}/enum.py",
224 "${libdir}/python${PYTHON_MAJMIN}/fnmatch.py",
225 "${libdir}/python${PYTHON_MAJMIN}/functools.py",
226 "${libdir}/python${PYTHON_MAJMIN}/genericpath.py",
227 "${libdir}/python${PYTHON_MAJMIN}/getopt.py",
228 "${libdir}/python${PYTHON_MAJMIN}/gettext.py",
229 "${libdir}/python${PYTHON_MAJMIN}/glob.py",
230 "${libdir}/python${PYTHON_MAJMIN}/heapq.py",
231 "${libdir}/python${PYTHON_MAJMIN}/imp.py",
232 "${libdir}/python${PYTHON_MAJMIN}/importlib",
233 "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py",
234 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py",
235 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py",
236 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py",
237 "${libdir}/python${PYTHON_MAJMIN}/importlib/machinery.py",
238 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py",
239 "${libdir}/python${PYTHON_MAJMIN}/inspect.py",
240 "${libdir}/python${PYTHON_MAJMIN}/io.py",
241 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
242 "${libdir}/python${PYTHON_MAJMIN}/keyword.py",
243 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so",
244 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so",
245 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/time.*.so",
246 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/xreadlines.*.so",
247 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bisect.*.so",
248 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_bz2.*.so",
249 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_csv.*.so",
250 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_heapq.*.so",
251 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lzma.*.so",
252 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",
253 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so",
254 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so",
255 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so",
256 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so",
257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/fcntl.*.so",
259 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
260 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so",
261 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so",
262 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/readline.*.so",
263 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/select.*.so",
264 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/time.*.so",
265 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/unicodedata.*.so",
266 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/xreadlines.*.so",
267 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/zlib.*.so",
268 "${libdir}/python${PYTHON_MAJMIN}/linecache.py",
269 "${libdir}/python${PYTHON_MAJMIN}/locale.py",
270 "${libdir}/python${PYTHON_MAJMIN}/lzma.py",
271 "${libdir}/python${PYTHON_MAJMIN}/new.py",
272 "${libdir}/python${PYTHON_MAJMIN}/ntpath.py",
273 "${libdir}/python${PYTHON_MAJMIN}/opcode.py",
274 "${libdir}/python${PYTHON_MAJMIN}/operator.py",
275 "${libdir}/python${PYTHON_MAJMIN}/optparse.py",
276 "${libdir}/python${PYTHON_MAJMIN}/os.py",
277 "${libdir}/python${PYTHON_MAJMIN}/pathlib",
278 "${libdir}/python${PYTHON_MAJMIN}/pathlib.py",
279 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_abc.py",
280 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_local.py",
281 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py",
282 "${libdir}/python${PYTHON_MAJMIN}/platform.py",
283 "${libdir}/python${PYTHON_MAJMIN}/posixpath.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",
289 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py",
290 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
291 "${libdir}/python${PYTHON_MAJMIN}/runpy.py",
292 "${libdir}/python${PYTHON_MAJMIN}/selectors.py",
293 "${libdir}/python${PYTHON_MAJMIN}/shutil.py",
294 "${libdir}/python${PYTHON_MAJMIN}/signal.py",
295 "${libdir}/python${PYTHON_MAJMIN}/site.py",
296 "${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py",
297 "${libdir}/python${PYTHON_MAJMIN}/sre_compile.py",
298 "${libdir}/python${PYTHON_MAJMIN}/sre_constants.py",
299 "${libdir}/python${PYTHON_MAJMIN}/sre_parse.py",
300 "${libdir}/python${PYTHON_MAJMIN}/stat.py",
301 "${libdir}/python${PYTHON_MAJMIN}/stringprep.py",
302 "${libdir}/python${PYTHON_MAJMIN}/struct.py",
303 "${libdir}/python${PYTHON_MAJMIN}/subprocess.py",
304 "${libdir}/python${PYTHON_MAJMIN}/symbol.py",
305 "${libdir}/python${PYTHON_MAJMIN}/sysconfig",
306 "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py",
307 "${libdir}/python${PYTHON_MAJMIN}/textwrap.py",
308 "${libdir}/python${PYTHON_MAJMIN}/threading.py",
309 "${libdir}/python${PYTHON_MAJMIN}/token.py",
310 "${libdir}/python${PYTHON_MAJMIN}/tokenize.py",
311 "${libdir}/python${PYTHON_MAJMIN}/traceback.py",
312 "${libdir}/python${PYTHON_MAJMIN}/types.py",
313 "${libdir}/python${PYTHON_MAJMIN}/typing.py",
314 "${libdir}/python${PYTHON_MAJMIN}/urllib",
315 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py",
316 "${libdir}/python${PYTHON_MAJMIN}/warnings.py",
317 "${libdir}/python${PYTHON_MAJMIN}/weakref.py",
318 "${libdir}/python${PYTHON_MAJMIN}/zipimport.py",
319 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]"
320 ],
321 "cached": [
322 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc",
323 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc",
324 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc",
325 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_colorize.*.pyc",
326 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc",
327 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc",
328 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_opcode_metadata.*.pyc",
329 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc",
330 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc",
331 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc",
332 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/abc.*.pyc",
333 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/argparse.*.pyc",
334 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ast.*.pyc",
335 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bisect.*.pyc",
336 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bz2.*.pyc",
337 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/code.*.pyc",
338 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/codecs.*.pyc",
339 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/codeop.*.pyc",
340 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/configparser.*.pyc",
341 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/contextlib.*.pyc",
342 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",
343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.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",
347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc",
348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
349 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/functools.*.pyc",
350 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc",
351 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc",
352 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc",
353 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc",
355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc",
356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc",
357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc",
360 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc",
361 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc",
362 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/lzma.*.pyc",
363 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ntpath.*.pyc",
364 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/opcode.*.pyc",
365 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/operator.*.pyc",
366 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/optparse.*.pyc",
367 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/os.*.pyc",
368 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pathlib.*.pyc",
369 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc",
370 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/platform.*.pyc",
371 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/posixpath.*.pyc",
372 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/re.*.pyc",
373 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/reprlib.*.pyc",
374 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/rlcompleter.*.pyc",
375 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/runpy.*.pyc",
376 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/selectors.*.pyc",
377 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shutil.*.pyc",
378 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/signal.*.pyc",
379 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/site.*.pyc",
380 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_compile.*.pyc",
381 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_constants.*.pyc",
382 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sre_parse.*.pyc",
383 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/stat.*.pyc",
384 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/stringprep.*.pyc",
385 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/struct.*.pyc",
386 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/subprocess.*.pyc",
387 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/symbol.*.pyc",
388 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sysconfig.*.pyc",
389 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/textwrap.*.pyc",
390 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/threading.*.pyc",
391 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/token.*.pyc",
392 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tokenize.*.pyc",
393 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/traceback.*.pyc",
394 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/types.*.pyc",
395 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc",
396 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.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",
400 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",
401 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc",
402 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__",
403 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/aliases.*.pyc",
404 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc",
405 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc",
406 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc",
408 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc",
409 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.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__",
420 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
421 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc"
422 ]
423 },
424 "crypt": {
425 "summary": "Python basic cryptographic and hashing support",
426 "rdepends": [
427 "core"
428 ],
429 "files": [
430 "${libdir}/python${PYTHON_MAJMIN}/hashlib.py",
431 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so",
432 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
433 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
434 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
435 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so",
436 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so"
437 ],
438 "cached": [
439 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc"
440 ]
441 },
442 "ctypes": {
443 "summary": "Python C types support",
444 "rdepends": [
445 "core",
446 "io",
447 "math"
448 ],
449 "files": [
450 "${libdir}/python${PYTHON_MAJMIN}/ctypes",
451 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ctypes.*.so",
452 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ctypes_test.*.so"
453 ],
454 "cached": []
455 },
456 "curses": {
457 "summary": "Python curses support",
458 "rdepends": [
459 "core"
460 ],
461 "files": [
462 "${libdir}/python${PYTHON_MAJMIN}/curses",
463 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_curses.*.so",
464 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_curses_panel.*.so"
465 ],
466 "cached": []
467 },
468 "datetime": {
469 "summary": "Python calendar and time support",
470 "rdepends": [
471 "core"
472 ],
473 "files": [
474 "${libdir}/python${PYTHON_MAJMIN}/_strptime.py",
475 "${libdir}/python${PYTHON_MAJMIN}/calendar.py",
476 "${libdir}/python${PYTHON_MAJMIN}/datetime.py",
477 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_datetime.*.so"
478 ],
479 "cached": [
480 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_strptime.*.pyc",
481 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/calendar.*.pyc",
482 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/datetime.*.pyc"
483 ]
484 },
485 "db": {
486 "summary": "Python file-based database support",
487 "rdepends": [
488 "core"
489 ],
490 "files": [
491 "${libdir}/python${PYTHON_MAJMIN}/dbm",
492 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_dbm.*.so"
493 ],
494 "cached": []
495 },
496 "debugger": {
497 "summary": "Python debugger",
498 "rdepends": [
499 "core",
500 "pprint",
501 "shell",
502 "stringold"
503 ],
504 "files": [
505 "${libdir}/python${PYTHON_MAJMIN}/bdb.py",
506 "${libdir}/python${PYTHON_MAJMIN}/pdb.py"
507 ],
508 "cached": [
509 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/bdb.*.pyc",
510 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pdb.*.pyc"
511 ]
512 },
513 "dev": {
514 "cached": [],
515 "files": [
516 "${base_libdir}/*.a",
517 "${base_libdir}/*.o",
518 "${bindir}/python*-config*",
519 "${datadir}/aclocal",
520 "${datadir}/pkgconfig",
521 "${includedir}",
522 "${libdir}/*.a",
523 "${libdir}/*.la",
524 "${libdir}/*.o",
525 "${libdir}/lib*${SOLIBSDEV}",
526 "${libdir}/pkgconfig"
527 ],
528 "rdepends": [
529 "core"
530 ],
531 "summary": "Python development package"
532 },
533 "difflib": {
534 "summary": "Python helpers for computing deltas between objects",
535 "rdepends": [
536 "core"
537 ],
538 "files": [
539 "${libdir}/python${PYTHON_MAJMIN}/difflib.py"
540 ],
541 "cached": [
542 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc"
543 ]
544 },
545 "doctest": {
546 "summary": "Python framework for running examples in docstrings",
547 "rdepends": [
548 "core",
549 "debugger",
550 "difflib",
551 "pprint",
552 "shell",
553 "stringold",
554 "unittest"
555 ],
556 "files": [
557 "${libdir}/python${PYTHON_MAJMIN}/doctest.py"
558 ],
559 "cached": [
560 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/doctest.*.pyc"
561 ]
562 },
563 "email": {
564 "summary": "Python email support",
565 "rdepends": [
566 "core",
567 "datetime",
568 "io",
569 "math",
570 "mime",
571 "netclient",
572 "stringold"
573 ],
574 "files": [
575 "${libdir}/python${PYTHON_MAJMIN}/email",
576 "${libdir}/python${PYTHON_MAJMIN}/imaplib.py"
577 ],
578 "cached": [
579 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc"
580 ]
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 },
592 "fcntl": {
593 "summary": "Python's fcntl interface",
594 "rdepends": [
595 "core"
596 ],
597 "files": [
598 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/fcntl.*.so"
599 ],
600 "cached": []
601 },
602 "gdbm": {
603 "summary": "Python GNU database support",
604 "rdepends": [
605 "core"
606 ],
607 "files": [
608 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_gdbm.*.so"
609 ],
610 "cached": []
611 },
612 "html": {
613 "summary": "Python HTML processing support",
614 "rdepends": [
615 "core"
616 ],
617 "files": [
618 "${libdir}/python${PYTHON_MAJMIN}/html"
619 ],
620 "cached": []
621 },
622 "idle": {
623 "summary": "Python Integrated Development Environment",
624 "rdepends": [
625 "core"
626 ],
627 "files": [
628 "${bindir}/idle*",
629 "${libdir}/python${PYTHON_MAJMIN}/idlelib"
630 ],
631 "cached": []
632 },
633 "image": {
634 "summary": "Python graphical image handling",
635 "rdepends": [
636 "core"
637 ],
638 "files": [
639 "${libdir}/python${PYTHON_MAJMIN}/colorsys.py"
640 ],
641 "cached": [
642 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc"
643 ]
644 },
645 "io": {
646 "summary": "Python low-level I/O",
647 "rdepends": [
648 "core",
649 "math",
650 "netclient"
651 ],
652 "files": [
653 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
654 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so",
655 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so",
656 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so",
657 "${libdir}/python${PYTHON_MAJMIN}/socket.py",
658 "${libdir}/python${PYTHON_MAJMIN}/ssl.py",
659 "${libdir}/python${PYTHON_MAJMIN}/tempfile.py"
660 ],
661 "cached": [
662 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc",
663 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc",
664 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc",
665 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc"
666 ]
667 },
668 "json": {
669 "summary": "Python JSON support",
670 "rdepends": [
671 "core"
672 ],
673 "files": [
674 "${libdir}/python${PYTHON_MAJMIN}/json",
675 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_json.*.so"
676 ],
677 "cached": []
678 },
679 "logging": {
680 "summary": "Python logging support",
681 "rdepends": [
682 "core",
683 "io",
684 "netserver",
685 "pickle",
686 "stringold",
687 "threading"
688 ],
689 "files": [
690 "${libdir}/python${PYTHON_MAJMIN}/logging"
691 ],
692 "cached": []
693 },
694 "mailbox": {
695 "summary": "Python mailbox format support",
696 "rdepends": [
697 "core",
698 "datetime",
699 "email",
700 "io",
701 "math",
702 "mime",
703 "netclient",
704 "stringold"
705 ],
706 "files": [
707 "${libdir}/python${PYTHON_MAJMIN}/mailbox.py"
708 ],
709 "cached": [
710 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mailbox.*.pyc"
711 ]
712 },
713 "math": {
714 "summary": "Python math support",
715 "rdepends": [
716 "core"
717 ],
718 "files": [
719 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so",
720 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/cmath.*.so",
721 "${libdir}/python${PYTHON_MAJMIN}/random.py"
722 ],
723 "cached": [
724 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/random.*.pyc"
725 ]
726 },
727 "mime": {
728 "summary": "Python MIME handling APIs",
729 "rdepends": [
730 "core"
731 ],
732 "files": [
733 "${libdir}/python${PYTHON_MAJMIN}/quopri.py"
734 ],
735 "cached": [
736 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc"
737 ]
738 },
739 "mmap": {
740 "summary": "Python memory-mapped file support",
741 "rdepends": [
742 "core"
743 ],
744 "files": [
745 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/mmap.*.so"
746 ],
747 "cached": []
748 },
749 "modules": {
750 "cached": [],
751 "files": [],
752 "rdepends": [
753 "asyncio",
754 "audio",
755 "codecs",
756 "compile",
757 "compression",
758 "core",
759 "crypt",
760 "ctypes",
761 "curses",
762 "datetime",
763 "db",
764 "debugger",
765 "difflib",
766 "doctest",
767 "email",
768 "ensurepip",
769 "fcntl",
770 "html",
771 "idle",
772 "image",
773 "io",
774 "json",
775 "logging",
776 "mailbox",
777 "math",
778 "mime",
779 "mmap",
780 "multiprocessing",
781 "netclient",
782 "netserver",
783 "numbers",
784 "pickle",
785 "pkgutil",
786 "plistlib",
787 "pprint",
788 "profile",
789 "pydoc",
790 "resource",
791 "shell",
792 "sqlite3",
793 "statistics",
794 "stringold",
795 "syslog",
796 "terminal",
797 "threading",
798 "tkinter",
799 "tomllib",
800 "unittest",
801 "unixadmin",
802 "venv",
803 "xml",
804 "xmlrpc",
805 "zoneinfo"
806 ],
807 "summary": "All Python modules"
808 },
809 "multiprocessing": {
810 "summary": "Python multiprocessing support",
811 "rdepends": [
812 "core",
813 "crypt",
814 "ctypes",
815 "io",
816 "math",
817 "mmap",
818 "netclient",
819 "pickle",
820 "threading"
821 ],
822 "files": [
823 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multiprocessing.*.so",
824 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixshmem.*.so",
825 "${libdir}/python${PYTHON_MAJMIN}/multiprocessing"
826 ],
827 "cached": []
828 },
829 "netclient": {
830 "summary": "Python Internet Protocol clients",
831 "rdepends": [
832 "core",
833 "crypt",
834 "datetime",
835 "email",
836 "io",
837 "math",
838 "mime",
839 "stringold"
840 ],
841 "files": [
842 "${libdir}/python${PYTHON_MAJMIN}/base64.py",
843 "${libdir}/python${PYTHON_MAJMIN}/ftplib.py",
844 "${libdir}/python${PYTHON_MAJMIN}/hmac.py",
845 "${libdir}/python${PYTHON_MAJMIN}/http",
846 "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__",
847 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so",
848 "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",
849 "${libdir}/python${PYTHON_MAJMIN}/poplib.py",
850 "${libdir}/python${PYTHON_MAJMIN}/secrets.py",
851 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py",
852 "${libdir}/python${PYTHON_MAJMIN}/urllib",
853 "${libdir}/python${PYTHON_MAJMIN}/uuid.py"
854 ],
855 "cached": [
856 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/base64.*.pyc",
857 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc",
858 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc",
859 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc",
860 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc",
861 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc",
862 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc",
863 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc"
864 ]
865 },
866 "netserver": {
867 "summary": "Python Internet Protocol servers",
868 "rdepends": [
869 "core",
870 "io"
871 ],
872 "files": [
873 "${libdir}/python${PYTHON_MAJMIN}/socketserver.py"
874 ],
875 "cached": [
876 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc"
877 ]
878 },
879 "numbers": {
880 "summary": "Python number APIs",
881 "rdepends": [
882 "core"
883 ],
884 "files": [
885 "${libdir}/python${PYTHON_MAJMIN}/_pydecimal.py",
886 "${libdir}/python${PYTHON_MAJMIN}/contextvars.py",
887 "${libdir}/python${PYTHON_MAJMIN}/decimal.py",
888 "${libdir}/python${PYTHON_MAJMIN}/fractions.py",
889 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_contextvars.*.so",
890 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_decimal.*.so",
891 "${libdir}/python${PYTHON_MAJMIN}/numbers.py"
892 ],
893 "cached": [
894 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pydecimal.*.pyc",
895 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/contextvars.*.pyc",
896 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/decimal.*.pyc",
897 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fractions.*.pyc",
898 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/numbers.*.pyc"
899 ]
900 },
901 "pickle": {
902 "summary": "Python serialisation/persistence support",
903 "rdepends": [
904 "core"
905 ],
906 "files": [
907 "${libdir}/python${PYTHON_MAJMIN}/_compat_pickle.py",
908 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_pickle.*.so",
909 "${libdir}/python${PYTHON_MAJMIN}/pickle.py",
910 "${libdir}/python${PYTHON_MAJMIN}/pickletools.py",
911 "${libdir}/python${PYTHON_MAJMIN}/shelve.py"
912 ],
913 "cached": [
914 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compat_pickle.*.pyc",
915 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pickle.*.pyc",
916 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pickletools.*.pyc",
917 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shelve.*.pyc"
918 ]
919 },
920 "pkgutil": {
921 "summary": "Python package extension utility support",
922 "rdepends": [
923 "core"
924 ],
925 "files": [],
926 "cached": []
927 },
928 "plistlib": {
929 "summary": "Generate and parse Mac OS X .plist files",
930 "rdepends": [
931 "core",
932 "datetime",
933 "xml"
934 ],
935 "files": [
936 "${libdir}/python${PYTHON_MAJMIN}/plistlib.py"
937 ],
938 "cached": [
939 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/plistlib.*.pyc"
940 ]
941 },
942 "pprint": {
943 "summary": "Python pretty-print support",
944 "rdepends": [
945 "core"
946 ],
947 "files": [
948 "${libdir}/python${PYTHON_MAJMIN}/pprint.py"
949 ],
950 "cached": [
951 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pprint.*.pyc"
952 ]
953 },
954 "profile": {
955 "summary": "Python basic performance profiling support",
956 "rdepends": [
957 "core"
958 ],
959 "files": [
960 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py",
961 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so",
962 "${libdir}/python${PYTHON_MAJMIN}/profile.py",
963 "${libdir}/python${PYTHON_MAJMIN}/pstats.py"
964 ],
965 "cached": [
966 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc",
967 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc",
968 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
969 ]
970 },
971 "pydoc": {
972 "summary": "Python interactive help support",
973 "rdepends": [
974 "core"
975 ],
976 "files": [
977 "${bindir}/pydoc*",
978 "${libdir}/python${PYTHON_MAJMIN}/pydoc.py",
979 "${libdir}/python${PYTHON_MAJMIN}/pydoc_data"
980 ],
981 "cached": [
982 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pydoc.*.pyc"
983 ]
984 },
985 "resource": {
986 "summary": "Python resource control interface",
987 "rdepends": [
988 "core"
989 ],
990 "files": [
991 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/resource.*.so"
992 ],
993 "cached": []
994 },
995 "shell": {
996 "summary": "Python shell-like functionality",
997 "rdepends": [
998 "core",
999 "stringold"
1000 ],
1001 "files": [
1002 "${libdir}/python${PYTHON_MAJMIN}/cmd.py",
1003 "${libdir}/python${PYTHON_MAJMIN}/shlex.py"
1004 ],
1005 "cached": [
1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc",
1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc"
1008 ]
1009 },
1010 "sqlite3": {
1011 "summary": "Python Sqlite3 database support",
1012 "rdepends": [
1013 "core",
1014 "datetime"
1015 ],
1016 "files": [
1017 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sqlite3.*.so",
1018 "${libdir}/python${PYTHON_MAJMIN}/sqlite3"
1019 ],
1020 "cached": []
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 },
1037 "stringold": {
1038 "summary": "Common string operations",
1039 "rdepends": [
1040 "core"
1041 ],
1042 "files": [
1043 "${libdir}/python${PYTHON_MAJMIN}/string.py"
1044 ],
1045 "cached": [
1046 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/string.*.pyc"
1047 ]
1048 },
1049 "syslog": {
1050 "summary": "Python syslog interface",
1051 "rdepends": [
1052 "core"
1053 ],
1054 "files": [
1055 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/syslog.*.so"
1056 ],
1057 "cached": []
1058 },
1059 "terminal": {
1060 "summary": "Python terminal controlling support",
1061 "rdepends": [
1062 "core",
1063 "io"
1064 ],
1065 "files": [
1066 "${libdir}/python${PYTHON_MAJMIN}/pty.py",
1067 "${libdir}/python${PYTHON_MAJMIN}/tty.py"
1068 ],
1069 "cached": [
1070 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pty.*.pyc",
1071 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tty.*.pyc"
1072 ]
1073 },
1074 "threading": {
1075 "summary": "Python threading & synchronization support",
1076 "rdepends": [
1077 "core"
1078 ],
1079 "files": [
1080 "${libdir}/python${PYTHON_MAJMIN}/_threading_local.py",
1081 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_queue.*.so",
1082 "${libdir}/python${PYTHON_MAJMIN}/queue.py"
1083 ],
1084 "cached": [
1085 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_threading_local.*.pyc",
1086 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/queue.*.pyc"
1087 ]
1088 },
1089 "tkinter": {
1090 "summary": "Python Tcl/Tk bindings",
1091 "rdepends": [
1092 "core"
1093 ],
1094 "files": [
1095 "${libdir}/python${PYTHON_MAJMIN}/tkinter"
1096 ],
1097 "cached": []
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 },
1109 "unittest": {
1110 "summary": "Python unit testing framework",
1111 "rdepends": [
1112 "asyncio",
1113 "core",
1114 "difflib",
1115 "io",
1116 "logging",
1117 "netclient",
1118 "numbers",
1119 "pprint",
1120 "stringold"
1121 ],
1122 "files": [
1123 "${libdir}/python${PYTHON_MAJMIN}/unittest",
1124 "${libdir}/python${PYTHON_MAJMIN}/unittest/",
1125 "${libdir}/python${PYTHON_MAJMIN}/unittest/__pycache__"
1126 ],
1127 "cached": []
1128 },
1129 "unixadmin": {
1130 "summary": "Python Unix administration support",
1131 "rdepends": [
1132 "core",
1133 "io"
1134 ],
1135 "files": [
1136 "${libdir}/python${PYTHON_MAJMIN}/getpass.py"
1137 ],
1138 "cached": [
1139 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc"
1140 ]
1141 },
1142 "venv": {
1143 "summary": "Provides support for creating lightweight virtual environments with their own site directories, optionally isolated from system site directories.",
1144 "rdepends": [
1145 "core",
1146 "logging",
1147 "stringold"
1148 ],
1149 "files": [
1150 "${bindir}/pyvenv*",
1151 "${libdir}/python${PYTHON_MAJMIN}/venv"
1152 ],
1153 "cached": []
1154 },
1155 "xml": {
1156 "summary": "Python basic XML support",
1157 "rdepends": [
1158 "core"
1159 ],
1160 "files": [
1161 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_elementtree.*.so",
1162 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/pyexpat.*.so",
1163 "${libdir}/python${PYTHON_MAJMIN}/xml"
1164 ],
1165 "cached": []
1166 },
1167 "xmlrpc": {
1168 "summary": "Python XML-RPC support",
1169 "rdepends": [
1170 "compression",
1171 "core",
1172 "datetime",
1173 "email",
1174 "html",
1175 "io",
1176 "mime",
1177 "netclient",
1178 "netserver",
1179 "numbers",
1180 "pydoc",
1181 "stringold",
1182 "xml"
1183 ],
1184 "files": [
1185 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc",
1186 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__"
1187 ],
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": []
1214 }
1215}
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
deleted file mode 100644
index 5e2b12879d..0000000000
--- a/meta/recipes-devtools/python/python3/reformat_sysconfig.py
+++ /dev/null
@@ -1,21 +0,0 @@
1#! /usr/bin/env python3
2#
3# SPDX-License-Identifier: MIT
4#
5# Copyright 2019 by Garmin Ltd. or its subsidiaries
6#
7# A script to reformat python sysconfig
8
9import sys
10import pprint
11l = {}
12g = {}
13with open(sys.argv[1], 'r') as f:
14 exec(f.read(), g, l)
15
16with open(sys.argv[1], 'w') as f:
17 for k in sorted(l.keys()):
18 f.write('%s = ' % k)
19 pprint.pprint(l[k], stream=f, width=1)
20 f.write('\n')
21
diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest
deleted file mode 100644
index d1c26c11e2..0000000000
--- a/meta/recipes-devtools/python/python3/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2SKIPPED_TESTS=
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
deleted file mode 100644
index 38b6ebc5cb..0000000000
--- a/meta/recipes-devtools/python/python3/valid-dists.patch
+++ /dev/null
@@ -1,164 +0,0 @@
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---
12 Lib/importlib/metadata/__init__.py | 14 +++-
13 Lib/importlib/metadata/_itertools.py | 98 ++++++++++++++++++++++++++++
14 2 files changed, 110 insertions(+), 2 deletions(-)
15
16diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
17index 8ce62dd..085378c 100644
18--- a/Lib/importlib/metadata/__init__.py
19+++ b/Lib/importlib/metadata/__init__.py
20@@ -21,7 +21,7 @@ import collections
21 from . import _meta
22 from ._collections import FreezableDefaultDict, Pair
23 from ._functools import method_cache, pass_none
24-from ._itertools import always_iterable, unique_everseen
25+from ._itertools import always_iterable, bucket, unique_everseen
26 from ._meta import PackageMetadata, SimplePath
27
28 from contextlib import suppress
29@@ -404,7 +404,7 @@ class Distribution(DeprecatedNonAbstract):
30 if not name:
31 raise ValueError("A distribution name is required.")
32 try:
33- return next(iter(cls.discover(name=name)))
34+ return next(iter(cls._prefer_valid(cls.discover(name=name))))
35 except StopIteration:
36 raise PackageNotFoundError(name)
37
38@@ -428,6 +428,16 @@ class Distribution(DeprecatedNonAbstract):
39 resolver(context) for resolver in cls._discover_resolvers()
40 )
41
42+ @staticmethod
43+ def _prefer_valid(dists: Iterable[Distribution]) -> Iterable[Distribution]:
44+ """
45+ Prefer (move to the front) distributions that have metadata.
46+
47+ Ref python/importlib_resources#489.
48+ """
49+ buckets = bucket(dists, lambda dist: bool(dist.metadata))
50+ return itertools.chain(buckets[True], buckets[False])
51+
52 @staticmethod
53 def at(path: str | os.PathLike[str]) -> Distribution:
54 """Return a Distribution for the indicated metadata path.
55diff --git a/Lib/importlib/metadata/_itertools.py b/Lib/importlib/metadata/_itertools.py
56index d4ca9b9..79d3719 100644
57--- a/Lib/importlib/metadata/_itertools.py
58+++ b/Lib/importlib/metadata/_itertools.py
59@@ -1,3 +1,4 @@
60+from collections import defaultdict, deque
61 from itertools import filterfalse
62
63
64@@ -71,3 +72,100 @@ def always_iterable(obj, base_type=(str, bytes)):
65 return iter(obj)
66 except TypeError:
67 return iter((obj,))
68+
69+
70+# Copied from more_itertools 10.3
71+class bucket:
72+ """Wrap *iterable* and return an object that buckets the iterable into
73+ child iterables based on a *key* function.
74+
75+ >>> iterable = ['a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'b3']
76+ >>> s = bucket(iterable, key=lambda x: x[0]) # Bucket by 1st character
77+ >>> sorted(list(s)) # Get the keys
78+ ['a', 'b', 'c']
79+ >>> a_iterable = s['a']
80+ >>> next(a_iterable)
81+ 'a1'
82+ >>> next(a_iterable)
83+ 'a2'
84+ >>> list(s['b'])
85+ ['b1', 'b2', 'b3']
86+
87+ The original iterable will be advanced and its items will be cached until
88+ they are used by the child iterables. This may require significant storage.
89+
90+ By default, attempting to select a bucket to which no items belong will
91+ exhaust the iterable and cache all values.
92+ If you specify a *validator* function, selected buckets will instead be
93+ checked against it.
94+
95+ >>> from itertools import count
96+ >>> it = count(1, 2) # Infinite sequence of odd numbers
97+ >>> key = lambda x: x % 10 # Bucket by last digit
98+ >>> validator = lambda x: x in {1, 3, 5, 7, 9} # Odd digits only
99+ >>> s = bucket(it, key=key, validator=validator)
100+ >>> 2 in s
101+ False
102+ >>> list(s[2])
103+ []
104+
105+ """
106+
107+ def __init__(self, iterable, key, validator=None):
108+ self._it = iter(iterable)
109+ self._key = key
110+ self._cache = defaultdict(deque)
111+ self._validator = validator or (lambda x: True)
112+
113+ def __contains__(self, value):
114+ if not self._validator(value):
115+ return False
116+
117+ try:
118+ item = next(self[value])
119+ except StopIteration:
120+ return False
121+ else:
122+ self._cache[value].appendleft(item)
123+
124+ return True
125+
126+ def _get_values(self, value):
127+ """
128+ Helper to yield items from the parent iterator that match *value*.
129+ Items that don't match are stored in the local cache as they
130+ are encountered.
131+ """
132+ while True:
133+ # If we've cached some items that match the target value, emit
134+ # the first one and evict it from the cache.
135+ if self._cache[value]:
136+ yield self._cache[value].popleft()
137+ # Otherwise we need to advance the parent iterator to search for
138+ # a matching item, caching the rest.
139+ else:
140+ while True:
141+ try:
142+ item = next(self._it)
143+ except StopIteration:
144+ return
145+ item_value = self._key(item)
146+ if item_value == value:
147+ yield item
148+ break
149+ elif self._validator(item_value):
150+ self._cache[item_value].append(item)
151+
152+ def __iter__(self):
153+ for item in self._it:
154+ item_value = self._key(item)
155+ if self._validator(item_value):
156+ self._cache[item_value].append(item)
157+
158+ yield from self._cache.keys()
159+
160+ def __getitem__(self, value):
161+ if not self._validator(value):
162+ return iter(())
163+
164+ return self._get_values(value)
diff --git a/meta/recipes-devtools/python/python3_3.13.9.bb b/meta/recipes-devtools/python/python3_3.13.9.bb
deleted file mode 100644
index 2e114a6c5b..0000000000
--- a/meta/recipes-devtools/python/python3_3.13.9.bb
+++ /dev/null
@@ -1,487 +0,0 @@
1SUMMARY = "The Python Programming Language"
2HOMEPAGE = "http://www.python.org"
3DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively."
4LICENSE = "PSF-2.0"
5SECTION = "devel/python"
6
7LIC_FILES_CHKSUM = "file://LICENSE;md5=3f64a4ff490f884d562feb77bf2435f1"
8
9SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \
10 file://run-ptest \
11 file://create_manifest3.py \
12 file://get_module_deps3.py \
13 file://python3-manifest.json \
14 file://check_build_completeness.py \
15 file://reformat_sysconfig.py \
16 file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
17 file://0001-test_locale.py-correct-the-test-output-format.patch \
18 file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \
19 file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \
20 file://makerace.patch \
21 file://0001-sysconfig.py-use-platlibdir-also-for-purelib.patch \
22 file://0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch \
23 file://valid-dists.patch \
24 file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
25 file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \
26 file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \
27 file://0001-test_storlines-skip-due-to-load-variability.patch \
28 file://0001-test_shutdown-skip-problematic-test.patch \
29 file://0001-test_deadlock-skip-problematic-test.patch \
30 file://0001-test_active_children-skip-problematic-test.patch \
31 file://0001-test_readline-skip-limited-history-test.patch \
32 file://0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch \
33 "
34SRC_URI:append:class-native = " \
35 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
36 "
37
38SRC_URI[sha256sum] = "ed5ef34cda36cfa2f3a340f07cac7e7814f91c7f3c411f6d3562323a866c5c66"
39
40# exclude pre-releases for both python 2.x and 3.x
41UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
42
43CVE_PRODUCT = "python:python python_software_foundation:python cpython"
44
45PYTHON_MAJMIN = "3.13"
46
47S = "${UNPACKDIR}/Python-${PV}"
48
49BBCLASSEXTEND = "native nativesdk"
50
51inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
52
53MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
54
55ALTERNATIVE:${PN}-dev = "python3-config"
56ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
57ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
58
59DEPENDS = "\
60 autoconf-archive-native \
61 bzip2 \
62 bzip2-replacement-native \
63 expat \
64 libffi \
65 ncurses \
66 openssl \
67 sqlite3 \
68 util-linux-libuuid \
69 virtual/crypt \
70 virtual/libintl \
71 xz \
72 zlib \
73"
74
75DEPENDS:append:class-target = " python3-native"
76DEPENDS:append:class-nativesdk = " python3-native"
77
78EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib} --with-system-expat"
79EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
80EXTRA_OECONF:append:class-target = " --with-build-python=nativepython3 PLATFORM_TRIPLET=${HOST_ARCH}-${HOST_OS}"
81EXTRA_OECONF:append:class-nativesdk = " --with-build-python=nativepython3"
82
83export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
84
85EXTRANATIVEPATH += "python3-native"
86
87# LTO will be enabled via packageconfig depending upong distro features
88LTO:class-target = ""
89
90CACHED_CONFIGUREVARS = " \
91 ac_cv_file__dev_ptmx=yes \
92 ac_cv_file__dev_ptc=no \
93 ac_cv_working_tzset=yes \
94"
95CACHED_CONFIGUREVARS:append:class-target = " \
96 ac_cv_libatomic_needed=yes \
97"
98
99# set thread stack size to 2MB on musl for interpreter and stdlib C extensions
100# so it does not run into stack limits due to musl's small thread stack
101# This is only needed to build interpreter and not the subsequent modules
102# Thats why CFLAGS_NODIST is modified instead of CFLAGS
103CACHED_CONFIGUREVARS:append:libc-musl = "\
104 CFLAGS_NODIST='${CFLAGS} -DTHREAD_STACK_SIZE=0x200000' \
105"
106
107# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
108PACKAGECONFIG ??= "editline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
109PACKAGECONFIG[readline] = "--with-readline=readline,,readline,,,editline"
110PACKAGECONFIG[editline] = "--with-readline=editline,,libedit,,,readline"
111# Use profile guided optimisation by running PyBench inside qemu-user
112PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
113PACKAGECONFIG[tk] = ",,tk"
114PACKAGECONFIG[tcl] = ",,tcl"
115PACKAGECONFIG[gdbm] = ",,gdbm"
116PACKAGECONFIG[lto] = "--with-lto,--without-lto"
117PACKAGECONFIG[staticlibpython] = "--with-static-libpython,--without-static-libpython"
118
119do_configure:prepend () {
120 mkdir -p ${B}/Modules
121 cat > ${B}/Modules/Setup.local << EOF
122*disabled*
123${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
124${@bb.utils.contains_any('PACKAGECONFIG', 'readline editline', '', 'readline', d)}
125${@bb.utils.contains('PACKAGECONFIG', 'tk', '', '_tkinter', d)}
126EOF
127}
128
129CPPFLAGS += "-I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
130
131# COMPILEALL_OPTS= ensures that .pyc are not compiled in parallel
132# This was found to lock up builds, break reproducibility, and produce strange file ownership
133# races.
134#
135# The upstream commit introducing the change was:
136# https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
137#
138# The build lock up issue is reported here:
139# https://bugs.python.org/issue45945
140#
141# The repro failures are documented here:
142# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20211130-yr_o1a8d/packages/diff-html/
143
144EXTRA_OEMAKE = '\
145 STAGING_LIBDIR=${STAGING_LIBDIR} \
146 STAGING_INCDIR=${STAGING_INCDIR} \
147 LIB=${baselib} \
148 COMPILEALL_OPTS= \
149'
150
151# Generate a Profile Guided Optimisation wrapper script that uses qemu-user for
152# all cross builds.
153write_pgo_wrapper:class-native = ":"
154write_pgo_wrapper() {
155 if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
156 cat >pgo-wrapper <<EOF
157#!/bin/sh
158cd ${B}
159${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@"
160EOF
161 chmod +x pgo-wrapper
162 fi
163}
164
165do_compile:prepend() {
166 write_pgo_wrapper
167}
168
169do_install:prepend() {
170 ${UNPACKDIR}/check_build_completeness.py ${T}/log.do_compile
171}
172
173do_install:append:class-target() {
174 oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
175}
176
177do_install:append:class-native() {
178 # Make sure we use /usr/bin/env python
179 for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
180 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
181 done
182 # Add a symlink to the native Python so that scripts can just invoke
183 # "nativepython" and get the right one without needing absolute paths
184 # (these often end up too long for the #! parser in the kernel as the
185 # buffer is 128 bytes long).
186 ln -s python3-native/python3 ${D}${bindir}/nativepython3
187
188 # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 of them
189 # and the overhead in each recipe-sysroot-native isn't worth it, particularly
190 # when they're only used for python called with -O or -OO.
191 #find ${D} -name *opt-*.pyc -delete
192 # Remove all pyc files. There are a ton of them and it is probably faster to let
193 # python create the ones it wants at runtime rather than manage in the sstate
194 # tarballs and sysroot creation.
195 find ${D} -name *.pyc -delete
196
197 # Nothing should be looking into ${B} for python3-native
198 sed -i -e 's:${B}:/build/path/unavailable/:g' \
199 ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
200
201 # disable the lookup in user's site-packages globally
202 sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
203
204 # python3-config needs to be in /usr/bin and not in a subdir of it to work properly
205 mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/
206}
207
208do_install:append() {
209 for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
210 python3 ${UNPACKDIR}/reformat_sysconfig.py $c
211 done
212 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
213
214 mkdir -p ${D}${libdir}/python-sysconfigdata
215 sysconfigfile=`find ${D} -name _sysconfig*.py`
216 sed -i \
217 -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
218 -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
219 -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
220 -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
221 -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
222 -e "s,${B},/build/path/unavailable/,g" \
223 $sysconfigfile
224 cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
225
226 # Remove the opt-1.pyc and opt-2.pyc files. They effectively waste space on embedded
227 # style targets as they're only used when python is called with the -O or -OO options
228 # which is rare.
229 find ${D} -name *opt-*.pyc -delete
230}
231
232do_install:append:class-nativesdk () {
233 # Make sure we use /usr/bin/env python
234 for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
235 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
236 done
237 create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
238}
239
240do_install_ptest:append:class-target:libc-musl () {
241 sed -i -e 's|SKIPPED_TESTS=|SKIPPED_TESTS="-x test__locale -x test_c_locale_coercion -x test_locale -x test_os test_re -x test__xxsubinterpreters -x test_threading --ignore test.test_strptime.StrptimeTests.test_date_locale2 --ignore test.test_ctypes.test_dlerror.TestNullDlsym.test_null_dlsym"|' ${D}${PTEST_PATH}/run-ptest
242}
243
244SYSROOT_PREPROCESS_FUNCS:append:class-target = " provide_target_config_script"
245SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " provide_target_config_script"
246
247# This is installed into /usr/python-target-config/ and not /usr/bin
248# because adding target sysroot's /usr/bin/ to PATH has unwanted side effects
249# in components erroneously picking up other target executables from it
250provide_target_config_script() {
251 install -d ${SYSROOT_DESTDIR}${prefix}/python-target-config/
252 install ${D}/${bindir}/python3-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
253 install ${D}/${bindir}/python${PYTHON_MAJMIN}-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
254}
255SYSROOT_DIRS += "${prefix}/python-target-config/"
256
257SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
258SSTATE_HASHEQUIV_FILEMAP = " \
259 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
260 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
261 populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
262 populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
263 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
264 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
265 "
266PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
267
268py_package_preprocess () {
269 # Remove references to buildmachine paths in target Makefile and _sysconfigdata
270 sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
271 -e 's|${DEBUG_PREFIX_MAP}||g' \
272 -e 's:${HOSTTOOLS_DIR}/::g' \
273 -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
274 -e 's:${RECIPE_SYSROOT}::g' \
275 -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
276 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
277 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
278 ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
279
280 # Reformat _sysconfigdata after modifying it so that it remains
281 # reproducible
282 for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
283 python3 ${UNPACKDIR}/reformat_sysconfig.py $c
284 done
285
286 # Recompile _sysconfigdata after modifying it
287 cd ${PKGD}
288 sysconfigfile=`find . -name _sysconfigdata_*.py`
289 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
290 -c "from py_compile import compile; compile('$sysconfigfile')"
291 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
292 -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
293 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
294 -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
295 cd -
296
297 mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
298
299 #Remove the unneeded copy of target sysconfig data
300 rm -rf ${PKGD}/${libdir}/python-sysconfigdata
301}
302
303# We want bytecode precompiled .py files (.pyc's) by default
304# but the user may set it on their own conf
305INCLUDE_PYCS ?= "1"
306
307python(){
308 import collections, json
309
310 filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
311 # This python changes the datastore based on the contents of a file, so mark
312 # that dependency.
313 bb.parse.mark_dependency(d, filename)
314
315 with open(filename) as manifest_file:
316 manifest_str = manifest_file.read()
317 json_start = manifest_str.find('# EOC') + 6
318 manifest_file.seek(json_start)
319 manifest_str = manifest_file.read()
320 python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
321
322 # First set RPROVIDES for -native case
323 # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
324 pn = 'python3'
325 rprovides = (d.getVar('RPROVIDES') or "").split()
326
327 # ${PN}-misc-native is not in the manifest
328 rprovides.append(pn + '-misc-native')
329
330 for key in python_manifest:
331 pypackage = pn + '-' + key + '-native'
332 if pypackage not in rprovides:
333 rprovides.append(pypackage)
334
335 d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
336
337 # Then work on the target
338 include_pycs = d.getVar('INCLUDE_PYCS')
339
340 packages = d.getVar('PACKAGES').split()
341 pn = d.getVar('PN')
342
343 newpackages=[]
344 for key in python_manifest:
345 pypackage = pn + '-' + key
346
347 if pypackage not in packages:
348 # We need to prepend, otherwise python-misc gets everything
349 # so we use a new variable
350 newpackages.append(pypackage)
351
352 # "Build" python's manifest FILES, RDEPENDS and SUMMARY
353 for value in python_manifest[key]['files']:
354 d.appendVar('FILES:' + pypackage, ' ' + value)
355
356 # Add cached files
357 if include_pycs == '1':
358 for value in python_manifest[key]['cached']:
359 d.appendVar('FILES:' + pypackage, ' ' + value)
360
361 for value in python_manifest[key]['rdepends']:
362 # Make it work with or without $PN
363 if '${PN}' in value:
364 value=value.split('-', 1)[1]
365 d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
366
367 for value in python_manifest[key].get('rrecommends', ()):
368 if '${PN}' in value:
369 value=value.split('-', 1)[1]
370 d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
371
372 d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
373
374 # Prepending so to avoid python-misc getting everything
375 packages = newpackages + packages
376 d.setVar('PACKAGES', ' '.join(packages))
377 d.setVar('ALLOW_EMPTY:${PN}-fcntl', '1')
378 d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
379 d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
380
381 if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d):
382 bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine")
383}
384
385# Files needed to create a new manifest
386
387do_create_manifest() {
388 # This task should be run with every new release of Python.
389 # We must ensure that PACKAGECONFIG enables everything when creating
390 # a new manifest, this is to base our new manifest on a complete
391 # native python build, containing all dependencies, otherwise the task
392 # wont be able to find the required files.
393 # e.g. BerkeleyDB is an optional build dependency so it may or may not
394 # be present, we must ensure it is.
395
396 cp ${UNPACKDIR}/create_manifest3.py ${WORKDIR}
397 cp ${UNPACKDIR}/python3-manifest.json ${WORKDIR}
398 cp ${UNPACKDIR}/get_module_deps3.py ${WORKDIR}
399 cd ${WORKDIR}
400 # This needs to be executed by python-native and NOT by HOST's python
401 nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
402 cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
403}
404
405# bitbake python -c create_manifest
406# Make sure we have native python ready when we create a new manifest
407addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
408
409# manual dependency additions
410RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
411RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
412RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
413
414# For historical reasons PN is empty and provided by python3-modules
415FILES:${PN} = ""
416RPROVIDES:${PN}-modules = "${PN}"
417
418FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
419FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
420FILES:${PN}-tkinter += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so"
421
422# provide python-pyvenv from python3-venv
423RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
424
425# package libpython3
426PACKAGES =+ "libpython3 libpython3-staticdev"
427FILES:libpython3 = "${libdir}/libpython*.so.*"
428FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
429INSANE_SKIP:${PN}-dev += "dev-elf"
430INSANE_SKIP:${PN}-ptest = "dev-deps"
431
432# catch all the rest (unsorted)
433PACKAGES += "${PN}-misc"
434RDEPENDS:${PN}-misc += "\
435 ${PN}-audio \
436 ${PN}-codecs \
437 ${PN}-core \
438 ${PN}-email \
439 ${PN}-numbers \
440 ${PN}-pickle \
441 ${PN}-pydoc \
442"
443RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
444RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
445RDEPENDS:${PN}-modules:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '${MLPREFIX}python3-gdbm', '', d)}"
446FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
447
448# catch manpage
449PACKAGES += "${PN}-man"
450FILES:${PN}-man = "${datadir}/man"
451
452# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
453RDEPENDS:libpython3:append:libc-glibc = " libgcc"
454RRECOMMENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
455RDEPENDS:${PN}-ptest = "\
456 ${PN}-dev \
457 ${PN}-modules \
458 ${PN}-tests \
459 ${PN}-zipapp \
460 binutils \
461 bzip2 \
462 coreutils \
463 gcc \
464 gcc-symlinks \
465 g++ \
466 libgcc \
467 locale-base-fr-fr \
468 locale-base-en-us \
469 locale-base-de-de \
470 sed \
471 tzdata \
472 unzip \
473"
474RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr"
475RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
476RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
477DEV_PKG_DEPENDENCY = ""
478RDEPENDS:${PN}-pydoc += "${PN}-io"
479
480RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
481RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
482
483# Python's tests contain large numbers of files we don't need in the recipe sysroots
484SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
485py3_sysroot_cleanup () {
486 rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
487}