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/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch32
-rw-r--r--meta/recipes-devtools/python/python-async.inc14
-rw-r--r--meta/recipes-devtools/python/python-cython.inc40
-rw-r--r--meta/recipes-devtools/python/python-extras.inc1
-rw-r--r--meta/recipes-devtools/python/python-gitdb.inc23
-rw-r--r--meta/recipes-devtools/python/python-nose.inc18
-rw-r--r--meta/recipes-devtools/python/python-pbr.inc2
-rw-r--r--meta/recipes-devtools/python/python-pycryptodome.inc16
-rw-r--r--meta/recipes-devtools/python/python-pyparsing.inc22
-rw-r--r--meta/recipes-devtools/python/python-six.inc4
-rw-r--r--meta/recipes-devtools/python/python-subunit.inc14
-rw-r--r--meta/recipes-devtools/python/python-testtools.inc28
-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-async_0.6.2.bb2
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb25
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb16
-rw-r--r--meta/recipes-devtools/python/python3-attrs_20.3.0.bb20
-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_4.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-build_1.2.2.bb32
-rw-r--r--meta/recipes-devtools/python/python3-calver_2025.04.17.bb15
-rw-r--r--meta/recipes-devtools/python/python3-certifi_2025.6.15.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.1.8.bb33
-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.bb23
-rw-r--r--meta/recipes-devtools/python/python3-cryptography.bb70
-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_0.29.22.bb33
-rw-r--r--meta/recipes-devtools/python/python3-cython_3.1.2.bb44
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.16.bb26
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.4.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb17
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.33.0.bb22
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.16.bb17
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.21.2.bb22
-rw-r--r--meta/recipes-devtools/python/python3-dtc_1.7.2.bb22
-rw-r--r--meta/recipes-devtools/python/python3-dtschema_2025.6.1.bb20
-rw-r--r--meta/recipes-devtools/python/python3-editables_0.5.bb15
-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.14.bb32
-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-gitdb_4.0.5.bb4
-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.4.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.135.9.bb36
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-idna_3.10.bb13
-rw-r--r--meta/recipes-devtools/python/python3-imagesize_1.4.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb20
-rw-r--r--meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb9
-rw-r--r--meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch552
-rw-r--r--meta/recipes-devtools/python/python3-iniparse_0.4.bb17
-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/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_2.11.3.bb45
-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.4.1.bb17
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema_4.24.0.bb49
-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_2.9.bb21
-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.1.bb30
-rw-r--r--meta/recipes-devtools/python/python3-lxml_5.4.0.bb44
-rw-r--r--meta/recipes-devtools/python/python3-magic_0.4.27.bb (renamed from meta/recipes-devtools/python/python3-magic_0.4.22.bb)12
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.1.4.bb18
-rw-r--r--meta/recipes-devtools/python/python3-mako_1.3.10.bb27
-rw-r--r--meta/recipes-devtools/python/python3-markdown_3.8.bb12
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb28
-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.0.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/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-nose_1.3.7.bb2
-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-ptest15
-rw-r--r--meta/recipes-devtools/python/python3-numpy_2.3.0.bb76
-rw-r--r--meta/recipes-devtools/python/python3-packaging/run-ptest.in2
-rw-r--r--meta/recipes-devtools/python/python3-packaging_20.9.bb13
-rw-r--r--meta/recipes-devtools/python/python3-packaging_25.0.bb43
-rw-r--r--meta/recipes-devtools/python/python3-pathlib2_2.3.5.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pathspec_0.12.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch13
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.4.4.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pbr_6.1.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-pdm-backend_2.4.4.bb14
-rw-r--r--meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pdm_2.25.1.bb16
-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/0001-change-shebang-to-python3.patch60
-rw-r--r--meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch36
-rw-r--r--meta/recipes-devtools/python/python3-pip_20.0.2.bb33
-rw-r--r--meta/recipes-devtools/python/python3-pip_25.1.1.bb51
-rw-r--r--meta/recipes-devtools/python/python3-pluggy/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pluggy_0.13.1.bb27
-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-py_1.10.0.bb14
-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.bb (renamed from meta/recipes-devtools/python/python3-pycairo_1.20.0.bb)15
-rw-r--r--meta/recipes-devtools/python/python3-pycparser_2.22.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb5
-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.bb (renamed from meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb)6
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.27.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.32.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.19.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.8.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3-pygobject/0001-Do-not-build-tests.patch30
-rw-r--r--meta/recipes-devtools/python/python3-pygobject_3.38.0.bb32
-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_2.4.7.bb3
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_3.2.3.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/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch36
-rw-r--r--meta/recipes-devtools/python/python3-pytest_6.2.2.bb39
-rw-r--r--meta/recipes-devtools/python/python3-pytest_8.4.1.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.36.2.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.4.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.25.1.bb22
-rw-r--r--meta/recipes-devtools/python/python3-ruamel-yaml_0.18.14.bb20
-rw-r--r--meta/recipes-devtools/python/python3-scons-native_3.1.2.bb7
-rw-r--r--meta/recipes-devtools/python/python3-scons_3.1.2.bb33
-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.11.1.bb31
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb24
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb31
-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/0001-change-shebang-to-python3.patch25
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_53.0.0.bb55
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_80.9.0.bb55
-rw-r--r--meta/recipes-devtools/python/python3-six_1.15.0.bb5
-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_4.0.0.bb3
-rw-r--r--meta/recipes-devtools/python/python3-smmap_6.0.0.bb (renamed from meta/recipes-devtools/python/python-smmap.inc)8
-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.bb (renamed from meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb)2
-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.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-subunit_1.4.4.bb15
-rw-r--r--meta/recipes-devtools/python/python3-testtools/no_traceback2.patch23
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.4.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-testtools_2.7.2.bb22
-rw-r--r--meta/recipes-devtools/python/python3-toml_0.10.2.bb15
-rw-r--r--meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb15
-rw-r--r--meta/recipes-devtools/python/python3-typing-extensions_4.14.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/0001-Update-__version__-to-match-the-tag-version.patch30
-rw-r--r--meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb15
-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.bb28
-rw-r--r--meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb11
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb16
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb25
-rw-r--r--meta/recipes-devtools/python/python3-webcolors_24.11.1.bb19
-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.14.2.bb19
-rw-r--r--meta/recipes-devtools/python/python3-yamllint_1.37.1.bb14
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.21.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.4.0.bb19
-rw-r--r--meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch30
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch25
-rw-r--r--meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch1452
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch46
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch31
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch58
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch28
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch72
-rw-r--r--meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch36
-rw-r--r--meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch33
-rw-r--r--meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch209
-rw-r--r--meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch42
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch121
-rw-r--r--meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch69
-rw-r--r--meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch29
-rw-r--r--meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch33
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch27
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch17
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch44
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch43
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch29
-rw-r--r--meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch48
-rw-r--r--meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch60
-rw-r--r--meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch31
-rw-r--r--meta/recipes-devtools/python/python3/cgi_py.patch32
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py49
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch25
-rw-r--r--meta/recipes-devtools/python/python3/get_module_deps3.py76
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch31
-rw-r--r--meta/recipes-devtools/python/python3/python-config.patch54
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json269
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest4
-rw-r--r--meta/recipes-devtools/python/python3/valid-dists.patch160
-rw-r--r--meta/recipes-devtools/python/python3_3.13.5.bb496
-rw-r--r--meta/recipes-devtools/python/python3_3.9.2.bb382
266 files changed, 7486 insertions, 3329 deletions
diff --git a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
deleted file mode 100644
index 680edbe704..0000000000
--- a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From 6380cc63f79abe8b8404c9be5ed5f213a70c8c6a Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Tue, 17 Jul 2018 10:13:38 +0800
4Subject: [PATCH] conditionally do not fetch code by easy_install
5
6If var-NO_FETCH_BUILD is set, do not allow to fetch code from
7internet by easy_install.
8
9Upstream-Status: Inappropriate [oe specific]
10
11Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
12
13---
14 setuptools/command/easy_install.py | 5 +++++
15 1 file changed, 5 insertions(+)
16
17diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
18index eeb21b5..eca1edd 100644
19--- a/setuptools/command/easy_install.py
20+++ b/setuptools/command/easy_install.py
21@@ -636,6 +636,11 @@ class easy_install(Command):
22 os.path.exists(tmpdir) and rmtree(tmpdir)
23
24 def easy_install(self, spec, deps=False):
25+ if os.environ.get('NO_FETCH_BUILD', None):
26+ log.error("ERROR: Do not try to fetch `%s' for building. "
27+ "Please add its native recipe to DEPENDS." % spec)
28+ return None
29+
30 with self._tmpdir() as tmpdir:
31 if not isinstance(spec, Requirement):
32 if URL_SCHEME(spec):
diff --git a/meta/recipes-devtools/python/python-async.inc b/meta/recipes-devtools/python/python-async.inc
deleted file mode 100644
index af887dc4e5..0000000000
--- a/meta/recipes-devtools/python/python-async.inc
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Python framework to process interdependent tasks in a pool of workers"
2HOMEPAGE = "http://github.com/gitpython-developers/async"
3SECTION = "devel/python"
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e"
6
7inherit pypi
8
9SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b"
10SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051"
11
12RDEPENDS_${PN} += "${PYTHON_PN}-threading"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-cython.inc b/meta/recipes-devtools/python/python-cython.inc
deleted file mode 100644
index da6eba254f..0000000000
--- a/meta/recipes-devtools/python/python-cython.inc
+++ /dev/null
@@ -1,40 +0,0 @@
1DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \
2It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \
3and the messy, low-level world of C."
4SECTION = "devel/python"
5LICENSE = "Apache-2.0"
6LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa"
7PYPI_PACKAGE = "Cython"
8BBCLASSEXTEND = "native nativesdk"
9
10SRC_URI[sha256sum] = "df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406"
11UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar"
12
13inherit pypi
14
15RDEPENDS_${PN}_class-target += "\
16 ${PYTHON_PN}-misc \
17 ${PYTHON_PN}-netserver \
18 ${PYTHON_PN}-pkgutil \
19 ${PYTHON_PN}-pyparsing \
20 ${PYTHON_PN}-setuptools \
21 ${PYTHON_PN}-shell \
22 ${PYTHON_PN}-xml \
23"
24
25RDEPENDS_${PN}_class-nativesdk += "\
26 nativesdk-${PYTHON_PN}-misc \
27 nativesdk-${PYTHON_PN}-netserver \
28 nativesdk-${PYTHON_PN}-pkgutil \
29 nativesdk-${PYTHON_PN}-pyparsing \
30 nativesdk-${PYTHON_PN}-setuptools \
31 nativesdk-${PYTHON_PN}-shell \
32 nativesdk-${PYTHON_PN}-xml \
33"
34
35do_install_append() {
36 # Make sure we use /usr/bin/env python
37 for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
38 sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT
39 done
40}
diff --git a/meta/recipes-devtools/python/python-extras.inc b/meta/recipes-devtools/python/python-extras.inc
index 335bde2724..b562f90d12 100644
--- a/meta/recipes-devtools/python/python-extras.inc
+++ b/meta/recipes-devtools/python/python-extras.inc
@@ -6,7 +6,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=6d108f338b2f68fe48ac366c4650bd8b"
6 6
7inherit pypi 7inherit pypi
8 8
9SRC_URI[md5sum] = "3a63ad60cf8f0186c9e3a02f55ec5b14"
10SRC_URI[sha256sum] = "132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e" 9SRC_URI[sha256sum] = "132e36de10b9c91d5d4cc620160a476e0468a88f16c9431817a6729611a81b4e"
11 10
12BBCLASSEXTEND = "nativesdk" 11BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc
deleted file mode 100644
index 618d85ff8d..0000000000
--- a/meta/recipes-devtools/python/python-gitdb.inc
+++ /dev/null
@@ -1,23 +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
7inherit pypi
8
9PYPI_PACKAGE = "gitdb"
10
11SRC_URI[sha256sum] = "c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9"
12
13DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap"
14
15RDEPENDS_${PN} += "${PYTHON_PN}-async \
16 ${PYTHON_PN}-compression \
17 ${PYTHON_PN}-crypt \
18 ${PYTHON_PN}-io \
19 ${PYTHON_PN}-mmap \
20 ${PYTHON_PN}-shell \
21 ${PYTHON_PN}-smmap \
22"
23BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-nose.inc b/meta/recipes-devtools/python/python-nose.inc
deleted file mode 100644
index ccec68a0e1..0000000000
--- a/meta/recipes-devtools/python/python-nose.inc
+++ /dev/null
@@ -1,18 +0,0 @@
1SUMMARY = "Extends Python unittest to make testing easier"
2HOMEPAGE = "http://readthedocs.org/docs/nose/"
3DESCRIPTION = "nose extends the test loading and running features of unittest, \
4making it easier to write, find and run tests."
5SECTION = "devel/python"
6LICENSE = "LGPLv2.1"
7LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343"
8
9SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b"
10SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98"
11
12inherit pypi
13
14RDEPENDS_${PN} = "\
15 ${PYTHON_PN}-unittest \
16 "
17
18BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-pbr.inc b/meta/recipes-devtools/python/python-pbr.inc
index bc470e7274..f08d9fd381 100644
--- a/meta/recipes-devtools/python/python-pbr.inc
+++ b/meta/recipes-devtools/python/python-pbr.inc
@@ -9,6 +9,6 @@ SRC_URI += "file://0001-change-shebang-to-python3.patch"
9 9
10inherit pypi 10inherit pypi
11 11
12RDEPENDS_${PN} += "${PYTHON_PN}-pip" 12RDEPENDS:${PN} += "python3-pip"
13 13
14BBCLASSEXTEND = "native nativesdk" 14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-pycryptodome.inc b/meta/recipes-devtools/python/python-pycryptodome.inc
index 48481bcf9a..ec9241e6d5 100644
--- a/meta/recipes-devtools/python/python-pycryptodome.inc
+++ b/meta/recipes-devtools/python/python-pycryptodome.inc
@@ -3,22 +3,24 @@ DESCRIPTION = "PyCryptodome is a self-contained Python package of low-level\
3 cryptographic primitives." 3 cryptographic primitives."
4HOMEPAGE = "http://www.pycryptodome.org" 4HOMEPAGE = "http://www.pycryptodome.org"
5LICENSE = "PD & BSD-2-Clause" 5LICENSE = "PD & BSD-2-Clause"
6LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=accfa6aeaceb3ba96676edf18e78302c" 6LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=29242a70410a4eeff488a28164e7ab93"
7 7
8inherit pypi 8inherit pypi
9 9
10RDEPENDS_${PN} += " \ 10RDEPENDS:${PN} += " \
11 ${PYTHON_PN}-io \ 11 python3-cffi \
12 ${PYTHON_PN}-math \ 12 python3-ctypes \
13 python3-io \
14 python3-math \
13" 15"
14 16
15RDEPENDS_${PN}-tests += " \ 17RDEPENDS:${PN}-tests += " \
16 ${PYTHON_PN}-unittest \ 18 python3-unittest \
17" 19"
18 20
19PACKAGES =+ "${PN}-tests" 21PACKAGES =+ "${PN}-tests"
20 22
21FILES_${PN}-tests = " \ 23FILES:${PN}-tests = " \
22 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \ 24 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
23 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \ 25 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
24" 26"
diff --git a/meta/recipes-devtools/python/python-pyparsing.inc b/meta/recipes-devtools/python/python-pyparsing.inc
deleted file mode 100644
index 348b324bf5..0000000000
--- a/meta/recipes-devtools/python/python-pyparsing.inc
+++ /dev/null
@@ -1,22 +0,0 @@
1SUMMARY = "Python parsing module"
2HOMEPAGE = "http://pyparsing.wikispaces.com/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1"
5
6SRC_URI[md5sum] = "f0953e47a0112f7a65aec2305ffdf7b4"
7SRC_URI[sha256sum] = "c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"
8UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
9
10inherit pypi
11
12RDEPENDS_${PN} += " \
13 ${PYTHON_PN}-datetime \
14 ${PYTHON_PN}-debugger \
15 ${PYTHON_PN}-json \
16 ${PYTHON_PN}-netclient \
17 ${PYTHON_PN}-pprint \
18 ${PYTHON_PN}-stringold \
19 ${PYTHON_PN}-threading \
20"
21
22BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
index df97f845bc..f7a62b6068 100644
--- a/meta/recipes-devtools/python/python-six.inc
+++ b/meta/recipes-devtools/python/python-six.inc
@@ -2,10 +2,10 @@ SUMMARY = "Python 2 and 3 compatibility library"
2HOMEPAGE = "https://pypi.org/project/six/" 2HOMEPAGE = "https://pypi.org/project/six/"
3SECTION = "devel/python" 3SECTION = "devel/python"
4LICENSE = "MIT" 4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=43cfc9e4ac0e377acfb9b76f56b8415d" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=e50fab7e9501f3dfc920eafeb24b46ea"
6 6
7inherit pypi 7inherit pypi
8 8
9RDEPENDS_${PN} = "${PYTHON_PN}-io" 9RDEPENDS:${PN} = "python3-io"
10 10
11BBCLASSEXTEND = "native nativesdk" 11BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python-subunit.inc b/meta/recipes-devtools/python/python-subunit.inc
deleted file mode 100644
index a2f9c5c3ff..0000000000
--- a/meta/recipes-devtools/python/python-subunit.inc
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Python implementation of subunit test streaming protocol"
2HOMEPAGE = "https://pypi.org/project/python-subunit/"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://README.rst;beginline=1;endline=20;md5=909c08e291647fd985fbe5d9836d51b6"
6
7PYPI_PACKAGE = "python-subunit"
8
9SRC_URI[md5sum] = "30f1ab20651d94442dd9a7f8c9e8d633"
10SRC_URI[sha256sum] = "042039928120fbf392e8c983d60f3d8ae1b88f90a9f8fd7188ddd9c26cad1e48"
11
12inherit pypi
13
14BBCLASSEXTEND = "nativesdk"
diff --git a/meta/recipes-devtools/python/python-testtools.inc b/meta/recipes-devtools/python/python-testtools.inc
deleted file mode 100644
index e8d308b717..0000000000
--- a/meta/recipes-devtools/python/python-testtools.inc
+++ /dev/null
@@ -1,28 +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
7inherit pypi
8
9SRC_URI[md5sum] = "e8fc7185b47cfb908c641f8c4b2a6add"
10SRC_URI[sha256sum] = "64c974a6cca4385d05f4bbfa2deca1c39ce88ede31c3448bee86a7259a9a61c8"
11
12DEPENDS += " \
13 ${PYTHON_PN}-pbr \
14 "
15
16# Satisfy setup.py 'setup_requires'
17DEPENDS += " \
18 ${PYTHON_PN}-pbr-native \
19 "
20
21RDEPENDS_${PN} += "\
22 ${PYTHON_PN}-doctest \
23 ${PYTHON_PN}-extras \
24 ${PYTHON_PN}-pbr \
25 ${PYTHON_PN}-six \
26 "
27
28BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..40be6039eb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-alabaster_1.0.0.bb
@@ -0,0 +1,12 @@
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
new file mode 100644
index 0000000000..322497b09b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-asn1crypto_1.5.1.bb
@@ -0,0 +1,24 @@
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-async_0.6.2.bb b/meta/recipes-devtools/python/python3-async_0.6.2.bb
deleted file mode 100644
index 0da5fdecdc..0000000000
--- a/meta/recipes-devtools/python/python3-async_0.6.2.bb
+++ /dev/null
@@ -1,2 +0,0 @@
1inherit setuptools3
2require python-async.inc
diff --git a/meta/recipes-devtools/python/python3-atomicwrites/run-ptest b/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
deleted file mode 100644
index b63c4de0d9..0000000000
--- a/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb
deleted file mode 100644
index 7edd41030f..0000000000
--- a/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
1DESCRIPTION = "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[md5sum] = "b5cc15c8f9f180a48665f9aacf91d817"
7SRC_URI[sha256sum] = "ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"
8
9inherit pypi setuptools3 ptest
10
11SRC_URI += " \
12 file://run-ptest \
13"
14
15RDEPENDS_${PN}-ptest += " \
16 ${PYTHON_PN}-pytest \
17 ${PYTHON_PN}-unixadmin \
18"
19
20do_install_ptest() {
21 install -d ${D}${PTEST_PATH}/tests
22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
23}
24
25RDEPENDS_${PN} = "${PYTHON_PN}-misc"
diff --git a/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
new file mode 100644
index 0000000000..b14b62ab2f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
@@ -0,0 +1,16 @@
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_20.3.0.bb b/meta/recipes-devtools/python/python3-attrs_20.3.0.bb
deleted file mode 100644
index 55cfda7180..0000000000
--- a/meta/recipes-devtools/python/python3-attrs_20.3.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1DESCRIPTION = "Classes Without Boilerplate"
2HOMEPAGE = "http://www.attrs.org/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff"
5
6SRC_URI[sha256sum] = "832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"
7SRC_URI[md5sum] = "4fe38f89297b2b446d83190fce189f29"
8
9inherit pypi setuptools3
10
11RDEPENDS_${PN}_class-target += " \
12 ${PYTHON_PN}-crypt \
13 ${PYTHON_PN}-ctypes \
14"
15RDEPENDS_${PN}_class-nativesdk += " \
16 ${PYTHON_PN}-crypt \
17 ${PYTHON_PN}-ctypes \
18"
19
20BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..bed26a5184
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs_25.3.0.bb
@@ -0,0 +1,28 @@
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
new file mode 100644
index 0000000000..adffaa044c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-babel_2.17.0.bb
@@ -0,0 +1,26 @@
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
new file mode 100644
index 0000000000..e0a2926519
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt-crates.inc
@@ -0,0 +1,106 @@
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
new file mode 100644
index 0000000000..931aae4310
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt_4.3.0.bb
@@ -0,0 +1,21 @@
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
new file mode 100644
index 0000000000..43427c1472
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-beartype_0.21.0.bb
@@ -0,0 +1,13 @@
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_4.0.bb b/meta/recipes-devtools/python/python3-booleanpy_4.0.bb
new file mode 100644
index 0000000000..4563cb8c4b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-booleanpy_4.0.bb
@@ -0,0 +1,14 @@
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] = "17b9a181630e43dde1851d42bef546d616d5d9b4480357514597e78b203d06e4"
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.2.2.bb b/meta/recipes-devtools/python/python3-build_1.2.2.bb
new file mode 100644
index 0000000000..8f2ee92060
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-build_1.2.2.bb
@@ -0,0 +1,32 @@
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] = "119b2fb462adef986483438377a13b2f42064a2a3a4161f24a0cca698a07ac8c"
7
8inherit pypi python_flit_core
9
10DEPENDS += "python3-pyproject-hooks-native"
11
12DEPENDS:remove:class-native = "python3-build-native"
13
14# Skip dependencies as we're doing a minimal build to bootstrap
15PEP517_BUILD_OPTS:class-native = "--skip-dependency-check"
16
17do_compile:prepend:class-native() {
18 export PYTHONPATH="${S}/src"
19}
20
21RDEPENDS:${PN} += " \
22 python3-compression \
23 python3-difflib \
24 python3-ensurepip \
25 python3-logging \
26 python3-packaging \
27 python3-pyproject-hooks \
28 python3-tomllib \
29 python3-venv \
30"
31
32BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..85ad18701c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-calver_2025.04.17.bb
@@ -0,0 +1,15 @@
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.6.15.bb b/meta/recipes-devtools/python/python3-certifi_2025.6.15.bb
new file mode 100644
index 0000000000..e8ad8da486
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-certifi_2025.6.15.bb
@@ -0,0 +1,16 @@
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] = "d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"
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
new file mode 100644
index 0000000000..a919f4f6fb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cffi/0001-Cast-offset-to-size_t-to-avoid-c-11-narrowing-warnin.patch
@@ -0,0 +1,34 @@
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
new file mode 100644
index 0000000000..24ee6f2156
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cffi/run-ptest
@@ -0,0 +1,7 @@
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
new file mode 100644
index 0000000000..5a3af03d9f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cffi_1.17.1.bb
@@ -0,0 +1,39 @@
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
new file mode 100644
index 0000000000..9acbeeb3f2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-chardet_5.2.0.bb
@@ -0,0 +1,21 @@
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.1.8.bb b/meta/recipes-devtools/python/python3-click_8.1.8.bb
new file mode 100644
index 0000000000..7be3d73546
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-click_8.1.8.bb
@@ -0,0 +1,33 @@
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] = "ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"
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 "
32
33BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..c33310b969
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-colorama_0.4.6.bb
@@ -0,0 +1,10 @@
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
new file mode 100644
index 0000000000..5ce2485ed5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-common.inc
@@ -0,0 +1,6 @@
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.4"
diff --git a/meta/recipes-devtools/python/python3-cryptography-crates.inc b/meta/recipes-devtools/python/python3-cryptography-crates.inc
new file mode 100644
index 0000000000..e178790448
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-crates.inc
@@ -0,0 +1,76 @@
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
new file mode 100644
index 0000000000..a8f8d0cd17
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-vectors.bb
@@ -0,0 +1,23 @@
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] = "fbb0408df8ff2d2b3dbd2928bc5b7feebfdd36fb092fa8790d5778a9b9a1f9ef"
13
14PYPI_PACKAGE = "cryptography_vectors"
15UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
16
17inherit pypi python_setuptools_build_meta
18
19DEPENDS += " \
20 python3-cryptography \
21"
22
23BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-cryptography.bb b/meta/recipes-devtools/python/python3-cryptography.bb
new file mode 100644
index 0000000000..f41e13f4a1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography.bb
@@ -0,0 +1,70 @@
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] = "7405ade85c83c37682c8fe65554759800a4a8c54b2d96e0f8ad114d31b808d57"
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"
28
29RDEPENDS:${PN} += " \
30 python3-cffi \
31"
32
33RDEPENDS:${PN}:append:class-target = " \
34 python3-numbers \
35 python3-threading \
36"
37
38RDEPENDS:${PN}-ptest += " \
39 python3-bcrypt \
40 python3-cryptography-vectors (= ${PV}) \
41 python3-hypothesis \
42 python3-iso8601 \
43 python3-mmap \
44 python3-pretend \
45 python3-psutil \
46 python3-pytest \
47 python3-unittest-automake-output \
48 python3-pytest-subtests \
49 python3-pytz \
50"
51
52inherit ptest
53
54do_install_ptest() {
55 install -D ${UNPACKDIR}/check-memfree.py ${D}${PTEST_PATH}/
56 install -d ${D}${PTEST_PATH}/tests
57 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
58 # remove test_x509.py as it needs benchmark and we don't
59 # want to introduce the benchmark dependency
60 rm -rf ${D}${PTEST_PATH}/tests/bench/test_x509.py
61 install -d ${D}${PTEST_PATH}/tests/hazmat
62 cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
63 cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/
64}
65
66FILES:${PN}-dbg += " \
67 ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \
68"
69
70BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..e238717208
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch
@@ -0,0 +1,40 @@
1From baa3c56b87ceaea331811a0a4642991cbb12e6ea 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 d9ef704..878b720 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
new file mode 100755
index 0000000000..ed680d8d5b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/check-memfree.py
@@ -0,0 +1,10 @@
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
new file mode 100644
index 0000000000..fe191a5dc4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/run-ptest
@@ -0,0 +1,9 @@
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_0.29.22.bb b/meta/recipes-devtools/python/python3-cython_0.29.22.bb
deleted file mode 100644
index 01f716c16f..0000000000
--- a/meta/recipes-devtools/python/python3-cython_0.29.22.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1inherit setuptools3
2require python-cython.inc
3
4RDEPENDS_${PN} += "\
5 python3-setuptools \
6"
7
8# running build_ext a second time during install fails, because Python
9# would then attempt to import cythonized modules built for the target
10# architecture.
11DISTUTILS_INSTALL_ARGS += "--skip-build"
12
13do_install_append() {
14 # rename scripts that would conflict with the Python 2 build of Cython
15 mv ${D}${bindir}/cython ${D}${bindir}/cython3
16 mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
17 mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
18}
19
20PACKAGEBUILDPKGD += "cython_fix_sources"
21
22cython_fix_sources () {
23 sed -i -e 's#${WORKDIR}#/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}#g' \
24 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FlowControl.c \
25 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FusedNode.c \
26 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Scanning.c \
27 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Visitor.c \
28 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Actions.c \
29 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Scanners.c \
30 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Runtime/refnanny.c \
31 ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Tempita/_tempita.c \
32 ${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt
33}
diff --git a/meta/recipes-devtools/python/python3-cython_3.1.2.bb b/meta/recipes-devtools/python/python3-cython_3.1.2.bb
new file mode 100644
index 0000000000..77dbbe8b2c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cython_3.1.2.bb
@@ -0,0 +1,44 @@
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] = "6bbf7a953fa6762dfecdec015e3b054ba51c0121a45ad851fa130f63f5331381"
11
12inherit pypi setuptools3 cython
13
14# No need to depend on self
15DEPENDS:remove = "python3-cython-native"
16
17do_install:append() {
18 # rename scripts that would conflict with the Python 2 build of Cython
19 mv ${D}${bindir}/cython ${D}${bindir}/cython3
20 mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3
21 mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3
22}
23
24RDEPENDS:${PN}:class-target += "\
25 python3-misc \
26 python3-netserver \
27 python3-pkgutil \
28 python3-pyparsing \
29 python3-setuptools \
30 python3-shell \
31 python3-xml \
32"
33
34RDEPENDS:${PN}:class-nativesdk += "\
35 nativesdk-python3-misc \
36 nativesdk-python3-netserver \
37 nativesdk-python3-pkgutil \
38 nativesdk-python3-pyparsing \
39 nativesdk-python3-setuptools \
40 nativesdk-python3-shell \
41 nativesdk-python3-xml \
42"
43
44BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dbus_1.2.16.bb b/meta/recipes-devtools/python/python3-dbus_1.2.16.bb
deleted file mode 100644
index e1700fa869..0000000000
--- a/meta/recipes-devtools/python/python3-dbus_1.2.16.bb
+++ /dev/null
@@ -1,26 +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=b03240518994df6d8c974675675e5ca4"
6DEPENDS = "expat dbus glib-2.0 virtual/libintl"
7
8SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz"
9
10SRC_URI[md5sum] = "51a45c973d82bedff033a4b57d69d5d8"
11SRC_URI[sha256sum] = "11238f1d86c995d8aed2e22f04a1e3779f0d70e587caffeab4857f3c662ed5a4"
12
13S = "${WORKDIR}/dbus-python-${PV}"
14
15inherit distutils3-base autotools pkgconfig
16
17# documentation needs python3-sphinx, which is not in oe-core or meta-python for now
18# change to use PACKAGECONFIG when python3-sphinx is added to oe-core
19EXTRA_OECONF += "--disable-documentation"
20
21
22RDEPENDS_${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml"
23
24FILES_${PN}-dev += "${libdir}/pkgconfig"
25
26BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..2854eda30a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbus_1.4.0.bb
@@ -0,0 +1,23 @@
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.22.0.bb b/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb
deleted file mode 100644
index b1feee8416..0000000000
--- a/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus"
2
3LICENSE = "GPL-3.0"
4LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02"
5
6SRC_URI[sha256sum] = "2191919cc411fb94953b36e46bfd55ee5ad4162432ee0d0892bc2c4770ff5d7c"
7
8PYPI_PACKAGE = "python-dbusmock"
9
10inherit pypi setuptools3
11
12RDEPENDS_${PN} += "\
13 ${PYTHON_PN}-dbus \
14 ${PYTHON_PN}-pygobject \
15 ${PYTHON_PN}-unittest \
16 ${PYTHON_PN}-xml \
17 "
diff --git a/meta/recipes-devtools/python/python3-dbusmock_0.33.0.bb b/meta/recipes-devtools/python/python3-dbusmock_0.33.0.bb
new file mode 100644
index 0000000000..c0ea64b6b8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbusmock_0.33.0.bb
@@ -0,0 +1,22 @@
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] = "04efd311dd1063ac2b8f7baa79a026b5c0aa3ed4ef18cd9226f52a273fa6193a"
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.16.bb b/meta/recipes-devtools/python/python3-docutils_0.16.bb
deleted file mode 100644
index 50547a1b0c..0000000000
--- a/meta/recipes-devtools/python/python3-docutils_0.16.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "Text processing system for documentation"
2HOMEPAGE = "http://docutils.sourceforge.net"
3SECTION = "devel/python"
4LICENSE = "PSF & BSD-2-Clause & GPLv3"
5LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7a4646907ab9083c826280b19e103106"
6
7DEPENDS = "python3"
8
9SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz"
10SRC_URI[md5sum] = "9ccb6f332e23360f964de72c8ea5f0ed"
11SRC_URI[sha256sum] = "7d4e999cca74a52611773a42912088078363a30912e8822f7a3d38043b767573"
12
13S = "${WORKDIR}/docutils-${PV}"
14
15inherit distutils3
16
17BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-docutils_0.21.2.bb b/meta/recipes-devtools/python/python3-docutils_0.21.2.bb
new file mode 100644
index 0000000000..d9f8160913
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-docutils_0.21.2.bb
@@ -0,0 +1,22 @@
1SUMMARY = "Docutils is a modular system for processing documentation into useful formats"
2HOMEPAGE = "http://docutils.sourceforge.net"
3SECTION = "devel/python"
4LICENSE = "CC0-1.0 & ZPL-2.1 & BSD-2-Clause & GPL-3.0-only"
5LIC_FILES_CHKSUM = "file://COPYING.txt;md5=382430a09a4453818aa6618f2090491b"
6
7SRC_URI[sha256sum] = "3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"
8
9inherit pypi python_setuptools_build_meta
10
11RDEPENDS:${PN} += " \
12 python3-pprint \
13"
14
15do_install:append() {
16 # Make sure we use /usr/bin/env python3
17 for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
18 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
19 done
20}
21
22BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..9525c340cd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtc_1.7.2.bb
@@ -0,0 +1,22 @@
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.6.1.bb b/meta/recipes-devtools/python/python3-dtschema_2025.6.1.bb
new file mode 100644
index 0000000000..872084841b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtschema_2025.6.1.bb
@@ -0,0 +1,20 @@
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] = "6348fb23961d0cd1c89ea0c29b790c622bc34fdd1be56090724c6c1f76cbf10d"
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
new file mode 100644
index 0000000000..f3261183cb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-editables_0.5.bb
@@ -0,0 +1,15 @@
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_setuptools_build_meta
10
11RDEPENDS:${PN} += "\
12 python3-io \
13"
14
15BBCLASSEXTEND = "native nativesdk"
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
new file mode 100644
index 0000000000..e40ffd0d0f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-flit-core_3.12.0.bb
@@ -0,0 +1,31 @@
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.14.bb b/meta/recipes-devtools/python/python3-git_3.1.14.bb
deleted file mode 100644
index 911c8f1487..0000000000
--- a/meta/recipes-devtools/python/python3-git_3.1.14.bb
+++ /dev/null
@@ -1,32 +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=8b8d26c37c1d5a04f9b0186edbebc183"
10
11PYPI_PACKAGE = "GitPython"
12
13inherit pypi setuptools3
14
15SRC_URI[sha256sum] = "be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61"
16
17DEPENDS += " ${PYTHON_PN}-gitdb"
18
19RDEPENDS_${PN} += " \
20 ${PYTHON_PN}-datetime \
21 ${PYTHON_PN}-gitdb \
22 ${PYTHON_PN}-io \
23 ${PYTHON_PN}-logging \
24 ${PYTHON_PN}-math \
25 ${PYTHON_PN}-netclient \
26 ${PYTHON_PN}-stringold \
27 ${PYTHON_PN}-unittest \
28 ${PYTHON_PN}-unixadmin \
29 git \
30"
31
32BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..2126b5e92b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git_3.1.43.bb
@@ -0,0 +1,33 @@
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
new file mode 100644
index 0000000000..0b7eec876f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-gitdb_4.0.12.bb
@@ -0,0 +1,22 @@
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-gitdb_4.0.5.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb
deleted file mode 100644
index fe56bf9640..0000000000
--- a/meta/recipes-devtools/python/python3-gitdb_4.0.5.bb
+++ /dev/null
@@ -1,4 +0,0 @@
1inherit setuptools3
2require python-gitdb.inc
3
4SRC_URI[md5sum] = "0e2d3f34efece5deda7c55fede6507cc"
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
new file mode 100644
index 0000000000..5d8d82edd8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_25.1.0.bb
@@ -0,0 +1,13 @@
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.4.0.bb b/meta/recipes-devtools/python/python3-hatch-vcs_0.4.0.bb
new file mode 100644
index 0000000000..ac70295f45
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatch-vcs_0.4.0.bb
@@ -0,0 +1,13 @@
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] = "093810748fe01db0d451fabcf2c1ac2688caefd232d4ede967090b1c1b07d9f7"
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
new file mode 100644
index 0000000000..5239d8155c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatchling_1.27.0.bb
@@ -0,0 +1,17 @@
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
new file mode 100644
index 0000000000..21267c4ac2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/test_binary_search.py
@@ -0,0 +1,135 @@
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
new file mode 100644
index 0000000000..4d618865ac
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/test_rle.py
@@ -0,0 +1,101 @@
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.135.9.bb b/meta/recipes-devtools/python/python3-hypothesis_6.135.9.bb
new file mode 100644
index 0000000000..efc5229fbc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis_6.135.9.bb
@@ -0,0 +1,36 @@
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] = "a80a256268b8af3d34d62be30f6bf4a7d099b2b762621cc5f3f1de65e7b98543"
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-hypothesis_6.2.0.bb b/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb
deleted file mode 100644
index be9418386f..0000000000
--- a/meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb
+++ /dev/null
@@ -1,14 +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"
7
8inherit pypi setuptools3
9
10SRC_URI[sha256sum] = "c16fbde26b65c98a2464c48209b066c2f6dab5e8e38acd9d959021eb8d58b6c0"
11
12RDEPENDS_${PN} += "python3-attrs python3-core python3-sortedcontainers"
13
14BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-idna_3.10.bb b/meta/recipes-devtools/python/python3-idna_3.10.bb
new file mode 100644
index 0000000000..bd6529e720
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-idna_3.10.bb
@@ -0,0 +1,13 @@
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=204c0612e40a4dd46012a78d02c80fb1"
5
6SRC_URI[sha256sum] = "12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"
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
new file mode 100644
index 0000000000..7d37e2be24
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-imagesize_1.4.1.bb
@@ -0,0 +1,13 @@
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-importlib-metadata_3.4.0.bb b/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb
deleted file mode 100644
index 81f24e55c2..0000000000
--- a/meta/recipes-devtools/python/python3-importlib-metadata_3.4.0.bb
+++ /dev/null
@@ -1,20 +0,0 @@
1DESCRIPTION = "Read metadata from Python packages"
2HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e"
5
6inherit pypi setuptools3
7
8PYPI_PACKAGE = "importlib_metadata"
9UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
10
11SRC_URI[sha256sum] = "fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d"
12
13S = "${WORKDIR}/importlib_metadata-${PV}"
14
15DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native"
16RDEPENDS_${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2"
17RDEPENDS_${PN}_append_class-target = " python3-misc"
18RDEPENDS_${PN}_append_class-nativesdk = " python3-misc"
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
deleted file mode 100644
index af4291bbf4..0000000000
--- a/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
1SUMMARY = "A small and simple INI-file parser module"
2
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
5
6SRC_URI[md5sum] = "0b7f3be87481211c183eae095bcea6f1"
7SRC_URI[sha256sum] = "bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"
8
9inherit pypi setuptools3
diff --git a/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb b/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb
new file mode 100644
index 0000000000..d9b31aea4a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iniconfig_2.1.0.bb
@@ -0,0 +1,13 @@
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-iniparse/0001-Add-python-3-compatibility.patch b/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch
deleted file mode 100644
index 44090a20d0..0000000000
--- a/meta/recipes-devtools/python/python3-iniparse/0001-Add-python-3-compatibility.patch
+++ /dev/null
@@ -1,552 +0,0 @@
1From 8a98e4d44a5e59439a4b6bd95368cc362412c995 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 24 Mar 2017 18:06:08 +0200
4Subject: [PATCH] Add python 3 compatibility.
5
6Taken from
7http://pkgs.fedoraproject.org/cgit/rpms/python-iniparse.git/tree/python-iniparse-python3-compat.patch
8
9Upstream-Status: Inappropriate [upstream is defunct]
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11---
12 iniparse/__init__.py | 20 ++++++++++----------
13 iniparse/compat.py | 30 ++++++++++++++++--------------
14 iniparse/config.py | 16 ++++++++--------
15 iniparse/configparser.py | 7 +++++++
16 iniparse/ini.py | 20 ++++++++++++--------
17 iniparse/utils.py | 4 ++--
18 tests/__init__.py | 14 +++++++-------
19 tests/test_compat.py | 23 +++++++++++++++--------
20 tests/test_fuzz.py | 18 +++++++++---------
21 tests/test_ini.py | 8 ++++----
22 tests/test_misc.py | 4 ++--
23 tests/test_tidy.py | 2 +-
24 tests/test_unicode.py | 10 +++++-----
25 13 files changed, 98 insertions(+), 78 deletions(-)
26 create mode 100644 iniparse/configparser.py
27
28diff --git a/iniparse/__init__.py b/iniparse/__init__.py
29index 8de756f..7193f92 100644
30--- a/iniparse/__init__.py
31+++ b/iniparse/__init__.py
32@@ -3,17 +3,17 @@
33 # Copyright (c) 2007 Tim Lauridsen <tla@rasmil.dk>
34 # All Rights Reserved. See LICENSE-PSF & LICENSE for details.
35
36-from ini import INIConfig, change_comment_syntax
37-from config import BasicConfig, ConfigNamespace
38-from compat import RawConfigParser, ConfigParser, SafeConfigParser
39-from utils import tidy
40+from .ini import INIConfig, change_comment_syntax
41+from .config import BasicConfig, ConfigNamespace
42+from .compat import RawConfigParser, ConfigParser, SafeConfigParser
43+from .utils import tidy
44
45-from ConfigParser import DuplicateSectionError, \
46- NoSectionError, NoOptionError, \
47- InterpolationMissingOptionError, \
48- InterpolationDepthError, \
49- InterpolationSyntaxError, \
50- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
51+from .configparser import DuplicateSectionError, \
52+ NoSectionError, NoOptionError, \
53+ InterpolationMissingOptionError, \
54+ InterpolationDepthError, \
55+ InterpolationSyntaxError, \
56+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
57
58 __all__ = [
59 'BasicConfig', 'ConfigNamespace',
60diff --git a/iniparse/compat.py b/iniparse/compat.py
61index db89ed8..f95c25c 100644
62--- a/iniparse/compat.py
63+++ b/iniparse/compat.py
64@@ -12,19 +12,21 @@ The underlying INIConfig object can be accessed as cfg.data
65 """
66
67 import re
68-from ConfigParser import DuplicateSectionError, \
69- NoSectionError, NoOptionError, \
70- InterpolationMissingOptionError, \
71- InterpolationDepthError, \
72- InterpolationSyntaxError, \
73- DEFAULTSECT, MAX_INTERPOLATION_DEPTH
74+from .configparser import DuplicateSectionError, \
75+ NoSectionError, NoOptionError, \
76+ InterpolationMissingOptionError, \
77+ InterpolationDepthError, \
78+ InterpolationSyntaxError, \
79+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH
80
81 # These are imported only for compatiability.
82 # The code below does not reference them directly.
83-from ConfigParser import Error, InterpolationError, \
84- MissingSectionHeaderError, ParsingError
85+from .configparser import Error, InterpolationError, \
86+ MissingSectionHeaderError, ParsingError
87
88-import ini
89+import six
90+
91+from . import ini
92
93 class RawConfigParser(object):
94 def __init__(self, defaults=None, dict_type=dict):
95@@ -56,7 +58,7 @@ class RawConfigParser(object):
96 # The default section is the only one that gets the case-insensitive
97 # treatment - so it is special-cased here.
98 if section.lower() == "default":
99- raise ValueError, 'Invalid section name: %s' % section
100+ raise ValueError('Invalid section name: %s' % section)
101
102 if self.has_section(section):
103 raise DuplicateSectionError(section)
104@@ -88,7 +90,7 @@ class RawConfigParser(object):
105 filename may also be given.
106 """
107 files_read = []
108- if isinstance(filenames, basestring):
109+ if isinstance(filenames, six.string_types):
110 filenames = [filenames]
111 for filename in filenames:
112 try:
113@@ -143,7 +145,7 @@ class RawConfigParser(object):
114 def getboolean(self, section, option):
115 v = self.get(section, option)
116 if v.lower() not in self._boolean_states:
117- raise ValueError, 'Not a boolean: %s' % v
118+ raise ValueError('Not a boolean: %s' % v)
119 return self._boolean_states[v.lower()]
120
121 def has_option(self, section, option):
122@@ -234,7 +236,7 @@ class ConfigParser(RawConfigParser):
123 if "%(" in value:
124 try:
125 value = value % vars
126- except KeyError, e:
127+ except KeyError as e:
128 raise InterpolationMissingOptionError(
129 option, section, rawval, e.args[0])
130 else:
131@@ -283,7 +285,7 @@ class SafeConfigParser(ConfigParser):
132 _badpercent_re = re.compile(r"%[^%]|%$")
133
134 def set(self, section, option, value):
135- if not isinstance(value, basestring):
136+ if not isinstance(value, six.string_types):
137 raise TypeError("option values must be strings")
138 # check for bad percent signs:
139 # first, replace all "good" interpolations
140diff --git a/iniparse/config.py b/iniparse/config.py
141index 5cfa2ea..3b28549 100644
142--- a/iniparse/config.py
143+++ b/iniparse/config.py
144@@ -143,7 +143,7 @@ class BasicConfig(ConfigNamespace):
145
146 >>> n.aaa = 42
147 >>> del n.x
148- >>> print n
149+ >>> print(n)
150 aaa = 42
151 name.first = paramjit
152 name.last = oberoi
153@@ -152,7 +152,7 @@ class BasicConfig(ConfigNamespace):
154
155 >>> isinstance(n.name, ConfigNamespace)
156 True
157- >>> print n.name
158+ >>> print(n.name)
159 first = paramjit
160 last = oberoi
161 >>> sorted(list(n.name))
162@@ -160,7 +160,7 @@ class BasicConfig(ConfigNamespace):
163
164 Finally, values can be read from a file as follows:
165
166- >>> from StringIO import StringIO
167+ >>> from six import StringIO
168 >>> sio = StringIO('''
169 ... # comment
170 ... ui.height = 100
171@@ -171,7 +171,7 @@ class BasicConfig(ConfigNamespace):
172 ... ''')
173 >>> n = BasicConfig()
174 >>> n._readfp(sio)
175- >>> print n
176+ >>> print(n)
177 complexity = medium
178 data.secret.password = goodness=gracious me
179 have_python
180@@ -199,7 +199,7 @@ class BasicConfig(ConfigNamespace):
181
182 def __str__(self, prefix=''):
183 lines = []
184- keys = self._data.keys()
185+ keys = list(self._data.keys())
186 keys.sort()
187 for name in keys:
188 value = self._data[name]
189@@ -258,7 +258,7 @@ def update_config(target, source):
190 >>> n.ui.display_clock = True
191 >>> n.ui.display_qlength = True
192 >>> n.ui.width = 150
193- >>> print n
194+ >>> print(n)
195 playlist.expand_playlist = True
196 ui.display_clock = True
197 ui.display_qlength = True
198@@ -267,7 +267,7 @@ def update_config(target, source):
199 >>> from iniparse import ini
200 >>> i = ini.INIConfig()
201 >>> update_config(i, n)
202- >>> print i
203+ >>> print(i)
204 [playlist]
205 expand_playlist = True
206 <BLANKLINE>
207@@ -277,7 +277,7 @@ def update_config(target, source):
208 width = 150
209
210 """
211- for name in source:
212+ for name in sorted(source):
213 value = source[name]
214 if isinstance(value, ConfigNamespace):
215 if name in target:
216diff --git a/iniparse/configparser.py b/iniparse/configparser.py
217new file mode 100644
218index 0000000..c543d50
219--- /dev/null
220+++ b/iniparse/configparser.py
221@@ -0,0 +1,7 @@
222+try:
223+ from ConfigParser import *
224+ # not all objects get imported with __all__
225+ from ConfigParser import Error, InterpolationMissingOptionError
226+except ImportError:
227+ from configparser import *
228+ from configparser import Error, InterpolationMissingOptionError
229diff --git a/iniparse/ini.py b/iniparse/ini.py
230index 408354d..052d9e9 100644
231--- a/iniparse/ini.py
232+++ b/iniparse/ini.py
233@@ -7,7 +7,7 @@
234
235 Example:
236
237- >>> from StringIO import StringIO
238+ >>> from six import StringIO
239 >>> sio = StringIO('''# configure foo-application
240 ... [foo]
241 ... bar1 = qualia
242@@ -16,14 +16,14 @@ Example:
243 ... special = 1''')
244
245 >>> cfg = INIConfig(sio)
246- >>> print cfg.foo.bar1
247+ >>> print(cfg.foo.bar1)
248 qualia
249- >>> print cfg['foo-ext'].special
250+ >>> print(cfg['foo-ext'].special)
251 1
252 >>> cfg.foo.newopt = 'hi!'
253 >>> cfg.baz.enabled = 0
254
255- >>> print cfg
256+ >>> print(cfg)
257 # configure foo-application
258 [foo]
259 bar1 = qualia
260@@ -42,9 +42,11 @@ Example:
261 # Backward-compatiable with ConfigParser
262
263 import re
264-from ConfigParser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
265+from .configparser import DEFAULTSECT, ParsingError, MissingSectionHeaderError
266
267-import config
268+import six
269+
270+from . import config
271
272 class LineType(object):
273 line = None
274@@ -278,6 +280,8 @@ class LineContainer(object):
275 value = property(get_value, set_value)
276
277 def __str__(self):
278+ for c in self.contents:
279+ pass#print(c.__str__())
280 s = [x.__str__() for x in self.contents]
281 return '\n'.join(s)
282
283@@ -465,7 +469,7 @@ class INIConfig(config.ConfigNamespace):
284 self._sections = {}
285 if defaults is None: defaults = {}
286 self._defaults = INISection(LineContainer(), optionxformsource=self)
287- for name, value in defaults.iteritems():
288+ for name, value in defaults.items():
289 self._defaults[name] = value
290 if fp is not None:
291 self._readfp(fp)
292@@ -551,7 +555,7 @@ class INIConfig(config.ConfigNamespace):
293
294 for line in readline_iterator(fp):
295 # Check for BOM on first line
296- if linecount == 0 and isinstance(line, unicode):
297+ if linecount == 0 and isinstance(line, six.text_type):
298 if line[0] == u'\ufeff':
299 line = line[1:]
300 self._bom = True
301diff --git a/iniparse/utils.py b/iniparse/utils.py
302index 829fc28..f8b773a 100644
303--- a/iniparse/utils.py
304+++ b/iniparse/utils.py
305@@ -1,5 +1,5 @@
306-import compat
307-from ini import LineContainer, EmptyLine
308+from . import compat
309+from .ini import LineContainer, EmptyLine
310
311 def tidy(cfg):
312 """Clean up blank lines.
313diff --git a/tests/__init__.py b/tests/__init__.py
314index f1fa321..88689fb 100644
315--- a/tests/__init__.py
316+++ b/tests/__init__.py
317@@ -1,12 +1,12 @@
318 import unittest, doctest
319
320-import test_ini
321-import test_misc
322-import test_fuzz
323-import test_compat
324-import test_unicode
325-import test_tidy
326-import test_multiprocessing
327+from . import test_ini
328+from . import test_misc
329+from . import test_fuzz
330+from . import test_compat
331+from . import test_unicode
332+from . import test_tidy
333+from . import test_multiprocessing
334 from iniparse import config
335 from iniparse import ini
336
337diff --git a/tests/test_compat.py b/tests/test_compat.py
338index b8da3d5..b6dfb5c 100644
339--- a/tests/test_compat.py
340+++ b/tests/test_compat.py
341@@ -1,9 +1,16 @@
342 from iniparse import compat as ConfigParser
343-import StringIO
344+from six import StringIO
345+try:
346+ import UserDict
347+except ImportError:
348+ import collections as UserDict
349 import unittest
350-import UserDict
351
352-from test import test_support
353+import sys
354+if sys.version_info[0] < 3:
355+ from test import test_support
356+else:
357+ from test import support as test_support
358
359 class SortedDict(UserDict.UserDict):
360 def items(self):
361@@ -35,7 +42,7 @@ class TestCaseBase(unittest.TestCase):
362
363 def fromstring(self, string, defaults=None):
364 cf = self.newconfig(defaults)
365- sio = StringIO.StringIO(string)
366+ sio = StringIO(string)
367 cf.readfp(sio)
368 return cf
369
370@@ -161,7 +168,7 @@ class TestCaseBase(unittest.TestCase):
371 "No Section!\n")
372
373 def parse_error(self, exc, src):
374- sio = StringIO.StringIO(src)
375+ sio = StringIO(src)
376 self.assertRaises(exc, self.cf.readfp, sio)
377
378 def test_query_errors(self):
379@@ -181,7 +188,7 @@ class TestCaseBase(unittest.TestCase):
380 def get_error(self, exc, section, option):
381 try:
382 self.cf.get(section, option)
383- except exc, e:
384+ except exc as e:
385 return e
386 else:
387 self.fail("expected exception type %s.%s"
388@@ -227,7 +234,7 @@ class TestCaseBase(unittest.TestCase):
389 "foo: another very\n"
390 " long line"
391 )
392- output = StringIO.StringIO()
393+ output = StringIO()
394 cf.write(output)
395 self.assertEqual(
396 output.getvalue(),
397@@ -465,7 +472,7 @@ class SortedTestCase(RawConfigParserTestCase):
398 "o1=4\n"
399 "[a]\n"
400 "k=v\n")
401- output = StringIO.StringIO()
402+ output = StringIO()
403 self.cf.write(output)
404 self.assertEquals(output.getvalue(),
405 "[a]\n"
406diff --git a/tests/test_fuzz.py b/tests/test_fuzz.py
407index 5420dcc..b219500 100644
408--- a/tests/test_fuzz.py
409+++ b/tests/test_fuzz.py
410@@ -1,9 +1,10 @@
411 import re
412 import os
413 import random
414+import sys
415 import unittest
416-import ConfigParser
417-from StringIO import StringIO
418+from six import StringIO
419+from six.moves import configparser
420 from iniparse import compat, ini, tidy
421
422 # TODO:
423@@ -96,24 +97,25 @@ class test_fuzz(unittest.TestCase):
424 s = '\n'.join(good_lines)
425 cc = compat.RawConfigParser()
426 cc.readfp(StringIO(s))
427- cc_py = ConfigParser.RawConfigParser()
428+ cc_py = configparser.RawConfigParser()
429 cc_py.readfp(StringIO(s))
430 # compare the two configparsers
431 self.assertEqualConfig(cc_py, cc)
432 # check that tidy does not change semantics
433 tidy(cc)
434- cc_tidy = ConfigParser.RawConfigParser()
435+ cc_tidy = configparser.RawConfigParser()
436 cc_tidy.readfp(StringIO(str(cc.data)))
437 self.assertEqualConfig(cc_py, cc_tidy)
438 except AssertionError:
439 fname = 'fuzz-test-iter-%d.ini' % fuzz_iter
440- print 'Fuzz test failed at iteration', fuzz_iter
441- print 'Writing out failing INI file as', fname
442+ print('Fuzz test failed at iteration', fuzz_iter)
443+ print('Writing out failing INI file as', fname)
444 f = open(fname, 'w')
445 f.write(s)
446 f.close()
447 raise
448
449+ @unittest.skipIf(sys.version_info[0] > 2, 'http://code.google.com/p/iniparse/issues/detail?id=22#c9')
450 def assertEqualConfig(self, c1, c2):
451 self.assertEqualSorted(c1.sections(), c2.sections())
452 self.assertEqualSorted(c1.defaults().items(), c2.defaults().items())
453@@ -123,9 +125,7 @@ class test_fuzz(unittest.TestCase):
454 self.assertEqual(c1.get(sec, opt), c2.get(sec, opt))
455
456 def assertEqualSorted(self, l1, l2):
457- l1.sort()
458- l2.sort()
459- self.assertEqual(l1, l2)
460+ self.assertEqual(sorted(l1), sorted(l2))
461
462 class suite(unittest.TestSuite):
463 def __init__(self):
464diff --git a/tests/test_ini.py b/tests/test_ini.py
465index 6a76edb..07d4f4e 100644
466--- a/tests/test_ini.py
467+++ b/tests/test_ini.py
468@@ -1,5 +1,5 @@
469 import unittest
470-from StringIO import StringIO
471+from six import StringIO
472
473 from iniparse import ini
474 from iniparse import compat
475@@ -196,13 +196,13 @@ but = also me
476 self.assertEqual(p._data.find('section2').find('just').value, 'kidding')
477
478 itr = p._data.finditer('section1')
479- v = itr.next()
480+ v = next(itr)
481 self.assertEqual(v.find('help').value, 'yourself')
482 self.assertEqual(v.find('but').value, 'also me')
483- v = itr.next()
484+ v = next(itr)
485 self.assertEqual(v.find('help').value, 'me')
486 self.assertEqual(v.find('I\'m').value, 'desperate')
487- self.assertRaises(StopIteration, itr.next)
488+ self.assertRaises(StopIteration, next, itr)
489
490 self.assertRaises(KeyError, p._data.find, 'section')
491 self.assertRaises(KeyError, p._data.find('section2').find, 'ahem')
492diff --git a/tests/test_misc.py b/tests/test_misc.py
493index 31cf4da..96ef035 100644
494--- a/tests/test_misc.py
495+++ b/tests/test_misc.py
496@@ -1,9 +1,9 @@
497 import re
498 import unittest
499 import pickle
500-import ConfigParser
501+from six.moves import configparser
502+from six import StringIO
503 from textwrap import dedent
504-from StringIO import StringIO
505 from iniparse import compat, ini
506
507 class CaseSensitiveConfigParser(compat.ConfigParser):
508diff --git a/tests/test_tidy.py b/tests/test_tidy.py
509index 7304747..26b6cde 100644
510--- a/tests/test_tidy.py
511+++ b/tests/test_tidy.py
512@@ -1,6 +1,6 @@
513 import unittest
514 from textwrap import dedent
515-from StringIO import StringIO
516+from six import StringIO
517
518 from iniparse import tidy,INIConfig
519 from iniparse.ini import EmptyLine
520diff --git a/tests/test_unicode.py b/tests/test_unicode.py
521index a56fcab..14d4fbd 100644
522--- a/tests/test_unicode.py
523+++ b/tests/test_unicode.py
524@@ -1,5 +1,5 @@
525 import unittest
526-from StringIO import StringIO
527+import six
528 from iniparse import compat, ini
529
530 class test_unicode(unittest.TestCase):
531@@ -17,14 +17,14 @@ baz = Marc-Andr\202
532 """
533
534 def basic_tests(self, s, strable):
535- f = StringIO(s)
536+ f = six.StringIO(s)
537 i = ini.INIConfig(f)
538- self.assertEqual(unicode(i), s)
539- self.assertEqual(type(i.foo.bar), unicode)
540+ self.assertEqual(six.text_type(i), s)
541+ self.assertEqual(type(i.foo.bar), six.text_type)
542 if strable:
543 self.assertEqual(str(i), str(s))
544 else:
545- self.assertRaises(UnicodeEncodeError, lambda: str(i))
546+ self.assertRaises(UnicodeEncodeError, lambda: six.text_type(i).encode('ascii'))
547 return i
548
549 def test_ascii(self):
550--
5512.11.0
552
diff --git a/meta/recipes-devtools/python/python3-iniparse_0.4.bb b/meta/recipes-devtools/python/python3-iniparse_0.4.bb
deleted file mode 100644
index 47cd6598cc..0000000000
--- a/meta/recipes-devtools/python/python3-iniparse_0.4.bb
+++ /dev/null
@@ -1,17 +0,0 @@
1SUMMARY = "Accessing and Modifying INI files"
2HOMEPAGE = "https://pypi.org/project/iniparse/"
3LICENSE = "MIT & PSF"
4LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \
5 file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54"
6
7SRC_URI = "file://0001-Add-python-3-compatibility.patch "
8
9SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6"
10SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054"
11
12inherit pypi distutils3
13
14RDEPENDS_${PN} += "python3-core python3-six"
15DEPENDS += "python3-six"
16
17BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..a6715ed457
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer/0001-src-installer-utils.py-sort-entries-before-writing-o.patch
@@ -0,0 +1,27 @@
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
new file mode 100644
index 0000000000..7906769b90
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer/interpreter.patch
@@ -0,0 +1,71 @@
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
new file mode 100644
index 0000000000..6aaf1b3a37
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer_0.7.0.bb
@@ -0,0 +1,35 @@
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
new file mode 100644
index 0000000000..d7ab4a5a77
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iso8601_2.1.0.bb
@@ -0,0 +1,15 @@
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/run-ptest b/meta/recipes-devtools/python/python3-jinja2/run-ptest
deleted file mode 100644
index 5cec711696..0000000000
--- a/meta/recipes-devtools/python/python3-jinja2/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest
diff --git a/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb b/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb
deleted file mode 100644
index 19a4eee11a..0000000000
--- a/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb
+++ /dev/null
@@ -1,45 +0,0 @@
1DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python."
2
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462"
5
6SRC_URI[sha256sum] = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"
7
8PYPI_PACKAGE = "Jinja2"
9
10CLEANBROKEN = "1"
11
12inherit pypi setuptools3
13# ptest disabled in OE-Core for now due to missing dependencies
14
15
16SRC_URI += " \
17 file://run-ptest \
18"
19
20do_install_ptest() {
21 install -d ${D}${PTEST_PATH}/tests
22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
23}
24
25RDEPENDS_${PN}-ptest += " \
26 ${PYTHON_PN}-pytest \
27 ${PYTHON_PN}-unixadmin \
28"
29
30RDEPENDS_${PN} += " \
31 ${PYTHON_PN}-asyncio \
32 ${PYTHON_PN}-crypt \
33 ${PYTHON_PN}-io \
34 ${PYTHON_PN}-json \
35 ${PYTHON_PN}-markupsafe \
36 ${PYTHON_PN}-math \
37 ${PYTHON_PN}-netclient \
38 ${PYTHON_PN}-numbers\
39 ${PYTHON_PN}-pickle \
40 ${PYTHON_PN}-pprint \
41 ${PYTHON_PN}-shell \
42 ${PYTHON_PN}-threading \
43"
44
45BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..2e96eb0dcb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jinja2_3.1.6.bb
@@ -0,0 +1,41 @@
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
new file mode 100644
index 0000000000..7ebd69231f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest
@@ -0,0 +1,3 @@
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
new file mode 100644
index 0000000000..0a23dc3100
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonpointer_3.0.0.bb
@@ -0,0 +1,28 @@
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.4.1.bb b/meta/recipes-devtools/python/python3-jsonschema-specifications_2025.4.1.bb
new file mode 100644
index 0000000000..53805b0396
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema-specifications_2025.4.1.bb
@@ -0,0 +1,17 @@
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] = "630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"
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.24.0.bb b/meta/recipes-devtools/python/python3-jsonschema_4.24.0.bb
new file mode 100644
index 0000000000..7a5f4a09a6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema_4.24.0.bb
@@ -0,0 +1,49 @@
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] = "0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196"
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-pyrsistent \
43 python3-referencing \
44 python3-zipp \
45"
46
47RDEPENDS:${PN}-tests = "${PN}"
48
49BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..7b8775802f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c/0001-ffi-Insert-a-replacable-anchor-for-find_library.patch
@@ -0,0 +1,29 @@
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
new file mode 100644
index 0000000000..681e03a465
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c/new-libarchive.patch
@@ -0,0 +1,41 @@
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
new file mode 100644
index 0000000000..ddfbba7f94
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c/run-ptest
@@ -0,0 +1,6 @@
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_2.9.bb b/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb
deleted file mode 100644
index 3a2d8733e9..0000000000
--- a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb
+++ /dev/null
@@ -1,21 +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
8PYPI_PACKAGE = "libarchive-c"
9
10inherit pypi setuptools3
11
12SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532"
13SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60"
14
15RDEPENDS_${PN} += "\
16 libarchive \
17 ${PYTHON_PN}-ctypes \
18 ${PYTHON_PN}-mmap \
19"
20
21BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb b/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
new file mode 100644
index 0000000000..8b5de01b69
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
@@ -0,0 +1,45 @@
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.1.bb b/meta/recipes-devtools/python/python3-license-expression_30.4.1.bb
new file mode 100644
index 0000000000..ec613f6eaa
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-license-expression_30.4.1.bb
@@ -0,0 +1,30 @@
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] = "9f02105f9e0fcecba6a85dfbbed7d94ea1c3a70cf23ddbfb5adf3438a6f6fce0"
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_5.4.0.bb b/meta/recipes-devtools/python/python3-lxml_5.4.0.bb
new file mode 100644
index 0000000000..126fbe99b4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-lxml_5.4.0.bb
@@ -0,0 +1,44 @@
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] = "d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd"
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.22.bb b/meta/recipes-devtools/python/python3-magic_0.4.27.bb
index b828927599..2e561e69d7 100644
--- a/meta/recipes-devtools/python/python3-magic_0.4.22.bb
+++ b/meta/recipes-devtools/python/python3-magic_0.4.27.bb
@@ -11,12 +11,12 @@ PYPI_PACKAGE = "python-magic"
11 11
12inherit pypi setuptools3 12inherit pypi setuptools3
13 13
14SRC_URI[sha256sum] = "ca884349f2c92ce830e3f498c5b7c7051fe2942c3ee4332f65213b8ebff15a62" 14SRC_URI[sha256sum] = "c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b"
15 15
16RDEPENDS_${PN} += "file \ 16RDEPENDS:${PN} += "file \
17 ${PYTHON_PN}-ctypes \ 17 python3-ctypes \
18 ${PYTHON_PN}-io \ 18 python3-io \
19 ${PYTHON_PN}-logging \ 19 python3-logging \
20 ${PYTHON_PN}-shell" 20 python3-shell"
21 21
22BBCLASSEXTEND = "native" 22BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-mako_1.1.4.bb b/meta/recipes-devtools/python/python3-mako_1.1.4.bb
deleted file mode 100644
index 1645f37da4..0000000000
--- a/meta/recipes-devtools/python/python3-mako_1.1.4.bb
+++ /dev/null
@@ -1,18 +0,0 @@
1SUMMARY = "Templating library for Python"
2HOMEPAGE = "http://www.makotemplates.org/"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=943eb67718222db21d44a4ef1836675f"
6
7PYPI_PACKAGE = "Mako"
8
9inherit pypi setuptools3
10
11SRC_URI[sha256sum] = "17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab"
12
13RDEPENDS_${PN} = "${PYTHON_PN}-html \
14 ${PYTHON_PN}-netclient \
15 ${PYTHON_PN}-threading \
16"
17
18BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-mako_1.3.10.bb b/meta/recipes-devtools/python/python3-mako_1.3.10.bb
new file mode 100644
index 0000000000..2d937dc184
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-mako_1.3.10.bb
@@ -0,0 +1,27 @@
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.8.bb b/meta/recipes-devtools/python/python3-markdown_3.8.bb
new file mode 100644
index 0000000000..09c2f3435b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markdown_3.8.bb
@@ -0,0 +1,12 @@
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] = "7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f"
9
10BBCLASSEXTEND = "native nativesdk"
11
12RDEPENDS:${PN} += "python3-logging python3-setuptools"
diff --git a/meta/recipes-devtools/python/python3-markupsafe/run-ptest b/meta/recipes-devtools/python/python3-markupsafe/run-ptest
deleted file mode 100644
index 5cec711696..0000000000
--- a/meta/recipes-devtools/python/python3-markupsafe/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest
diff --git a/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb b/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb
deleted file mode 100644
index 403a98a43f..0000000000
--- a/meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb
+++ /dev/null
@@ -1,28 +0,0 @@
1DESCRIPTION = "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.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
5
6SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b"
7SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"
8
9PYPI_PACKAGE = "MarkupSafe"
10inherit pypi setuptools3
11# ptest disabled in OE-Core for now due to missing dependencies
12
13RDEPENDS_${PN} += "${PYTHON_PN}-stringold"
14
15BBCLASSEXTEND = "native nativesdk"
16
17SRC_URI += " \
18 file://run-ptest \
19"
20
21RDEPENDS_${PN}-ptest += " \
22 ${PYTHON_PN}-pytest \
23"
24
25do_install_ptest() {
26 install -d ${D}${PTEST_PATH}/tests
27 cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/
28}
diff --git a/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb b/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb
new file mode 100644
index 0000000000..b90dd84f48
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markupsafe_3.0.2.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..28551ff4ca
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin-crates.inc
@@ -0,0 +1,748 @@
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.0.bb b/meta/recipes-devtools/python/python3-maturin_1.9.0.bb
new file mode 100644
index 0000000000..e4147b9321
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin_1.9.0.bb
@@ -0,0 +1,42 @@
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] = "ccb9cb87f8df88d1bab8f49efe3fc77f0abb0639ea4b4ebf4f35549200d16b9e"
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
new file mode 100644
index 0000000000..742a2580a7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-meson-python_0.18.0.bb
@@ -0,0 +1,28 @@
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/run-ptest b/meta/recipes-devtools/python/python3-more-itertools/run-ptest
deleted file mode 100644
index 3385d68939..0000000000
--- a/meta/recipes-devtools/python/python3-more-itertools/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
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
new file mode 100644
index 0000000000..5447a7af8e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-more-itertools_10.6.0.bb
@@ -0,0 +1,18 @@
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-more-itertools_8.7.0.bb b/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb
deleted file mode 100644
index 0cb61915bf..0000000000
--- a/meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb
+++ /dev/null
@@ -1,23 +0,0 @@
1DESCRIPTION = "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] = "c5d6da9ca3ff65220c3bfd2a8db06d698f05d4d2b9be57e1deb2be5a45019713"
7
8inherit pypi setuptools3 ptest
9
10SRC_URI += " \
11 file://run-ptest \
12"
13
14RDEPENDS_${PN}-ptest += " \
15 ${PYTHON_PN}-pytest \
16"
17
18do_install_ptest() {
19 install -d ${D}${PTEST_PATH}/tests
20 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
21}
22
23BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-nose_1.3.7.bb b/meta/recipes-devtools/python/python3-nose_1.3.7.bb
deleted file mode 100644
index 13dbf96179..0000000000
--- a/meta/recipes-devtools/python/python3-nose_1.3.7.bb
+++ /dev/null
@@ -1,2 +0,0 @@
1inherit setuptools3
2require python-nose.inc
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
new file mode 100644
index 0000000000..3e08b43587
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch
@@ -0,0 +1,69 @@
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
new file mode 100644
index 0000000000..8b39b7bcfe
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch
@@ -0,0 +1,40 @@
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
new file mode 100644
index 0000000000..6e76dffc59
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/run-ptest
@@ -0,0 +1,15 @@
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.
14pytest --automake -m "not slow" -k "not test_mem_policy and not test_big_arrays" /usr/lib/python3.*/site-packages/numpy
15rm -rf "$PYTEST_DEBUG_TEMPROOT"
diff --git a/meta/recipes-devtools/python/python3-numpy_2.3.0.bb b/meta/recipes-devtools/python/python3-numpy_2.3.0.bb
new file mode 100644
index 0000000000..34a14f7ca6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy_2.3.0.bb
@@ -0,0 +1,76 @@
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] = "581f87f9e9e9db2cba2141400e160e9dd644ee248788d6f90636eeb8fd9260a6"
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# Remove references to buildpaths from numpy's __config__.py
27do_install:append() {
28 sed -i \
29 -e 's|${S}=||g' \
30 -e 's|${B}=||g' \
31 -e 's|${RECIPE_SYSROOT_NATIVE}=||g' \
32 -e 's|${RECIPE_SYSROOT_NATIVE}||g' \
33 -e 's|${RECIPE_SYSROOT}=||g' \
34 -e 's|${RECIPE_SYSROOT}||g' ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/__config__.py
35
36 nativepython3 -mcompileall -s ${D} ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/__config__.py
37}
38
39FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/_core/lib/*.a \
40 ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a \
41"
42
43# install what is needed for numpy.test()
44RDEPENDS:${PN} = "\
45 python3-compression \
46 python3-ctypes \
47 python3-datetime \
48 python3-difflib \
49 python3-doctest \
50 python3-email \
51 python3-json \
52 python3-misc \
53 python3-mmap \
54 python3-multiprocessing \
55 python3-netclient \
56 python3-numbers \
57 python3-pickle \
58 python3-pkgutil \
59 python3-pprint \
60 python3-pydoc \
61 python3-shell \
62 python3-threading \
63 python3-unittest \
64"
65RDEPENDS:${PN}-ptest += "\
66 ldd \
67 meson \
68 python3-hypothesis \
69 python3-pytest \
70 python3-resource \
71 python3-sortedcontainers \
72 python3-typing-extensions \
73 python3-unittest-automake-output \
74"
75
76BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-packaging/run-ptest.in b/meta/recipes-devtools/python/python3-packaging/run-ptest.in
new file mode 100644
index 0000000000..508538463b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-packaging/run-ptest.in
@@ -0,0 +1,2 @@
1#!/bin/sh
2pytest --automake IGNOREDTESTS
diff --git a/meta/recipes-devtools/python/python3-packaging_20.9.bb b/meta/recipes-devtools/python/python3-packaging_20.9.bb
deleted file mode 100644
index 92cf6a25fe..0000000000
--- a/meta/recipes-devtools/python/python3-packaging_20.9.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1DESCRIPTION = "Core utilities for Python packages"
2HOMEPAGE = "https://github.com/pypa/packaging"
3LICENSE = "Apache-2.0 & BSD"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91"
5
6SRC_URI[sha256sum] = "5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"
7
8inherit pypi setuptools3
9
10BBCLASSEXTEND = "native"
11
12DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
13RDEPENDS_${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-pyparsing"
diff --git a/meta/recipes-devtools/python/python3-packaging_25.0.bb b/meta/recipes-devtools/python/python3-packaging_25.0.bb
new file mode 100644
index 0000000000..9cb5c68f58
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-packaging_25.0.bb
@@ -0,0 +1,43 @@
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-pathlib2_2.3.5.bb b/meta/recipes-devtools/python/python3-pathlib2_2.3.5.bb
deleted file mode 100644
index a022701ad0..0000000000
--- a/meta/recipes-devtools/python/python3-pathlib2_2.3.5.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1DESCRIPTION = "Object-oriented filesystem paths"
2HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=042856c23a3e903b33bf361ea1cbe29a"
5
6SRC_URI[md5sum] = "f2bd0a363eb0f8fa0556f35c1d9e66fb"
7SRC_URI[sha256sum] = "6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868"
8
9inherit pypi setuptools3
10
11RDEPENDS_${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes"
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb b/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb
new file mode 100644
index 0000000000..2c80b24c28
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pathspec_0.12.1.bb
@@ -0,0 +1,13 @@
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/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch
index 688da6b204..218add1778 100644
--- a/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch
+++ b/meta/recipes-devtools/python/python3-pbr/0001-change-shebang-to-python3.patch
@@ -1,4 +1,4 @@
1From 09bd8368bf0d5385663a10eeb890131481681bdd Mon Sep 17 00:00:00 2001 1From df0a8c56f03004738599e06a7b5a1d2b67189848 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com> 2From: Changqing Li <changqing.li@windriver.com>
3Date: Thu, 23 Apr 2020 09:28:58 +0000 3Date: Thu, 23 Apr 2020 09:28:58 +0000
4Subject: [PATCH] change shebang to python3 4Subject: [PATCH] change shebang to python3
@@ -12,10 +12,10 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com>
12 2 files changed, 2 insertions(+), 2 deletions(-) 12 2 files changed, 2 insertions(+), 2 deletions(-)
13 13
14diff --git a/pbr/tests/test_integration.py b/pbr/tests/test_integration.py 14diff --git a/pbr/tests/test_integration.py b/pbr/tests/test_integration.py
15index 8e96f21..b07cbe3 100644 15index cb4b5e5..4cbfb19 100644
16--- a/pbr/tests/test_integration.py 16--- a/pbr/tests/test_integration.py
17+++ b/pbr/tests/test_integration.py 17+++ b/pbr/tests/test_integration.py
18@@ -150,7 +150,7 @@ class TestInstallWithoutPbr(base.BaseTestCase): 18@@ -171,7 +171,7 @@ class TestInstallWithoutPbr(base.BaseTestCase):
19 pkgs = { 19 pkgs = {
20 'pkgTest': { 20 'pkgTest': {
21 'setup.py': textwrap.dedent("""\ 21 'setup.py': textwrap.dedent("""\
@@ -25,10 +25,10 @@ index 8e96f21..b07cbe3 100644
25 setuptools.setup( 25 setuptools.setup(
26 name = 'pkgTest', 26 name = 'pkgTest',
27diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py 27diff --git a/pbr/tests/test_packaging.py b/pbr/tests/test_packaging.py
28index 07be547..f6a9412 100644 28index dddf7ae..bec03ce 100644
29--- a/pbr/tests/test_packaging.py 29--- a/pbr/tests/test_packaging.py
30+++ b/pbr/tests/test_packaging.py 30+++ b/pbr/tests/test_packaging.py
31@@ -206,7 +206,7 @@ class CreatePackages(fixtures.Fixture): 31@@ -219,7 +219,7 @@ class CreatePackages(fixtures.Fixture):
32 32
33 defaults = { 33 defaults = {
34 'setup.py': textwrap.dedent(six.u("""\ 34 'setup.py': textwrap.dedent(six.u("""\
@@ -37,6 +37,3 @@ index 07be547..f6a9412 100644
37 import setuptools 37 import setuptools
38 setuptools.setup( 38 setuptools.setup(
39 setup_requires=['pbr'], 39 setup_requires=['pbr'],
40--
412.24.1
42
diff --git a/meta/recipes-devtools/python/python3-pbr_5.4.4.bb b/meta/recipes-devtools/python/python3-pbr_5.4.4.bb
deleted file mode 100644
index 6f335ea341..0000000000
--- a/meta/recipes-devtools/python/python3-pbr_5.4.4.bb
+++ /dev/null
@@ -1,5 +0,0 @@
1inherit setuptools3
2require python-pbr.inc
3
4SRC_URI[md5sum] = "65cdc32e1a1ff56d481fc15aa8caf988"
5SRC_URI[sha256sum] = "139d2625547dbfa5fb0b81daebb39601c478c21956dc57e2e07b74450a8c506b"
diff --git a/meta/recipes-devtools/python/python3-pbr_6.1.0.bb b/meta/recipes-devtools/python/python3-pbr_6.1.0.bb
new file mode 100644
index 0000000000..a58b491a82
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr_6.1.0.bb
@@ -0,0 +1,4 @@
1inherit setuptools3
2require python-pbr.inc
3
4SRC_URI[sha256sum] = "788183e382e3d1d7707db08978239965e8b9e4e5ed42669bf4758186734d5f24"
diff --git a/meta/recipes-devtools/python/python3-pdm-backend_2.4.4.bb b/meta/recipes-devtools/python/python3-pdm-backend_2.4.4.bb
new file mode 100644
index 0000000000..71275f3ee8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pdm-backend_2.4.4.bb
@@ -0,0 +1,14 @@
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] = "f72551eeb319f74ca25856c24fb4026684eeb0dddd9df68482901ab0dc481258"
8
9inherit pypi python_setuptools_build_meta
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
new file mode 100644
index 0000000000..12afe8bcf4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pdm-build-locked_0.3.5.bb
@@ -0,0 +1,15 @@
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_setuptools_build_meta
9
10DEPENDS += " python3-pdm-backend-native"
11
12PYPI_PACKAGE = "pdm_build_locked"
13UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
14
15BBCLASSEXTEND += "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pdm_2.25.1.bb b/meta/recipes-devtools/python/python3-pdm_2.25.1.bb
new file mode 100644
index 0000000000..d9331ba72c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pdm_2.25.1.bb
@@ -0,0 +1,16 @@
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] = "3145251f37a3f94fa211ade992e7db7792da4c3e8e3eeeb1993d952adebe0b96"
8
9inherit pypi python_setuptools_build_meta
10
11DEPENDS += " \
12 python3-pdm-backend-native \
13 python3-pdm-build-locked-native \
14"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pefile/run-ptest b/meta/recipes-devtools/python/python3-pefile/run-ptest
new file mode 100644
index 0000000000..95ae72306f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pefile/run-ptest
@@ -0,0 +1,3 @@
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
new file mode 100644
index 0000000000..11765b3cb3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pefile_2024.8.26.bb
@@ -0,0 +1,18 @@
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/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
deleted file mode 100644
index 00cffe169b..0000000000
--- a/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch
+++ /dev/null
@@ -1,60 +0,0 @@
1From e7a00e9b5104ae2fbcea32a35c85760b77fae7e5 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Thu, 23 Apr 2020 09:42:10 +0000
4Subject: [PATCH] change shebang to python3
5
6Upstream-Status: Pending
7
8pip will drop support of python2 from 21.0
9
10Signed-off-by: Changqing Li <changqing.li@windriver.com>
11---
12 src/pip/_internal/__init__.py | 2 +-
13 src/pip/_vendor/appdirs.py | 2 +-
14 src/pip/_vendor/chardet/cli/chardetect.py | 2 +-
15 src/pip/_vendor/requests/certs.py | 2 +-
16 4 files changed, 4 insertions(+), 4 deletions(-)
17
18diff --git a/src/pip/_internal/__init__.py b/src/pip/_internal/__init__.py
19index 3aa8a46..e1ad179 100755
20--- a/src/pip/_internal/__init__.py
21+++ b/src/pip/_internal/__init__.py
22@@ -1,4 +1,4 @@
23-#!/usr/bin/env python
24+#!/usr/bin/env python3
25 import pip._internal.utils.inject_securetransport # noqa
26 from pip._internal.utils.typing import MYPY_CHECK_RUNNING
27
28diff --git a/src/pip/_vendor/appdirs.py b/src/pip/_vendor/appdirs.py
29index 3a52b75..ad3f81d 100644
30--- a/src/pip/_vendor/appdirs.py
31+++ b/src/pip/_vendor/appdirs.py
32@@ -1,4 +1,4 @@
33-#!/usr/bin/env python
34+#!/usr/bin/env python3
35 # -*- coding: utf-8 -*-
36 # Copyright (c) 2005-2010 ActiveState Software Inc.
37 # Copyright (c) 2013 Eddy Petrișor
38diff --git a/src/pip/_vendor/chardet/cli/chardetect.py b/src/pip/_vendor/chardet/cli/chardetect.py
39index c61136b..a497e98 100644
40--- a/src/pip/_vendor/chardet/cli/chardetect.py
41+++ b/src/pip/_vendor/chardet/cli/chardetect.py
42@@ -1,4 +1,4 @@
43-#!/usr/bin/env python
44+#!/usr/bin/env python3
45 """
46 Script which takes one or more file paths and reports on their detected
47 encodings
48diff --git a/src/pip/_vendor/requests/certs.py b/src/pip/_vendor/requests/certs.py
49index 06a594e..bfa7839 100644
50--- a/src/pip/_vendor/requests/certs.py
51+++ b/src/pip/_vendor/requests/certs.py
52@@ -1,4 +1,4 @@
53-#!/usr/bin/env python
54+#!/usr/bin/env python3
55 # -*- coding: utf-8 -*-
56
57 """
58--
592.24.1
60
diff --git a/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
new file mode 100644
index 0000000000..71836dca07
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
@@ -0,0 +1,36 @@
1From a715a622989ac182d18f6f2ada8201122282d889 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 b1fc705..c030e98 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_20.0.2.bb b/meta/recipes-devtools/python/python3-pip_20.0.2.bb
deleted file mode 100644
index 99eeea2edf..0000000000
--- a/meta/recipes-devtools/python/python3-pip_20.0.2.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1SUMMARY = "The PyPA recommended tool for installing Python packages"
2HOMEPAGE = "https://pypi.org/project/pip"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8ba06d529c955048e5ddd7c45459eb2e"
6
7DEPENDS += "python3 python3-setuptools-native"
8
9SRC_URI += "file://0001-change-shebang-to-python3.patch"
10
11SRC_URI[md5sum] = "7d42ba49b809604f0df3d55df1c3fd86"
12SRC_URI[sha256sum] = "7db0c8ea4c7ea51c8049640e8e6e7fde949de672bfa4949920675563a5a6967f"
13
14inherit pypi distutils3
15
16do_install_append() {
17 # Install as pip3 and leave pip2 as default
18 rm ${D}/${bindir}/pip
19}
20
21RDEPENDS_${PN} = "\
22 python3-compile \
23 python3-io \
24 python3-html \
25 python3-json \
26 python3-netserver \
27 python3-setuptools \
28 python3-unixadmin \
29 python3-xmlrpc \
30 python3-pickle \
31"
32
33BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pip_25.1.1.bb b/meta/recipes-devtools/python/python3-pip_25.1.1.bb
new file mode 100644
index 0000000000..431ba182c6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip_25.1.1.bb
@@ -0,0 +1,51 @@
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/typing_extensions.LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2 \
23 file://src/pip/_vendor/urllib3/LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c \
24 "
25
26inherit pypi python_setuptools_build_meta
27
28SRC_URI += "file://no_shebang_mangling.patch"
29
30SRC_URI[sha256sum] = "3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077"
31
32RDEPENDS:${PN} = "\
33 python3-compile \
34 python3-html \
35 python3-image \
36 python3-io \
37 python3-json \
38 python3-multiprocessing \
39 python3-netserver \
40 python3-pickle \
41 python3-setuptools \
42 python3-tomllib \
43 python3-unixadmin \
44 python3-xmlrpc \
45"
46
47BBCLASSEXTEND = "native nativesdk"
48
49# This used to use the bootstrap install which didn't compile. Until we bump the
50# tmpdir version we can't compile the native otherwise the sysroot unpack fails
51INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-pluggy/run-ptest b/meta/recipes-devtools/python/python3-pluggy/run-ptest
deleted file mode 100644
index b63c4de0d9..0000000000
--- a/meta/recipes-devtools/python/python3-pluggy/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb b/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb
deleted file mode 100644
index d3e0365ca1..0000000000
--- a/meta/recipes-devtools/python/python3-pluggy_0.13.1.bb
+++ /dev/null
@@ -1,27 +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[md5sum] = "7f610e28b8b34487336b585a3dfb803d"
7SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"
8
9DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
10RDEPENDS_${PN} += "${PYTHON_PN}-importlib-metadata \
11 ${PYTHON_PN}-more-itertools \
12"
13
14inherit pypi ptest setuptools3
15
16SRC_URI += " \
17 file://run-ptest \
18"
19
20RDEPENDS_${PN}-ptest += " \
21 ${PYTHON_PN}-pytest \
22"
23
24do_install_ptest() {
25 install -d ${D}${PTEST_PATH}/testing
26 cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/
27}
diff --git a/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb b/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb
new file mode 100644
index 0000000000..b8e4bbc75b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pluggy_1.6.0.bb
@@ -0,0 +1,14 @@
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
new file mode 100644
index 0000000000..2c5fa3f215
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ply_3.11.bb
@@ -0,0 +1,17 @@
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
new file mode 100644
index 0000000000..12c4751de8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-poetry-core_2.1.3.bb
@@ -0,0 +1,41 @@
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
new file mode 100644
index 0000000000..60c02de488
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
@@ -0,0 +1,10 @@
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
new file mode 100644
index 0000000000..a2af198083
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-psutil_7.0.0.bb
@@ -0,0 +1,43 @@
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-py_1.10.0.bb b/meta/recipes-devtools/python/python3-py_1.10.0.bb
deleted file mode 100644
index 4e16ad1743..0000000000
--- a/meta/recipes-devtools/python/python3-py_1.10.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
1SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities"
2HOMEPAGE = "http://py.readthedocs.io/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
5
6SRC_URI[sha256sum] = "21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"
7
8DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
9
10inherit pypi setuptools3
11
12BBCLASSEXTEND = "native nativesdk"
13
14RDEPENDS_${PN} += "${PYTHON_PN}-netclient"
diff --git a/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb b/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb
new file mode 100644
index 0000000000..820ef27d2b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyasn1_0.6.1.bb
@@ -0,0 +1,17 @@
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.20.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.28.0.bb
index 8987b7a428..498c4db586 100644
--- a/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb
+++ b/meta/recipes-devtools/python/python3-pycairo_1.28.0.bb
@@ -2,7 +2,7 @@ SUMMARY = "Python bindings for the Cairo canvas library"
2HOMEPAGE = "http://cairographics.org/pycairo" 2HOMEPAGE = "http://cairographics.org/pycairo"
3BUGTRACKER = "http://bugs.freedesktop.org" 3BUGTRACKER = "http://bugs.freedesktop.org"
4SECTION = "python-devel" 4SECTION = "python-devel"
5LICENSE = "LGPLv2.1 & MPLv1.1" 5LICENSE = "LGPL-2.1-only & MPL-1.1"
6LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \ 6LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \
7 file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \ 7 file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \
8 file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325" 8 file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325"
@@ -10,18 +10,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \
10# cairo >= 1.14 10# cairo >= 1.14
11DEPENDS = "cairo python3" 11DEPENDS = "cairo python3"
12 12
13SRC_URI = "https://github.com/pygobject/pycairo/releases/download/v${PV}/pycairo-${PV}.tar.gz" 13SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/pycairo-${PV}.tar.gz"
14UPSTREAM_CHECK_URI = "https://github.com/pygobject/pycairo/releases/" 14GITHUB_BASE_URI = "https://github.com/pygobject/pycairo/releases/"
15 15
16SRC_URI[md5sum] = "a1f9b661a0000c2f42281db933284451" 16SRC_URI[sha256sum] = "26ec5c6126781eb167089a123919f87baa2740da2cca9098be8b3a6b91cc5fbc"
17SRC_URI[sha256sum] = "5695a10cb7f9ae0d01f665b56602a845b0a8cb17e2123bfece10c2e58552468c"
18 17
19S = "${WORKDIR}/pycairo-${PV}" 18S = "${UNPACKDIR}/pycairo-${PV}"
20 19
21inherit meson pkgconfig python3targetconfig 20inherit meson pkgconfig python3targetconfig github-releases
22 21
23CFLAGS += "-fPIC" 22CFLAGS += "-fPIC"
24 23
25BBCLASSEXTEND = "native" 24BBCLASSEXTEND = "native"
26 25
27FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*" 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
new file mode 100644
index 0000000000..0be39ea383
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycparser_2.22.bb
@@ -0,0 +1,19 @@
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.10.1.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb
deleted file mode 100644
index 28448b84fe..0000000000
--- a/meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb
+++ /dev/null
@@ -1,5 +0,0 @@
1require python-pycryptodome.inc
2inherit setuptools3
3
4SRC_URI[sha256sum] = "3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673"
5
diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb
new file mode 100644
index 0000000000..2528162ff8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodome_3.23.0.bb
@@ -0,0 +1,5 @@
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.10.1.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb
index a6b3b3e935..43dba3faa3 100644
--- a/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb
+++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.23.0.bb
@@ -1,9 +1,9 @@
1require python-pycryptodome.inc 1require python-pycryptodome.inc
2inherit setuptools3 2inherit python_setuptools_build_meta
3 3
4SRC_URI[sha256sum] = "541cd3e3e252fb19a7b48f420b798b53483302b7fe4d9954c947605d0a263d62" 4SRC_URI[sha256sum] = "71909758f010c82bc99b0abf4ea12012c98962fbf0583c2164f8b84533c2e4da"
5 5
6FILES_${PN}-tests = " \ 6FILES:${PN}-tests = " \
7 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \ 7 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \
8 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \ 8 ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \
9" 9"
diff --git a/meta/recipes-devtools/python/python3-pyelftools_0.27.bb b/meta/recipes-devtools/python/python3-pyelftools_0.27.bb
deleted file mode 100644
index 0cfd99504b..0000000000
--- a/meta/recipes-devtools/python/python3-pyelftools_0.27.bb
+++ /dev/null
@@ -1,13 +0,0 @@
1DESCRIPTION = "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] = "cde854e662774c5457d688ca41615f6594187ba7067af101232df889a6b7a66b"
8
9PYPI_PACKAGE = "pyelftools"
10
11inherit pypi setuptools3
12
13BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-pyelftools_0.32.bb b/meta/recipes-devtools/python/python3-pyelftools_0.32.bb
new file mode 100644
index 0000000000..13e9efff8d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyelftools_0.32.bb
@@ -0,0 +1,15 @@
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.1.bb b/meta/recipes-devtools/python/python3-pygments_2.19.1.bb
new file mode 100644
index 0000000000..de24ed3f11
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygments_2.19.1.bb
@@ -0,0 +1,13 @@
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] = "61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"
9
10inherit pypi
11
12BBCLASSEXTEND = "native nativesdk"
13
diff --git a/meta/recipes-devtools/python/python3-pygments_2.8.0.bb b/meta/recipes-devtools/python/python3-pygments_2.8.0.bb
deleted file mode 100644
index 6c8afc5095..0000000000
--- a/meta/recipes-devtools/python/python3-pygments_2.8.0.bb
+++ /dev/null
@@ -1,19 +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=98419e351433ac106a24e3ad435930bc"
6
7inherit setuptools3
8SRC_URI[sha256sum] = "37a13ba168a02ac54cc5891a42b1caec333e59b66addb7fa633ea8a6d73445c0"
9
10DEPENDS += "\
11 ${PYTHON_PN} \
12 "
13
14PYPI_PACKAGE = "Pygments"
15
16inherit pypi
17
18BBCLASSEXTEND = "native nativesdk"
19
diff --git a/meta/recipes-devtools/python/python3-pygobject/0001-Do-not-build-tests.patch b/meta/recipes-devtools/python/python3-pygobject/0001-Do-not-build-tests.patch
deleted file mode 100644
index 0f2465bb52..0000000000
--- a/meta/recipes-devtools/python/python3-pygobject/0001-Do-not-build-tests.patch
+++ /dev/null
@@ -1,30 +0,0 @@
1From c125a806de951359ab7e302b0584f7c92fa451ad Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 12 Apr 2019 16:25:58 +0200
4Subject: [PATCH] Do not build tests
5
6They require installing tests from g-i, which we do not do.
7
8Upstream-Status: Inappropriate [oe-core specific]
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10---
11 meson.build | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/meson.build b/meson.build
15index 278fa16f..aacbd4a2 100644
16--- a/meson.build
17+++ b/meson.build
18@@ -175,6 +175,6 @@ configure_file(input : 'PKG-INFO.in',
19 subdir('gi')
20 subdir('pygtkcompat')
21 with_tests = get_option('tests')
22-if with_tests
23-subdir('tests')
24-endif
25+#if with_tests
26+#subdir('tests')
27+#endif
28--
292.17.1
30
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
deleted file mode 100644
index b4427050f5..0000000000
--- a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb
+++ /dev/null
@@ -1,32 +0,0 @@
1SUMMARY = "Python GObject bindings"
2SECTION = "devel/python"
3LICENSE = "LGPLv2.1"
4LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7"
5
6GNOMEBASEBUILDCLASS = "meson"
7inherit gnomebase distutils3-base gobject-introspection upstream-version-is-even
8
9DEPENDS += "python3 glib-2.0"
10
11SRCNAME="pygobject"
12
13SRC_URI = " \
14 http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \
15 file://0001-Do-not-build-tests.patch \
16"
17SRC_URI[sha256sum] = "0372d1bb9122fc19f500a249b1f38c2bb67485000f5887497b4b205b3e7084d5"
18
19UNKNOWN_CONFIGURE_WHITELIST = "introspection"
20
21S = "${WORKDIR}/${SRCNAME}-${PV}"
22
23PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
24
25RDEPENDS_${PN} += "python3-pkgutil"
26
27# python3-pycairo is checked on configuration -> DEPENDS
28# we don't link against python3-pycairo -> RDEPENDS
29PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
30
31BBCLASSEXTEND = "native"
32PACKAGECONFIG_class-native = ""
diff --git a/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb b/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb
new file mode 100644
index 0000000000..42b071ca08
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygobject_3.52.3.bb
@@ -0,0 +1,41 @@
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
new file mode 100644
index 0000000000..c1f571c552
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyopenssl_25.1.0.bb
@@ -0,0 +1,21 @@
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_2.4.7.bb b/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
deleted file mode 100644
index d0c3d0b424..0000000000
--- a/meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb
+++ /dev/null
@@ -1,3 +0,0 @@
1inherit setuptools3
2require python-pyparsing.inc
3
diff --git a/meta/recipes-devtools/python/python3-pyparsing_3.2.3.bb b/meta/recipes-devtools/python/python3-pyparsing_3.2.3.bb
new file mode 100644
index 0000000000..459b01fd94
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyparsing_3.2.3.bb
@@ -0,0 +1,28 @@
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] = "b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be"
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
new file mode 100644
index 0000000000..c68760e293
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyproject-hooks_1.2.0.bb
@@ -0,0 +1,25 @@
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
new file mode 100644
index 0000000000..4c58da3c07
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyproject-metadata_0.9.1.bb
@@ -0,0 +1,28 @@
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_setuptools_build_meta
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
new file mode 100644
index 0000000000..7de70942a9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyrsistent_0.20.0.bb
@@ -0,0 +1,14 @@
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
new file mode 100644
index 0000000000..dbf0fb0ee6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pysocks_1.7.1.bb
@@ -0,0 +1,21 @@
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
new file mode 100644
index 0000000000..58212bfb1c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest-subtests_0.14.2.bb
@@ -0,0 +1,24 @@
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/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch b/meta/recipes-devtools/python/python3-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
deleted file mode 100644
index 1abd531c62..0000000000
--- a/meta/recipes-devtools/python/python3-pytest/0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch
+++ /dev/null
@@ -1,36 +0,0 @@
1From ead04f2da75efeca3369feff6161ea4a8baecbc9 Mon Sep 17 00:00:00 2001
2From: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
3Date: Wed, 28 Aug 2019 16:12:27 +0900
4Subject: [PATCH] setup.py: remove the setup_requires for setuptools-scm
5
6The setup_requires argument forces the download of the egg file for setuptools-scm
7during the do_compile phase. This download is incompatible with the typical fetch
8and mirror structure. The only usage of scm is the generation of the _version.py
9file and in the release tarball it is already correctly created
10
11Upstream-Status: Inappropriate [oe specific]
12
13Signed-off-by: Derek Straka <derek@asterius.io>
14
15Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com>
16
17Rebase for pytest 6.1.0.
18
19Signed-off-by: Kai Kang <kai.kang@windriver.com>
20
21---
22 setup.cfg | 1 -
23 1 file changed, 1 deletion(-)
24
25diff --git a/setup.cfg b/setup.cfg
26index 6ed0792..0137090 100644
27--- a/setup.cfg
28+++ b/setup.cfg
29@@ -53,7 +53,6 @@ package_dir =
30 =src
31 setup_requires =
32 setuptools>=>=42.0
33- setuptools-scm>=3.4
34 zip_safe = no
35
36 [options.entry_points]
diff --git a/meta/recipes-devtools/python/python3-pytest_6.2.2.bb b/meta/recipes-devtools/python/python3-pytest_6.2.2.bb
deleted file mode 100644
index 392c20d039..0000000000
--- a/meta/recipes-devtools/python/python3-pytest_6.2.2.bb
+++ /dev/null
@@ -1,39 +0,0 @@
1SUMMARY = "Simple powerful testing with python"
2
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b"
5
6SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch "
7
8SRC_URI[sha256sum] = "9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9"
9
10inherit update-alternatives pypi setuptools3
11
12RDEPENDS_${PN}_class-target += " \
13 ${PYTHON_PN}-atomicwrites \
14 ${PYTHON_PN}-attrs \
15 ${PYTHON_PN}-debugger \
16 ${PYTHON_PN}-doctest \
17 ${PYTHON_PN}-importlib-metadata \
18 ${PYTHON_PN}-iniconfig \
19 ${PYTHON_PN}-json \
20 ${PYTHON_PN}-more-itertools \
21 ${PYTHON_PN}-packaging \
22 ${PYTHON_PN}-pathlib2 \
23 ${PYTHON_PN}-pluggy \
24 ${PYTHON_PN}-py \
25 ${PYTHON_PN}-setuptools \
26 ${PYTHON_PN}-six \
27 ${PYTHON_PN}-toml \
28 ${PYTHON_PN}-wcwidth \
29"
30
31ALTERNATIVE_${PN} += "py.test pytest"
32
33NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
34ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
35
36ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
37ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
38
39BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest_8.4.1.bb b/meta/recipes-devtools/python/python3-pytest_8.4.1.bb
new file mode 100644
index 0000000000..1f98b6d87e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest_8.4.1.bb
@@ -0,0 +1,35 @@
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] = "7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"
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
new file mode 100644
index 0000000000..86bfceadc8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytz_2025.2.bb
@@ -0,0 +1,30 @@
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
new file mode 100644
index 0000000000..7ebe3f7d9f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyyaml_6.0.2.bb
@@ -0,0 +1,24 @@
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
new file mode 100644
index 0000000000..01841cda4f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rdflib_7.1.4.bb
@@ -0,0 +1,21 @@
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.36.2.bb b/meta/recipes-devtools/python/python3-referencing_0.36.2.bb
new file mode 100644
index 0000000000..388c1887fb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-referencing_0.36.2.bb
@@ -0,0 +1,14 @@
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] = "df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"
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
new file mode 100644
index 0000000000..492177a9c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests/environment.d-python3-requests.sh
@@ -0,0 +1,11 @@
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.4.bb b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
new file mode 100644
index 0000000000..49d44298f6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests_2.32.4.bb
@@ -0,0 +1,35 @@
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] = "27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422"
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
new file mode 100644
index 0000000000..1e60c763d8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb
@@ -0,0 +1,21 @@
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
new file mode 100644
index 0000000000..c13a765660
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
@@ -0,0 +1,10 @@
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
new file mode 100644
index 0000000000..9a76df0de2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-roman-numerals-py_3.1.0.bb
@@ -0,0 +1,12 @@
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
new file mode 100644
index 0000000000..0a6fbb1bd6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rpds-py-crates.inc
@@ -0,0 +1,54 @@
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.22 \
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.0 \
16 crate://crates.io/pyo3-build-config/0.25.0 \
17 crate://crates.io/pyo3-ffi/0.25.0 \
18 crate://crates.io/pyo3-macros/0.25.0 \
19 crate://crates.io/pyo3-macros-backend/0.25.0 \
20 crate://crates.io/python3-dll-a/0.2.13 \
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.22.sha256sum] = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1"
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.0.sha256sum] = "f239d656363bcee73afef85277f1b281e8ac6212a1d42aa90e55b90ed43c47a4"
42SRC_URI[pyo3-build-config-0.25.0.sha256sum] = "755ea671a1c34044fa165247aaf6f419ca39caa6003aee791a0df2713d8f1b6d"
43SRC_URI[pyo3-ffi-0.25.0.sha256sum] = "fc95a2e67091e44791d4ea300ff744be5293f394f1bafd9f78c080814d35956e"
44SRC_URI[pyo3-macros-0.25.0.sha256sum] = "a179641d1b93920829a62f15e87c0ed791b6c8db2271ba0fd7c2686090510214"
45SRC_URI[pyo3-macros-backend-0.25.0.sha256sum] = "9dff85ebcaab8c441b0e3f7ae40a6963ecea8a9f5e74f647e33fcf5ec9a1e89e"
46SRC_URI[python3-dll-a-0.2.13.sha256sum] = "49fe4227a288cf9493942ad0220ea3f185f4d1f2a14f197f7344d6d02f4ed4ed"
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.25.1.bb b/meta/recipes-devtools/python/python3-rpds-py_0.25.1.bb
new file mode 100644
index 0000000000..efc1d4c01c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rpds-py_0.25.1.bb
@@ -0,0 +1,22 @@
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] = "8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3"
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.14.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.14.bb
new file mode 100644
index 0000000000..e7ac24abb8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.14.bb
@@ -0,0 +1,20 @@
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] = "7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7"
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-native_3.1.2.bb b/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb
deleted file mode 100644
index 9e127304d6..0000000000
--- a/meta/recipes-devtools/python/python3-scons-native_3.1.2.bb
+++ /dev/null
@@ -1,7 +0,0 @@
1require python3-scons_${PV}.bb
2inherit native python3native
3DEPENDS = "python3-native python3-setuptools-native"
4
5do_install_append() {
6 create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
7}
diff --git a/meta/recipes-devtools/python/python3-scons_3.1.2.bb b/meta/recipes-devtools/python/python3-scons_3.1.2.bb
deleted file mode 100644
index ce117a92d4..0000000000
--- a/meta/recipes-devtools/python/python3-scons_3.1.2.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1SUMMARY = "Software Construction tool (make/autotools replacement)"
2SECTION = "devel/python"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-python3-scons-${PV};md5=e14e1b33428df24a40a782ae142785d0"
5
6# pypi package does not have a valid license file
7SRC_URI += "https://raw.githubusercontent.com/SCons/scons/${PV}/LICENSE;downloadfilename=LICENSE-python3-scons-${PV};name=license"
8
9SRC_URI[md5sum] = "f9c4ad06dcf1427be95472eaf380c81a"
10SRC_URI[sha256sum] = "8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f"
11SRC_URI[license.md5sum] = "e14e1b33428df24a40a782ae142785d0"
12SRC_URI[license.sha256sum] = "72ed889165fb28378cadac14552be4a959f1ebab6b148abb5dd2b49712c3c6f6"
13
14S = "${WORKDIR}/scons-${PV}"
15
16UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html"
17UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
18
19inherit pypi setuptools3
20
21do_install_prepend() {
22 sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${S}/script/*
23}
24
25RDEPENDS_${PN}_class-target = "\
26 python3-core \
27 python3-fcntl \
28 python3-io \
29 python3-json \
30 python3-shell \
31 python3-pickle \
32 python3-pprint \
33 "
diff --git a/meta/recipes-devtools/python/python3-scons_4.9.1.bb b/meta/recipes-devtools/python/python3-scons_4.9.1.bb
new file mode 100644
index 0000000000..1eac1ce5a9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons_4.9.1.bb
@@ -0,0 +1,29 @@
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
new file mode 100644
index 0000000000..78763a911e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb
@@ -0,0 +1,19 @@
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.11.1.bb b/meta/recipes-devtools/python/python3-setuptools-rust_1.11.1.bb
new file mode 100644
index 0000000000..417ded009e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-rust_1.11.1.bb
@@ -0,0 +1,31 @@
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] = "7dabc4392252ced314b8050d63276e05fdc5d32398fc7d3cce1f6a6ac35b76c0"
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_5.0.1.bb b/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb
deleted file mode 100644
index 406404ec69..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb
+++ /dev/null
@@ -1,24 +0,0 @@
1SUMMARY = "the blessed package to manage your versions by scm tags"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
4
5SRC_URI[sha256sum] = "c85b6b46d0edd40d2301038cdea96bb6adc14d62ef943e75afb08b3e7bcf142a"
6
7PYPI_PACKAGE = "setuptools_scm"
8inherit pypi setuptools3
9
10UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar"
11
12RDEPENDS_${PN} = "\
13 ${PYTHON_PN}-debugger \
14 ${PYTHON_PN}-json \
15 ${PYTHON_PN}-py \
16 ${PYTHON_PN}-setuptools \
17 ${PYTHON_PN}-toml \
18"
19RDEPENDS_${PN}_class-native = "\
20 ${PYTHON_PN}-setuptools-native \
21 ${PYTHON_PN}-toml-native \
22"
23
24BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..70eaf312d3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-scm_8.3.1.bb
@@ -0,0 +1,31 @@
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 python3-typing-extensions-native"
17
18RDEPENDS:${PN} = "\
19 python3-packaging \
20 python3-pip \
21 python3-pyparsing \
22 python3-setuptools \
23 python3-typing-extensions \
24"
25
26RDEPENDS:${PN}:append:class-target = " \
27 python3-debugger \
28 python3-json \
29"
30
31BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..39153883b0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch
@@ -0,0 +1,58 @@
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/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-setuptools/0001-change-shebang-to-python3.patch
deleted file mode 100644
index 6dcf52771b..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools/0001-change-shebang-to-python3.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From c39d0896930e25c224cc897660fc8511ccae30c8 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Thu, 23 Apr 2020 10:01:12 +0000
4Subject: [PATCH] change shebang to python3
5
6Upstream-Status: Pending
7
8Signed-off-by: Changqing Li <changqing.li@windriver.com>
9---
10 pkg_resources/_vendor/appdirs.py | 2 +-
11 1 files changed, 1 insertions(+), 1 deletions(-)
12
13diff --git a/pkg_resources/_vendor/appdirs.py b/pkg_resources/_vendor/appdirs.py
14index ae67001..933e398 100644
15--- a/pkg_resources/_vendor/appdirs.py
16+++ b/pkg_resources/_vendor/appdirs.py
17@@ -1,4 +1,4 @@
18-#!/usr/bin/env python
19+#!/usr/bin/env python3
20 # -*- coding: utf-8 -*-
21 # Copyright (c) 2005-2010 ActiveState Software Inc.
22 # Copyright (c) 2013 Eddy Petrișor
23--
242.24.1
25
diff --git a/meta/recipes-devtools/python/python3-setuptools_53.0.0.bb b/meta/recipes-devtools/python/python3-setuptools_53.0.0.bb
deleted file mode 100644
index 811c8a5900..0000000000
--- a/meta/recipes-devtools/python/python3-setuptools_53.0.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;beginline=1;endline=19;md5=7a7126e068206290f3fe9f8d6c713ea6"
6
7inherit pypi setuptools3
8
9SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
10
11SRC_URI += "file://0001-change-shebang-to-python3.patch"
12
13SRC_URI[sha256sum] = "1b18ef17d74ba97ac9c0e4b4265f123f07a8ae85d9cd093949fa056d3eeeead5"
14
15DEPENDS += "${PYTHON_PN}"
16
17RDEPENDS_${PN} = "\
18 ${PYTHON_PN}-2to3 \
19 ${PYTHON_PN}-compile \
20 ${PYTHON_PN}-compression \
21 ${PYTHON_PN}-ctypes \
22 ${PYTHON_PN}-distutils \
23 ${PYTHON_PN}-email \
24 ${PYTHON_PN}-html \
25 ${PYTHON_PN}-json \
26 ${PYTHON_PN}-netserver \
27 ${PYTHON_PN}-numbers \
28 ${PYTHON_PN}-pickle \
29 ${PYTHON_PN}-pkg-resources \
30 ${PYTHON_PN}-pkgutil \
31 ${PYTHON_PN}-plistlib \
32 ${PYTHON_PN}-shell \
33 ${PYTHON_PN}-stringold \
34 ${PYTHON_PN}-threading \
35 ${PYTHON_PN}-unittest \
36 ${PYTHON_PN}-xml \
37"
38
39do_install_prepend() {
40 install -d ${D}${PYTHON_SITEPACKAGES_DIR}
41}
42
43BBCLASSEXTEND = "native nativesdk"
44
45# The pkg-resources module can be used by itself, without the package downloader
46# and easy_install. Ship it in a separate package so that it can be used by
47# minimal distributions.
48PACKAGES =+ "${PYTHON_PN}-pkg-resources "
49FILES_${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
50RDEPENDS_${PYTHON_PN}-pkg-resources = "\
51 ${PYTHON_PN}-compression \
52 ${PYTHON_PN}-email \
53 ${PYTHON_PN}-plistlib \
54 ${PYTHON_PN}-pprint \
55"
diff --git a/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb b/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb
new file mode 100644
index 0000000000..533d8ce3d4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools_80.9.0.bb
@@ -0,0 +1,55 @@
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.15.0.bb b/meta/recipes-devtools/python/python3-six_1.15.0.bb
deleted file mode 100644
index 6c6f3f9629..0000000000
--- a/meta/recipes-devtools/python/python3-six_1.15.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@
1inherit setuptools3
2require python-six.inc
3
4SRC_URI[md5sum] = "9f90a0eaa0ea7747fda01ca79d21ebcb"
5SRC_URI[sha256sum] = "30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"
diff --git a/meta/recipes-devtools/python/python3-six_1.17.0.bb b/meta/recipes-devtools/python/python3-six_1.17.0.bb
new file mode 100644
index 0000000000..693f1818d3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-six_1.17.0.bb
@@ -0,0 +1,4 @@
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
new file mode 100644
index 0000000000..63bd523cb7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
@@ -0,0 +1,53 @@
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
new file mode 100644
index 0000000000..a439f8a880
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants_2.0.2.bb
@@ -0,0 +1,12 @@
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_4.0.0.bb b/meta/recipes-devtools/python/python3-smmap_4.0.0.bb
deleted file mode 100644
index 5f0f341d6a..0000000000
--- a/meta/recipes-devtools/python/python3-smmap_4.0.0.bb
+++ /dev/null
@@ -1,3 +0,0 @@
1inherit setuptools3
2require python-smmap.inc
3
diff --git a/meta/recipes-devtools/python/python-smmap.inc b/meta/recipes-devtools/python/python3-smmap_6.0.0.bb
index 2a2ac76f2e..6abed1205f 100644
--- a/meta/recipes-devtools/python/python-smmap.inc
+++ b/meta/recipes-devtools/python/python3-smmap_6.0.0.bb
@@ -7,13 +7,13 @@ SECTION = "devel/python"
7LICENSE = "BSD-3-Clause" 7LICENSE = "BSD-3-Clause"
8LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709" 8LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
9 9
10inherit pypi 10inherit pypi setuptools3
11 11
12PYPI_PACKAGE = "smmap" 12PYPI_PACKAGE = "smmap"
13 13
14SRC_URI[sha256sum] = "7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182" 14SRC_URI[sha256sum] = "8d79028ea6cc131da5eab099a5d95a998d43c6779956fffe3b455040911076da"
15 15
16RDEPENDS_${PN} += "${PYTHON_PN}-codecs \ 16RDEPENDS:${PN} += "python3-codecs \
17 ${PYTHON_PN}-mmap \ 17 python3-mmap \
18" 18"
19BBCLASSEXTEND = "native nativesdk" 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
new file mode 100644
index 0000000000..37cfbce7dc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-snowballstemmer_3.0.1.bb
@@ -0,0 +1,13 @@
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.3.0.bb b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
index 6060c03723..0755d3e177 100644
--- a/meta/recipes-devtools/python/python3-sortedcontainers_2.3.0.bb
+++ b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb
@@ -4,6 +4,6 @@ LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae"
5 5
6inherit pypi setuptools3 6inherit pypi setuptools3
7SRC_URI[sha256sum] = "59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1" 7SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"
8 8
9BBCLASSEXTEND = "native nativesdk" 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
new file mode 100644
index 0000000000..0f05679322
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-spdx-tools_0.8.3.bb
@@ -0,0 +1,30 @@
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
new file mode 100644
index 0000000000..554fb3eb51
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx-argparse_0.5.2.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..0441804661
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx-copybutton_0.5.2.bb
@@ -0,0 +1,10 @@
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
new file mode 100644
index 0000000000..03e7a50125
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx-rtd-theme_3.0.2.bb
@@ -0,0 +1,26 @@
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
new file mode 100644
index 0000000000..614566b8f4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx_8.2.1.bb
@@ -0,0 +1,35 @@
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
new file mode 100644
index 0000000000..a63b7ad014
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_2.0.0.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..abce915a19
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_2.0.0.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..44885d7dc3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.1.0.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..5f915663c2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-jquery_4.1.bb
@@ -0,0 +1,12 @@
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
new file mode 100644
index 0000000000..7c11cfeec5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-jsmath_1.0.1.bb
@@ -0,0 +1,12 @@
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
new file mode 100644
index 0000000000..141d1c4862
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_2.0.0.bb
@@ -0,0 +1,13 @@
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
new file mode 100644
index 0000000000..95ee596b3b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_2.0.0.bb
@@ -0,0 +1,13 @@
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.0.bb b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
deleted file mode 100644
index 55066e2d0f..0000000000
--- a/meta/recipes-devtools/python/python3-subunit_1.4.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
1inherit setuptools3
2require python-subunit.inc
3
4RDEPENDS_${PN} = " python3-testtools"
diff --git a/meta/recipes-devtools/python/python3-subunit_1.4.4.bb b/meta/recipes-devtools/python/python3-subunit_1.4.4.bb
new file mode 100644
index 0000000000..269b057427
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-subunit_1.4.4.bb
@@ -0,0 +1,15 @@
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/no_traceback2.patch b/meta/recipes-devtools/python/python3-testtools/no_traceback2.patch
deleted file mode 100644
index 594510342b..0000000000
--- a/meta/recipes-devtools/python/python3-testtools/no_traceback2.patch
+++ /dev/null
@@ -1,23 +0,0 @@
1traceback2 adds traceback for python2. Rather than depend on traceback2, we're
2python3 only so just use traceback.
3This caused breakage in oe-selftest -j which uses testtools on the autobuilder
4using buildtools-tarball.
5
6Upstream-Status: Inappropriate [Our recipe is python3 specific]
7(Once py2 is EOL upstream probably could/should take this)
8Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
9
10Index: testtools-2.3.0/testtools/content.py
11===================================================================
12--- testtools-2.3.0.orig/testtools/content.py
13+++ testtools-2.3.0/testtools/content.py
14@@ -19,8 +19,7 @@ import os
15 import sys
16
17 from extras import try_import
18-# To let setup.py work, make this a conditional import.
19-traceback = try_import('traceback2')
20+import traceback
21
22 from testtools.compat import (
23 _b,
diff --git a/meta/recipes-devtools/python/python3-testtools_2.4.0.bb b/meta/recipes-devtools/python/python3-testtools_2.4.0.bb
deleted file mode 100644
index a254b90a75..0000000000
--- a/meta/recipes-devtools/python/python3-testtools_2.4.0.bb
+++ /dev/null
@@ -1,4 +0,0 @@
1inherit setuptools3
2require python-testtools.inc
3
4SRC_URI += "file://no_traceback2.patch"
diff --git a/meta/recipes-devtools/python/python3-testtools_2.7.2.bb b/meta/recipes-devtools/python/python3-testtools_2.7.2.bb
new file mode 100644
index 0000000000..8d7759b4a7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-testtools_2.7.2.bb
@@ -0,0 +1,22 @@
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-toml_0.10.2.bb b/meta/recipes-devtools/python/python3-toml_0.10.2.bb
deleted file mode 100644
index b46eba6fd1..0000000000
--- a/meta/recipes-devtools/python/python3-toml_0.10.2.bb
+++ /dev/null
@@ -1,15 +0,0 @@
1SUMMARY = "Python Library for Tom's Obvious, Minimal Language"
2HOMEPAGE = "https://github.com/uiri/toml"
3LICENSE = "MIT"
4SECTION = "devel/python"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=16c77b2b1050d2f03cb9c2ed0edaf4f0"
6
7SRC_URI[sha256sum] = "b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"
8
9inherit pypi setuptools3
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS_${PN} += " \
14 ${PYTHON_PN}-misc \
15"
diff --git a/meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb b/meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb
new file mode 100644
index 0000000000..68b09537bc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-trove-classifiers_2025.5.9.12.bb
@@ -0,0 +1,15 @@
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] = "7ca7c8a7a76e2cd314468c677c69d12cc2357711fcab4a60f87994c1589e5cb5"
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.14.0.bb b/meta/recipes-devtools/python/python3-typing-extensions_4.14.0.bb
new file mode 100644
index 0000000000..1c03aacc10
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typing-extensions_4.14.0.bb
@@ -0,0 +1,23 @@
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] = "8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4"
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
new file mode 100644
index 0000000000..0cb31468bd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typogrify_2.1.0.bb
@@ -0,0 +1,14 @@
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/0001-Update-__version__-to-match-the-tag-version.patch b/meta/recipes-devtools/python/python3-unittest-automake-output/0001-Update-__version__-to-match-the-tag-version.patch
new file mode 100644
index 0000000000..c2e519a12a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-unittest-automake-output/0001-Update-__version__-to-match-the-tag-version.patch
@@ -0,0 +1,30 @@
1From 8da931c5e9e32a15091d517b28cdf2e2b5395f77 Mon Sep 17 00:00:00 2001
2From: Yi Zhao <yi.zhao@windriver.com>
3Date: Tue, 8 Apr 2025 15:55:42 +0800
4Subject: [PATCH] Update __version__ to match the tag version
5
6Update __version__ to 0.2 to match the current tag.
7
8Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
9
10Upstream-Status: Backport
11[https://gitlab.com/rossburton/python-unittest-automake-output/-/commit/8da931c5e9e32a15091d517b28cdf2e2b5395f77]
12
13Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
14---
15 src/putao/__init__.py | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/src/putao/__init__.py b/src/putao/__init__.py
19index e8758de..00265e2 100644
20--- a/src/putao/__init__.py
21+++ b/src/putao/__init__.py
22@@ -5,4 +5,4 @@
23 Tools to write automake-style test reports.
24 """
25
26-__version__ = "0.1"
27+__version__ = "0.2"
28--
292.34.1
30
diff --git a/meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb b/meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb
new file mode 100644
index 0000000000..216fea2b93
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb
@@ -0,0 +1,15 @@
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 \
7 file://0001-Update-__version__-to-match-the-tag-version.patch"
8
9SRCREV = "aebdfb188e368c690ea55cf6c9c9ffa1a52def65"
10
11inherit python_flit_core
12
13RDEPENDS:${PN} += "python3-unittest"
14
15BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..35a8f2a0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-uritools_5.0.0.bb
@@ -0,0 +1,11 @@
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
new file mode 100644
index 0000000000..a4f3995730
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-urllib3_2.5.0.bb
@@ -0,0 +1,28 @@
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 += " \
11 python3-hatch-vcs-native \
12"
13
14RDEPENDS:${PN} += "\
15 python3-certifi \
16 python3-cryptography \
17 python3-email \
18 python3-idna \
19 python3-json \
20 python3-netclient \
21 python3-pyopenssl \
22 python3-threading \
23 python3-logging \
24"
25
26CVE_PRODUCT = "urllib3"
27
28BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..2f5e0ad141
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
@@ -0,0 +1,11 @@
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/run-ptest b/meta/recipes-devtools/python/python3-wcwidth/run-ptest
deleted file mode 100644
index b63c4de0d9..0000000000
--- a/meta/recipes-devtools/python/python3-wcwidth/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
1#!/bin/sh
2
3pytest -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
new file mode 100644
index 0000000000..71bb1a2703
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
@@ -0,0 +1,16 @@
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-wcwidth_0.2.5.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb
deleted file mode 100644
index bb4aae2e86..0000000000
--- a/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb
+++ /dev/null
@@ -1,25 +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[md5sum] = "a07a75f99d316e14838ac760c831ea37"
8SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
9
10inherit pypi setuptools3 ptest
11
12SRC_URI += " \
13 file://run-ptest \
14"
15
16RDEPENDS_${PN}-ptest += " \
17 ${PYTHON_PN}-pytest \
18"
19
20do_install_ptest() {
21 install -d ${D}${PTEST_PATH}/tests
22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
23}
24
25BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..cda63d2a35
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-webcolors_24.11.1.bb
@@ -0,0 +1,19 @@
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_setuptools_build_meta ptest-python-pytest
9
10DEPENDS += " \
11 python3-pdm-native \
12 python3-pdm-backend-native \
13"
14
15RDEPENDS:${PN}:class-target = "\
16 python3-stringold \
17"
18
19BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..2e1b0f0919
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-websockets_15.0.1.bb
@@ -0,0 +1,15 @@
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
new file mode 100644
index 0000000000..058af2f0e7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wheel_0.46.1.bb
@@ -0,0 +1,20 @@
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.14.2.bb b/meta/recipes-devtools/python/python3-xmltodict_0.14.2.bb
new file mode 100644
index 0000000000..56cdf6ff4a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-xmltodict_0.14.2.bb
@@ -0,0 +1,19 @@
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] = "201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553"
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
new file mode 100644
index 0000000000..1b0ddde873
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-yamllint_1.37.1.bb
@@ -0,0 +1,14 @@
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.21.0.bb b/meta/recipes-devtools/python/python3-zipp_3.21.0.bb
new file mode 100644
index 0000000000..135a1ae533
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-zipp_3.21.0.bb
@@ -0,0 +1,15 @@
1SUMMARY = "Backport of pathlib-compatible object wrapper for zip files"
2HOMEPAGE = "https://github.com/jaraco/zipp"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f"
5
6SRC_URI[sha256sum] = "2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"
7
8DEPENDS += "python3-setuptools-scm-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-zipp_3.4.0.bb b/meta/recipes-devtools/python/python3-zipp_3.4.0.bb
deleted file mode 100644
index 97523e8e7c..0000000000
--- a/meta/recipes-devtools/python/python3-zipp_3.4.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
1DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files"
2HOMEPAGE = "https://github.com/jaraco/zipp"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
5
6SRC_URI[md5sum] = "ae81f228995578b840d76d1b7d87fede"
7SRC_URI[sha256sum] = "ed5eee1974372595f9e416cc7bbeeb12335201d8081ca8a0743c954d4446e5cb"
8
9DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
10
11inherit pypi setuptools3
12
13DEPENDS += "${PYTHON_PN}-toml-native"
14
15RDEPENDS_${PN} += "${PYTHON_PN}-compression \
16 ${PYTHON_PN}-math \
17 ${PYTHON_PN}-more-itertools"
18
19BBCLASSEXTEND = "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
new file mode 100644
index 0000000000..81a613c151
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
@@ -0,0 +1,30 @@
1From 6b111a328c1c57b1580d63894b2b5d337316f6d4 Mon Sep 17 00:00:00 2001
2From: Paulo Neves <ptsneves@gmail.com>
3Date: Tue, 7 Jun 2022 16:16:41 +0200
4Subject: [PATCH] Avoid shebang overflow on python-config.py
5
6The whole native path may be too big, leading to shebang
7overflow. Let's just use the env shebang.
8
9Denial reason: [1]
10
11Upstream-Status: Denied [distribution]
12
13[1] https://github.com/python/cpython/pull/93760#pullrequestreview-1005365737
14---
15 Makefile.pre.in | 2 ++
16 1 file changed, 2 insertions(+)
17
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 9ec3a71..f7d5382 100644
20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in
22@@ -2578,6 +2578,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
23 @ # Substitution happens here, as the completely-expanded BINDIR
24 @ # is not available in configure
25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
26+ @ # Otherwise we might get huge shebangs with native paths
27+ sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' python-config.py
28 @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
29 LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
30 @ # On Darwin, always use the python version of the script, the shell
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
deleted file mode 100644
index 59592821d7..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 25 Jan 2019 19:04:13 +0100
4Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
5 contamination
6
7Upstream-Status: Inappropriate [oe-core specific]
8Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
9
10---
11 setup.py | 1 -
12 1 file changed, 1 deletion(-)
13
14diff --git a/setup.py b/setup.py
15index 20d7f35..ab18ff0 100644
16--- a/setup.py
17+++ b/setup.py
18@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
19 'termcap'):
20 readline_libs.append('termcap')
21 self.add(Extension('readline', ['readline.c'],
22- library_dirs=['/usr/lib/termcap'],
23 extra_link_args=readline_extra_link_args,
24 libraries=readline_libs))
25 else:
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
deleted file mode 100644
index 83fd52d87f..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 29 Jan 2019 15:03:01 +0100
4Subject: [PATCH] Do not use the shell version of python-config that was
5 introduced in 3.4
6
7Revert instead to the original python version: it has our tweaks and
8outputs directories correctly.
9
10Upstream-Status: Inappropriate [oe-specific]
11Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
12---
13 Makefile.pre.in | 9 +++------
14 1 file changed, 3 insertions(+), 6 deletions(-)
15
16diff --git a/Makefile.pre.in b/Makefile.pre.in
17index 2d2e11f..cc19942 100644
18--- a/Makefile.pre.in
19+++ b/Makefile.pre.in
20@@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
21 sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
22 @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
23 LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
24- @ # On Darwin, always use the python version of the script, the shell
25- @ # version doesn't use the compiler customizations that are provided
26- @ # in python (_osx_support.py).
27- @if test `uname -s` = Darwin; then \
28- cp python-config.py python-config; \
29- fi
30+ @ # In OpenEmbedded, always use the python version of the script, the shell
31+ @ # version is broken in multiple ways, and doesn't return correct directories
32+ cp python-config.py python-config
33
34
35 # Install the include files
diff --git a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
deleted file mode 100644
index a94fa0a5a9..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001
2From: Jeremy Puhlman <jpuhlman@mvista.com>
3Date: Wed, 4 Mar 2020 00:06:42 +0000
4Subject: [PATCH] Don't search system for headers/libraries
5
6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
8
9---
10 setup.py | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/setup.py b/setup.py
14index a0bf9ea..da099bf 100644
15--- a/setup.py
16+++ b/setup.py
17@@ -674,8 +674,8 @@ class PyBuildExt(build_ext):
18 add_dir_to_list(self.compiler.include_dirs,
19 sysconfig.get_config_var("INCLUDEDIR"))
20
21- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']
22- system_include_dirs = ['/usr/include']
23+ system_lib_dirs = []
24+ system_include_dirs = []
25 # lib_dirs and inc_dirs are used to search for files;
26 # if a file is found in one of those directories, it can
27 # be assumed that no additional -I,-L directives are needed.
diff --git a/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch b/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch
new file mode 100644
index 0000000000..075737e7d1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Generate-data-for-OpenSSL-3.4-and-add-it-to-multissl.patch
@@ -0,0 +1,1452 @@
1From db5c5763f3e3172f1dd011355b41469770dafc0f Mon Sep 17 00:00:00 2001
2From: Petr Viktorin <encukou@gmail.com>
3Date: Thu, 28 Nov 2024 13:29:27 +0100
4Subject: [PATCH] gh-127330: Update for OpenSSL 3.4 & document+improve the
5 update process (GH-127331)
6
7- Add `git describe` output to headers generated by `make_ssl_data.py`
8
9 This info is more important than the date when the file was generated.
10 It does mean that the tool now requires a Git checkout of OpenSSL,
11 not for example a release tarball.
12
13- Regenerate the older file to add the info.
14 To the other older file, add a note about manual edits.
15
16- Add notes on how to add a new OpenSSL version
17
18- Add 3.4 error messages and multissl tests
19
20Upstream-Status: Submitted [https://github.com/python/cpython/commit/db5c5763f3e3172f1dd011355b41469770dafc0f]
21Signed-off-by: Peter Marko <peter.marko@siemens.com>
22---
23 Modules/_ssl.c | 2 +-
24 Modules/_ssl_data_111.h | 4 +-
25 Modules/_ssl_data_300.h | 5 +-
26 Modules/{_ssl_data_31.h => _ssl_data_34.h} | 674 ++++++++++++++++++++-
27 Tools/c-analyzer/cpython/_parser.py | 4 +-
28 Tools/ssl/make_ssl_data.py | 34 +-
29 Tools/ssl/multissltests.py | 1 +
30 7 files changed, 714 insertions(+), 10 deletions(-)
31 rename Modules/{_ssl_data_31.h => _ssl_data_34.h} (92%)
32
33diff --git a/Modules/_ssl.c b/Modules/_ssl.c
34index b6b5ebf094c..e5b8bf21002 100644
35--- a/Modules/_ssl.c
36+++ b/Modules/_ssl.c
37@@ -121,7 +121,7 @@ static void _PySSLFixErrno(void) {
38
39 /* Include generated data (error codes) */
40 #if (OPENSSL_VERSION_NUMBER >= 0x30100000L)
41-#include "_ssl_data_31.h"
42+#include "_ssl_data_34.h"
43 #elif (OPENSSL_VERSION_NUMBER >= 0x30000000L)
44 #include "_ssl_data_300.h"
45 #elif (OPENSSL_VERSION_NUMBER >= 0x10101000L)
46diff --git a/Modules/_ssl_data_111.h b/Modules/_ssl_data_111.h
47index 093c786e6a2..061fac2bd58 100644
48--- a/Modules/_ssl_data_111.h
49+++ b/Modules/_ssl_data_111.h
50@@ -1,4 +1,6 @@
51-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T02:58:04.081473 */
52+/* File generated by Tools/ssl/make_ssl_data.py */
53+/* Generated on 2024-11-27T12:48:46.194048+00:00 */
54+/* Generated from Git commit OpenSSL_1_1_1w-0-ge04bd3433f */
55 static struct py_ssl_library_code library_codes[] = {
56 #ifdef ERR_LIB_ASN1
57 {"ASN1", ERR_LIB_ASN1},
58diff --git a/Modules/_ssl_data_300.h b/Modules/_ssl_data_300.h
59index dc66731f6b6..b687ce43c77 100644
60--- a/Modules/_ssl_data_300.h
61+++ b/Modules/_ssl_data_300.h
62@@ -1,4 +1,7 @@
63-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:03:52.163218 */
64+/* File generated by Tools/ssl/make_ssl_data.py */
65+/* Generated on 2023-06-01T03:03:52.163218 */
66+/* Manually edited to add definitions from 1.1.1 (GH-105174) */
67+
68 static struct py_ssl_library_code library_codes[] = {
69 #ifdef ERR_LIB_ASN1
70 {"ASN1", ERR_LIB_ASN1},
71diff --git a/Modules/_ssl_data_31.h b/Modules/_ssl_data_34.h
72similarity index 92%
73rename from Modules/_ssl_data_31.h
74rename to Modules/_ssl_data_34.h
75index c589c501f4e..d4af3e1c1fa 100644
76--- a/Modules/_ssl_data_31.h
77+++ b/Modules/_ssl_data_34.h
78@@ -1,4 +1,6 @@
79-/* File generated by Tools/ssl/make_ssl_data.py *//* Generated on 2023-06-01T03:04:00.275280 */
80+/* File generated by Tools/ssl/make_ssl_data.py */
81+/* Generated on 2024-11-27T12:35:52.276767+00:00 */
82+/* Generated from Git commit openssl-3.4.0-0-g98acb6b028 */
83 static struct py_ssl_library_code library_codes[] = {
84 #ifdef ERR_LIB_ASN1
85 {"ASN1", ERR_LIB_ASN1},
86@@ -300,6 +302,11 @@ static struct py_ssl_error_code error_codes[] = {
87 #else
88 {"FIRST_NUM_TOO_LARGE", 13, 122},
89 #endif
90+ #ifdef ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT
91+ {"GENERALIZEDTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_GENERALIZEDTIME_IS_TOO_SHORT},
92+ #else
93+ {"GENERALIZEDTIME_IS_TOO_SHORT", 13, 232},
94+ #endif
95 #ifdef ASN1_R_HEADER_TOO_LONG
96 {"HEADER_TOO_LONG", ERR_LIB_ASN1, ASN1_R_HEADER_TOO_LONG},
97 #else
98@@ -730,6 +737,11 @@ static struct py_ssl_error_code error_codes[] = {
99 #else
100 {"UNSUPPORTED_TYPE", 13, 196},
101 #endif
102+ #ifdef ASN1_R_UTCTIME_IS_TOO_SHORT
103+ {"UTCTIME_IS_TOO_SHORT", ERR_LIB_ASN1, ASN1_R_UTCTIME_IS_TOO_SHORT},
104+ #else
105+ {"UTCTIME_IS_TOO_SHORT", 13, 233},
106+ #endif
107 #ifdef ASN1_R_WRONG_INTEGER_TYPE
108 {"WRONG_INTEGER_TYPE", ERR_LIB_ASN1, ASN1_R_WRONG_INTEGER_TYPE},
109 #else
110@@ -845,6 +857,11 @@ static struct py_ssl_error_code error_codes[] = {
111 #else
112 {"LISTEN_V6_ONLY", 32, 136},
113 #endif
114+ #ifdef BIO_R_LOCAL_ADDR_NOT_AVAILABLE
115+ {"LOCAL_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_LOCAL_ADDR_NOT_AVAILABLE},
116+ #else
117+ {"LOCAL_ADDR_NOT_AVAILABLE", 32, 111},
118+ #endif
119 #ifdef BIO_R_LOOKUP_RETURNED_NOTHING
120 {"LOOKUP_RETURNED_NOTHING", ERR_LIB_BIO, BIO_R_LOOKUP_RETURNED_NOTHING},
121 #else
122@@ -860,6 +877,11 @@ static struct py_ssl_error_code error_codes[] = {
123 #else
124 {"NBIO_CONNECT_ERROR", 32, 110},
125 #endif
126+ #ifdef BIO_R_NON_FATAL
127+ {"NON_FATAL", ERR_LIB_BIO, BIO_R_NON_FATAL},
128+ #else
129+ {"NON_FATAL", 32, 112},
130+ #endif
131 #ifdef BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED
132 {"NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED", ERR_LIB_BIO, BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED},
133 #else
134@@ -880,6 +902,26 @@ static struct py_ssl_error_code error_codes[] = {
135 #else
136 {"NO_SUCH_FILE", 32, 128},
137 #endif
138+ #ifdef BIO_R_PEER_ADDR_NOT_AVAILABLE
139+ {"PEER_ADDR_NOT_AVAILABLE", ERR_LIB_BIO, BIO_R_PEER_ADDR_NOT_AVAILABLE},
140+ #else
141+ {"PEER_ADDR_NOT_AVAILABLE", 32, 114},
142+ #endif
143+ #ifdef BIO_R_PORT_MISMATCH
144+ {"PORT_MISMATCH", ERR_LIB_BIO, BIO_R_PORT_MISMATCH},
145+ #else
146+ {"PORT_MISMATCH", 32, 150},
147+ #endif
148+ #ifdef BIO_R_TFO_DISABLED
149+ {"TFO_DISABLED", ERR_LIB_BIO, BIO_R_TFO_DISABLED},
150+ #else
151+ {"TFO_DISABLED", 32, 106},
152+ #endif
153+ #ifdef BIO_R_TFO_NO_KERNEL_SUPPORT
154+ {"TFO_NO_KERNEL_SUPPORT", ERR_LIB_BIO, BIO_R_TFO_NO_KERNEL_SUPPORT},
155+ #else
156+ {"TFO_NO_KERNEL_SUPPORT", 32, 108},
157+ #endif
158 #ifdef BIO_R_TRANSFER_ERROR
159 {"TRANSFER_ERROR", ERR_LIB_BIO, BIO_R_TRANSFER_ERROR},
160 #else
161@@ -920,6 +962,11 @@ static struct py_ssl_error_code error_codes[] = {
162 #else
163 {"UNABLE_TO_REUSEADDR", 32, 139},
164 #endif
165+ #ifdef BIO_R_UNABLE_TO_TFO
166+ {"UNABLE_TO_TFO", ERR_LIB_BIO, BIO_R_UNABLE_TO_TFO},
167+ #else
168+ {"UNABLE_TO_TFO", 32, 109},
169+ #endif
170 #ifdef BIO_R_UNAVAILABLE_IP_FAMILY
171 {"UNAVAILABLE_IP_FAMILY", ERR_LIB_BIO, BIO_R_UNAVAILABLE_IP_FAMILY},
172 #else
173@@ -1230,6 +1277,11 @@ static struct py_ssl_error_code error_codes[] = {
174 #else
175 {"ERROR_VALIDATING_SIGNATURE", 58, 171},
176 #endif
177+ #ifdef CMP_R_EXPECTED_POLLREQ
178+ {"EXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_EXPECTED_POLLREQ},
179+ #else
180+ {"EXPECTED_POLLREQ", 58, 104},
181+ #endif
182 #ifdef CMP_R_FAILED_BUILDING_OWN_CHAIN
183 {"FAILED_BUILDING_OWN_CHAIN", ERR_LIB_CMP, CMP_R_FAILED_BUILDING_OWN_CHAIN},
184 #else
185@@ -1250,16 +1302,51 @@ static struct py_ssl_error_code error_codes[] = {
186 #else
187 {"FAIL_INFO_OUT_OF_RANGE", 58, 129},
188 #endif
189+ #ifdef CMP_R_GENERATE_CERTREQTEMPLATE
190+ {"GENERATE_CERTREQTEMPLATE", ERR_LIB_CMP, CMP_R_GENERATE_CERTREQTEMPLATE},
191+ #else
192+ {"GENERATE_CERTREQTEMPLATE", 58, 197},
193+ #endif
194+ #ifdef CMP_R_GENERATE_CRLSTATUS
195+ {"GENERATE_CRLSTATUS", ERR_LIB_CMP, CMP_R_GENERATE_CRLSTATUS},
196+ #else
197+ {"GENERATE_CRLSTATUS", 58, 198},
198+ #endif
199+ #ifdef CMP_R_GETTING_GENP
200+ {"GETTING_GENP", ERR_LIB_CMP, CMP_R_GETTING_GENP},
201+ #else
202+ {"GETTING_GENP", 58, 192},
203+ #endif
204+ #ifdef CMP_R_GET_ITAV
205+ {"GET_ITAV", ERR_LIB_CMP, CMP_R_GET_ITAV},
206+ #else
207+ {"GET_ITAV", 58, 199},
208+ #endif
209 #ifdef CMP_R_INVALID_ARGS
210 {"INVALID_ARGS", ERR_LIB_CMP, CMP_R_INVALID_ARGS},
211 #else
212 {"INVALID_ARGS", 58, 100},
213 #endif
214+ #ifdef CMP_R_INVALID_GENP
215+ {"INVALID_GENP", ERR_LIB_CMP, CMP_R_INVALID_GENP},
216+ #else
217+ {"INVALID_GENP", 58, 193},
218+ #endif
219+ #ifdef CMP_R_INVALID_KEYSPEC
220+ {"INVALID_KEYSPEC", ERR_LIB_CMP, CMP_R_INVALID_KEYSPEC},
221+ #else
222+ {"INVALID_KEYSPEC", 58, 202},
223+ #endif
224 #ifdef CMP_R_INVALID_OPTION
225 {"INVALID_OPTION", ERR_LIB_CMP, CMP_R_INVALID_OPTION},
226 #else
227 {"INVALID_OPTION", 58, 174},
228 #endif
229+ #ifdef CMP_R_INVALID_ROOTCAKEYUPDATE
230+ {"INVALID_ROOTCAKEYUPDATE", ERR_LIB_CMP, CMP_R_INVALID_ROOTCAKEYUPDATE},
231+ #else
232+ {"INVALID_ROOTCAKEYUPDATE", 58, 195},
233+ #endif
234 #ifdef CMP_R_MISSING_CERTID
235 {"MISSING_CERTID", ERR_LIB_CMP, CMP_R_MISSING_CERTID},
236 #else
237@@ -1425,6 +1512,21 @@ static struct py_ssl_error_code error_codes[] = {
238 #else
239 {"TRANSFER_ERROR", 58, 159},
240 #endif
241+ #ifdef CMP_R_UNCLEAN_CTX
242+ {"UNCLEAN_CTX", ERR_LIB_CMP, CMP_R_UNCLEAN_CTX},
243+ #else
244+ {"UNCLEAN_CTX", 58, 191},
245+ #endif
246+ #ifdef CMP_R_UNEXPECTED_CERTPROFILE
247+ {"UNEXPECTED_CERTPROFILE", ERR_LIB_CMP, CMP_R_UNEXPECTED_CERTPROFILE},
248+ #else
249+ {"UNEXPECTED_CERTPROFILE", 58, 196},
250+ #endif
251+ #ifdef CMP_R_UNEXPECTED_CRLSTATUSLIST
252+ {"UNEXPECTED_CRLSTATUSLIST", ERR_LIB_CMP, CMP_R_UNEXPECTED_CRLSTATUSLIST},
253+ #else
254+ {"UNEXPECTED_CRLSTATUSLIST", 58, 201},
255+ #endif
256 #ifdef CMP_R_UNEXPECTED_PKIBODY
257 {"UNEXPECTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNEXPECTED_PKIBODY},
258 #else
259@@ -1435,11 +1537,21 @@ static struct py_ssl_error_code error_codes[] = {
260 #else
261 {"UNEXPECTED_PKISTATUS", 58, 185},
262 #endif
263+ #ifdef CMP_R_UNEXPECTED_POLLREQ
264+ {"UNEXPECTED_POLLREQ", ERR_LIB_CMP, CMP_R_UNEXPECTED_POLLREQ},
265+ #else
266+ {"UNEXPECTED_POLLREQ", 58, 105},
267+ #endif
268 #ifdef CMP_R_UNEXPECTED_PVNO
269 {"UNEXPECTED_PVNO", ERR_LIB_CMP, CMP_R_UNEXPECTED_PVNO},
270 #else
271 {"UNEXPECTED_PVNO", 58, 153},
272 #endif
273+ #ifdef CMP_R_UNEXPECTED_SENDER
274+ {"UNEXPECTED_SENDER", ERR_LIB_CMP, CMP_R_UNEXPECTED_SENDER},
275+ #else
276+ {"UNEXPECTED_SENDER", 58, 106},
277+ #endif
278 #ifdef CMP_R_UNKNOWN_ALGORITHM_ID
279 {"UNKNOWN_ALGORITHM_ID", ERR_LIB_CMP, CMP_R_UNKNOWN_ALGORITHM_ID},
280 #else
281@@ -1450,6 +1562,11 @@ static struct py_ssl_error_code error_codes[] = {
282 #else
283 {"UNKNOWN_CERT_TYPE", 58, 135},
284 #endif
285+ #ifdef CMP_R_UNKNOWN_CRL_ISSUER
286+ {"UNKNOWN_CRL_ISSUER", ERR_LIB_CMP, CMP_R_UNKNOWN_CRL_ISSUER},
287+ #else
288+ {"UNKNOWN_CRL_ISSUER", 58, 200},
289+ #endif
290 #ifdef CMP_R_UNKNOWN_PKISTATUS
291 {"UNKNOWN_PKISTATUS", ERR_LIB_CMP, CMP_R_UNKNOWN_PKISTATUS},
292 #else
293@@ -1465,6 +1582,11 @@ static struct py_ssl_error_code error_codes[] = {
294 #else
295 {"UNSUPPORTED_KEY_TYPE", 58, 137},
296 #endif
297+ #ifdef CMP_R_UNSUPPORTED_PKIBODY
298+ {"UNSUPPORTED_PKIBODY", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PKIBODY},
299+ #else
300+ {"UNSUPPORTED_PKIBODY", 58, 101},
301+ #endif
302 #ifdef CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC
303 {"UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC", ERR_LIB_CMP, CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC},
304 #else
305@@ -1825,6 +1947,11 @@ static struct py_ssl_error_code error_codes[] = {
306 #else
307 {"NO_SIGNERS", 46, 135},
308 #endif
309+ #ifdef CMS_R_OPERATION_UNSUPPORTED
310+ {"OPERATION_UNSUPPORTED", ERR_LIB_CMS, CMS_R_OPERATION_UNSUPPORTED},
311+ #else
312+ {"OPERATION_UNSUPPORTED", 46, 182},
313+ #endif
314 #ifdef CMS_R_PEER_KEY_ERROR
315 {"PEER_KEY_ERROR", ERR_LIB_CMS, CMS_R_PEER_KEY_ERROR},
316 #else
317@@ -1960,6 +2087,11 @@ static struct py_ssl_error_code error_codes[] = {
318 #else
319 {"UNSUPPORTED_RECIPIENT_TYPE", 46, 154},
320 #endif
321+ #ifdef CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM
322+ {"UNSUPPORTED_SIGNATURE_ALGORITHM", ERR_LIB_CMS, CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM},
323+ #else
324+ {"UNSUPPORTED_SIGNATURE_ALGORITHM", 46, 195},
325+ #endif
326 #ifdef CMS_R_UNSUPPORTED_TYPE
327 {"UNSUPPORTED_TYPE", ERR_LIB_CMS, CMS_R_UNSUPPORTED_TYPE},
328 #else
329@@ -1985,6 +2117,31 @@ static struct py_ssl_error_code error_codes[] = {
330 #else
331 {"WRAP_ERROR", 46, 159},
332 #endif
333+ #ifdef COMP_R_BROTLI_DECODE_ERROR
334+ {"BROTLI_DECODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_DECODE_ERROR},
335+ #else
336+ {"BROTLI_DECODE_ERROR", 41, 102},
337+ #endif
338+ #ifdef COMP_R_BROTLI_DEFLATE_ERROR
339+ {"BROTLI_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_DEFLATE_ERROR},
340+ #else
341+ {"BROTLI_DEFLATE_ERROR", 41, 103},
342+ #endif
343+ #ifdef COMP_R_BROTLI_ENCODE_ERROR
344+ {"BROTLI_ENCODE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_ENCODE_ERROR},
345+ #else
346+ {"BROTLI_ENCODE_ERROR", 41, 106},
347+ #endif
348+ #ifdef COMP_R_BROTLI_INFLATE_ERROR
349+ {"BROTLI_INFLATE_ERROR", ERR_LIB_COMP, COMP_R_BROTLI_INFLATE_ERROR},
350+ #else
351+ {"BROTLI_INFLATE_ERROR", 41, 104},
352+ #endif
353+ #ifdef COMP_R_BROTLI_NOT_SUPPORTED
354+ {"BROTLI_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_BROTLI_NOT_SUPPORTED},
355+ #else
356+ {"BROTLI_NOT_SUPPORTED", 41, 105},
357+ #endif
358 #ifdef COMP_R_ZLIB_DEFLATE_ERROR
359 {"ZLIB_DEFLATE_ERROR", ERR_LIB_COMP, COMP_R_ZLIB_DEFLATE_ERROR},
360 #else
361@@ -2000,6 +2157,26 @@ static struct py_ssl_error_code error_codes[] = {
362 #else
363 {"ZLIB_NOT_SUPPORTED", 41, 101},
364 #endif
365+ #ifdef COMP_R_ZSTD_COMPRESS_ERROR
366+ {"ZSTD_COMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_COMPRESS_ERROR},
367+ #else
368+ {"ZSTD_COMPRESS_ERROR", 41, 107},
369+ #endif
370+ #ifdef COMP_R_ZSTD_DECODE_ERROR
371+ {"ZSTD_DECODE_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECODE_ERROR},
372+ #else
373+ {"ZSTD_DECODE_ERROR", 41, 108},
374+ #endif
375+ #ifdef COMP_R_ZSTD_DECOMPRESS_ERROR
376+ {"ZSTD_DECOMPRESS_ERROR", ERR_LIB_COMP, COMP_R_ZSTD_DECOMPRESS_ERROR},
377+ #else
378+ {"ZSTD_DECOMPRESS_ERROR", 41, 109},
379+ #endif
380+ #ifdef COMP_R_ZSTD_NOT_SUPPORTED
381+ {"ZSTD_NOT_SUPPORTED", ERR_LIB_COMP, COMP_R_ZSTD_NOT_SUPPORTED},
382+ #else
383+ {"ZSTD_NOT_SUPPORTED", 41, 110},
384+ #endif
385 #ifdef CONF_R_ERROR_LOADING_DSO
386 {"ERROR_LOADING_DSO", ERR_LIB_CONF, CONF_R_ERROR_LOADING_DSO},
387 #else
388@@ -2085,6 +2262,11 @@ static struct py_ssl_error_code error_codes[] = {
389 #else
390 {"RECURSIVE_DIRECTORY_INCLUDE", 14, 111},
391 #endif
392+ #ifdef CONF_R_RECURSIVE_SECTION_REFERENCE
393+ {"RECURSIVE_SECTION_REFERENCE", ERR_LIB_CONF, CONF_R_RECURSIVE_SECTION_REFERENCE},
394+ #else
395+ {"RECURSIVE_SECTION_REFERENCE", 14, 126},
396+ #endif
397 #ifdef CONF_R_RELATIVE_PATH
398 {"RELATIVE_PATH", ERR_LIB_CONF, CONF_R_RELATIVE_PATH},
399 #else
400@@ -2370,6 +2552,11 @@ static struct py_ssl_error_code error_codes[] = {
401 #else
402 {"TOO_MANY_BYTES", 15, 113},
403 #endif
404+ #ifdef CRYPTO_R_TOO_MANY_NAMES
405+ {"TOO_MANY_NAMES", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_NAMES},
406+ #else
407+ {"TOO_MANY_NAMES", 15, 132},
408+ #endif
409 #ifdef CRYPTO_R_TOO_MANY_RECORDS
410 {"TOO_MANY_RECORDS", ERR_LIB_CRYPTO, CRYPTO_R_TOO_MANY_RECORDS},
411 #else
412@@ -2560,6 +2747,11 @@ static struct py_ssl_error_code error_codes[] = {
413 #else
414 {"INVALID_SECRET", 5, 128},
415 #endif
416+ #ifdef DH_R_INVALID_SIZE
417+ {"INVALID_SIZE", ERR_LIB_DH, DH_R_INVALID_SIZE},
418+ #else
419+ {"INVALID_SIZE", 5, 129},
420+ #endif
421 #ifdef DH_R_KDF_PARAMETER_ERROR
422 {"KDF_PARAMETER_ERROR", ERR_LIB_DH, DH_R_KDF_PARAMETER_ERROR},
423 #else
424@@ -2610,6 +2802,11 @@ static struct py_ssl_error_code error_codes[] = {
425 #else
426 {"PEER_KEY_ERROR", 5, 111},
427 #endif
428+ #ifdef DH_R_Q_TOO_LARGE
429+ {"Q_TOO_LARGE", ERR_LIB_DH, DH_R_Q_TOO_LARGE},
430+ #else
431+ {"Q_TOO_LARGE", 5, 130},
432+ #endif
433 #ifdef DH_R_SHARED_INFO_ERROR
434 {"SHARED_INFO_ERROR", ERR_LIB_DH, DH_R_SHARED_INFO_ERROR},
435 #else
436@@ -3545,6 +3742,11 @@ static struct py_ssl_error_code error_codes[] = {
437 #else
438 {"GENERATE_ERROR", 6, 214},
439 #endif
440+ #ifdef EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED
441+ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", ERR_LIB_EVP, EVP_R_GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED},
442+ #else
443+ {"GETTING_ALGORITHMIDENTIFIER_NOT_SUPPORTED", 6, 229},
444+ #endif
445 #ifdef EVP_R_GET_RAW_KEY_FAILED
446 {"GET_RAW_KEY_FAILED", ERR_LIB_EVP, EVP_R_GET_RAW_KEY_FAILED},
447 #else
448@@ -3745,6 +3947,11 @@ static struct py_ssl_error_code error_codes[] = {
449 #else
450 {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", 6, 150},
451 #endif
452+ #ifdef EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE
453+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE},
454+ #else
455+ {"OPERATION_NOT_SUPPORTED_FOR_THIS_SIGNATURE_TYPE", 6, 226},
456+ #endif
457 #ifdef EVP_R_OUTPUT_WOULD_OVERFLOW
458 {"OUTPUT_WOULD_OVERFLOW", ERR_LIB_EVP, EVP_R_OUTPUT_WOULD_OVERFLOW},
459 #else
460@@ -3795,6 +4002,11 @@ static struct py_ssl_error_code error_codes[] = {
461 #else
462 {"SET_DEFAULT_PROPERTY_FAILURE", 6, 209},
463 #endif
464+ #ifdef EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE
465+ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", ERR_LIB_EVP, EVP_R_SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE},
466+ #else
467+ {"SIGNATURE_TYPE_AND_KEY_TYPE_INCOMPATIBLE", 6, 228},
468+ #endif
469 #ifdef EVP_R_TOO_MANY_RECORDS
470 {"TOO_MANY_RECORDS", ERR_LIB_EVP, EVP_R_TOO_MANY_RECORDS},
471 #else
472@@ -3825,6 +4037,11 @@ static struct py_ssl_error_code error_codes[] = {
473 #else
474 {"UNABLE_TO_SET_CALLBACKS", 6, 217},
475 #endif
476+ #ifdef EVP_R_UNKNOWN_BITS
477+ {"UNKNOWN_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_BITS},
478+ #else
479+ {"UNKNOWN_BITS", 6, 166},
480+ #endif
481 #ifdef EVP_R_UNKNOWN_CIPHER
482 {"UNKNOWN_CIPHER", ERR_LIB_EVP, EVP_R_UNKNOWN_CIPHER},
483 #else
484@@ -3840,6 +4057,11 @@ static struct py_ssl_error_code error_codes[] = {
485 #else
486 {"UNKNOWN_KEY_TYPE", 6, 207},
487 #endif
488+ #ifdef EVP_R_UNKNOWN_MAX_SIZE
489+ {"UNKNOWN_MAX_SIZE", ERR_LIB_EVP, EVP_R_UNKNOWN_MAX_SIZE},
490+ #else
491+ {"UNKNOWN_MAX_SIZE", 6, 167},
492+ #endif
493 #ifdef EVP_R_UNKNOWN_OPTION
494 {"UNKNOWN_OPTION", ERR_LIB_EVP, EVP_R_UNKNOWN_OPTION},
495 #else
496@@ -3850,6 +4072,11 @@ static struct py_ssl_error_code error_codes[] = {
497 #else
498 {"UNKNOWN_PBE_ALGORITHM", 6, 121},
499 #endif
500+ #ifdef EVP_R_UNKNOWN_SECURITY_BITS
501+ {"UNKNOWN_SECURITY_BITS", ERR_LIB_EVP, EVP_R_UNKNOWN_SECURITY_BITS},
502+ #else
503+ {"UNKNOWN_SECURITY_BITS", 6, 168},
504+ #endif
505 #ifdef EVP_R_UNSUPPORTED_ALGORITHM
506 {"UNSUPPORTED_ALGORITHM", ERR_LIB_EVP, EVP_R_UNSUPPORTED_ALGORITHM},
507 #else
508@@ -4040,6 +4267,11 @@ static struct py_ssl_error_code error_codes[] = {
509 #else
510 {"RESPONSE_PARSE_ERROR", 61, 104},
511 #endif
512+ #ifdef HTTP_R_RESPONSE_TOO_MANY_HDRLINES
513+ {"RESPONSE_TOO_MANY_HDRLINES", ERR_LIB_HTTP, HTTP_R_RESPONSE_TOO_MANY_HDRLINES},
514+ #else
515+ {"RESPONSE_TOO_MANY_HDRLINES", 61, 130},
516+ #endif
517 #ifdef HTTP_R_RETRY_TIMEOUT
518 {"RETRY_TIMEOUT", ERR_LIB_HTTP, HTTP_R_RETRY_TIMEOUT},
519 #else
520@@ -4530,6 +4762,11 @@ static struct py_ssl_error_code error_codes[] = {
521 #else
522 {"UNSUPPORTED_PUBLIC_KEY_TYPE", 9, 110},
523 #endif
524+ #ifdef PKCS12_R_CALLBACK_FAILED
525+ {"CALLBACK_FAILED", ERR_LIB_PKCS12, PKCS12_R_CALLBACK_FAILED},
526+ #else
527+ {"CALLBACK_FAILED", 35, 115},
528+ #endif
529 #ifdef PKCS12_R_CANT_PACK_STRUCTURE
530 {"CANT_PACK_STRUCTURE", ERR_LIB_PKCS12, PKCS12_R_CANT_PACK_STRUCTURE},
531 #else
532@@ -4920,6 +5157,11 @@ static struct py_ssl_error_code error_codes[] = {
533 #else
534 {"CIPHER_OPERATION_FAILED", 57, 102},
535 #endif
536+ #ifdef PROV_R_COFACTOR_REQUIRED
537+ {"COFACTOR_REQUIRED", ERR_LIB_PROV, PROV_R_COFACTOR_REQUIRED},
538+ #else
539+ {"COFACTOR_REQUIRED", 57, 236},
540+ #endif
541 #ifdef PROV_R_DERIVATION_FUNCTION_INIT_FAILED
542 {"DERIVATION_FUNCTION_INIT_FAILED", ERR_LIB_PROV, PROV_R_DERIVATION_FUNCTION_INIT_FAILED},
543 #else
544@@ -4935,6 +5177,11 @@ static struct py_ssl_error_code error_codes[] = {
545 #else
546 {"EMS_NOT_ENABLED", 57, 233},
547 #endif
548+ #ifdef PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS
549+ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS},
550+ #else
551+ {"ENTROPY_SOURCE_FAILED_CONTINUOUS_TESTS", 57, 244},
552+ #endif
553 #ifdef PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK
554 {"ENTROPY_SOURCE_STRENGTH_TOO_WEAK", ERR_LIB_PROV, PROV_R_ENTROPY_SOURCE_STRENGTH_TOO_WEAK},
555 #else
556@@ -4990,6 +5237,11 @@ static struct py_ssl_error_code error_codes[] = {
557 #else
558 {"FAILED_TO_SIGN", 57, 175},
559 #endif
560+ #ifdef PROV_R_FINAL_CALL_OUT_OF_ORDER
561+ {"FINAL_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_FINAL_CALL_OUT_OF_ORDER},
562+ #else
563+ {"FINAL_CALL_OUT_OF_ORDER", 57, 237},
564+ #endif
565 #ifdef PROV_R_FIPS_MODULE_CONDITIONAL_ERROR
566 {"FIPS_MODULE_CONDITIONAL_ERROR", ERR_LIB_PROV, PROV_R_FIPS_MODULE_CONDITIONAL_ERROR},
567 #else
568@@ -5020,6 +5272,11 @@ static struct py_ssl_error_code error_codes[] = {
569 #else
570 {"INDICATOR_INTEGRITY_FAILURE", 57, 210},
571 #endif
572+ #ifdef PROV_R_INIT_CALL_OUT_OF_ORDER
573+ {"INIT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_INIT_CALL_OUT_OF_ORDER},
574+ #else
575+ {"INIT_CALL_OUT_OF_ORDER", 57, 238},
576+ #endif
577 #ifdef PROV_R_INSUFFICIENT_DRBG_STRENGTH
578 {"INSUFFICIENT_DRBG_STRENGTH", ERR_LIB_PROV, PROV_R_INSUFFICIENT_DRBG_STRENGTH},
579 #else
580@@ -5030,6 +5287,11 @@ static struct py_ssl_error_code error_codes[] = {
581 #else
582 {"INVALID_AAD", 57, 108},
583 #endif
584+ #ifdef PROV_R_INVALID_AEAD
585+ {"INVALID_AEAD", ERR_LIB_PROV, PROV_R_INVALID_AEAD},
586+ #else
587+ {"INVALID_AEAD", 57, 231},
588+ #endif
589 #ifdef PROV_R_INVALID_CONFIG_DATA
590 {"INVALID_CONFIG_DATA", ERR_LIB_PROV, PROV_R_INVALID_CONFIG_DATA},
591 #else
592@@ -5070,6 +5332,11 @@ static struct py_ssl_error_code error_codes[] = {
593 #else
594 {"INVALID_DIGEST_SIZE", 57, 218},
595 #endif
596+ #ifdef PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION
597+ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", ERR_LIB_PROV, PROV_R_INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION},
598+ #else
599+ {"INVALID_EDDSA_INSTANCE_FOR_ATTEMPTED_OPERATION", 57, 243},
600+ #endif
601 #ifdef PROV_R_INVALID_INPUT_LENGTH
602 {"INVALID_INPUT_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_INPUT_LENGTH},
603 #else
604@@ -5085,6 +5352,11 @@ static struct py_ssl_error_code error_codes[] = {
605 #else
606 {"INVALID_IV_LENGTH", 57, 109},
607 #endif
608+ #ifdef PROV_R_INVALID_KDF
609+ {"INVALID_KDF", ERR_LIB_PROV, PROV_R_INVALID_KDF},
610+ #else
611+ {"INVALID_KDF", 57, 232},
612+ #endif
613 #ifdef PROV_R_INVALID_KEY
614 {"INVALID_KEY", ERR_LIB_PROV, PROV_R_INVALID_KEY},
615 #else
616@@ -5100,6 +5372,11 @@ static struct py_ssl_error_code error_codes[] = {
617 #else
618 {"INVALID_MAC", 57, 151},
619 #endif
620+ #ifdef PROV_R_INVALID_MEMORY_SIZE
621+ {"INVALID_MEMORY_SIZE", ERR_LIB_PROV, PROV_R_INVALID_MEMORY_SIZE},
622+ #else
623+ {"INVALID_MEMORY_SIZE", 57, 235},
624+ #endif
625 #ifdef PROV_R_INVALID_MGF1_MD
626 {"INVALID_MGF1_MD", ERR_LIB_PROV, PROV_R_INVALID_MGF1_MD},
627 #else
628@@ -5120,6 +5397,11 @@ static struct py_ssl_error_code error_codes[] = {
629 #else
630 {"INVALID_PADDING_MODE", 57, 168},
631 #endif
632+ #ifdef PROV_R_INVALID_PREHASHED_DIGEST_LENGTH
633+ {"INVALID_PREHASHED_DIGEST_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_PREHASHED_DIGEST_LENGTH},
634+ #else
635+ {"INVALID_PREHASHED_DIGEST_LENGTH", 57, 241},
636+ #endif
637 #ifdef PROV_R_INVALID_PUBINFO
638 {"INVALID_PUBINFO", ERR_LIB_PROV, PROV_R_INVALID_PUBINFO},
639 #else
640@@ -5155,6 +5437,11 @@ static struct py_ssl_error_code error_codes[] = {
641 #else
642 {"INVALID_TAG_LENGTH", 57, 118},
643 #endif
644+ #ifdef PROV_R_INVALID_THREAD_POOL_SIZE
645+ {"INVALID_THREAD_POOL_SIZE", ERR_LIB_PROV, PROV_R_INVALID_THREAD_POOL_SIZE},
646+ #else
647+ {"INVALID_THREAD_POOL_SIZE", 57, 234},
648+ #endif
649 #ifdef PROV_R_INVALID_UKM_LENGTH
650 {"INVALID_UKM_LENGTH", ERR_LIB_PROV, PROV_R_INVALID_UKM_LENGTH},
651 #else
652@@ -5300,6 +5587,11 @@ static struct py_ssl_error_code error_codes[] = {
653 #else
654 {"NOT_XOF_OR_INVALID_LENGTH", 57, 113},
655 #endif
656+ #ifdef PROV_R_NO_INSTANCE_ALLOWED
657+ {"NO_INSTANCE_ALLOWED", ERR_LIB_PROV, PROV_R_NO_INSTANCE_ALLOWED},
658+ #else
659+ {"NO_INSTANCE_ALLOWED", 57, 242},
660+ #endif
661 #ifdef PROV_R_NO_KEY_SET
662 {"NO_KEY_SET", ERR_LIB_PROV, PROV_R_NO_KEY_SET},
663 #else
664@@ -5310,6 +5602,11 @@ static struct py_ssl_error_code error_codes[] = {
665 #else
666 {"NO_PARAMETERS_SET", 57, 177},
667 #endif
668+ #ifdef PROV_R_ONESHOT_CALL_OUT_OF_ORDER
669+ {"ONESHOT_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_ONESHOT_CALL_OUT_OF_ORDER},
670+ #else
671+ {"ONESHOT_CALL_OUT_OF_ORDER", 57, 239},
672+ #endif
673 #ifdef PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE
674 {"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE", ERR_LIB_PROV, PROV_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE},
675 #else
676@@ -5460,6 +5757,11 @@ static struct py_ssl_error_code error_codes[] = {
677 #else
678 {"UNSUPPORTED_NUMBER_OF_ROUNDS", 57, 152},
679 #endif
680+ #ifdef PROV_R_UPDATE_CALL_OUT_OF_ORDER
681+ {"UPDATE_CALL_OUT_OF_ORDER", ERR_LIB_PROV, PROV_R_UPDATE_CALL_OUT_OF_ORDER},
682+ #else
683+ {"UPDATE_CALL_OUT_OF_ORDER", 57, 240},
684+ #endif
685 #ifdef PROV_R_URI_AUTHORITY_UNSUPPORTED
686 {"URI_AUTHORITY_UNSUPPORTED", ERR_LIB_PROV, PROV_R_URI_AUTHORITY_UNSUPPORTED},
687 #else
688@@ -5595,6 +5897,11 @@ static struct py_ssl_error_code error_codes[] = {
689 #else
690 {"INTERNAL_ERROR", 36, 113},
691 #endif
692+ #ifdef RAND_R_INVALID_PROPERTY_QUERY
693+ {"INVALID_PROPERTY_QUERY", ERR_LIB_RAND, RAND_R_INVALID_PROPERTY_QUERY},
694+ #else
695+ {"INVALID_PROPERTY_QUERY", 36, 137},
696+ #endif
697 #ifdef RAND_R_IN_ERROR_STATE
698 {"IN_ERROR_STATE", ERR_LIB_RAND, RAND_R_IN_ERROR_STATE},
699 #else
700@@ -6210,6 +6517,11 @@ static struct py_ssl_error_code error_codes[] = {
701 #else
702 {"AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE", 20, 158},
703 #endif
704+ #ifdef SSL_R_BAD_CERTIFICATE
705+ {"BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_BAD_CERTIFICATE},
706+ #else
707+ {"BAD_CERTIFICATE", 20, 348},
708+ #endif
709 #ifdef SSL_R_BAD_CHANGE_CIPHER_SPEC
710 {"BAD_CHANGE_CIPHER_SPEC", ERR_LIB_SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC},
711 #else
712@@ -6220,6 +6532,11 @@ static struct py_ssl_error_code error_codes[] = {
713 #else
714 {"BAD_CIPHER", 20, 186},
715 #endif
716+ #ifdef SSL_R_BAD_COMPRESSION_ALGORITHM
717+ {"BAD_COMPRESSION_ALGORITHM", ERR_LIB_SSL, SSL_R_BAD_COMPRESSION_ALGORITHM},
718+ #else
719+ {"BAD_COMPRESSION_ALGORITHM", 20, 326},
720+ #endif
721 #ifdef SSL_R_BAD_DATA
722 {"BAD_DATA", ERR_LIB_SSL, SSL_R_BAD_DATA},
723 #else
724@@ -6495,6 +6812,11 @@ static struct py_ssl_error_code error_codes[] = {
725 #else
726 {"CONNECTION_TYPE_NOT_SET", 20, 144},
727 #endif
728+ #ifdef SSL_R_CONN_USE_ONLY
729+ {"CONN_USE_ONLY", ERR_LIB_SSL, SSL_R_CONN_USE_ONLY},
730+ #else
731+ {"CONN_USE_ONLY", 20, 356},
732+ #endif
733 #ifdef SSL_R_CONTEXT_NOT_DANE_ENABLED
734 {"CONTEXT_NOT_DANE_ENABLED", ERR_LIB_SSL, SSL_R_CONTEXT_NOT_DANE_ENABLED},
735 #else
736@@ -6635,6 +6957,11 @@ static struct py_ssl_error_code error_codes[] = {
737 #else
738 {"EE_KEY_TOO_SMALL", 20, 399},
739 #endif
740+ #ifdef SSL_R_EMPTY_RAW_PUBLIC_KEY
741+ {"EMPTY_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_EMPTY_RAW_PUBLIC_KEY},
742+ #else
743+ {"EMPTY_RAW_PUBLIC_KEY", 20, 349},
744+ #endif
745 #ifdef SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST
746 {"EMPTY_SRTP_PROTECTION_PROFILE_LIST", ERR_LIB_SSL, SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST},
747 #else
748@@ -6650,6 +6977,11 @@ static struct py_ssl_error_code error_codes[] = {
749 #else
750 {"ERROR_IN_RECEIVED_CIPHER_LIST", 20, 151},
751 #endif
752+ #ifdef SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG
753+ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", ERR_LIB_SSL, SSL_R_ERROR_IN_SYSTEM_DEFAULT_CONFIG},
754+ #else
755+ {"ERROR_IN_SYSTEM_DEFAULT_CONFIG", 20, 419},
756+ #endif
757 #ifdef SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN
758 {"ERROR_SETTING_TLSA_BASE_DOMAIN", ERR_LIB_SSL, SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN},
759 #else
760@@ -6680,11 +7012,26 @@ static struct py_ssl_error_code error_codes[] = {
761 #else
762 {"EXT_LENGTH_MISMATCH", 20, 163},
763 #endif
764+ #ifdef SSL_R_FAILED_TO_GET_PARAMETER
765+ {"FAILED_TO_GET_PARAMETER", ERR_LIB_SSL, SSL_R_FAILED_TO_GET_PARAMETER},
766+ #else
767+ {"FAILED_TO_GET_PARAMETER", 20, 316},
768+ #endif
769 #ifdef SSL_R_FAILED_TO_INIT_ASYNC
770 {"FAILED_TO_INIT_ASYNC", ERR_LIB_SSL, SSL_R_FAILED_TO_INIT_ASYNC},
771 #else
772 {"FAILED_TO_INIT_ASYNC", 20, 405},
773 #endif
774+ #ifdef SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE
775+ {"FEATURE_NEGOTIATION_NOT_COMPLETE", ERR_LIB_SSL, SSL_R_FEATURE_NEGOTIATION_NOT_COMPLETE},
776+ #else
777+ {"FEATURE_NEGOTIATION_NOT_COMPLETE", 20, 417},
778+ #endif
779+ #ifdef SSL_R_FEATURE_NOT_RENEGOTIABLE
780+ {"FEATURE_NOT_RENEGOTIABLE", ERR_LIB_SSL, SSL_R_FEATURE_NOT_RENEGOTIABLE},
781+ #else
782+ {"FEATURE_NOT_RENEGOTIABLE", 20, 413},
783+ #endif
784 #ifdef SSL_R_FRAGMENTED_CLIENT_HELLO
785 {"FRAGMENTED_CLIENT_HELLO", ERR_LIB_SSL, SSL_R_FRAGMENTED_CLIENT_HELLO},
786 #else
787@@ -6805,6 +7152,16 @@ static struct py_ssl_error_code error_codes[] = {
788 #else
789 {"INVALID_NULL_CMD_NAME", 20, 385},
790 #endif
791+ #ifdef SSL_R_INVALID_RAW_PUBLIC_KEY
792+ {"INVALID_RAW_PUBLIC_KEY", ERR_LIB_SSL, SSL_R_INVALID_RAW_PUBLIC_KEY},
793+ #else
794+ {"INVALID_RAW_PUBLIC_KEY", 20, 350},
795+ #endif
796+ #ifdef SSL_R_INVALID_RECORD
797+ {"INVALID_RECORD", ERR_LIB_SSL, SSL_R_INVALID_RECORD},
798+ #else
799+ {"INVALID_RECORD", 20, 317},
800+ #endif
801 #ifdef SSL_R_INVALID_SEQUENCE_NUMBER
802 {"INVALID_SEQUENCE_NUMBER", ERR_LIB_SSL, SSL_R_INVALID_SEQUENCE_NUMBER},
803 #else
804@@ -6865,6 +7222,11 @@ static struct py_ssl_error_code error_codes[] = {
805 #else
806 {"LIBRARY_HAS_NO_CIPHERS", 20, 161},
807 #endif
808+ #ifdef SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED
809+ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", ERR_LIB_SSL, SSL_R_MAXIMUM_ENCRYPTED_PKTS_REACHED},
810+ #else
811+ {"MAXIMUM_ENCRYPTED_PKTS_REACHED", 20, 395},
812+ #endif
813 #ifdef SSL_R_MISSING_DSA_SIGNING_CERT
814 {"MISSING_DSA_SIGNING_CERT", ERR_LIB_SSL, SSL_R_MISSING_DSA_SIGNING_CERT},
815 #else
816@@ -6925,6 +7287,11 @@ static struct py_ssl_error_code error_codes[] = {
817 #else
818 {"MISSING_SUPPORTED_GROUPS_EXTENSION", 20, 209},
819 #endif
820+ #ifdef SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION
821+ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", ERR_LIB_SSL, SSL_R_MISSING_SUPPORTED_VERSIONS_EXTENSION},
822+ #else
823+ {"MISSING_SUPPORTED_VERSIONS_EXTENSION", 20, 420},
824+ #endif
825 #ifdef SSL_R_MISSING_TMP_DH_KEY
826 {"MISSING_TMP_DH_KEY", ERR_LIB_SSL, SSL_R_MISSING_TMP_DH_KEY},
827 #else
828@@ -7065,6 +7432,11 @@ static struct py_ssl_error_code error_codes[] = {
829 #else
830 {"NO_SRTP_PROFILES", 20, 359},
831 #endif
832+ #ifdef SSL_R_NO_STREAM
833+ {"NO_STREAM", ERR_LIB_SSL, SSL_R_NO_STREAM},
834+ #else
835+ {"NO_STREAM", 20, 355},
836+ #endif
837 #ifdef SSL_R_NO_SUITABLE_DIGEST_ALGORITHM
838 {"NO_SUITABLE_DIGEST_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_DIGEST_ALGORITHM},
839 #else
840@@ -7080,6 +7452,11 @@ static struct py_ssl_error_code error_codes[] = {
841 #else
842 {"NO_SUITABLE_KEY_SHARE", 20, 101},
843 #endif
844+ #ifdef SSL_R_NO_SUITABLE_RECORD_LAYER
845+ {"NO_SUITABLE_RECORD_LAYER", ERR_LIB_SSL, SSL_R_NO_SUITABLE_RECORD_LAYER},
846+ #else
847+ {"NO_SUITABLE_RECORD_LAYER", 20, 322},
848+ #endif
849 #ifdef SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM
850 {"NO_SUITABLE_SIGNATURE_ALGORITHM", ERR_LIB_SSL, SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM},
851 #else
852@@ -7160,6 +7537,11 @@ static struct py_ssl_error_code error_codes[] = {
853 #else
854 {"PIPELINE_FAILURE", 20, 406},
855 #endif
856+ #ifdef SSL_R_POLL_REQUEST_NOT_SUPPORTED
857+ {"POLL_REQUEST_NOT_SUPPORTED", ERR_LIB_SSL, SSL_R_POLL_REQUEST_NOT_SUPPORTED},
858+ #else
859+ {"POLL_REQUEST_NOT_SUPPORTED", 20, 418},
860+ #endif
861 #ifdef SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR
862 {"POST_HANDSHAKE_AUTH_ENCODING_ERR", ERR_LIB_SSL, SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR},
863 #else
864@@ -7190,6 +7572,21 @@ static struct py_ssl_error_code error_codes[] = {
865 #else
866 {"PSK_NO_SERVER_CB", 20, 225},
867 #endif
868+ #ifdef SSL_R_QUIC_HANDSHAKE_LAYER_ERROR
869+ {"QUIC_HANDSHAKE_LAYER_ERROR", ERR_LIB_SSL, SSL_R_QUIC_HANDSHAKE_LAYER_ERROR},
870+ #else
871+ {"QUIC_HANDSHAKE_LAYER_ERROR", 20, 393},
872+ #endif
873+ #ifdef SSL_R_QUIC_NETWORK_ERROR
874+ {"QUIC_NETWORK_ERROR", ERR_LIB_SSL, SSL_R_QUIC_NETWORK_ERROR},
875+ #else
876+ {"QUIC_NETWORK_ERROR", 20, 387},
877+ #endif
878+ #ifdef SSL_R_QUIC_PROTOCOL_ERROR
879+ {"QUIC_PROTOCOL_ERROR", ERR_LIB_SSL, SSL_R_QUIC_PROTOCOL_ERROR},
880+ #else
881+ {"QUIC_PROTOCOL_ERROR", 20, 382},
882+ #endif
883 #ifdef SSL_R_READ_BIO_NOT_SET
884 {"READ_BIO_NOT_SET", ERR_LIB_SSL, SSL_R_READ_BIO_NOT_SET},
885 #else
886@@ -7200,6 +7597,16 @@ static struct py_ssl_error_code error_codes[] = {
887 #else
888 {"READ_TIMEOUT_EXPIRED", 20, 312},
889 #endif
890+ #ifdef SSL_R_RECORDS_NOT_RELEASED
891+ {"RECORDS_NOT_RELEASED", ERR_LIB_SSL, SSL_R_RECORDS_NOT_RELEASED},
892+ #else
893+ {"RECORDS_NOT_RELEASED", 20, 321},
894+ #endif
895+ #ifdef SSL_R_RECORD_LAYER_FAILURE
896+ {"RECORD_LAYER_FAILURE", ERR_LIB_SSL, SSL_R_RECORD_LAYER_FAILURE},
897+ #else
898+ {"RECORD_LAYER_FAILURE", 20, 313},
899+ #endif
900 #ifdef SSL_R_RECORD_LENGTH_MISMATCH
901 {"RECORD_LENGTH_MISMATCH", ERR_LIB_SSL, SSL_R_RECORD_LENGTH_MISMATCH},
902 #else
903@@ -7210,6 +7617,11 @@ static struct py_ssl_error_code error_codes[] = {
904 #else
905 {"RECORD_TOO_SMALL", 20, 298},
906 #endif
907+ #ifdef SSL_R_REMOTE_PEER_ADDRESS_NOT_SET
908+ {"REMOTE_PEER_ADDRESS_NOT_SET", ERR_LIB_SSL, SSL_R_REMOTE_PEER_ADDRESS_NOT_SET},
909+ #else
910+ {"REMOTE_PEER_ADDRESS_NOT_SET", 20, 346},
911+ #endif
912 #ifdef SSL_R_RENEGOTIATE_EXT_TOO_LONG
913 {"RENEGOTIATE_EXT_TOO_LONG", ERR_LIB_SSL, SSL_R_RENEGOTIATE_EXT_TOO_LONG},
914 #else
915@@ -7255,6 +7667,11 @@ static struct py_ssl_error_code error_codes[] = {
916 #else
917 {"SCT_VERIFICATION_FAILED", 20, 208},
918 #endif
919+ #ifdef SSL_R_SEQUENCE_CTR_WRAPPED
920+ {"SEQUENCE_CTR_WRAPPED", ERR_LIB_SSL, SSL_R_SEQUENCE_CTR_WRAPPED},
921+ #else
922+ {"SEQUENCE_CTR_WRAPPED", 20, 327},
923+ #endif
924 #ifdef SSL_R_SERVERHELLO_TLSEXT
925 {"SERVERHELLO_TLSEXT", ERR_LIB_SSL, SSL_R_SERVERHELLO_TLSEXT},
926 #else
927@@ -7325,6 +7742,16 @@ static struct py_ssl_error_code error_codes[] = {
928 #else
929 {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042},
930 #endif
931+ #ifdef SSL_R_SSLV3_ALERT_BAD_CERTIFICATE
932+ {"SSLV3_ALERT_BAD_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_CERTIFICATE},
933+ #else
934+ {"SSLV3_ALERT_BAD_CERTIFICATE", 20, 1042},
935+ #endif
936+ #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC
937+ {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_RECORD_MAC},
938+ #else
939+ {"SSLV3_ALERT_BAD_RECORD_MAC", 20, 1020},
940+ #endif
941 #ifdef SSL_R_SSLV3_ALERT_BAD_RECORD_MAC
942 {"SSLV3_ALERT_BAD_RECORD_MAC", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_BAD_RECORD_MAC},
943 #else
944@@ -7335,11 +7762,26 @@ static struct py_ssl_error_code error_codes[] = {
945 #else
946 {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
947 #endif
948+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED
949+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED},
950+ #else
951+ {"SSLV3_ALERT_CERTIFICATE_EXPIRED", 20, 1045},
952+ #endif
953 #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED
954 {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED},
955 #else
956 {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044},
957 #endif
958+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED
959+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED},
960+ #else
961+ {"SSLV3_ALERT_CERTIFICATE_REVOKED", 20, 1044},
962+ #endif
963+ #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN
964+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN},
965+ #else
966+ {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", 20, 1046},
967+ #endif
968 #ifdef SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN
969 {"SSLV3_ALERT_CERTIFICATE_UNKNOWN", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN},
970 #else
971@@ -7350,6 +7792,16 @@ static struct py_ssl_error_code error_codes[] = {
972 #else
973 {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
974 #endif
975+ #ifdef SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE
976+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE},
977+ #else
978+ {"SSLV3_ALERT_DECOMPRESSION_FAILURE", 20, 1030},
979+ #endif
980+ #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE
981+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE},
982+ #else
983+ {"SSLV3_ALERT_HANDSHAKE_FAILURE", 20, 1040},
984+ #endif
985 #ifdef SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE
986 {"SSLV3_ALERT_HANDSHAKE_FAILURE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE},
987 #else
988@@ -7360,11 +7812,26 @@ static struct py_ssl_error_code error_codes[] = {
989 #else
990 {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047},
991 #endif
992+ #ifdef SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER
993+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER},
994+ #else
995+ {"SSLV3_ALERT_ILLEGAL_PARAMETER", 20, 1047},
996+ #endif
997 #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE
998 {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_NO_CERTIFICATE},
999 #else
1000 {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041},
1001 #endif
1002+ #ifdef SSL_R_SSLV3_ALERT_NO_CERTIFICATE
1003+ {"SSLV3_ALERT_NO_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_NO_CERTIFICATE},
1004+ #else
1005+ {"SSLV3_ALERT_NO_CERTIFICATE", 20, 1041},
1006+ #endif
1007+ #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE
1008+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE},
1009+ #else
1010+ {"SSLV3_ALERT_UNEXPECTED_MESSAGE", 20, 1010},
1011+ #endif
1012 #ifdef SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE
1013 {"SSLV3_ALERT_UNEXPECTED_MESSAGE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE},
1014 #else
1015@@ -7375,6 +7842,11 @@ static struct py_ssl_error_code error_codes[] = {
1016 #else
1017 {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
1018 #endif
1019+ #ifdef SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE
1020+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", ERR_LIB_SSL, SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE},
1021+ #else
1022+ {"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE", 20, 1043},
1023+ #endif
1024 #ifdef SSL_R_SSL_COMMAND_SECTION_EMPTY
1025 {"SSL_COMMAND_SECTION_EMPTY", ERR_LIB_SSL, SSL_R_SSL_COMMAND_SECTION_EMPTY},
1026 #else
1027@@ -7450,6 +7922,36 @@ static struct py_ssl_error_code error_codes[] = {
1028 #else
1029 {"STILL_IN_INIT", 20, 121},
1030 #endif
1031+ #ifdef SSL_R_STREAM_COUNT_LIMITED
1032+ {"STREAM_COUNT_LIMITED", ERR_LIB_SSL, SSL_R_STREAM_COUNT_LIMITED},
1033+ #else
1034+ {"STREAM_COUNT_LIMITED", 20, 411},
1035+ #endif
1036+ #ifdef SSL_R_STREAM_FINISHED
1037+ {"STREAM_FINISHED", ERR_LIB_SSL, SSL_R_STREAM_FINISHED},
1038+ #else
1039+ {"STREAM_FINISHED", 20, 365},
1040+ #endif
1041+ #ifdef SSL_R_STREAM_RECV_ONLY
1042+ {"STREAM_RECV_ONLY", ERR_LIB_SSL, SSL_R_STREAM_RECV_ONLY},
1043+ #else
1044+ {"STREAM_RECV_ONLY", 20, 366},
1045+ #endif
1046+ #ifdef SSL_R_STREAM_RESET
1047+ {"STREAM_RESET", ERR_LIB_SSL, SSL_R_STREAM_RESET},
1048+ #else
1049+ {"STREAM_RESET", 20, 375},
1050+ #endif
1051+ #ifdef SSL_R_STREAM_SEND_ONLY
1052+ {"STREAM_SEND_ONLY", ERR_LIB_SSL, SSL_R_STREAM_SEND_ONLY},
1053+ #else
1054+ {"STREAM_SEND_ONLY", 20, 379},
1055+ #endif
1056+ #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
1057+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
1058+ #else
1059+ {"TLSV13_ALERT_CERTIFICATE_REQUIRED", 20, 1116},
1060+ #endif
1061 #ifdef SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED
1062 {"TLSV13_ALERT_CERTIFICATE_REQUIRED", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED},
1063 #else
1064@@ -7460,6 +7962,16 @@ static struct py_ssl_error_code error_codes[] = {
1065 #else
1066 {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
1067 #endif
1068+ #ifdef SSL_R_TLSV13_ALERT_MISSING_EXTENSION
1069+ {"TLSV13_ALERT_MISSING_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV13_ALERT_MISSING_EXTENSION},
1070+ #else
1071+ {"TLSV13_ALERT_MISSING_EXTENSION", 20, 1109},
1072+ #endif
1073+ #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
1074+ {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
1075+ #else
1076+ {"TLSV1_ALERT_ACCESS_DENIED", 20, 1049},
1077+ #endif
1078 #ifdef SSL_R_TLSV1_ALERT_ACCESS_DENIED
1079 {"TLSV1_ALERT_ACCESS_DENIED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_ACCESS_DENIED},
1080 #else
1081@@ -7470,6 +7982,16 @@ static struct py_ssl_error_code error_codes[] = {
1082 #else
1083 {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
1084 #endif
1085+ #ifdef SSL_R_TLSV1_ALERT_DECODE_ERROR
1086+ {"TLSV1_ALERT_DECODE_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECODE_ERROR},
1087+ #else
1088+ {"TLSV1_ALERT_DECODE_ERROR", 20, 1050},
1089+ #endif
1090+ #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
1091+ {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
1092+ #else
1093+ {"TLSV1_ALERT_DECRYPTION_FAILED", 20, 1021},
1094+ #endif
1095 #ifdef SSL_R_TLSV1_ALERT_DECRYPTION_FAILED
1096 {"TLSV1_ALERT_DECRYPTION_FAILED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPTION_FAILED},
1097 #else
1098@@ -7480,6 +8002,16 @@ static struct py_ssl_error_code error_codes[] = {
1099 #else
1100 {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
1101 #endif
1102+ #ifdef SSL_R_TLSV1_ALERT_DECRYPT_ERROR
1103+ {"TLSV1_ALERT_DECRYPT_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_DECRYPT_ERROR},
1104+ #else
1105+ {"TLSV1_ALERT_DECRYPT_ERROR", 20, 1051},
1106+ #endif
1107+ #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
1108+ {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
1109+ #else
1110+ {"TLSV1_ALERT_EXPORT_RESTRICTION", 20, 1060},
1111+ #endif
1112 #ifdef SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION
1113 {"TLSV1_ALERT_EXPORT_RESTRICTION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION},
1114 #else
1115@@ -7490,6 +8022,16 @@ static struct py_ssl_error_code error_codes[] = {
1116 #else
1117 {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
1118 #endif
1119+ #ifdef SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK
1120+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK},
1121+ #else
1122+ {"TLSV1_ALERT_INAPPROPRIATE_FALLBACK", 20, 1086},
1123+ #endif
1124+ #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
1125+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
1126+ #else
1127+ {"TLSV1_ALERT_INSUFFICIENT_SECURITY", 20, 1071},
1128+ #endif
1129 #ifdef SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY
1130 {"TLSV1_ALERT_INSUFFICIENT_SECURITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY},
1131 #else
1132@@ -7500,6 +8042,26 @@ static struct py_ssl_error_code error_codes[] = {
1133 #else
1134 {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
1135 #endif
1136+ #ifdef SSL_R_TLSV1_ALERT_INTERNAL_ERROR
1137+ {"TLSV1_ALERT_INTERNAL_ERROR", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_INTERNAL_ERROR},
1138+ #else
1139+ {"TLSV1_ALERT_INTERNAL_ERROR", 20, 1080},
1140+ #endif
1141+ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
1142+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
1143+ #else
1144+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
1145+ #endif
1146+ #ifdef SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL
1147+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL},
1148+ #else
1149+ {"TLSV1_ALERT_NO_APPLICATION_PROTOCOL", 20, 1120},
1150+ #endif
1151+ #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
1152+ {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
1153+ #else
1154+ {"TLSV1_ALERT_NO_RENEGOTIATION", 20, 1100},
1155+ #endif
1156 #ifdef SSL_R_TLSV1_ALERT_NO_RENEGOTIATION
1157 {"TLSV1_ALERT_NO_RENEGOTIATION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION},
1158 #else
1159@@ -7510,21 +8072,56 @@ static struct py_ssl_error_code error_codes[] = {
1160 #else
1161 {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
1162 #endif
1163+ #ifdef SSL_R_TLSV1_ALERT_PROTOCOL_VERSION
1164+ {"TLSV1_ALERT_PROTOCOL_VERSION", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION},
1165+ #else
1166+ {"TLSV1_ALERT_PROTOCOL_VERSION", 20, 1070},
1167+ #endif
1168 #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
1169 {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
1170 #else
1171 {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
1172 #endif
1173+ #ifdef SSL_R_TLSV1_ALERT_RECORD_OVERFLOW
1174+ {"TLSV1_ALERT_RECORD_OVERFLOW", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_RECORD_OVERFLOW},
1175+ #else
1176+ {"TLSV1_ALERT_RECORD_OVERFLOW", 20, 1022},
1177+ #endif
1178+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
1179+ {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
1180+ #else
1181+ {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
1182+ #endif
1183 #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_CA
1184 {"TLSV1_ALERT_UNKNOWN_CA", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_CA},
1185 #else
1186 {"TLSV1_ALERT_UNKNOWN_CA", 20, 1048},
1187 #endif
1188+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
1189+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
1190+ #else
1191+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
1192+ #endif
1193+ #ifdef SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY
1194+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY},
1195+ #else
1196+ {"TLSV1_ALERT_UNKNOWN_PSK_IDENTITY", 20, 1115},
1197+ #endif
1198 #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
1199 {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
1200 #else
1201 {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
1202 #endif
1203+ #ifdef SSL_R_TLSV1_ALERT_USER_CANCELLED
1204+ {"TLSV1_ALERT_USER_CANCELLED", ERR_LIB_SSL, SSL_R_TLSV1_ALERT_USER_CANCELLED},
1205+ #else
1206+ {"TLSV1_ALERT_USER_CANCELLED", 20, 1090},
1207+ #endif
1208+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
1209+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
1210+ #else
1211+ {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", 20, 1114},
1212+ #endif
1213 #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE
1214 {"TLSV1_BAD_CERTIFICATE_HASH_VALUE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE},
1215 #else
1216@@ -7535,6 +8132,16 @@ static struct py_ssl_error_code error_codes[] = {
1217 #else
1218 {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
1219 #endif
1220+ #ifdef SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE
1221+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", ERR_LIB_SSL, SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE},
1222+ #else
1223+ {"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE", 20, 1113},
1224+ #endif
1225+ #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
1226+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
1227+ #else
1228+ {"TLSV1_CERTIFICATE_UNOBTAINABLE", 20, 1111},
1229+ #endif
1230 #ifdef SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE
1231 {"TLSV1_CERTIFICATE_UNOBTAINABLE", ERR_LIB_SSL, SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE},
1232 #else
1233@@ -7545,6 +8152,16 @@ static struct py_ssl_error_code error_codes[] = {
1234 #else
1235 {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
1236 #endif
1237+ #ifdef SSL_R_TLSV1_UNRECOGNIZED_NAME
1238+ {"TLSV1_UNRECOGNIZED_NAME", ERR_LIB_SSL, SSL_R_TLSV1_UNRECOGNIZED_NAME},
1239+ #else
1240+ {"TLSV1_UNRECOGNIZED_NAME", 20, 1112},
1241+ #endif
1242+ #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
1243+ {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
1244+ #else
1245+ {"TLSV1_UNSUPPORTED_EXTENSION", 20, 1110},
1246+ #endif
1247 #ifdef SSL_R_TLSV1_UNSUPPORTED_EXTENSION
1248 {"TLSV1_UNSUPPORTED_EXTENSION", ERR_LIB_SSL, SSL_R_TLSV1_UNSUPPORTED_EXTENSION},
1249 #else
1250@@ -7665,6 +8282,11 @@ static struct py_ssl_error_code error_codes[] = {
1251 #else
1252 {"UNKNOWN_KEY_EXCHANGE_TYPE", 20, 250},
1253 #endif
1254+ #ifdef SSL_R_UNKNOWN_MANDATORY_PARAMETER
1255+ {"UNKNOWN_MANDATORY_PARAMETER", ERR_LIB_SSL, SSL_R_UNKNOWN_MANDATORY_PARAMETER},
1256+ #else
1257+ {"UNKNOWN_MANDATORY_PARAMETER", 20, 323},
1258+ #endif
1259 #ifdef SSL_R_UNKNOWN_PKEY_TYPE
1260 {"UNKNOWN_PKEY_TYPE", ERR_LIB_SSL, SSL_R_UNKNOWN_PKEY_TYPE},
1261 #else
1262@@ -7700,6 +8322,21 @@ static struct py_ssl_error_code error_codes[] = {
1263 #else
1264 {"UNSUPPORTED_COMPRESSION_ALGORITHM", 20, 257},
1265 #endif
1266+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE
1267+ {"UNSUPPORTED_CONFIG_VALUE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE},
1268+ #else
1269+ {"UNSUPPORTED_CONFIG_VALUE", 20, 414},
1270+ #endif
1271+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS
1272+ {"UNSUPPORTED_CONFIG_VALUE_CLASS", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_CLASS},
1273+ #else
1274+ {"UNSUPPORTED_CONFIG_VALUE_CLASS", 20, 415},
1275+ #endif
1276+ #ifdef SSL_R_UNSUPPORTED_CONFIG_VALUE_OP
1277+ {"UNSUPPORTED_CONFIG_VALUE_OP", ERR_LIB_SSL, SSL_R_UNSUPPORTED_CONFIG_VALUE_OP},
1278+ #else
1279+ {"UNSUPPORTED_CONFIG_VALUE_OP", 20, 416},
1280+ #endif
1281 #ifdef SSL_R_UNSUPPORTED_ELLIPTIC_CURVE
1282 {"UNSUPPORTED_ELLIPTIC_CURVE", ERR_LIB_SSL, SSL_R_UNSUPPORTED_ELLIPTIC_CURVE},
1283 #else
1284@@ -7720,6 +8357,11 @@ static struct py_ssl_error_code error_codes[] = {
1285 #else
1286 {"UNSUPPORTED_STATUS_TYPE", 20, 329},
1287 #endif
1288+ #ifdef SSL_R_UNSUPPORTED_WRITE_FLAG
1289+ {"UNSUPPORTED_WRITE_FLAG", ERR_LIB_SSL, SSL_R_UNSUPPORTED_WRITE_FLAG},
1290+ #else
1291+ {"UNSUPPORTED_WRITE_FLAG", 20, 412},
1292+ #endif
1293 #ifdef SSL_R_USE_SRTP_NOT_NEGOTIATED
1294 {"USE_SRTP_NOT_NEGOTIATED", ERR_LIB_SSL, SSL_R_USE_SRTP_NOT_NEGOTIATED},
1295 #else
1296@@ -7750,6 +8392,11 @@ static struct py_ssl_error_code error_codes[] = {
1297 #else
1298 {"WRONG_CURVE", 20, 378},
1299 #endif
1300+ #ifdef SSL_R_WRONG_RPK_TYPE
1301+ {"WRONG_RPK_TYPE", ERR_LIB_SSL, SSL_R_WRONG_RPK_TYPE},
1302+ #else
1303+ {"WRONG_RPK_TYPE", 20, 351},
1304+ #endif
1305 #ifdef SSL_R_WRONG_SIGNATURE_LENGTH
1306 {"WRONG_SIGNATURE_LENGTH", ERR_LIB_SSL, SSL_R_WRONG_SIGNATURE_LENGTH},
1307 #else
1308@@ -8055,6 +8702,16 @@ static struct py_ssl_error_code error_codes[] = {
1309 #else
1310 {"BAD_OBJECT", 34, 119},
1311 #endif
1312+ #ifdef X509V3_R_BAD_OPTION
1313+ {"BAD_OPTION", ERR_LIB_X509V3, X509V3_R_BAD_OPTION},
1314+ #else
1315+ {"BAD_OPTION", 34, 170},
1316+ #endif
1317+ #ifdef X509V3_R_BAD_VALUE
1318+ {"BAD_VALUE", ERR_LIB_X509V3, X509V3_R_BAD_VALUE},
1319+ #else
1320+ {"BAD_VALUE", 34, 171},
1321+ #endif
1322 #ifdef X509V3_R_BN_DEC2BN_ERROR
1323 {"BN_DEC2BN_ERROR", ERR_LIB_X509V3, X509V3_R_BN_DEC2BN_ERROR},
1324 #else
1325@@ -8370,6 +9027,11 @@ static struct py_ssl_error_code error_codes[] = {
1326 #else
1327 {"UNKNOWN_OPTION", 34, 120},
1328 #endif
1329+ #ifdef X509V3_R_UNKNOWN_VALUE
1330+ {"UNKNOWN_VALUE", ERR_LIB_X509V3, X509V3_R_UNKNOWN_VALUE},
1331+ #else
1332+ {"UNKNOWN_VALUE", 34, 172},
1333+ #endif
1334 #ifdef X509V3_R_UNSUPPORTED_OPTION
1335 {"UNSUPPORTED_OPTION", ERR_LIB_X509V3, X509V3_R_UNSUPPORTED_OPTION},
1336 #else
1337@@ -8430,6 +9092,11 @@ static struct py_ssl_error_code error_codes[] = {
1338 #else
1339 {"CRL_VERIFY_FAILURE", 11, 131},
1340 #endif
1341+ #ifdef X509_R_DUPLICATE_ATTRIBUTE
1342+ {"DUPLICATE_ATTRIBUTE", ERR_LIB_X509, X509_R_DUPLICATE_ATTRIBUTE},
1343+ #else
1344+ {"DUPLICATE_ATTRIBUTE", 11, 140},
1345+ #endif
1346 #ifdef X509_R_ERROR_GETTING_MD_BY_NID
1347 {"ERROR_GETTING_MD_BY_NID", ERR_LIB_X509, X509_R_ERROR_GETTING_MD_BY_NID},
1348 #else
1349@@ -8590,6 +9257,11 @@ static struct py_ssl_error_code error_codes[] = {
1350 #else
1351 {"UNSUPPORTED_ALGORITHM", 11, 111},
1352 #endif
1353+ #ifdef X509_R_UNSUPPORTED_VERSION
1354+ {"UNSUPPORTED_VERSION", ERR_LIB_X509, X509_R_UNSUPPORTED_VERSION},
1355+ #else
1356+ {"UNSUPPORTED_VERSION", 11, 145},
1357+ #endif
1358 #ifdef X509_R_WRONG_LOOKUP_TYPE
1359 {"WRONG_LOOKUP_TYPE", ERR_LIB_X509, X509_R_WRONG_LOOKUP_TYPE},
1360 #else
1361diff --git a/Tools/c-analyzer/cpython/_parser.py b/Tools/c-analyzer/cpython/_parser.py
1362index 21be53e7884..a08b32fa45d 100644
1363--- a/Tools/c-analyzer/cpython/_parser.py
1364+++ b/Tools/c-analyzer/cpython/_parser.py
1365@@ -70,9 +70,7 @@ Python/thread_pthread.h
1366 Python/thread_pthread_stubs.h
1367
1368 # only huge constants (safe but parsing is slow)
1369-Modules/_ssl_data_31.h
1370-Modules/_ssl_data_300.h
1371-Modules/_ssl_data_111.h
1372+Modules/_ssl_data_*.h
1373 Modules/cjkcodecs/mappings_*.h
1374 Modules/unicodedata_db.h
1375 Modules/unicodename_db.h
1376diff --git a/Tools/ssl/make_ssl_data.py b/Tools/ssl/make_ssl_data.py
1377index 9860871..0cd05c7 100755
1378--- a/Tools/ssl/make_ssl_data.py
1379+++ b/Tools/ssl/make_ssl_data.py
1380@@ -5,9 +5,28 @@ This script should be called *manually* when we want to upgrade SSLError
1381 `library` and `reason` mnemonics to a more recent OpenSSL version.
1382
1383 It takes two arguments:
1384-- the path to the OpenSSL source tree (e.g. git checkout)
1385+- the path to the OpenSSL git checkout
1386 - the path to the header file to be generated Modules/_ssl_data_{version}.h
1387 - error codes are version specific
1388+
1389+The OpenSSL git checkout should be at a specific tag, using commands like:
1390+ git tag --list 'openssl-*'
1391+ git switch --detach openssl-3.4.0
1392+
1393+
1394+After generating the definitions, compare the result with newest pre-existing file.
1395+You can use a command like:
1396+
1397+ git diff --no-index Modules/_ssl_data_31.h Modules/_ssl_data_34.h
1398+
1399+- If the new version *only* adds new definitions, remove the pre-existing file
1400+ and adjust the #include in _ssl.c to point to the new version.
1401+- If the new version removes or renumbers some definitions, keep both files and
1402+ add a new #include in _ssl.c.
1403+
1404+A newly supported OpenSSL version should also be added to:
1405+- Tools/ssl/multissltests.py
1406+- .github/workflows/build.yml
1407 """
1408
1409 import argparse
1410@@ -16,6 +35,7 @@ import operator
1411 import os
1412 import re
1413 import sys
1414+import subprocess
1415
1416
1417 parser = argparse.ArgumentParser(
1418@@ -118,9 +138,17 @@ def main():
1419 # sort by libname, numeric error code
1420 args.reasons = sorted(reasons, key=operator.itemgetter(0, 3))
1421
1422+ git_describe = subprocess.run(
1423+ ['git', 'describe', '--long', '--dirty'],
1424+ cwd=args.srcdir,
1425+ capture_output=True,
1426+ encoding='utf-8',
1427+ check=True,
1428+ )
1429 lines = [
1430- "/* File generated by Tools/ssl/make_ssl_data.py */"
1431- f"/* Generated on {datetime.datetime.utcnow().isoformat()} */"
1432+ "/* File generated by Tools/ssl/make_ssl_data.py */",
1433+ f"/* Generated on {datetime.datetime.now(datetime.UTC).isoformat()} */",
1434+ f"/* Generated from Git commit {git_describe.stdout.strip()} */",
1435 ]
1436 lines.extend(gen_library_codes(args))
1437 lines.append("")
1438diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
1439index eae0e0c..fb06f63 100755
1440--- a/Tools/ssl/multissltests.py
1441+++ b/Tools/ssl/multissltests.py
1442@@ -51,6 +51,7 @@ OPENSSL_RECENT_VERSIONS = [
1443 "3.1.7",
1444 "3.2.3",
1445 "3.3.2",
1446+ "3.4.0",
1447 ]
1448
1449 LIBRESSL_OLD_VERSIONS = [
1450--
14512.30.2
1452
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
new file mode 100644
index 0000000000..84ad2abb0b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
@@ -0,0 +1,46 @@
1From 129ee75863081d9e3418acca3df1e47667f671ad Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Thu, 16 Sep 2021 16:35:37 +0200
4Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
5 errors
6
7reading stdin can throw the same I/O errors as reading from master fd does,
8e.g. when running under Yocto's test harness:
9======================================================================
10ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest)
11----------------------------------------------------------------------
12Traceback (most recent call last):
13 File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang
14 pty.spawn([sys.executable, '-c', 'print("hi there")'])
15 File "/usr/lib/python3.10/pty.py", line 181, in spawn
16 _copy(master_fd, master_read, stdin_read)
17 File "/usr/lib/python3.10/pty.py", line 157, in _copy
18 data = stdin_read(STDIN_FILENO)
19 File "/usr/lib/python3.10/pty.py", line 132, in _read
20 return os.read(fd, 1024)
21OSError: [Errno 5] Input/output error
22
23So let's treat both channels the same.
24
25Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
26Signed-off-by: Alexander Kanavin <alex@linutronix.de>
27---
28 Lib/pty.py | 5 ++++-
29 1 file changed, 4 insertions(+), 1 deletion(-)
30
31diff --git a/Lib/pty.py b/Lib/pty.py
32index 1d97994..fa8821b 100644
33--- a/Lib/pty.py
34+++ b/Lib/pty.py
35@@ -178,7 +178,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read):
36 i_buf = i_buf[n:]
37
38 if stdin_avail and STDIN_FILENO in rfds:
39- data = stdin_read(STDIN_FILENO)
40+ try:
41+ data = stdin_read(STDIN_FILENO)
42+ except OSError:
43+ data = b""
44 if not data:
45 stdin_avail = False
46 else:
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
deleted file mode 100644
index 1490cdbb18..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 22 Oct 2020 13:10:34 +0200
4Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file
5
6This allows correctly substituting them for target installs using
7native python.
8
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10---
11 Lib/sysconfig.py | 8 ++++----
12 1 file changed, 4 insertions(+), 4 deletions(-)
13
14diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
15index bf04ac5..ed0462b 100644
16--- a/Lib/sysconfig.py
17+++ b/Lib/sysconfig.py
18@@ -20,10 +20,10 @@ __all__ = [
19
20 _INSTALL_SCHEMES = {
21 'posix_prefix': {
22- 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
23- 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
24- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
25- 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
26+ 'stdlib': '{LIBDEST}',
27+ 'platstdlib': '{LIBDEST}',
28+ 'purelib': '{LIBDEST}/site-packages',
29+ 'platlib': '{LIBDEST}/site-packages',
30 'include':
31 '{installed_base}/include/python{py_version_short}{abiflags}',
32 'platinclude':
33--
342.24.0
35
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
new file mode 100644
index 0000000000..ca72ebc899
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,31 @@
1From 3f4f3e917950e286d5729ea949ca342995eb3c3e Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 17 Nov 2023 14:26:32 +0100
4Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
5 file
6
7This allows correctly substituting them for target installs using
8native python.
9
10Upstream-Status: Inappropriate [oe-core cross builds]
11Signed-off-by: Alexander Kanavin <alex@linutronix.de>
12---
13 Lib/sysconfig/__init__.py | 5 +++++
14 1 file changed, 5 insertions(+)
15
16diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py
17index f8e1c7d..0882526 100644
18--- a/Lib/sysconfig/__init__.py
19+++ b/Lib/sysconfig/__init__.py
20@@ -494,6 +494,11 @@ def _init_config_vars():
21 _CONFIG_VARS['VPATH'] = sys._vpath
22 if os.name == 'posix':
23 _init_posix(_CONFIG_VARS)
24+ _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix']
25+ _CONFIG_VARS['base'] = _CONFIG_VARS['prefix']
26+ _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix']
27+ _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix']
28+ _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR']
29 if _HAS_USER_BASE:
30 # Setting 'userbase' is done below the call to the
31 # init function to enable using 'get_config_var' in
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
deleted file mode 100644
index b1bceac512..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
+++ /dev/null
@@ -1,58 +0,0 @@
1From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 16 Jan 2020 12:34:20 +0100
4Subject: [PATCH] Makefile: do not compile .pyc in parallel
5
6This was found to break reproducibility, and produce strange file ownership
7races.
8
9The upstream commit introducing the change was:
10https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
11
12Upstream-Status: Pending
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14---
15 Makefile.pre.in | 12 ++++++------
16 1 file changed, 6 insertions(+), 6 deletions(-)
17
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 1241112..5dfdf44 100644
20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in
22@@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
23 fi
24 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
25 $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
26- -j0 -d $(LIBDEST) -f \
27+ -d $(LIBDEST) -f \
28 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
29 $(DESTDIR)$(LIBDEST)
30 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
31 $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
32- -j0 -d $(LIBDEST) -f \
33+ -d $(LIBDEST) -f \
34 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
35 $(DESTDIR)$(LIBDEST)
36 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
37 $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
38- -j0 -d $(LIBDEST) -f \
39+ -d $(LIBDEST) -f \
40 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
41 $(DESTDIR)$(LIBDEST)
42 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
43 $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
44- -j0 -d $(LIBDEST)/site-packages -f \
45+ -d $(LIBDEST)/site-packages -f \
46 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
47 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
48 $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
49- -j0 -d $(LIBDEST)/site-packages -f \
50+ -d $(LIBDEST)/site-packages -f \
51 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
52 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
53 $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
54- -j0 -d $(LIBDEST)/site-packages -f \
55+ -d $(LIBDEST)/site-packages -f \
56 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
57 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
58 $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
deleted file mode 100644
index 237645bc60..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Wed, 8 May 2019 16:10:29 +0800
4Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem)
5
6When using make -j with the 'install' target, it's possible for altbininstall
7(which normally creates BINDIR) and libainstall (which doesn't, though it
8installs python-config there) to race, resulting in a failure due to
9attempting to install python-config into a nonexistent BINDIR. Ensure it also
10exists in the libainstall target.
11
12Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186]
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 15f3687..7e9f173 100644
21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in
23@@ -1456,7 +1456,7 @@ LIBPL= @LIBPL@
24 LIBPC= $(LIBDIR)/pkgconfig
25
26 libainstall: @DEF_MAKE_RULE@ python-config
27- @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \
28+ @for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
29 do \
30 if test ! -d $(DESTDIR)$$i; then \
31 echo "Creating directory $$i"; \
32--
332.7.4
34
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
index fa7735ff93..39b62f6f26 100644
--- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
+++ b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
@@ -1,25 +1,33 @@
1From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 1From e7a8a7385f561f214054cf95f0a22bfa064eee0b Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 30 Jan 2019 12:41:04 +0100 3Date: Wed, 30 Jan 2019 12:41:04 +0100
4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data 4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data
5 5
6Upstream-Status: Inappropriate [oe-core specific] 6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 7Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
8
9Update to remove test_types from the test list, since that fails under
10qemu now.
11
12Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
8--- 13---
9 Makefile.pre.in | 3 +-- 14 Makefile.pre.in | 3 +--
10 1 file changed, 1 insertion(+), 2 deletions(-) 15 1 file changed, 1 insertion(+), 2 deletions(-)
11 16
12diff --git a/Makefile.pre.in b/Makefile.pre.in 17diff --git a/Makefile.pre.in b/Makefile.pre.in
13index a3a02a7..d5503dd 100644 18index 3bd4495f95b..8e8fc60bc76 100644
14--- a/Makefile.pre.in 19--- a/Makefile.pre.in
15+++ b/Makefile.pre.in 20+++ b/Makefile.pre.in
16@@ -507,8 +507,7 @@ build_all_generate_profile: 21@@ -751,8 +751,7 @@ profile-run-stamp:
17 $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)" 22 # enabled.
18 23 $(MAKE) profile-gen-stamp
19 run_profile_task: 24 # Next, run the profile task to generate the profile information.
20- @ # FIXME: can't run for a cross build 25- @ # FIXME: can't run for a cross build
21- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true 26- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK)
22+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true 27+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict
23
24 build_all_merge_profile:
25 $(LLVM_PROF_MERGER) 28 $(LLVM_PROF_MERGER)
29 # Remove profile generation binary since we are done with it.
30 $(MAKE) clean-retain-profile
31--
322.39.5
33
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
new file mode 100644
index 0000000000..c8537db1fd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
@@ -0,0 +1,72 @@
1From 8828a52ebace98199569404f01174398bcc64a00 Mon Sep 17 00:00:00 2001
2From: Yi Fan Yu <yifan.yu@windriver.com>
3Date: Thu, 1 Apr 2021 13:08:37 -0700
4Subject: [PATCH] Skip failing tests due to load variability on YP AB
5
6Skip these tests until AB-INT is solved.
7
8[YOCTO #14296]
9
10Upstream-Status: Inappropriate [OE-Specific]
11
12Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
13
14Skip two additional tests due to suspected load variability failures.
15
16[YOCTO #15131]
17[YOCTO #15177]
18
19Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
20---
21 Lib/test/_test_multiprocessing.py | 3 +++
22 Lib/test/test_time.py | 2 ++
23 2 files changed, 5 insertions(+)
24
25diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
26index 5dae370..23eb971 100644
27--- a/Lib/test/_test_multiprocessing.py
28+++ b/Lib/test/_test_multiprocessing.py
29@@ -688,6 +688,7 @@ class _TestProcess(BaseTestCase):
30 close_queue(q)
31
32 @support.requires_resource('walltime')
33+ @unittest.skip('timing related test, dependent on load')
34 def test_many_processes(self):
35 if self.TYPE == 'threads':
36 self.skipTest('test not appropriate for {}'.format(self.TYPE))
37@@ -2211,6 +2212,7 @@ class _TestBarrier(BaseTestCase):
38 except threading.BrokenBarrierError:
39 results.append(True)
40
41+ @unittest.skip('timing related test, dependent on load')
42 def test_timeout(self):
43 """
44 Test wait(timeout)
45@@ -5299,6 +5301,7 @@ class TestWait(unittest.TestCase):
46 time.sleep(period)
47
48 @support.requires_resource('walltime')
49+ @unittest.skip('timing related test, dependent on load')
50 def test_wait_integer(self):
51 from multiprocessing.connection import wait
52
53diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
54index 293799f..1dbb623 100644
55--- a/Lib/test/test_time.py
56+++ b/Lib/test/test_time.py
57@@ -548,6 +548,7 @@ class TimeTestCase(unittest.TestCase):
58 @unittest.skipIf(
59 support.is_wasi, "process_time not available on WASI"
60 )
61+ @unittest.skip('timing related test, dependent on load')
62 def test_process_time(self):
63 # process_time() should not include time spend during a sleep
64 start = time.process_time()
65@@ -561,6 +562,7 @@ class TimeTestCase(unittest.TestCase):
66 self.assertTrue(info.monotonic)
67 self.assertFalse(info.adjustable)
68
69+ @unittest.skip('timing related test, dependent on load')
70 def test_thread_time(self):
71 if not hasattr(time, 'thread_time'):
72 if sys.platform.startswith(('linux', 'android', 'win')):
diff --git a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
new file mode 100644
index 0000000000..ab433d1836
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
@@ -0,0 +1,36 @@
1From 5bf5aa6eae1fa3eed66893e51a1858ab481426b4 Mon Sep 17 00:00:00 2001
2From: Wentao Zhang <wentao.zhang@windriver.com>
3Date: Mon, 20 Mar 2023 13:39:52 +0800
4Subject: [PATCH] Update test_sysconfig for posix_user purelib
5
6Steps to trigger the failed test:
7Edit local.conf to add something as follows:
8 BASELIB = "lib64"
9 IMAGE_INSTALL:append = " python3-tests".
10bitbake core-image-sato
11runqemu qemux86-64 nographic slirp
12Reproducer:
13 $python3 -m test test_sysconfig
14
15Update test_sysconfig.test_user_similar() for the posix_user scheme:
16"purelib" doesn't use sys.platlibdir.
17
18Upstream-Status: Inappropriate [oe-core specific]
19Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com>
20---
21 Lib/test/test_sysconfig.py | 2 +-
22 1 file changed, 1 insertion(+), 1 deletion(-)
23
24diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
25index 1ade492..4e94889 100644
26--- a/Lib/test/test_sysconfig.py
27+++ b/Lib/test/test_sysconfig.py
28@@ -423,7 +423,7 @@ class TestSysConfig(unittest.TestCase):
29 expected = os.path.normpath(global_path.replace(base, user, 1))
30 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
31 # whereas posix_prefix does.
32- if name == 'platlib':
33+ if name == 'platlib' or name == 'purelib':
34 # Replace "/lib64/python3.11/site-packages" suffix
35 # with "/lib/python3.11/site-packages".
36 py_version_abi = sysconfig._get_python_version_abi()
diff --git a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch b/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
deleted file mode 100644
index 793385de91..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001
2From: Inada Naoki <songofacandy@gmail.com>
3Date: Sat, 14 Jul 2018 00:46:11 +0900
4Subject: [PATCH] Use FLAG_REF always for interned strings
5
6Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226]
7Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
8
9---
10 Python/marshal.c | 9 +++++++--
11 1 file changed, 7 insertions(+), 2 deletions(-)
12
13diff --git a/Python/marshal.c b/Python/marshal.c
14index c4538bd..2437160 100644
15--- a/Python/marshal.c
16+++ b/Python/marshal.c
17@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
18 if (p->version < 3 || p->hashtable == NULL)
19 return 0; /* not writing object references */
20
21- /* if it has only one reference, it definitely isn't shared */
22- if (Py_REFCNT(v) == 1)
23+ /* If it has only one reference, it definitely isn't shared.
24+ * But we use TYPE_REF always for interned string, to PYC file stable
25+ * as possible.
26+ */
27+ if (Py_REFCNT(v) == 1 &&
28+ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) {
29 return 0;
30+ }
31
32 entry = _Py_hashtable_get_entry(p->hashtable, v);
33 if (entry != NULL) {
diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
deleted file mode 100644
index c4fae09a5b..0000000000
--- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
+++ /dev/null
@@ -1,209 +0,0 @@
1From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001
2From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
3Date: Fri, 31 May 2019 15:34:34 +0200
4Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
5 float
6
7When (cross) compiling for softfloat mips, __mips_hard_float will not be
8defined and detection of OS triplet in configure.ac / configure will fail.
9
10This also has to do with the custom detection of the build triplet. Trying
11to do this in a more autoconf/autotools manner.
12
13Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
14Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
15
16%% original patch: 0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
17---
18 configure.ac | 175 +++++++--------------------------------------------
19 1 file changed, 21 insertions(+), 154 deletions(-)
20
21diff --git a/configure.ac b/configure.ac
22index ede710e..bc81b0b 100644
23--- a/configure.ac
24+++ b/configure.ac
25@@ -710,160 +710,27 @@ fi
26 MULTIARCH=$($CC --print-multiarch 2>/dev/null)
27 AC_SUBST(MULTIARCH)
28
29-AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
30-cat >> conftest.c <<EOF
31-#undef bfin
32-#undef cris
33-#undef fr30
34-#undef linux
35-#undef hppa
36-#undef hpux
37-#undef i386
38-#undef mips
39-#undef powerpc
40-#undef sparc
41-#undef unix
42-#if defined(__ANDROID__)
43- # Android is not a multiarch system.
44-#elif defined(__linux__)
45-# if defined(__x86_64__) && defined(__LP64__)
46- x86_64-linux-gnu
47-# elif defined(__x86_64__) && defined(__ILP32__)
48- x86_64-linux-gnux32
49-# elif defined(__i386__)
50- i386-linux-gnu
51-# elif defined(__aarch64__) && defined(__AARCH64EL__)
52-# if defined(__ILP32__)
53- aarch64_ilp32-linux-gnu
54-# else
55- aarch64-linux-gnu
56-# endif
57-# elif defined(__aarch64__) && defined(__AARCH64EB__)
58-# if defined(__ILP32__)
59- aarch64_be_ilp32-linux-gnu
60-# else
61- aarch64_be-linux-gnu
62-# endif
63-# elif defined(__alpha__)
64- alpha-linux-gnu
65-# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
66-# if defined(__ARMEL__)
67- arm-linux-gnueabihf
68-# else
69- armeb-linux-gnueabihf
70-# endif
71-# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
72-# if defined(__ARMEL__)
73- arm-linux-gnueabi
74-# else
75- armeb-linux-gnueabi
76-# endif
77-# elif defined(__hppa__)
78- hppa-linux-gnu
79-# elif defined(__ia64__)
80- ia64-linux-gnu
81-# elif defined(__m68k__) && !defined(__mcoldfire__)
82- m68k-linux-gnu
83-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
84-# if _MIPS_SIM == _ABIO32
85- mipsisa32r6el-linux-gnu
86-# elif _MIPS_SIM == _ABIN32
87- mipsisa64r6el-linux-gnuabin32
88-# elif _MIPS_SIM == _ABI64
89- mipsisa64r6el-linux-gnuabi64
90-# else
91-# error unknown platform triplet
92-# endif
93-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6)
94-# if _MIPS_SIM == _ABIO32
95- mipsisa32r6-linux-gnu
96-# elif _MIPS_SIM == _ABIN32
97- mipsisa64r6-linux-gnuabin32
98-# elif _MIPS_SIM == _ABI64
99- mipsisa64r6-linux-gnuabi64
100-# else
101-# error unknown platform triplet
102-# endif
103-# elif defined(__mips_hard_float) && defined(_MIPSEL)
104-# if _MIPS_SIM == _ABIO32
105- mipsel-linux-gnu
106-# elif _MIPS_SIM == _ABIN32
107- mips64el-linux-gnuabin32
108-# elif _MIPS_SIM == _ABI64
109- mips64el-linux-gnuabi64
110-# else
111-# error unknown platform triplet
112-# endif
113-# elif defined(__mips_hard_float)
114-# if _MIPS_SIM == _ABIO32
115- mips-linux-gnu
116-# elif _MIPS_SIM == _ABIN32
117- mips64-linux-gnuabin32
118-# elif _MIPS_SIM == _ABI64
119- mips64-linux-gnuabi64
120-# else
121-# error unknown platform triplet
122-# endif
123-# elif defined(__or1k__)
124- or1k-linux-gnu
125-# elif defined(__powerpc__) && defined(__SPE__)
126- powerpc-linux-gnuspe
127-# elif defined(__powerpc64__)
128-# if defined(__LITTLE_ENDIAN__)
129- powerpc64le-linux-gnu
130-# else
131- powerpc64-linux-gnu
132-# endif
133-# elif defined(__powerpc__)
134- powerpc-linux-gnu
135-# elif defined(__s390x__)
136- s390x-linux-gnu
137-# elif defined(__s390__)
138- s390-linux-gnu
139-# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
140- sh4-linux-gnu
141-# elif defined(__sparc__) && defined(__arch64__)
142- sparc64-linux-gnu
143-# elif defined(__sparc__)
144- sparc-linux-gnu
145-# elif defined(__riscv)
146-# if __riscv_xlen == 32
147- riscv32-linux-gnu
148-# elif __riscv_xlen == 64
149- riscv64-linux-gnu
150-# else
151-# error unknown platform triplet
152-# endif
153-# else
154-# error unknown platform triplet
155-# endif
156-#elif defined(__FreeBSD_kernel__)
157-# if defined(__LP64__)
158- x86_64-kfreebsd-gnu
159-# elif defined(__i386__)
160- i386-kfreebsd-gnu
161-# else
162-# error unknown platform triplet
163-# endif
164-#elif defined(__gnu_hurd__)
165- i386-gnu
166-#elif defined(__APPLE__)
167- darwin
168-#elif defined(__VXWORKS__)
169- vxworks
170-#else
171-# error unknown platform triplet
172-#endif
173-
174-EOF
175-
176-if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
177- PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '`
178- AC_MSG_RESULT([$PLATFORM_TRIPLET])
179-else
180- AC_MSG_RESULT([none])
181-fi
182-rm -f conftest.c conftest.out
183+AC_CANONICAL_TARGET
184+## Not using $target to filter out vendor
185+## Need to handle macos, vxworks and hurd special (?) :-/
186+case ${target_os} in
187+ darwin*)
188+ PLATFORM_TRIPLET=darwin
189+ ;;
190+ hurd*)
191+ PLATFORM_TRIPLET=i386-gnu
192+ ;;
193+ vxworks*)
194+ PLATFORM_TRIPLET=vxworks
195+ ;;
196+ *)
197+ if test "${target_cpu}" != "i686"; then
198+ PLATFORM_TRIPLET=${target_cpu}-${target_os}
199+ else
200+ PLATFORM_TRIPLET=i386-${target_os}
201+ fi
202+ ;;
203+esac
204
205 if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
206 if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
207--
2082.24.1
209
diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
deleted file mode 100644
index b982691b36..0000000000
--- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 31 Jan 2019 16:46:30 +0100
4Subject: [PATCH] distutils/sysconfig: append
5 STAGING_LIBDIR/python-sysconfigdata to sys.path
6
7So that target configuration can be used when running native python
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 Lib/distutils/sysconfig.py | 2 ++
14 Lib/sysconfig.py | 2 ++
15 2 files changed, 4 insertions(+)
16
17diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
18index b51629e..2df348c 100644
19--- a/Lib/distutils/sysconfig.py
20+++ b/Lib/distutils/sysconfig.py
21@@ -438,6 +438,8 @@ def _init_posix():
22 platform=sys.platform,
23 multiarch=getattr(sys.implementation, '_multiarch', ''),
24 ))
25+ if 'STAGING_LIBDIR' in os.environ:
26+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
27 _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
28 build_time_vars = _temp.build_time_vars
29 global _config_vars
30diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
31index b2d790b..405273c 100644
32--- a/Lib/sysconfig.py
33+++ b/Lib/sysconfig.py
34@@ -419,6 +419,8 @@ def _init_posix(vars):
35 """Initialize the module as appropriate for POSIX systems."""
36 # _sysconfigdata is generated at build time, see _generate_posix_vars()
37 name = _get_sysconfigdata_name()
38+ if 'STAGING_LIBDIR' in os.environ:
39+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
40 _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
41 build_time_vars = _temp.build_time_vars
42 vars.update(build_time_vars)
diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
deleted file mode 100644
index bfddc1ad52..0000000000
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ /dev/null
@@ -1,121 +0,0 @@
1From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 22 Oct 2018 15:19:51 +0800
4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
5
6When working path contains "clang"/"gcc"/"icc", it might be part of $CC
7because of the "--sysroot" parameter. That could cause judgement error
8about clang/gcc/icc compilers. e.g.
9When "icc" is containded in working path, below errors are reported when
10compiling python3:
11x86_64-wrs-linux-gcc: error: strict: No such file or directory
12x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
13
14Here use cc_basename to replace CC for checking compiler to avoid such
15kind of issue.
16
17Upstream-Status: Pending
18
19Signed-off-by: Li Zhou <li.zhou@windriver.com>
20
21patch originally from Li Zhou, I just rework it to new version
22
23Signed-off-by: Changqing Li <changqing.li@windriver.com>
24
25---
26 configure.ac | 19 ++++++++++---------
27 1 file changed, 10 insertions(+), 9 deletions(-)
28
29diff --git a/configure.ac b/configure.ac
30index d60f052..e491e24 100644
31--- a/configure.ac
32+++ b/configure.ac
33@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h)
34 AC_CANONICAL_HOST
35 AC_SUBST(build)
36 AC_SUBST(host)
37+LT_INIT
38
39 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile
40 rm -f pybuilddir.txt
41@@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main)
42 preset_cxx="$CXX"
43 if test -z "$CXX"
44 then
45- case "$CC" in
46+ case "$cc_basename" in
47 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;;
48 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;;
49 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;;
50@@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir
51
52 case $ac_sys_system in
53 hp*|HP*)
54- case $CC in
55+ case $cc_basename in
56 cc|*/cc) CC="$CC -Ae";;
57 esac;;
58 esac
59@@ -1366,7 +1367,7 @@ else
60 fi],
61 [AC_MSG_RESULT(no)])
62 if test "$Py_LTO" = 'true' ; then
63- case $CC in
64+ case $cc_basename in
65 *clang*)
66 AC_SUBST(LLVM_AR)
67 AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path})
68@@ -1456,7 +1457,7 @@ then
69 fi
70 fi
71 LLVM_PROF_ERR=no
72-case $CC in
73+case $cc_basename in
74 *clang*)
75 # Any changes made here should be reflected in the GCC+Darwin case below
76 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
77@@ -1517,7 +1518,7 @@ esac
78 # compiler and platform. BASECFLAGS tweaks need to be made even if the
79 # user set OPT.
80
81-case $CC in
82+case $cc_basename in
83 *clang*)
84 cc_is_clang=1
85 ;;
86@@ -1653,7 +1654,7 @@ yes)
87
88 # ICC doesn't recognize the option, but only emits a warning
89 ## XXX does it emit an unused result warning and can it be disabled?
90- case "$CC" in
91+ case "$cc_basename" in
92 *icc*)
93 ac_cv_disable_unused_result_warning=no
94 ;;
95@@ -1993,7 +1994,7 @@ yes)
96 ;;
97 esac
98
99-case "$CC" in
100+case "$cc_basename" in
101 *icc*)
102 # ICC needs -fp-model strict or floats behave badly
103 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict"
104@@ -2765,7 +2766,7 @@ then
105 then
106 LINKFORSHARED="-Wl,--export-dynamic"
107 fi;;
108- SunOS/5*) case $CC in
109+ SunOS/5*) case $cc_basename in
110 *gcc*)
111 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
112 then
113@@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then
114 # Some versions of gcc miscompile inline asm:
115 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
116 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
117- case $CC in
118+ case $cc_basename in
119 *gcc*)
120 AC_MSG_CHECKING(for gcc ipa-pure-const bug)
121 saved_cflags="$CFLAGS"
diff --git a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
deleted file mode 100644
index ea0af02e72..0000000000
--- a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ /dev/null
@@ -1,69 +0,0 @@
1From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 9 Jan 2020 17:44:05 +0100
4Subject: [PATCH] setup.py: pass missing libraries to Extension for
5 multiprocessing module
6
7In the following commit:
8...
9commit e711cafab13efc9c1fe6c5cd75826401445eb585
10Author: Benjamin Peterson <benjamin@python.org>
11Date: Wed Jun 11 16:44:04 2008 +0000
12
13 Merged revisions 64104,64117 via svnmerge from
14 svn+ssh://pythondev@svn.python.org/python/trunk
15...
16(see diff in setup.py)
17It assigned libraries for multiprocessing module according
18the host_platform, but not pass it to Extension.
19
20In glibc, the following commit caused two definition of
21sem_getvalue are different.
22https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
23(see diff in nptl/sem_getvalue.c for detail)
24`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
25and `__old_sem_getvalue' is to compat the old version
26sem_getvalue@GLIBC_2.0.
27
28To build python for embedded Linux systems:
29http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
30If not explicitly link to library pthread (-lpthread), it will
31load glibc's sem_getvalue randomly at runtime.
32
33Such as build python on linux x86_64 host and run the python
34on linux x86_32 target. If not link library pthread, it caused
35multiprocessing bounded semaphore could not work correctly.
36...
37>>> import multiprocessing
38>>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
39>>> pool_sema.acquire()
40True
41>>> pool_sema.release()
42Traceback (most recent call last):
43 File "<stdin>", line 1, in <module>
44ValueError: semaphore or lock released too many times
45...
46
47And the semaphore issue also caused multiprocessing.Queue().put() hung.
48
49Upstream-Status: Pending
50
51Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
52Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
53---
54 setup.py | 2 +-
55 1 file changed, 1 insertion(+), 1 deletion(-)
56
57diff --git a/setup.py b/setup.py
58index ec3f2a4..b0f1541 100644
59--- a/setup.py
60+++ b/setup.py
61@@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext):
62 libraries=libs,
63 include_dirs=["Modules/_multiprocessing"]))
64
65- self.add(Extension('_multiprocessing', multiprocessing_srcs,
66+ self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'],
67 include_dirs=["Modules/_multiprocessing"]))
68
69 def detect_uuid(self):
diff --git a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
new file mode 100644
index 0000000000..ea103bc834
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
@@ -0,0 +1,29 @@
1From c5bdd39f8ebc4e6c58a47d7e424eac028eddb4ff Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 15 Sep 2023 08:48:33 -0400
4Subject: [PATCH] skip no_stdout_fileno test due to load variability
5
6Skip test_input_no_stdout_fileno so that it doesn't fail on systems
7under heavy load.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #15210]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14---
15 Lib/test/test_builtin.py | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
19index c5394de..ed17fb6 100644
20--- a/Lib/test/test_builtin.py
21+++ b/Lib/test/test_builtin.py
22@@ -2435,6 +2435,7 @@ class PtyTests(unittest.TestCase):
23 "byte 0xe9 in position 4: ordinal not in "
24 "range(128)")
25
26+ @unittest.skip("Test may fail under heavy load")
27 def test_input_no_stdout_fileno(self):
28 # Issue #24402: If stdin is the original terminal but stdout.fileno()
29 # fails, do not use the original stdout file descriptor
diff --git a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
new file mode 100644
index 0000000000..b9c68a98d7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -0,0 +1,27 @@
1From bbcb17dc1ed283f41c8cd94d39f70898f0c45583 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 12 Sep 2021 21:44:36 +0200
4Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
5
6This is needed in multilib configurations where hardcoding 'lib'
7is not correct.
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11---
12 Lib/sysconfig/__init__.py | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/Lib/sysconfig/__init__.py b/Lib/sysconfig/__init__.py
16index 80aef34..f8e1c7d 100644
17--- a/Lib/sysconfig/__init__.py
18+++ b/Lib/sysconfig/__init__.py
19@@ -29,7 +29,7 @@ _INSTALL_SCHEMES = {
20 'posix_prefix': {
21 'stdlib': '{installed_base}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
22 'platstdlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}',
23- 'purelib': '{base}/lib/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
24+ 'purelib': '{base}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
25 'platlib': '{platbase}/{platlibdir}/{implementation_lower}{py_version_short}{abi_thread}/site-packages',
26 'include':
27 '{installed_base}/include/{implementation_lower}{py_version_short}{abiflags}',
diff --git a/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
new file mode 100644
index 0000000000..5f60c60b5b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_active_children-skip-problematic-test.patch
@@ -0,0 +1,27 @@
1From 540765b148d942a2339affa6c0d11445e9d0f26c Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Thu, 13 Jun 2024 10:54:31 -0400
4Subject: [PATCH] test_active_children: skip problematic test
5
6This test is failing in some tests on the Autobuilder. Since it's of a
7similar nature to other failing/hanging tests, disable it for now.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/_test_multiprocessing.py | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
17index 23eb971..b1295b2 100644
18--- a/Lib/test/_test_multiprocessing.py
19+++ b/Lib/test/_test_multiprocessing.py
20@@ -585,6 +585,7 @@ class _TestProcess(BaseTestCase):
21 self.assertTrue(type(cpus) is int)
22 self.assertTrue(cpus >= 1)
23
24+ @unittest.skip("skipping problematic test")
25 def test_active_children(self):
26 self.assertEqual(type(self.active_children()), list)
27
diff --git a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
new file mode 100644
index 0000000000..68e277d662
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
@@ -0,0 +1,33 @@
1From 0e9d0c58e77ef540d9601ce84a1aa79d9ce6ee9b Mon Sep 17 00:00:00 2001
2From: Tim Orling <timothy.t.orling@intel.com>
3Date: Fri, 18 Jun 2021 11:56:50 -0700
4Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk
5
6These tests need full packagegroup-core-buildessential, the
7easiest way to dynamically check for that is looking for
8'tools-sdk' in IMAGE_FEATURES.
9
10Upstream-Status: Inappropriate [oe-specific]
11
12Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
13---
14 Lib/test/test_ctypes/test_find.py | 2 ++
15 1 file changed, 2 insertions(+)
16
17diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
18index 85b2861..b033203 100644
19--- a/Lib/test/test_ctypes/test_find.py
20+++ b/Lib/test/test_ctypes/test_find.py
21@@ -116,10 +116,12 @@ class FindLibraryLinux(unittest.TestCase):
22 # LD_LIBRARY_PATH)
23 self.assertEqual(find_library(libname), 'lib%s.so' % libname)
24
25+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
26 def test_find_library_with_gcc(self):
27 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
28 self.assertNotEqual(find_library('c'), None)
29
30+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
31 def test_find_library_with_ld(self):
32 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
33 unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
new file mode 100644
index 0000000000..3336e2913a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_deadlock-skip-problematic-test.patch
@@ -0,0 +1,27 @@
1From 5a44f74549b32395109342e9299510c32db71068 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 12 Jun 2024 10:29:03 -0400
4Subject: [PATCH] test_deadlock: skip problematic test
5
6This test hangs frequently when run on the Autobuilder. Disable it in
7testing until the cause can be determined.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/test_concurrent_futures/test_deadlock.py | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/Lib/test/test_concurrent_futures/test_deadlock.py b/Lib/test/test_concurrent_futures/test_deadlock.py
17index 3c30c45..008d6c0 100644
18--- a/Lib/test/test_concurrent_futures/test_deadlock.py
19+++ b/Lib/test/test_concurrent_futures/test_deadlock.py
20@@ -90,6 +90,7 @@ class ErrorAtUnpickle(object):
21 return _raise_error_ignore_stderr, (UnpicklingError, )
22
23
24+@unittest.skip("skipping problematic test")
25 class ExecutorDeadlockTest:
26 TIMEOUT = support.LONG_TIMEOUT
27
diff --git a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
index 35b7e0c480..2cca004b57 100644
--- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
@@ -1,4 +1,4 @@
1From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001 1From c1f3cf625c0f011060ddaa2a4096f6aa13dd1ee6 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com> 2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Mon, 5 Aug 2019 15:57:39 +0800 3Date: Mon, 5 Aug 2019 15:57:39 +0800
4Subject: [PATCH] test_locale.py: correct the test output format 4Subject: [PATCH] test_locale.py: correct the test output format
@@ -23,24 +23,23 @@ Before this patch:
23 23
24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] 24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
25 25
26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
27
26Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 28Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
27--- 29---
28 Lib/test/test_locale.py | 2 +- 30 Lib/test/test_locale.py | 2 +-
29 1 file changed, 1 insertion(+), 1 deletion(-) 31 1 file changed, 1 insertion(+), 1 deletion(-)
30 32
31diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py 33diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
32index e2c2178..558d63c 100644 34index da4bd79..fd9e67d 100644
33--- a/Lib/test/test_locale.py 35--- a/Lib/test/test_locale.py
34+++ b/Lib/test/test_locale.py 36+++ b/Lib/test/test_locale.py
35@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): 37@@ -572,7 +572,7 @@ class TestMiscellaneous(unittest.TestCase):
36 self.skipTest('test needs Turkish locale') 38 self.skipTest('test needs Turkish locale')
37 loc = locale.getlocale(locale.LC_CTYPE) 39 loc = locale.getlocale(locale.LC_CTYPE)
38 if verbose: 40 if verbose:
39- print('testing with %a' % (loc,), end=' ', flush=True) 41- print('testing with %a' % (loc,), end=' ', flush=True)
40+ print('testing with %a...' % (loc,), end=' ', flush=True) 42+ print('testing with %a...' % (loc,), end=' ', flush=True)
41 locale.setlocale(locale.LC_CTYPE, loc) 43 try:
42 self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) 44 locale.setlocale(locale.LC_CTYPE, loc)
43 45 except locale.Error as exc:
44--
452.7.4
46
diff --git a/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
new file mode 100644
index 0000000000..862a7f5ea7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_readline-skip-limited-history-test.patch
@@ -0,0 +1,44 @@
1From 1a0a145261ba4f97aaff3c0c656ac2e0ad9695a8 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Tue, 13 Aug 2024 11:07:05 -0400
4Subject: [PATCH] test_readline: skip limited history test
5
6This test was added recently and is failing on the ptest image when
7using the default PACKAGECONFIG settings (i.e. with editline instead of
8readline).. Disable it until the proper fix is determined.
9
10A bug has been opened upstream: https://github.com/python/cpython/issues/123018
11
12Upstream-Status: Inappropriate [OE-specific]
13
14Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
15---
16 Lib/test/test_readline.py | 2 ++
17 1 file changed, 2 insertions(+)
18
19--- a/Lib/test/test_readline.py
20+++ b/Lib/test/test_readline.py
21@@ -70,6 +70,7 @@ class TestHistoryManipulation (unittest.
22
23 @unittest.skipUnless(hasattr(readline, "append_history_file"),
24 "append_history not available")
25+ @unittest.skip("Skipping problematic test")
26 def test_write_read_append(self):
27 hfile = tempfile.NamedTemporaryFile(delete=False)
28 hfile.close()
29@@ -141,6 +142,7 @@ class TestHistoryManipulation (unittest.
30 self.assertEqual(readline.get_history_item(1), "entrée 1")
31 self.assertEqual(readline.get_history_item(2), "entrée 22")
32
33+ @unittest.skip("Skipping problematic test")
34 def test_write_read_limited_history(self):
35 previous_length = readline.get_history_length()
36 self.addCleanup(readline.set_history_length, previous_length)
37@@ -382,6 +384,7 @@ readline.write_history_file(history_file
38 self.assertIn(b"done", output)
39
40
41+ @unittest.skip("Skipping problematic test")
42 def test_write_read_limited_history(self):
43 previous_length = readline.get_history_length()
44 self.addCleanup(readline.set_history_length, previous_length)
diff --git a/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
new file mode 100644
index 0000000000..4e284de613
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_shutdown-skip-problematic-test.patch
@@ -0,0 +1,43 @@
1From b678363156b5d40e09c1d138840180e3ddc7d20b Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Wed, 8 May 2024 11:58:09 -0400
4Subject: [PATCH] test_shutdown: skip problematic test
5
6This test hangs frequently when run on the Autobuilder. Disable it in
7testing until the cause can be determined.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
12---
13 Lib/test/test_concurrent_futures/test_shutdown.py | 3 +++
14 1 file changed, 3 insertions(+)
15
16diff --git a/Lib/test/test_concurrent_futures/test_shutdown.py b/Lib/test/test_concurrent_futures/test_shutdown.py
17index 7a4065a..6b878a4 100644
18--- a/Lib/test/test_concurrent_futures/test_shutdown.py
19+++ b/Lib/test/test_concurrent_futures/test_shutdown.py
20@@ -20,6 +20,7 @@ def sleep_and_print(t, msg):
21 sys.stdout.flush()
22
23
24+@unittest.skip("skipping problematic test")
25 class ExecutorShutdownTest:
26 def test_run_after_shutdown(self):
27 self.executor.shutdown()
28@@ -156,6 +157,7 @@ class ExecutorShutdownTest:
29 signal.signal(signal.SIGALRM, old_handler)
30
31
32+@unittest.skip("skipping problematic test")
33 class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase):
34 def test_threads_terminate(self):
35 def acquire_lock(lock):
36@@ -252,6 +254,7 @@ class ThreadPoolShutdownTest(ThreadPoolMixin, ExecutorShutdownTest, BaseTestCase
37 self.assertIn(out.strip(), [b"apple", b""])
38
39
40+@unittest.skip("skipping problematic test")
41 class ProcessPoolShutdownTest(ExecutorShutdownTest):
42 def test_processes_terminate(self):
43 def acquire_lock(lock):
diff --git a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
new file mode 100644
index 0000000000..b4f873fd72
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -0,0 +1,29 @@
1From 9f252a691cd335341938489da32d6e2d4620d8ca Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 6 Oct 2023 10:59:44 -0400
4Subject: [PATCH] test_storlines: skip due to load variability
5
6This is yet another test that intermittently fails on the Yocto AB when
7a worker is under heavy load, so skip it during testing.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #14933]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14---
15 Lib/test/test_ftplib.py | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
19index bed0e6d..36602be 100644
20--- a/Lib/test/test_ftplib.py
21+++ b/Lib/test/test_ftplib.py
22@@ -627,6 +627,7 @@ class TestFTPClass(TestCase):
23 self.client.storbinary('stor', f, rest=r)
24 self.assertEqual(self.server.handler_instance.rest, str(r))
25
26+ @unittest.skip('timing related test, dependent on load')
27 def test_storlines(self):
28 data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
29 f = io.BytesIO(data)
diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
deleted file mode 100644
index 5c620361da..0000000000
--- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Mon, 7 Oct 2019 13:22:14 +0200
4Subject: [PATCH] setup.py: do not report missing dependencies for disabled
5 modules
6
7Reporting those missing dependencies is misleading as the modules would not
8have been built anyway. This particularly matters in oe-core's automated
9build completeness checker which relies on the report.
10
11Upstream-Status: Inappropriate [oe-core specific]
12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
13
14---
15 setup.py | 4 ++++
16 1 file changed, 4 insertions(+)
17
18diff --git a/setup.py b/setup.py
19index 7691258..ec3f2a4 100644
20--- a/setup.py
21+++ b/setup.py
22@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
23 print("%-*s %-*s %-*s" % (longest, e, longest, f,
24 longest, g))
25
26+ # There is no need to report missing module dependencies,
27+ # if the modules have been disabled in the first place.
28+ self.missing = list(set(self.missing) - set(mods_disabled))
29+
30 if self.missing:
31 print()
32 print("Python build finished successfully!")
diff --git a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
deleted file mode 100644
index e04a91605c..0000000000
--- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
+++ /dev/null
@@ -1,48 +0,0 @@
1From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Sun, 16 Feb 2020 17:50:25 +0100
4Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from
5 the host
6
7This leads to host contamination, and particularly can cause
8curses modules to fail at runtime if the host curses is configured
9differently to native curses (observed on current OpenSuse Tumbleweed
10as dnf failures).
11
12Upstream-Status: Inappropriate [oe-core specific]
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14---
15 configure.ac | 6 ------
16 setup.py | 2 --
17 2 files changed, 8 deletions(-)
18
19diff --git a/configure.ac b/configure.ac
20index 915f475..c911011 100644
21--- a/configure.ac
22+++ b/configure.ac
23@@ -4828,12 +4828,6 @@ then
24 [Define if you have struct stat.st_mtimensec])
25 fi
26
27-# first curses header check
28-ac_save_cppflags="$CPPFLAGS"
29-if test "$cross_compiling" = no; then
30- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
31-fi
32-
33 AC_CHECK_HEADERS(curses.h ncurses.h)
34
35 # On Solaris, term.h requires curses.h
36diff --git a/setup.py b/setup.py
37index b0f1541..7208cd0 100644
38--- a/setup.py
39+++ b/setup.py
40@@ -973,8 +973,6 @@ class PyBuildExt(build_ext):
41 panel_library = 'panel'
42 if curses_library == 'ncursesw':
43 curses_defines.append(('HAVE_NCURSESW', '1'))
44- if not CROSS_COMPILING:
45- curses_includes.append('/usr/include/ncursesw')
46 # Bug 1464056: If _curses.so links with ncursesw,
47 # _curses_panel.so must link with panelw.
48 panel_library = 'panelw'
diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
deleted file mode 100644
index 5a39cf8933..0000000000
--- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ /dev/null
@@ -1,60 +0,0 @@
1From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 14 May 2013 15:00:26 -0700
4Subject: [PATCH 1/2] python3: Add target and native recipes
5
6Upstream-Status: Inappropriate [embedded specific]
7
802/2015 Rebased for Python 3.4.2
9
10The proper prefix is inside our staging area.
11Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
12Signed-off-by: Phil Blundell <philb@gnu.org>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
15---
16 Lib/distutils/sysconfig.py | 14 +++++++++++---
17 1 file changed, 11 insertions(+), 3 deletions(-)
18
19diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
20index 4774e12..ccf7d58 100644
21--- a/Lib/distutils/sysconfig.py
22+++ b/Lib/distutils/sysconfig.py
23@@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None):
24 If 'prefix' is supplied, use it instead of sys.base_prefix or
25 sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
26 """
27- if prefix is None:
28+ if prefix is None and os.environ.get('STAGING_INCDIR', ""):
29+ prefix = os.environ['STAGING_INCDIR'].rstrip('include')
30+ elif prefix is None:
31 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
32 if os.name == "posix":
33 if python_build:
34@@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
35 If 'prefix' is supplied, use it instead of sys.base_prefix or
36 sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
37 """
38- if prefix is None:
39+ if os.environ.get('STAGING_LIBDIR', ""):
40+ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
41+ else:
42+ lib_basename = "lib"
43+ if prefix is None and os.environ.get('STAGING_LIBDIR', ""):
44+ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
45+ elif prefix is None:
46 if standard_lib:
47 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
48 else:
49@@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
50 else:
51 # Pure Python
52 libdir = "lib"
53- libpython = os.path.join(prefix, libdir,
54+ libpython = os.path.join(prefix, lib_basename,
55 "python" + get_python_version())
56 if standard_lib:
57 return libpython
58--
592.24.0
60
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
deleted file mode 100644
index 184540e794..0000000000
--- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
+++ /dev/null
@@ -1,31 +0,0 @@
1From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
2From: Andrei Gherzan <andrei@gherzan.ro>
3Date: Mon, 28 Jan 2019 15:57:54 +0000
4Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet
5 integrated in yocto so we skip the check for this module. Avoid a warning by
6 not adding this module to missing variable.
7
8Upstream-Status: Inappropriate [distribution]
9
10Also simply disable the tk module since its not in DEPENDS.
11Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
12
13---
14 setup.py | 4 ++--
15 1 file changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/setup.py b/setup.py
18index ab18ff0..7691258 100644
19--- a/setup.py
20+++ b/setup.py
21@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
22 self.detect_decimal()
23 self.detect_ctypes()
24 self.detect_multiprocessing()
25- if not self.detect_tkinter():
26- self.missing.append('_tkinter')
27+# if not self.detect_tkinter():
28+# self.missing.append('_tkinter')
29 self.detect_uuid()
30
31 ## # Uncomment these lines if you want to play with xxmodule.c
diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch
deleted file mode 100644
index 6c4ba54320..0000000000
--- a/meta/recipes-devtools/python/python3/cgi_py.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001
2From: Mark Hatle <mark.hatle@windriver.com>
3Date: Wed, 21 Sep 2011 20:55:33 -0500
4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
5
6Upstream-Status: Inappropriate [distribution]
7
8Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
9
10---
11 Lib/cgi.py | 11 +----------
12 1 file changed, 1 insertion(+), 10 deletions(-)
13
14diff --git a/Lib/cgi.py b/Lib/cgi.py
15index 8cf6687..094c7b4 100755
16--- a/Lib/cgi.py
17+++ b/Lib/cgi.py
18@@ -1,13 +1,4 @@
19-#! /usr/local/bin/python
20-
21-# NOTE: the above "/usr/local/bin/python" is NOT a mistake. It is
22-# intentionally NOT "/usr/bin/env python". On many systems
23-# (e.g. Solaris), /usr/local/bin is not in $PATH as passed to CGI
24-# scripts, and /usr/local/bin is the default directory where Python is
25-# installed, so /usr/bin/env would be unable to find python. Granted,
26-# binary installations by Linux vendors often install Python in
27-# /usr/bin. So let those vendors patch cgi.py to match their choice
28-# of installation.
29+#! /usr/bin/env python
30
31 """Support module for CGI (Common Gateway Interface) scripts.
32
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
index 4da02a2991..288d5ede3a 100644
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ b/meta/recipes-devtools/python/python3/create_manifest3.py
@@ -1,7 +1,7 @@
1# This script is used as a bitbake task to create a new python manifest 1# This script is used as a bitbake task to create a new python manifest
2# $ bitbake python -c create_manifest 2# $ bitbake python -c create_manifest
3# 3#
4# Our goal is to keep python-core as small as posible and add other python 4# Our goal is to keep python-core as small as possible and add other python
5# packages only when the user needs them, hence why we split upstream python 5# packages only when the user needs them, hence why we split upstream python
6# into several packages. 6# into several packages.
7# 7#
@@ -36,7 +36,7 @@
36# Tha method to handle cached files does not work when a module includes a folder which 36# Tha method to handle cached files does not work when a module includes a folder which
37# itself contains the pycache folder, gladly this is almost never the case. 37# itself contains the pycache folder, gladly this is almost never the case.
38# 38#
39# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com> 39# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
40 40
41 41
42import sys 42import sys
@@ -45,6 +45,11 @@ import json
45import os 45import os
46import collections 46import collections
47 47
48if '-d' in sys.argv:
49 debugFlag = '-d'
50else:
51 debugFlag = ''
52
48# Get python version from ${PYTHON_MAJMIN} 53# Get python version from ${PYTHON_MAJMIN}
49pyversion = str(sys.argv[1]) 54pyversion = str(sys.argv[1])
50 55
@@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest):
84 manifest.seek(0, 0) 89 manifest.seek(0, 0)
85 manifest.write(comments + json_contents) 90 manifest.write(comments + json_contents)
86 91
92def print_indent(msg, offset):
93 for l in msg.splitlines():
94 msg = ' ' * offset + l
95 print(msg)
96
97
87# Read existing JSON manifest 98# Read existing JSON manifest
88with open('python3-manifest.json') as manifest: 99with open('python3-manifest.json') as manifest:
89 # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker 100 # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker
@@ -99,7 +110,7 @@ with open('python3-manifest.json') as manifest:
99# Not exactly the same so it should not be a function 110# Not exactly the same so it should not be a function
100# 111#
101 112
102print ('Getting dependencies for package: core') 113print_indent('Getting dependencies for package: core', 0)
103 114
104 115
105# This special call gets the core dependencies and 116# This special call gets the core dependencies and
@@ -109,7 +120,7 @@ print ('Getting dependencies for package: core')
109# on the new core package, they will still find them 120# on the new core package, they will still find them
110# even when checking the old_manifest 121# even when checking the old_manifest
111 122
112output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') 123output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8')
113for coredep in output.split(): 124for coredep in output.split():
114 coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') 125 coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}')
115 if isCached(coredep): 126 if isCached(coredep):
@@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']:
149 # Get actual module name , shouldnt be affected by libdir/bindir, etc. 160 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
150 pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] 161 pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0]
151 162
152
153 # We now know that were dealing with a python module, so we can import it 163 # We now know that were dealing with a python module, so we can import it
154 # and check what its dependencies are. 164 # and check what its dependencies are.
155 # We launch a separate task for each module for deterministic behavior. 165 # We launch a separate task for each module for deterministic behavior.
156 # Each module will only import what is necessary for it to work in specific. 166 # Each module will only import what is necessary for it to work in specific.
157 # The output of each task will contain each module's dependencies 167 # The output of each task will contain each module's dependencies
158 168
159 print ('Getting dependencies for module: %s' % pymodule) 169 print_indent('Getting dependencies for module: %s' % pymodule, 2)
160 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') 170 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
161 print ('The following dependencies were found for module %s:\n' % pymodule) 171 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
162 print (output) 172 print_indent(output, 6)
163 173
164 174
165 for pymodule_dep in output.split(): 175 for pymodule_dep in output.split():
@@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']:
178# all others will use this a base. 188# all others will use this a base.
179 189
180 190
191print('\n\nChecking for directories...\n')
181# To improve the script speed, we check which packages contain directories 192# To improve the script speed, we check which packages contain directories
182# since we will be looping through (only) those later. 193# since we will be looping through (only) those later.
183for pypkg in old_manifest: 194for pypkg in old_manifest:
184 for filedep in old_manifest[pypkg]['files']: 195 for filedep in old_manifest[pypkg]['files']:
185 if isFolder(filedep): 196 if isFolder(filedep):
186 print ('%s is a folder' % filedep) 197 print_indent('%s is a directory' % filedep, 2)
187 if pypkg not in hasfolders: 198 if pypkg not in hasfolders:
188 hasfolders.append(pypkg) 199 hasfolders.append(pypkg)
189 if filedep not in allfolders: 200 if filedep not in allfolders:
@@ -221,14 +232,14 @@ for pypkg in old_manifest:
221 232
222 print('\n') 233 print('\n')
223 print('--------------------------') 234 print('--------------------------')
224 print ('Handling package %s' % pypkg) 235 print('Handling package %s' % pypkg)
225 print('--------------------------') 236 print('--------------------------')
226 237
227 # Handle special cases, we assume that when they were manually added 238 # Handle special cases, we assume that when they were manually added
228 # to the manifest we knew what we were doing. 239 # to the manifest we knew what we were doing.
229 special_packages = ['misc', 'modules', 'dev', 'tests'] 240 special_packages = ['misc', 'modules', 'dev', 'tests']
230 if pypkg in special_packages or 'staticdev' in pypkg: 241 if pypkg in special_packages or 'staticdev' in pypkg:
231 print('Passing %s package directly' % pypkg) 242 print_indent('Passing %s package directly' % pypkg, 2)
232 new_manifest[pypkg] = old_manifest[pypkg] 243 new_manifest[pypkg] = old_manifest[pypkg]
233 continue 244 continue
234 245
@@ -259,7 +270,7 @@ for pypkg in old_manifest:
259 270
260 # Get actual module name , shouldnt be affected by libdir/bindir, etc. 271 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
261 # We need to check if the imported module comes from another (e.g. sqlite3.dump) 272 # We need to check if the imported module comes from another (e.g. sqlite3.dump)
262 path,pymodule = os.path.split(filedep) 273 path, pymodule = os.path.split(filedep)
263 path = os.path.basename(path) 274 path = os.path.basename(path)
264 pymodule = os.path.splitext(os.path.basename(pymodule))[0] 275 pymodule = os.path.splitext(os.path.basename(pymodule))[0]
265 276
@@ -279,10 +290,10 @@ for pypkg in old_manifest:
279 # Each module will only import what is necessary for it to work in specific. 290 # Each module will only import what is necessary for it to work in specific.
280 # The output of each task will contain each module's dependencies 291 # The output of each task will contain each module's dependencies
281 292
282 print ('\nGetting dependencies for module: %s' % pymodule) 293 print_indent('\nGetting dependencies for module: %s' % pymodule, 2)
283 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') 294 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
284 print ('The following dependencies were found for module %s:\n' % pymodule) 295 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
285 print (output) 296 print_indent(output, 6)
286 297
287 reportFILES = [] 298 reportFILES = []
288 reportRDEPS = [] 299 reportRDEPS = []
@@ -325,7 +336,7 @@ for pypkg in old_manifest:
325 # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) 336 # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder))
326 for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: 337 for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']:
327 if folder_dep == folder: 338 if folder_dep == folder:
328 print ('%s folder found in %s' % (folder, pypkg_with_folder)) 339 print ('%s directory found in %s' % (folder, pypkg_with_folder))
329 folderFound = True 340 folderFound = True
330 if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: 341 if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg:
331 new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) 342 new_manifest[pypkg]['rdepends'].append(pypkg_with_folder)
@@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new')
424 435
425if (repeated): 436if (repeated):
426 error_msg = '\n\nERROR:\n' 437 error_msg = '\n\nERROR:\n'
427 error_msg += 'The following files are repeated (contained in more than one package),\n' 438 error_msg += 'The following files were found in more than one package),\n'
428 error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' 439 error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n'
429 error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' 440 error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n'
430 error_msg += '\n'.join(repeated) 441 error_msg += '\n'.join(repeated)
diff --git a/meta/recipes-devtools/python/python3/crosspythonpath.patch b/meta/recipes-devtools/python/python3/crosspythonpath.patch
deleted file mode 100644
index d789ab57d4..0000000000
--- a/meta/recipes-devtools/python/python3/crosspythonpath.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD
2
3When building x86->x86 the system will try to execute .so and related items
4from the default PYTHONPATH. This will fail if the target CPU contains
5instructions that the host CPU does not have, add CROSSPYTHONPATH
6into PYTHONPATH so we can prepend the list to find correct libs.
7
8Upstream-Status: Inappropriate [OE-Core integration specific]
9
10Credits-to: Mark Hatle <mark.hatle@windriver.com>
11Credits-to: Jackie Huang <jackie.huang@windriver.com>
12Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
13diff --git a/configure.ac b/configure.ac
14index 4ab19a6..7036a53 100644
15--- a/configure.ac
16+++ b/configure.ac
17@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then
18 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
19 fi
20 AC_MSG_RESULT($interp)
21- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
22+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp
23 fi
24 elif test "$cross_compiling" = maybe; then
25 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py
index 6806f23172..8e432b49af 100644
--- a/meta/recipes-devtools/python/python3/get_module_deps3.py
+++ b/meta/recipes-devtools/python/python3/get_module_deps3.py
@@ -3,14 +3,18 @@
3# them out, the output of this execution will have all dependencies 3# them out, the output of this execution will have all dependencies
4# for a specific module, which will be parsed an dealt on create_manifest.py 4# for a specific module, which will be parsed an dealt on create_manifest.py
5# 5#
6# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> 6# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
7 7
8# We can get a log per module, for all the dependencies that were found, but its messy.
9debug=False
10 8
11import sys 9import sys
12import os 10import os
13 11
12# We can get a log per module, for all the dependencies that were found, but its messy.
13if '-d' in sys.argv:
14 debug = True
15else:
16 debug = False
17
14# We can get a list of the modules which are currently required to run python 18# We can get a list of the modules which are currently required to run python
15# so we run python-core and get its modules, we then import what we need 19# so we run python-core and get its modules, we then import what we need
16# and check what modules are currently running, if we substract them from the 20# and check what modules are currently running, if we substract them from the
@@ -19,16 +23,16 @@ import os
19# We use importlib to achieve this, so we also need to know what modules importlib needs 23# We use importlib to achieve this, so we also need to know what modules importlib needs
20import importlib 24import importlib
21 25
22core_deps=set(sys.modules) 26core_deps = set(sys.modules)
23 27
24def fix_path(dep_path): 28def fix_path(dep_path):
25 import os 29 import os
26 # We DONT want the path on our HOST system 30 # We DONT want the path on our HOST system
27 pivot='recipe-sysroot-native' 31 pivot = 'recipe-sysroot-native'
28 dep_path=dep_path[dep_path.find(pivot)+len(pivot):] 32 dep_path = dep_path[dep_path.find(pivot)+len(pivot):]
29 33
30 if '/usr/bin' in dep_path: 34 if '/usr/bin' in dep_path:
31 dep_path = dep_path.replace('/usr/bin''${bindir}') 35 dep_path = dep_path.replace('/usr/bin','${bindir}')
32 36
33 # Handle multilib, is there a better way? 37 # Handle multilib, is there a better way?
34 if '/usr/lib32' in dep_path: 38 if '/usr/lib32' in dep_path:
@@ -46,13 +50,13 @@ def fix_path(dep_path):
46 50
47# Module to import was passed as an argument 51# Module to import was passed as an argument
48current_module = str(sys.argv[1]).rstrip() 52current_module = str(sys.argv[1]).rstrip()
49if(debug==True): 53if debug == True:
50 log = open('log_%s' % current_module,'w') 54 log = open('temp/log_%s' % current_module.strip('.*'),'w')
51 log.write('Module %s generated the following dependencies:\n' % current_module) 55 log.write('Module %s generated the following dependencies:\n' % current_module)
52try: 56try:
53 m = importlib.import_module(current_module) 57 m = importlib.import_module(current_module)
54 # handle python packages which may not include all modules in the __init__ 58 # handle python packages which may not include all modules in the __init__
55 if os.path.basename(m.__file__) == "__init__.py": 59 if hasattr(m, '__file__') and os.path.basename(m.__file__) == "__init__.py":
56 modulepath = os.path.dirname(m.__file__) 60 modulepath = os.path.dirname(m.__file__)
57 for i in os.listdir(modulepath): 61 for i in os.listdir(modulepath):
58 if i.startswith("_") or not(i.endswith(".py")): 62 if i.startswith("_") or not(i.endswith(".py")):
@@ -63,13 +67,13 @@ try:
63 except: 67 except:
64 pass # ignore all import or other exceptions raised during import 68 pass # ignore all import or other exceptions raised during import
65except ImportError as e: 69except ImportError as e:
66 if (debug==True): 70 if debug == True:
67 log.write('Module was not found') 71 log.write('Module was not found\n')
68 pass 72 pass
69 73
70 74
71# Get current module dependencies, dif will contain a list of specific deps for this module 75# Get current module dependencies, dif will contain a list of specific deps for this module
72module_deps=set(sys.modules) 76module_deps = set(sys.modules)
73 77
74# We handle the core package (1st pass on create_manifest.py) as a special case 78# We handle the core package (1st pass on create_manifest.py) as a special case
75if current_module == 'python-core-package': 79if current_module == 'python-core-package':
@@ -81,14 +85,18 @@ else:
81 85
82# Check where each dependency came from 86# Check where each dependency came from
83for item in dif: 87for item in dif:
84 dep_path='' 88 # Main module returns script filename, __main matches mp_main__ as well
89 if 'main__' in item:
90 continue
91
92 dep_path = ''
85 try: 93 try:
86 if (debug==True): 94 if debug == True:
87 log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') 95 log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n')
88 dep_path = sys.modules['%s' % item].__file__ 96 dep_path = sys.modules['%s' % item].__file__
89 except AttributeError as e: 97 except AttributeError as e:
90 # Deals with thread (builtin module) not having __file__ attribute 98 # Deals with thread (builtin module) not having __file__ attribute
91 if debug==True: 99 if debug == True:
92 log.write(item + ' ') 100 log.write(item + ' ')
93 log.write(str(e)) 101 log.write(str(e))
94 log.write('\n') 102 log.write('\n')
@@ -96,11 +104,16 @@ for item in dif:
96 except NameError as e: 104 except NameError as e:
97 # Deals with NameError: name 'dep_path' is not defined 105 # Deals with NameError: name 'dep_path' is not defined
98 # because module is not found (wasn't compiled?), e.g. bddsm 106 # because module is not found (wasn't compiled?), e.g. bddsm
99 if (debug==True): 107 if debug == True:
100 log.write(item+' ') 108 log.write(item+' ')
101 log.write(str(e)) 109 log.write(str(e))
102 pass 110 pass
103 111
112 if dep_path == '':
113 continue
114 if debug == True:
115 log.write('Dependency path found:\n%s\n' % dep_path)
116
104 # Site-customize is a special case since we (OpenEmbedded) put it there manually 117 # Site-customize is a special case since we (OpenEmbedded) put it there manually
105 if 'sitecustomize' in dep_path: 118 if 'sitecustomize' in dep_path:
106 dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' 119 dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py'
@@ -111,52 +124,51 @@ for item in dif:
111 dep_path = fix_path(dep_path) 124 dep_path = fix_path(dep_path)
112 125
113 import sysconfig 126 import sysconfig
114 soabi=sysconfig.get_config_var('SOABI') 127 soabi = sysconfig.get_config_var('SOABI')
115 # Check if its a shared library and deconstruct it 128 # Check if its a shared library and deconstruct it
116 if soabi in dep_path: 129 if soabi in dep_path:
117 if (debug==True): 130 if debug == True:
118 log.write('Shared library found in %s' % dep_path) 131 log.write('Shared library found in %s\n' % dep_path)
119 dep_path = dep_path.replace(soabi,'*') 132 dep_path = dep_path.replace(soabi,'*')
120 print (dep_path) 133 print (dep_path)
121 continue 134 continue
122 if "_sysconfigdata" in dep_path: 135 if "_sysconfigdata" in dep_path:
123 dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") 136 dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
124 137
125 if (debug==True): 138 if debug == True:
126 log.write(dep_path+'\n') 139 log.write(dep_path+'\n')
127 # Prints out result, which is what will be used by create_manifest 140 # Prints out result, which is what will be used by create_manifest
128 print (dep_path) 141 print (dep_path)
129 142
130 143
131 import imp 144 cpython_tag = sys.implementation.cache_tag
132 cpython_tag = imp.get_tag() 145 cached = ''
133 cached=''
134 # Theres no naive way to find *.pyc files on python3 146 # Theres no naive way to find *.pyc files on python3
135 try: 147 try:
136 if (debug==True): 148 if debug == True:
137 log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') 149 log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n')
138 cached = sys.modules['%s' % item].__cached__ 150 cached = sys.modules['%s' % item].__cached__
139 except AttributeError as e: 151 except AttributeError as e:
140 # Deals with thread (builtin module) not having __cached__ attribute 152 # Deals with thread (builtin module) not having __cached__ attribute
141 if debug==True: 153 if debug == True:
142 log.write(item + ' ') 154 log.write(item + ' ')
143 log.write(str(e)) 155 log.write(str(e))
144 log.write('\n') 156 log.write('\n')
145 pass 157 pass
146 except NameError as e: 158 except NameError as e:
147 # Deals with NameError: name 'cached' is not defined 159 # Deals with NameError: name 'cached' is not defined
148 if (debug==True): 160 if debug == True:
149 log.write(item+' ') 161 log.write(item+' ')
150 log.write(str(e)) 162 log.write(str(e))
151 pass 163 pass
152 if cached is not None: 164 if cached is not None:
153 if (debug==True): 165 if debug == True:
154 log.write(cached) 166 log.write(cached + '\n')
155 cached = fix_path(cached) 167 cached = fix_path(cached)
156 cached = cached.replace(cpython_tag,'*') 168 cached = cached.replace(cpython_tag,'*')
157 if "_sysconfigdata" in cached: 169 if "_sysconfigdata" in cached:
158 cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") 170 cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
159 print (cached) 171 print (cached)
160 172
161if debug==True: 173if debug == True:
162 log.close() 174 log.close()
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
new file mode 100644
index 0000000000..b115a6fa65
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -0,0 +1,31 @@
1From 2b458b4e1bcd57e3f135d3f0e715f64b98b27906 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Tue, 13 Jul 2021 23:19:29 +0100
4Subject: [PATCH] python3: Fix make race
5
6libainstall installs python-config.py but the .pyc cache files are generated
7by the libinstall target. This means some builds may not generate the pyc files
8for python-config.py depending on the order things happen in. This means builds
9are not always reproducible.
10
11Add a dependency to avoid the race.
12
13Upstream-Status: Pending
14Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index be1b9ea..9ec3a71 100644
21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in
23@@ -2485,7 +2485,7 @@ COMPILEALL_OPTS=-j0
24 TEST_MODULES=@TEST_MODULES@
25
26 .PHONY: libinstall
27-libinstall: all $(srcdir)/Modules/xxmodule.c
28+libinstall: all $(srcdir)/Modules/xxmodule.c libainstall
29 @for i in $(SCRIPTDIR) $(LIBDEST); \
30 do \
31 if test ! -d $(DESTDIR)$$i; then \
diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch
deleted file mode 100644
index d0ddbbc7fd..0000000000
--- a/meta/recipes-devtools/python/python3/python-config.patch
+++ /dev/null
@@ -1,54 +0,0 @@
1From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001
2From: Tyler Hall <tylerwhall@gmail.com>
3Date: Sun, 4 May 2014 20:06:43 -0400
4Subject: [PATCH] python-config: Revert to using distutils.sysconfig
5
6The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
7
812-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig
9
10affect the native runtime as well as cross building. Use the old, patched
11implementation which returns paths in the staging directory and for the target,
12as appropriate.
13
14Upstream-Status: Inappropriate [Embedded Specific]
15
16Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
17:
18
19---
20 Misc/python-config.in | 10 +++++-----
21 1 file changed, 5 insertions(+), 5 deletions(-)
22
23diff --git a/Misc/python-config.in b/Misc/python-config.in
24index ebd99da..13e57ae 100644
25--- a/Misc/python-config.in
26+++ b/Misc/python-config.in
27@@ -6,7 +6,7 @@
28 import getopt
29 import os
30 import sys
31-import sysconfig
32+from distutils import sysconfig
33
34 valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
35 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
36@@ -35,14 +35,14 @@ if '--help' in opt_flags:
37
38 for opt in opt_flags:
39 if opt == '--prefix':
40- print(getvar('prefix'))
41+ print(sysconfig.PREFIX)
42
43 elif opt == '--exec-prefix':
44- print(getvar('exec_prefix'))
45+ print(sysconfig.EXEC_PREFIX)
46
47 elif opt in ('--includes', '--cflags'):
48- flags = ['-I' + sysconfig.get_path('include'),
49- '-I' + sysconfig.get_path('platinclude')]
50+ flags = ['-I' + sysconfig.get_python_inc(),
51+ '-I' + sysconfig.get_python_inc(plat_specific=True)]
52 if opt == '--cflags':
53 flags.extend(getvar('CFLAGS').split())
54 print(' '.join(flags))
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index 615dc3a5e5..441830833b 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -1,7 +1,7 @@
1# DO NOT (entirely) modify this file manually, please read. 1# DO NOT (entirely) modify this file manually, please read.
2# 2#
3# IMPORTANT NOTE: 3# IMPORTANT NOTE:
4# Please keep in mind that the create_manifest task relies on the fact the the 4# Please keep in mind that the create_manifest task relies on the fact that the
5# target and native Python packages are the same, and it also needs to be executed 5# target and native Python packages are the same, and it also needs to be executed
6# with a fully working native package (with all the PACKAGECONFIGs enabled and all 6# with a fully working native package (with all the PACKAGECONFIGs enabled and all
7# and all the modules should be working, check log.do_compile), otherwise the script 7# and all the modules should be working, check log.do_compile), otherwise the script
@@ -103,17 +103,6 @@
103 ], 103 ],
104 "cached": [] 104 "cached": []
105 }, 105 },
106 "2to3": {
107 "summary": "Python automated Python 2 to 3 code translator",
108 "rdepends": [
109 "core"
110 ],
111 "files": [
112 "${bindir}/2to3*",
113 "${libdir}/python${PYTHON_MAJMIN}/lib2to3"
114 ],
115 "cached": []
116 },
117 "asyncio": { 106 "asyncio": {
118 "summary": "Python Asynchronous I/O", 107 "summary": "Python Asynchronous I/O",
119 "rdepends": [ 108 "rdepends": [
@@ -138,17 +127,9 @@
138 "core" 127 "core"
139 ], 128 ],
140 "files": [ 129 "files": [
141 "${libdir}/python${PYTHON_MAJMIN}/chunk.py",
142 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/audioop.*.so",
143 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/ossaudiodev.*.so",
144 "${libdir}/python${PYTHON_MAJMIN}/sndhdr.py",
145 "${libdir}/python${PYTHON_MAJMIN}/sunau.py",
146 "${libdir}/python${PYTHON_MAJMIN}/wave.py" 130 "${libdir}/python${PYTHON_MAJMIN}/wave.py"
147 ], 131 ],
148 "cached": [ 132 "cached": [
149 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/chunk.*.pyc",
150 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sndhdr.*.pyc",
151 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/sunau.*.pyc",
152 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" 133 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc"
153 ] 134 ]
154 }, 135 },
@@ -158,12 +139,9 @@
158 "core" 139 "core"
159 ], 140 ],
160 "files": [ 141 "files": [
161 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so", 142 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multibytecodec.*.so"
162 "${libdir}/python${PYTHON_MAJMIN}/xdrlib.py"
163 ], 143 ],
164 "cached": [ 144 "cached": []
165 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/xdrlib.*.pyc"
166 ]
167 }, 145 },
168 "compile": { 146 "compile": {
169 "summary": "Python bytecode compilation support", 147 "summary": "Python bytecode compilation support",
@@ -189,17 +167,17 @@
189 "files": [ 167 "files": [
190 "${libdir}/python${PYTHON_MAJMIN}/gzip.py", 168 "${libdir}/python${PYTHON_MAJMIN}/gzip.py",
191 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", 169 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py",
192 "${libdir}/python${PYTHON_MAJMIN}/zipfile.py" 170 "${libdir}/python${PYTHON_MAJMIN}/zipfile",
171 "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path"
193 ], 172 ],
194 "cached": [ 173 "cached": [
195 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", 174 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc",
196 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc", 175 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc"
197 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc"
198 ] 176 ]
199 }, 177 },
200 "core": { 178 "core": {
201 "summary": "Python interpreter and core modules", 179 "summary": "Python interpreter and core modules",
202 "rdepends": [], 180 "rdepends": ["compression"],
203 "files": [ 181 "files": [
204 "${bindir}/python${PYTHON_MAJMIN}", 182 "${bindir}/python${PYTHON_MAJMIN}",
205 "${bindir}/python${PYTHON_MAJMIN}.real", 183 "${bindir}/python${PYTHON_MAJMIN}.real",
@@ -212,8 +190,12 @@
212 "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py", 190 "${libdir}/python${PYTHON_MAJMIN}/_abcoll.py",
213 "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py", 191 "${libdir}/python${PYTHON_MAJMIN}/_bootlocale.py",
214 "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py", 192 "${libdir}/python${PYTHON_MAJMIN}/_collections_abc.py",
193 "${libdir}/python${PYTHON_MAJMIN}/_colorize.py",
215 "${libdir}/python${PYTHON_MAJMIN}/_compression.py", 194 "${libdir}/python${PYTHON_MAJMIN}/_compression.py",
216 "${libdir}/python${PYTHON_MAJMIN}/_markupbase.py", 195 "${libdir}/python${PYTHON_MAJMIN}/_markupbase.py",
196 "${libdir}/python${PYTHON_MAJMIN}/_opcode_metadata.py",
197 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl",
198 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/pager.py",
217 "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py", 199 "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py",
218 "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py", 200 "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py",
219 "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py", 201 "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py",
@@ -232,6 +214,7 @@
232 "${libdir}/python${PYTHON_MAJMIN}/copy.py", 214 "${libdir}/python${PYTHON_MAJMIN}/copy.py",
233 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", 215 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py",
234 "${libdir}/python${PYTHON_MAJMIN}/csv.py", 216 "${libdir}/python${PYTHON_MAJMIN}/csv.py",
217 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
235 "${libdir}/python${PYTHON_MAJMIN}/dis.py", 218 "${libdir}/python${PYTHON_MAJMIN}/dis.py",
236 "${libdir}/python${PYTHON_MAJMIN}/encodings", 219 "${libdir}/python${PYTHON_MAJMIN}/encodings",
237 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", 220 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py",
@@ -243,9 +226,11 @@
243 "${libdir}/python${PYTHON_MAJMIN}/genericpath.py", 226 "${libdir}/python${PYTHON_MAJMIN}/genericpath.py",
244 "${libdir}/python${PYTHON_MAJMIN}/getopt.py", 227 "${libdir}/python${PYTHON_MAJMIN}/getopt.py",
245 "${libdir}/python${PYTHON_MAJMIN}/gettext.py", 228 "${libdir}/python${PYTHON_MAJMIN}/gettext.py",
229 "${libdir}/python${PYTHON_MAJMIN}/glob.py",
246 "${libdir}/python${PYTHON_MAJMIN}/heapq.py", 230 "${libdir}/python${PYTHON_MAJMIN}/heapq.py",
247 "${libdir}/python${PYTHON_MAJMIN}/imp.py", 231 "${libdir}/python${PYTHON_MAJMIN}/imp.py",
248 "${libdir}/python${PYTHON_MAJMIN}/importlib", 232 "${libdir}/python${PYTHON_MAJMIN}/importlib",
233 "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py",
249 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", 234 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py",
250 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", 235 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py",
251 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", 236 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py",
@@ -253,6 +238,7 @@
253 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", 238 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py",
254 "${libdir}/python${PYTHON_MAJMIN}/inspect.py", 239 "${libdir}/python${PYTHON_MAJMIN}/inspect.py",
255 "${libdir}/python${PYTHON_MAJMIN}/io.py", 240 "${libdir}/python${PYTHON_MAJMIN}/io.py",
241 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
256 "${libdir}/python${PYTHON_MAJMIN}/keyword.py", 242 "${libdir}/python${PYTHON_MAJMIN}/keyword.py",
257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", 243 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", 244 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so",
@@ -266,8 +252,10 @@
266 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", 252 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",
267 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", 253 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so",
268 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", 254 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so",
255 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so",
269 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", 256 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so",
270 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", 257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/fcntl.*.so",
271 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", 259 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
272 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so", 260 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/math.*.so",
273 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so", 261 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/parser.*.so",
@@ -286,11 +274,18 @@
286 "${libdir}/python${PYTHON_MAJMIN}/operator.py", 274 "${libdir}/python${PYTHON_MAJMIN}/operator.py",
287 "${libdir}/python${PYTHON_MAJMIN}/optparse.py", 275 "${libdir}/python${PYTHON_MAJMIN}/optparse.py",
288 "${libdir}/python${PYTHON_MAJMIN}/os.py", 276 "${libdir}/python${PYTHON_MAJMIN}/os.py",
277 "${libdir}/python${PYTHON_MAJMIN}/pathlib",
289 "${libdir}/python${PYTHON_MAJMIN}/pathlib.py", 278 "${libdir}/python${PYTHON_MAJMIN}/pathlib.py",
279 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_abc.py",
280 "${libdir}/python${PYTHON_MAJMIN}/pathlib/_local.py",
290 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", 281 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py",
291 "${libdir}/python${PYTHON_MAJMIN}/platform.py", 282 "${libdir}/python${PYTHON_MAJMIN}/platform.py",
292 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", 283 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py",
293 "${libdir}/python${PYTHON_MAJMIN}/re.py", 284 "${libdir}/python${PYTHON_MAJMIN}/re",
285 "${libdir}/python${PYTHON_MAJMIN}/re/_casefix.py",
286 "${libdir}/python${PYTHON_MAJMIN}/re/_compiler.py",
287 "${libdir}/python${PYTHON_MAJMIN}/re/_constants.py",
288 "${libdir}/python${PYTHON_MAJMIN}/re/_parser.py",
294 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", 289 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py",
295 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", 290 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
296 "${libdir}/python${PYTHON_MAJMIN}/runpy.py", 291 "${libdir}/python${PYTHON_MAJMIN}/runpy.py",
@@ -307,6 +302,7 @@
307 "${libdir}/python${PYTHON_MAJMIN}/struct.py", 302 "${libdir}/python${PYTHON_MAJMIN}/struct.py",
308 "${libdir}/python${PYTHON_MAJMIN}/subprocess.py", 303 "${libdir}/python${PYTHON_MAJMIN}/subprocess.py",
309 "${libdir}/python${PYTHON_MAJMIN}/symbol.py", 304 "${libdir}/python${PYTHON_MAJMIN}/symbol.py",
305 "${libdir}/python${PYTHON_MAJMIN}/sysconfig",
310 "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py", 306 "${libdir}/python${PYTHON_MAJMIN}/sysconfig.py",
311 "${libdir}/python${PYTHON_MAJMIN}/textwrap.py", 307 "${libdir}/python${PYTHON_MAJMIN}/textwrap.py",
312 "${libdir}/python${PYTHON_MAJMIN}/threading.py", 308 "${libdir}/python${PYTHON_MAJMIN}/threading.py",
@@ -319,14 +315,17 @@
319 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", 315 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py",
320 "${libdir}/python${PYTHON_MAJMIN}/warnings.py", 316 "${libdir}/python${PYTHON_MAJMIN}/warnings.py",
321 "${libdir}/python${PYTHON_MAJMIN}/weakref.py", 317 "${libdir}/python${PYTHON_MAJMIN}/weakref.py",
318 "${libdir}/python${PYTHON_MAJMIN}/zipimport.py",
322 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" 319 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]"
323 ], 320 ],
324 "cached": [ 321 "cached": [
325 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc", 322 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/__future__.*.pyc",
326 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc", 323 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_bootlocale.*.pyc",
327 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc", 324 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_collections_abc.*.pyc",
325 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_colorize.*.pyc",
328 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc", 326 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc",
329 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc", 327 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc",
328 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_opcode_metadata.*.pyc",
330 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc", 329 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc",
331 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc", 330 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc",
332 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc", 331 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc",
@@ -343,6 +342,7 @@
343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", 342 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",
344 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", 343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc",
345 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", 344 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc",
345 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
346 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", 346 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc",
347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", 347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc",
348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", 348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
@@ -350,10 +350,12 @@
350 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc", 350 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/genericpath.*.pyc",
351 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc", 351 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getopt.*.pyc",
352 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc", 352 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gettext.*.pyc",
353 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
353 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc", 354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/heapq.*.pyc",
354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", 355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc",
355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", 356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc",
356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", 357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", 359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", 360 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc",
359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", 361 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc",
@@ -393,6 +395,8 @@
393 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc", 395 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc",
394 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc", 396 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc",
395 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc", 397 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc",
398 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__",
399 "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__/pager.*.pyc",
396 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__", 400 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",
397 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc", 401 "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__/abc.*.pyc",
398 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__", 402 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__",
@@ -400,9 +404,19 @@
400 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", 404 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc",
401 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", 405 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc",
402 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", 406 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc",
403 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", 408 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc",
404 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", 409 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc",
405 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", 410 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc",
411 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__",
412 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__/_abc.*.pyc",
413 "${libdir}/python${PYTHON_MAJMIN}/pathlib/__pycache__/_local.*.pyc",
414 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__",
415 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_casefix.*.pyc",
416 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_compiler.*.pyc",
417 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_constants.*.pyc",
418 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_parser.*.pyc",
419 "${libdir}/python${PYTHON_MAJMIN}/sysconfig/__pycache__",
406 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", 420 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" 421 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc"
408 ] 422 ]
@@ -410,24 +424,18 @@
410 "crypt": { 424 "crypt": {
411 "summary": "Python basic cryptographic and hashing support", 425 "summary": "Python basic cryptographic and hashing support",
412 "rdepends": [ 426 "rdepends": [
413 "core", 427 "core"
414 "math",
415 "stringold"
416 ], 428 ],
417 "files": [ 429 "files": [
418 "${libdir}/python${PYTHON_MAJMIN}/crypt.py",
419 "${libdir}/python${PYTHON_MAJMIN}/hashlib.py", 430 "${libdir}/python${PYTHON_MAJMIN}/hashlib.py",
420 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so", 431 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_blake2.*.so",
421 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_crypt.*.so",
422 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", 432 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
423 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", 433 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
424 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", 434 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
425 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so", 435 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so",
426 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so", 436 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so"
427 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"
428 ], 437 ],
429 "cached": [ 438 "cached": [
430 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc",
431 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc" 439 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hashlib.*.pyc"
432 ] 440 ]
433 }, 441 },
@@ -435,7 +443,6 @@
435 "summary": "Python C types support", 443 "summary": "Python C types support",
436 "rdepends": [ 444 "rdepends": [
437 "core", 445 "core",
438 "crypt",
439 "io", 446 "io",
440 "math" 447 "math"
441 ], 448 ],
@@ -519,8 +526,7 @@
519 "${libdir}/pkgconfig" 526 "${libdir}/pkgconfig"
520 ], 527 ],
521 "rdepends": [ 528 "rdepends": [
522 "core", 529 "core"
523 "distutils"
524 ], 530 ],
525 "summary": "Python development package" 531 "summary": "Python development package"
526 }, 532 },
@@ -536,27 +542,6 @@
536 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" 542 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc"
537 ] 543 ]
538 }, 544 },
539 "distutils-windows": {
540 "summary": "Python distribution utilities (Windows installer stubs)",
541 "rdepends": [
542 "core"
543 ],
544 "files": [],
545 "cached": []
546 },
547 "distutils": {
548 "summary": "Python Distribution Utilities",
549 "rdepends": [
550 "compression",
551 "core",
552 "email",
553 "stringold"
554 ],
555 "files": [
556 "${libdir}/python${PYTHON_MAJMIN}/distutils"
557 ],
558 "cached": []
559 },
560 "doctest": { 545 "doctest": {
561 "summary": "Python framework for running examples in docstrings", 546 "summary": "Python framework for running examples in docstrings",
562 "rdepends": [ 547 "rdepends": [
@@ -579,7 +564,6 @@
579 "summary": "Python email support", 564 "summary": "Python email support",
580 "rdepends": [ 565 "rdepends": [
581 "core", 566 "core",
582 "crypt",
583 "datetime", 567 "datetime",
584 "io", 568 "io",
585 "math", 569 "math",
@@ -595,6 +579,16 @@
595 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" 579 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc"
596 ] 580 ]
597 }, 581 },
582 "ensurepip": {
583 "summary": "Support for bootstrapping the pip installer",
584 "rdepends": [
585 "core"
586 ],
587 "files": [
588 "${libdir}/python${PYTHON_MAJMIN}/ensurepip/"
589 ],
590 "cached": []
591 },
598 "fcntl": { 592 "fcntl": {
599 "summary": "Python's fcntl interface", 593 "summary": "Python's fcntl interface",
600 "rdepends": [ 594 "rdepends": [
@@ -621,12 +615,9 @@
621 "core" 615 "core"
622 ], 616 ],
623 "files": [ 617 "files": [
624 "${libdir}/python${PYTHON_MAJMIN}/formatter.py",
625 "${libdir}/python${PYTHON_MAJMIN}/html" 618 "${libdir}/python${PYTHON_MAJMIN}/html"
626 ], 619 ],
627 "cached": [ 620 "cached": []
628 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc"
629 ]
630 }, 621 },
631 "idle": { 622 "idle": {
632 "summary": "Python Integrated Development Environment", 623 "summary": "Python Integrated Development Environment",
@@ -645,38 +636,30 @@
645 "core" 636 "core"
646 ], 637 ],
647 "files": [ 638 "files": [
648 "${libdir}/python${PYTHON_MAJMIN}/colorsys.py", 639 "${libdir}/python${PYTHON_MAJMIN}/colorsys.py"
649 "${libdir}/python${PYTHON_MAJMIN}/imghdr.py"
650 ], 640 ],
651 "cached": [ 641 "cached": [
652 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc", 642 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/colorsys.*.pyc"
653 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imghdr.*.pyc"
654 ] 643 ]
655 }, 644 },
656 "io": { 645 "io": {
657 "summary": "Python low-level I/O", 646 "summary": "Python low-level I/O",
658 "rdepends": [ 647 "rdepends": [
659 "core", 648 "core",
660 "crypt",
661 "math", 649 "math",
662 "netclient", 650 "netclient"
663 "shell"
664 ], 651 ],
665 "files": [ 652 "files": [
666 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", 653 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
667 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
668 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", 654 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so",
669 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", 655 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so",
670 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", 656 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so",
671 "${libdir}/python${PYTHON_MAJMIN}/pipes.py",
672 "${libdir}/python${PYTHON_MAJMIN}/socket.py", 657 "${libdir}/python${PYTHON_MAJMIN}/socket.py",
673 "${libdir}/python${PYTHON_MAJMIN}/ssl.py", 658 "${libdir}/python${PYTHON_MAJMIN}/ssl.py",
674 "${libdir}/python${PYTHON_MAJMIN}/tempfile.py" 659 "${libdir}/python${PYTHON_MAJMIN}/tempfile.py"
675 ], 660 ],
676 "cached": [ 661 "cached": [
677 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", 662 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc",
678 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
679 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc",
680 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", 663 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc",
681 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", 664 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc",
682 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc" 665 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tempfile.*.pyc"
@@ -712,10 +695,8 @@
712 "summary": "Python mailbox format support", 695 "summary": "Python mailbox format support",
713 "rdepends": [ 696 "rdepends": [
714 "core", 697 "core",
715 "crypt",
716 "datetime", 698 "datetime",
717 "email", 699 "email",
718 "fcntl",
719 "io", 700 "io",
720 "math", 701 "math",
721 "mime", 702 "mime",
@@ -732,8 +713,7 @@
732 "math": { 713 "math": {
733 "summary": "Python math support", 714 "summary": "Python math support",
734 "rdepends": [ 715 "rdepends": [
735 "core", 716 "core"
736 "crypt"
737 ], 717 ],
738 "files": [ 718 "files": [
739 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so", 719 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_random.*.so",
@@ -750,12 +730,10 @@
750 "core" 730 "core"
751 ], 731 ],
752 "files": [ 732 "files": [
753 "${libdir}/python${PYTHON_MAJMIN}/quopri.py", 733 "${libdir}/python${PYTHON_MAJMIN}/quopri.py"
754 "${libdir}/python${PYTHON_MAJMIN}/uu.py"
755 ], 734 ],
756 "cached": [ 735 "cached": [
757 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc", 736 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/quopri.*.pyc"
758 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uu.*.pyc"
759 ] 737 ]
760 }, 738 },
761 "mmap": { 739 "mmap": {
@@ -772,7 +750,6 @@
772 "cached": [], 750 "cached": [],
773 "files": [], 751 "files": [],
774 "rdepends": [ 752 "rdepends": [
775 "2to3",
776 "asyncio", 753 "asyncio",
777 "audio", 754 "audio",
778 "codecs", 755 "codecs",
@@ -786,9 +763,9 @@
786 "db", 763 "db",
787 "debugger", 764 "debugger",
788 "difflib", 765 "difflib",
789 "distutils",
790 "doctest", 766 "doctest",
791 "email", 767 "email",
768 "ensurepip",
792 "fcntl", 769 "fcntl",
793 "html", 770 "html",
794 "idle", 771 "idle",
@@ -812,21 +789,20 @@
812 "pydoc", 789 "pydoc",
813 "resource", 790 "resource",
814 "shell", 791 "shell",
815 "smtpd",
816 "sqlite3", 792 "sqlite3",
793 "statistics",
817 "stringold", 794 "stringold",
818 "syslog", 795 "syslog",
819 "terminal", 796 "terminal",
820 "threading", 797 "threading",
821 "tkinter", 798 "tkinter",
799 "tomllib",
822 "unittest", 800 "unittest",
823 "unixadmin", 801 "unixadmin",
824 "venv", 802 "venv",
825 "xml", 803 "xml",
826 "xmlrpc" 804 "xmlrpc",
827 ], 805 "zoneinfo"
828 "rrecommends": [
829 "distutils-windows"
830 ], 806 ],
831 "summary": "All Python modules" 807 "summary": "All Python modules"
832 }, 808 },
@@ -870,11 +846,10 @@
870 "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__", 846 "${libdir}/python${PYTHON_MAJMIN}/http/__pycache__",
871 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so", 847 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_uuid.*.so",
872 "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py", 848 "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py",
873 "${libdir}/python${PYTHON_MAJMIN}/nntplib.py",
874 "${libdir}/python${PYTHON_MAJMIN}/poplib.py", 849 "${libdir}/python${PYTHON_MAJMIN}/poplib.py",
875 "${libdir}/python${PYTHON_MAJMIN}/secrets.py", 850 "${libdir}/python${PYTHON_MAJMIN}/secrets.py",
876 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", 851 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py",
877 "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", 852 "${libdir}/python${PYTHON_MAJMIN}/urllib",
878 "${libdir}/python${PYTHON_MAJMIN}/uuid.py" 853 "${libdir}/python${PYTHON_MAJMIN}/uuid.py"
879 ], 854 ],
880 "cached": [ 855 "cached": [
@@ -882,11 +857,9 @@
882 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc", 857 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ftplib.*.pyc",
883 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc", 858 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/hmac.*.pyc",
884 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc", 859 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc",
885 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/nntplib.*.pyc",
886 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc", 860 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc",
887 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc", 861 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc",
888 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc", 862 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc",
889 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/telnetlib.*.pyc",
890 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc" 863 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc"
891 ] 864 ]
892 }, 865 },
@@ -894,22 +867,12 @@
894 "summary": "Python Internet Protocol servers", 867 "summary": "Python Internet Protocol servers",
895 "rdepends": [ 868 "rdepends": [
896 "core", 869 "core",
897 "crypt", 870 "io"
898 "datetime",
899 "email",
900 "html",
901 "io",
902 "math",
903 "mime",
904 "netclient",
905 "stringold"
906 ], 871 ],
907 "files": [ 872 "files": [
908 "${libdir}/python${PYTHON_MAJMIN}/cgi.py",
909 "${libdir}/python${PYTHON_MAJMIN}/socketserver.py" 873 "${libdir}/python${PYTHON_MAJMIN}/socketserver.py"
910 ], 874 ],
911 "cached": [ 875 "cached": [
912 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgi.*.pyc",
913 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc" 876 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socketserver.*.pyc"
914 ] 877 ]
915 }, 878 },
@@ -995,14 +958,12 @@
995 ], 958 ],
996 "files": [ 959 "files": [
997 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", 960 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py",
998 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
999 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", 961 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so",
1000 "${libdir}/python${PYTHON_MAJMIN}/profile.py", 962 "${libdir}/python${PYTHON_MAJMIN}/profile.py",
1001 "${libdir}/python${PYTHON_MAJMIN}/pstats.py" 963 "${libdir}/python${PYTHON_MAJMIN}/pstats.py"
1002 ], 964 ],
1003 "cached": [ 965 "cached": [
1004 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", 966 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc",
1005 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", 967 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc",
1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" 968 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
1008 ] 969 ]
@@ -1039,40 +1000,13 @@
1039 ], 1000 ],
1040 "files": [ 1001 "files": [
1041 "${libdir}/python${PYTHON_MAJMIN}/cmd.py", 1002 "${libdir}/python${PYTHON_MAJMIN}/cmd.py",
1042 "${libdir}/python${PYTHON_MAJMIN}/glob.py",
1043 "${libdir}/python${PYTHON_MAJMIN}/shlex.py" 1003 "${libdir}/python${PYTHON_MAJMIN}/shlex.py"
1044 ], 1004 ],
1045 "cached": [ 1005 "cached": [
1046 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc", 1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cmd.*.pyc",
1047 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/glob.*.pyc",
1048 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" 1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc"
1049 ] 1008 ]
1050 }, 1009 },
1051 "smtpd": {
1052 "summary": "Python Simple Mail Transport Daemon",
1053 "rdepends": [
1054 "core",
1055 "crypt",
1056 "datetime",
1057 "email",
1058 "io",
1059 "math",
1060 "mime",
1061 "netclient",
1062 "stringold"
1063 ],
1064 "files": [
1065 "${bindir}/smtpd.py",
1066 "${libdir}/python${PYTHON_MAJMIN}/asynchat.py",
1067 "${libdir}/python${PYTHON_MAJMIN}/asyncore.py",
1068 "${libdir}/python${PYTHON_MAJMIN}/smtpd.py"
1069 ],
1070 "cached": [
1071 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asynchat.*.pyc",
1072 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asyncore.*.pyc",
1073 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtpd.*.pyc"
1074 ]
1075 },
1076 "sqlite3": { 1010 "sqlite3": {
1077 "summary": "Python Sqlite3 database support", 1011 "summary": "Python Sqlite3 database support",
1078 "rdepends": [ 1012 "rdepends": [
@@ -1085,8 +1019,23 @@
1085 ], 1019 ],
1086 "cached": [] 1020 "cached": []
1087 }, 1021 },
1022 "statistics": {
1023 "summary": "Basic statistics module",
1024 "rdepends": [
1025 "core",
1026 "math",
1027 "numbers"
1028 ],
1029 "files": [
1030 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_statistics.*.so",
1031 "${libdir}/python${PYTHON_MAJMIN}/statistics.py"
1032 ],
1033 "cached": [
1034 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc"
1035 ]
1036 },
1088 "stringold": { 1037 "stringold": {
1089 "summary": "Python string APIs [deprecated]", 1038 "summary": "Common string operations",
1090 "rdepends": [ 1039 "rdepends": [
1091 "core" 1040 "core"
1092 ], 1041 ],
@@ -1143,11 +1092,20 @@
1143 "core" 1092 "core"
1144 ], 1093 ],
1145 "files": [ 1094 "files": [
1146 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so",
1147 "${libdir}/python${PYTHON_MAJMIN}/tkinter" 1095 "${libdir}/python${PYTHON_MAJMIN}/tkinter"
1148 ], 1096 ],
1149 "cached": [] 1097 "cached": []
1150 }, 1098 },
1099 "tomllib": {
1100 "summary": "Provides an interface for parsing TOML",
1101 "rdepends": [
1102 "core"
1103 ],
1104 "files": [
1105 "${libdir}/python${PYTHON_MAJMIN}/tomllib/"
1106 ],
1107 "cached": []
1108 },
1151 "unittest": { 1109 "unittest": {
1152 "summary": "Python unit testing framework", 1110 "summary": "Python unit testing framework",
1153 "rdepends": [ 1111 "rdepends": [
@@ -1175,8 +1133,7 @@
1175 "io" 1133 "io"
1176 ], 1134 ],
1177 "files": [ 1135 "files": [
1178 "${libdir}/python${PYTHON_MAJMIN}/getpass.py", 1136 "${libdir}/python${PYTHON_MAJMIN}/getpass.py"
1179 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/nis.*.so"
1180 ], 1137 ],
1181 "cached": [ 1138 "cached": [
1182 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc" 1139 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/getpass.*.pyc"
@@ -1212,13 +1169,10 @@
1212 "rdepends": [ 1169 "rdepends": [
1213 "compression", 1170 "compression",
1214 "core", 1171 "core",
1215 "crypt",
1216 "datetime", 1172 "datetime",
1217 "email", 1173 "email",
1218 "fcntl",
1219 "html", 1174 "html",
1220 "io", 1175 "io",
1221 "math",
1222 "mime", 1176 "mime",
1223 "netclient", 1177 "netclient",
1224 "netserver", 1178 "netserver",
@@ -1232,5 +1186,30 @@
1232 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" 1186 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__"
1233 ], 1187 ],
1234 "cached": [] 1188 "cached": []
1189 },
1190 "zipapp": {
1191 "summary": "Tools to manage the creation of zip files containing Python code",
1192 "rdepends": [
1193 "compression",
1194 "core"
1195 ],
1196 "files": [
1197 "${libdir}/python${PYTHON_MAJMIN}/zipapp.py"
1198 ],
1199 "cached": [
1200 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipapp.*.pyc"
1201 ]
1202 },
1203 "zoneinfo": {
1204 "summary": "IANA time zone support",
1205 "rdepends": [
1206 "core",
1207 "datetime"
1208 ],
1209 "files": [
1210 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_zoneinfo.*.so",
1211 "${libdir}/python${PYTHON_MAJMIN}/zoneinfo"
1212 ],
1213 "cached": []
1235 } 1214 }
1236} 1215}
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
index c4164313e8..5e2b12879d 100644
--- a/meta/recipes-devtools/python/python3/reformat_sysconfig.py
+++ b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
@@ -16,6 +16,6 @@ with open(sys.argv[1], 'r') as f:
16with open(sys.argv[1], 'w') as f: 16with open(sys.argv[1], 'w') as f:
17 for k in sorted(l.keys()): 17 for k in sorted(l.keys()):
18 f.write('%s = ' % k) 18 f.write('%s = ' % k)
19 pprint.pprint(l[k], stream=f, width=sys.maxsize) 19 pprint.pprint(l[k], stream=f, width=1)
20 f.write('\n') 20 f.write('\n')
21 21
diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest
index 405b07f495..d1c26c11e2 100644
--- a/meta/recipes-devtools/python/python3/run-ptest
+++ b/meta/recipes-devtools/python/python3/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 2SKIPPED_TESTS=
3python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g' 3{ SETUPTOOLS_USE_DISTUTILS=nonlocal python3 -m test $SKIPPED_TESTS -v -j 4 || echo "FAIL: python3" ; } | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/meta/recipes-devtools/python/python3/valid-dists.patch b/meta/recipes-devtools/python/python3/valid-dists.patch
new file mode 100644
index 0000000000..1b2c078c21
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/valid-dists.patch
@@ -0,0 +1,160 @@
1From a65c29adc027b3615154cab73aaedd58a6aa23da Mon Sep 17 00:00:00 2001
2From: "Jason R. Coombs" <jaraco@jaraco.com>
3Date: Tue, 23 Jul 2024 08:36:16 -0400
4Subject: [PATCH] Prioritize valid dists to invalid dists when retrieving by
5 name.
6
7Closes python/importlib_metadata#489
8
9Upstream-Status: Backport [https://github.com/python/importlib_metadata/commit/a65c29adc027b3615154cab73aaedd58a6aa23da]
10Signed-off-by: Ross Burton <ross.burton@arm.com>
11
12diff --git i/Lib/importlib/metadata/__init__.py w/Lib/importlib/metadata/__init__.py
13index 8ce62dd864f..085378caabc 100644
14--- i/Lib/importlib/metadata/__init__.py
15+++ w/Lib/importlib/metadata/__init__.py
16@@ -21,7 +21,7 @@
17 from . import _meta
18 from ._collections import FreezableDefaultDict, Pair
19 from ._functools import method_cache, pass_none
20-from ._itertools import always_iterable, unique_everseen
21+from ._itertools import always_iterable, bucket, unique_everseen
22 from ._meta import PackageMetadata, SimplePath
23
24 from contextlib import suppress
25@@ -404,7 +404,7 @@ def from_name(cls, name: str) -> Distribution:
26 if not name:
27 raise ValueError("A distribution name is required.")
28 try:
29- return next(iter(cls.discover(name=name)))
30+ return next(iter(cls._prefer_valid(cls.discover(name=name))))
31 except StopIteration:
32 raise PackageNotFoundError(name)
33
34@@ -428,6 +428,16 @@ def discover(
35 resolver(context) for resolver in cls._discover_resolvers()
36 )
37
38+ @staticmethod
39+ def _prefer_valid(dists: Iterable[Distribution]) -> Iterable[Distribution]:
40+ """
41+ Prefer (move to the front) distributions that have metadata.
42+
43+ Ref python/importlib_resources#489.
44+ """
45+ buckets = bucket(dists, lambda dist: bool(dist.metadata))
46+ return itertools.chain(buckets[True], buckets[False])
47+
48 @staticmethod
49 def at(path: str | os.PathLike[str]) -> Distribution:
50 """Return a Distribution for the indicated metadata path.
51diff --git i/Lib/importlib/metadata/_itertools.py w/Lib/importlib/metadata/_itertools.py
52index d4ca9b9140e..79d37198ce7 100644
53--- i/Lib/importlib/metadata/_itertools.py
54+++ w/Lib/importlib/metadata/_itertools.py
55@@ -1,3 +1,4 @@
56+from collections import defaultdict, deque
57 from itertools import filterfalse
58
59
60@@ -71,3 +72,100 @@ def always_iterable(obj, base_type=(str, bytes)):
61 return iter(obj)
62 except TypeError:
63 return iter((obj,))
64+
65+
66+# Copied from more_itertools 10.3
67+class bucket:
68+ """Wrap *iterable* and return an object that buckets the iterable into
69+ child iterables based on a *key* function.
70+
71+ >>> iterable = ['a1', 'b1', 'c1', 'a2', 'b2', 'c2', 'b3']
72+ >>> s = bucket(iterable, key=lambda x: x[0]) # Bucket by 1st character
73+ >>> sorted(list(s)) # Get the keys
74+ ['a', 'b', 'c']
75+ >>> a_iterable = s['a']
76+ >>> next(a_iterable)
77+ 'a1'
78+ >>> next(a_iterable)
79+ 'a2'
80+ >>> list(s['b'])
81+ ['b1', 'b2', 'b3']
82+
83+ The original iterable will be advanced and its items will be cached until
84+ they are used by the child iterables. This may require significant storage.
85+
86+ By default, attempting to select a bucket to which no items belong will
87+ exhaust the iterable and cache all values.
88+ If you specify a *validator* function, selected buckets will instead be
89+ checked against it.
90+
91+ >>> from itertools import count
92+ >>> it = count(1, 2) # Infinite sequence of odd numbers
93+ >>> key = lambda x: x % 10 # Bucket by last digit
94+ >>> validator = lambda x: x in {1, 3, 5, 7, 9} # Odd digits only
95+ >>> s = bucket(it, key=key, validator=validator)
96+ >>> 2 in s
97+ False
98+ >>> list(s[2])
99+ []
100+
101+ """
102+
103+ def __init__(self, iterable, key, validator=None):
104+ self._it = iter(iterable)
105+ self._key = key
106+ self._cache = defaultdict(deque)
107+ self._validator = validator or (lambda x: True)
108+
109+ def __contains__(self, value):
110+ if not self._validator(value):
111+ return False
112+
113+ try:
114+ item = next(self[value])
115+ except StopIteration:
116+ return False
117+ else:
118+ self._cache[value].appendleft(item)
119+
120+ return True
121+
122+ def _get_values(self, value):
123+ """
124+ Helper to yield items from the parent iterator that match *value*.
125+ Items that don't match are stored in the local cache as they
126+ are encountered.
127+ """
128+ while True:
129+ # If we've cached some items that match the target value, emit
130+ # the first one and evict it from the cache.
131+ if self._cache[value]:
132+ yield self._cache[value].popleft()
133+ # Otherwise we need to advance the parent iterator to search for
134+ # a matching item, caching the rest.
135+ else:
136+ while True:
137+ try:
138+ item = next(self._it)
139+ except StopIteration:
140+ return
141+ item_value = self._key(item)
142+ if item_value == value:
143+ yield item
144+ break
145+ elif self._validator(item_value):
146+ self._cache[item_value].append(item)
147+
148+ def __iter__(self):
149+ for item in self._it:
150+ item_value = self._key(item)
151+ if self._validator(item_value):
152+ self._cache[item_value].append(item)
153+
154+ yield from self._cache.keys()
155+
156+ def __getitem__(self, value):
157+ if not self._validator(value):
158+ return iter(())
159+
160+ return self._get_values(value)
diff --git a/meta/recipes-devtools/python/python3_3.13.5.bb b/meta/recipes-devtools/python/python3_3.13.5.bb
new file mode 100644
index 0000000000..f9ae534213
--- /dev/null
+++ b/meta/recipes-devtools/python/python3_3.13.5.bb
@@ -0,0 +1,496 @@
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 "
34
35SRC_URI:append:class-native = " \
36 file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
37 "
38
39SRC_URI[sha256sum] = "93e583f243454e6e9e4588ca2c2662206ad961659863277afcdb96801647d640"
40
41# exclude pre-releases for both python 2.x and 3.x
42UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
43
44CVE_PRODUCT = "python cpython"
45
46CVE_STATUS[CVE-2007-4559] = "disputed: Upstream consider this expected behaviour"
47CVE_STATUS[CVE-2019-18348] = "not-applicable-config: This is not exploitable when glibc has CVE-2016-10739 fixed"
48CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows"
49CVE_STATUS[CVE-2022-26488] = "not-applicable-platform: Issue only applies on Windows"
50# The module will be removed in the future and flaws documented.
51CVE_STATUS[CVE-2015-20107] = "upstream-wontfix: The mailcap module is insecure by design, so this can't be fixed in a meaningful way"
52CVE_STATUS[CVE-2023-36632] = "disputed: Not an issue, in fact expected behaviour"
53
54PYTHON_MAJMIN = "3.13"
55
56S = "${UNPACKDIR}/Python-${PV}"
57
58BBCLASSEXTEND = "native nativesdk"
59
60inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
61
62MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
63
64ALTERNATIVE:${PN}-dev = "python3-config"
65ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
66ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
67
68DEPENDS = "\
69 autoconf-archive-native \
70 bzip2 \
71 bzip2-replacement-native \
72 expat \
73 libffi \
74 ncurses \
75 openssl \
76 sqlite3 \
77 util-linux-libuuid \
78 virtual/crypt \
79 virtual/libintl \
80 xz \
81 zlib \
82"
83
84DEPENDS:append:class-target = " python3-native"
85DEPENDS:append:class-nativesdk = " python3-native"
86
87EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib} --with-system-expat"
88EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
89EXTRA_OECONF:append:class-target = " --with-build-python=nativepython3"
90EXTRA_OECONF:append:class-nativesdk = " --with-build-python=nativepython3"
91
92export CROSSPYTHONPATH = "${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
93
94EXTRANATIVEPATH += "python3-native"
95
96# LTO will be enabled via packageconfig depending upong distro features
97LTO:class-target = ""
98
99CACHED_CONFIGUREVARS = " \
100 ac_cv_file__dev_ptmx=yes \
101 ac_cv_file__dev_ptc=no \
102 ac_cv_working_tzset=yes \
103"
104CACHED_CONFIGUREVARS:append:class-target = " \
105 ac_cv_libatomic_needed=yes \
106"
107
108# set thread stack size to 2MB on musl for interpreter and stdlib C extensions
109# so it does not run into stack limits due to musl's small thread stack
110# This is only needed to build interpreter and not the subsequent modules
111# Thats why CFLAGS_NODIST is modified instead of CFLAGS
112CACHED_CONFIGUREVARS:append:libc-musl = "\
113 CFLAGS_NODIST='${CFLAGS} -DTHREAD_STACK_SIZE=0x200000' \
114"
115
116# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
117PACKAGECONFIG ??= "editline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
118PACKAGECONFIG[readline] = "--with-readline=readline,,readline,,,editline"
119PACKAGECONFIG[editline] = "--with-readline=editline,,libedit,,,readline"
120# Use profile guided optimisation by running PyBench inside qemu-user
121PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
122PACKAGECONFIG[tk] = ",,tk"
123PACKAGECONFIG[tcl] = ",,tcl"
124PACKAGECONFIG[gdbm] = ",,gdbm"
125PACKAGECONFIG[lto] = "--with-lto,--without-lto"
126PACKAGECONFIG[staticlibpython] = "--with-static-libpython,--without-static-libpython"
127
128do_configure:prepend () {
129 mkdir -p ${B}/Modules
130 cat > ${B}/Modules/Setup.local << EOF
131*disabled*
132${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
133${@bb.utils.contains_any('PACKAGECONFIG', 'readline editline', '', 'readline', d)}
134${@bb.utils.contains('PACKAGECONFIG', 'tk', '', '_tkinter', d)}
135EOF
136}
137
138CPPFLAGS += "-I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
139
140# COMPILEALL_OPTS= ensures that .pyc are not compiled in parallel
141# This was found to lock up builds, break reproducibility, and produce strange file ownership
142# races.
143#
144# The upstream commit introducing the change was:
145# https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
146#
147# The build lock up issue is reported here:
148# https://bugs.python.org/issue45945
149#
150# The repro failures are documented here:
151# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20211130-yr_o1a8d/packages/diff-html/
152
153EXTRA_OEMAKE = '\
154 STAGING_LIBDIR=${STAGING_LIBDIR} \
155 STAGING_INCDIR=${STAGING_INCDIR} \
156 LIB=${baselib} \
157 COMPILEALL_OPTS= \
158'
159
160# Generate a Profile Guided Optimisation wrapper script that uses qemu-user for
161# all cross builds.
162write_pgo_wrapper:class-native = ":"
163write_pgo_wrapper() {
164 if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
165 cat >pgo-wrapper <<EOF
166#!/bin/sh
167cd ${B}
168${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@"
169EOF
170 chmod +x pgo-wrapper
171 fi
172}
173
174do_compile:prepend() {
175 write_pgo_wrapper
176}
177
178do_install:prepend() {
179 ${UNPACKDIR}/check_build_completeness.py ${T}/log.do_compile
180}
181
182do_install:append:class-target() {
183 oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
184}
185
186do_install:append:class-native() {
187 # Make sure we use /usr/bin/env python
188 for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
189 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
190 done
191 # Add a symlink to the native Python so that scripts can just invoke
192 # "nativepython" and get the right one without needing absolute paths
193 # (these often end up too long for the #! parser in the kernel as the
194 # buffer is 128 bytes long).
195 ln -s python3-native/python3 ${D}${bindir}/nativepython3
196
197 # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 of them
198 # and the overhead in each recipe-sysroot-native isn't worth it, particularly
199 # when they're only used for python called with -O or -OO.
200 #find ${D} -name *opt-*.pyc -delete
201 # Remove all pyc files. There are a ton of them and it is probably faster to let
202 # python create the ones it wants at runtime rather than manage in the sstate
203 # tarballs and sysroot creation.
204 find ${D} -name *.pyc -delete
205
206 # Nothing should be looking into ${B} for python3-native
207 sed -i -e 's:${B}:/build/path/unavailable/:g' \
208 ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
209
210 # disable the lookup in user's site-packages globally
211 sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
212
213 # python3-config needs to be in /usr/bin and not in a subdir of it to work properly
214 mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/
215}
216
217do_install:append() {
218 for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
219 python3 ${UNPACKDIR}/reformat_sysconfig.py $c
220 done
221 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
222
223 mkdir -p ${D}${libdir}/python-sysconfigdata
224 sysconfigfile=`find ${D} -name _sysconfig*.py`
225 sed -i \
226 -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
227 -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
228 -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
229 -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
230 -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
231 -e "s,${B},/build/path/unavailable/,g" \
232 $sysconfigfile
233 cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
234
235 # Remove the opt-1.pyc and opt-2.pyc files. They effectively waste space on embedded
236 # style targets as they're only used when python is called with the -O or -OO options
237 # which is rare.
238 find ${D} -name *opt-*.pyc -delete
239}
240
241do_install:append:class-nativesdk () {
242 # Make sure we use /usr/bin/env python
243 for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
244 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
245 done
246 create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
247}
248
249do_install_ptest:append:class-target:libc-musl () {
250 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"|' ${D}${PTEST_PATH}/run-ptest
251}
252
253SYSROOT_PREPROCESS_FUNCS:append:class-target = " provide_target_config_script"
254SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " provide_target_config_script"
255
256# This is installed into /usr/python-target-config/ and not /usr/bin
257# because adding target sysroot's /usr/bin/ to PATH has unwanted side effects
258# in components erroneously picking up other target executables from it
259provide_target_config_script() {
260 install -d ${SYSROOT_DESTDIR}${prefix}/python-target-config/
261 install ${D}/${bindir}/python3-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
262 install ${D}/${bindir}/python${PYTHON_MAJMIN}-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
263}
264SYSROOT_DIRS += "${prefix}/python-target-config/"
265
266SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
267SSTATE_HASHEQUIV_FILEMAP = " \
268 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
269 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
270 populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
271 populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
272 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
273 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
274 "
275PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
276
277py_package_preprocess () {
278 # Remove references to buildmachine paths in target Makefile and _sysconfigdata
279 sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
280 -e 's|${DEBUG_PREFIX_MAP}||g' \
281 -e 's:${HOSTTOOLS_DIR}/::g' \
282 -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
283 -e 's:${RECIPE_SYSROOT}::g' \
284 -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
285 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
286 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
287 ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
288
289 # Reformat _sysconfigdata after modifying it so that it remains
290 # reproducible
291 for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
292 python3 ${UNPACKDIR}/reformat_sysconfig.py $c
293 done
294
295 # Recompile _sysconfigdata after modifying it
296 cd ${PKGD}
297 sysconfigfile=`find . -name _sysconfigdata_*.py`
298 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
299 -c "from py_compile import compile; compile('$sysconfigfile')"
300 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
301 -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
302 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
303 -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
304 cd -
305
306 mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
307
308 #Remove the unneeded copy of target sysconfig data
309 rm -rf ${PKGD}/${libdir}/python-sysconfigdata
310}
311
312# We want bytecode precompiled .py files (.pyc's) by default
313# but the user may set it on their own conf
314INCLUDE_PYCS ?= "1"
315
316python(){
317 import collections, json
318
319 filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
320 # This python changes the datastore based on the contents of a file, so mark
321 # that dependency.
322 bb.parse.mark_dependency(d, filename)
323
324 with open(filename) as manifest_file:
325 manifest_str = manifest_file.read()
326 json_start = manifest_str.find('# EOC') + 6
327 manifest_file.seek(json_start)
328 manifest_str = manifest_file.read()
329 python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
330
331 # First set RPROVIDES for -native case
332 # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
333 pn = 'python3'
334 rprovides = (d.getVar('RPROVIDES') or "").split()
335
336 # ${PN}-misc-native is not in the manifest
337 rprovides.append(pn + '-misc-native')
338
339 for key in python_manifest:
340 pypackage = pn + '-' + key + '-native'
341 if pypackage not in rprovides:
342 rprovides.append(pypackage)
343
344 d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
345
346 # Then work on the target
347 include_pycs = d.getVar('INCLUDE_PYCS')
348
349 packages = d.getVar('PACKAGES').split()
350 pn = d.getVar('PN')
351
352 newpackages=[]
353 for key in python_manifest:
354 pypackage = pn + '-' + key
355
356 if pypackage not in packages:
357 # We need to prepend, otherwise python-misc gets everything
358 # so we use a new variable
359 newpackages.append(pypackage)
360
361 # "Build" python's manifest FILES, RDEPENDS and SUMMARY
362 for value in python_manifest[key]['files']:
363 d.appendVar('FILES:' + pypackage, ' ' + value)
364
365 # Add cached files
366 if include_pycs == '1':
367 for value in python_manifest[key]['cached']:
368 d.appendVar('FILES:' + pypackage, ' ' + value)
369
370 for value in python_manifest[key]['rdepends']:
371 # Make it work with or without $PN
372 if '${PN}' in value:
373 value=value.split('-', 1)[1]
374 d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
375
376 for value in python_manifest[key].get('rrecommends', ()):
377 if '${PN}' in value:
378 value=value.split('-', 1)[1]
379 d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
380
381 d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
382
383 # Prepending so to avoid python-misc getting everything
384 packages = newpackages + packages
385 d.setVar('PACKAGES', ' '.join(packages))
386 d.setVar('ALLOW_EMPTY:${PN}-fcntl', '1')
387 d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
388 d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
389
390 if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d):
391 bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine")
392}
393
394# Files needed to create a new manifest
395
396do_create_manifest() {
397 # This task should be run with every new release of Python.
398 # We must ensure that PACKAGECONFIG enables everything when creating
399 # a new manifest, this is to base our new manifest on a complete
400 # native python build, containing all dependencies, otherwise the task
401 # wont be able to find the required files.
402 # e.g. BerkeleyDB is an optional build dependency so it may or may not
403 # be present, we must ensure it is.
404
405 cp ${UNPACKDIR}/create_manifest3.py ${WORKDIR}
406 cp ${UNPACKDIR}/python3-manifest.json ${WORKDIR}
407 cp ${UNPACKDIR}/get_module_deps3.py ${WORKDIR}
408 cd ${WORKDIR}
409 # This needs to be executed by python-native and NOT by HOST's python
410 nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
411 cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
412}
413
414# bitbake python -c create_manifest
415# Make sure we have native python ready when we create a new manifest
416addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
417
418# manual dependency additions
419RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
420RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
421RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
422
423# For historical reasons PN is empty and provided by python3-modules
424FILES:${PN} = ""
425RPROVIDES:${PN}-modules = "${PN}"
426
427FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
428FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
429FILES:${PN}-tkinter += "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so"
430
431# provide python-pyvenv from python3-venv
432RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
433
434# package libpython3
435PACKAGES =+ "libpython3 libpython3-staticdev"
436FILES:libpython3 = "${libdir}/libpython*.so.*"
437FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
438INSANE_SKIP:${PN}-dev += "dev-elf"
439INSANE_SKIP:${PN}-ptest = "dev-deps"
440
441# catch all the rest (unsorted)
442PACKAGES += "${PN}-misc"
443RDEPENDS:${PN}-misc += "\
444 ${PN}-audio \
445 ${PN}-codecs \
446 ${PN}-core \
447 ${PN}-email \
448 ${PN}-numbers \
449 ${PN}-pickle \
450 ${PN}-pydoc \
451"
452RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
453RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
454RDEPENDS:${PN}-modules:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '${MLPREFIX}python3-gdbm', '', d)}"
455FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
456
457# catch manpage
458PACKAGES += "${PN}-man"
459FILES:${PN}-man = "${datadir}/man"
460
461# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
462RDEPENDS:libpython3:append:libc-glibc = " libgcc"
463RRECOMMENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
464RDEPENDS:${PN}-ptest = "\
465 ${PN}-dev \
466 ${PN}-modules \
467 ${PN}-tests \
468 ${PN}-zipapp \
469 binutils \
470 bzip2 \
471 coreutils \
472 gcc \
473 gcc-symlinks \
474 g++ \
475 libgcc \
476 locale-base-fr-fr \
477 locale-base-en-us \
478 locale-base-de-de \
479 sed \
480 tzdata \
481 unzip \
482"
483RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr"
484RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
485RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
486DEV_PKG_DEPENDENCY = ""
487RDEPENDS:${PN}-pydoc += "${PN}-io"
488
489RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
490RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
491
492# Python's tests contain large numbers of files we don't need in the recipe sysroots
493SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
494py3_sysroot_cleanup () {
495 rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
496}
diff --git a/meta/recipes-devtools/python/python3_3.9.2.bb b/meta/recipes-devtools/python/python3_3.9.2.bb
deleted file mode 100644
index af1843a180..0000000000
--- a/meta/recipes-devtools/python/python3_3.9.2.bb
+++ /dev/null
@@ -1,382 +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 = "PSFv2"
5SECTION = "devel/python"
6
7LIC_FILES_CHKSUM = "file://LICENSE;md5=c22d2438294c784731bf9dd224a467b7"
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://cgi_py.patch \
17 file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \
18 ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \
19 file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \
20 file://python-config.patch \
21 file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
22 file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
23 file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \
24 file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \
25 file://crosspythonpath.patch \
26 file://0001-Use-FLAG_REF-always-for-interned-strings.patch \
27 file://0001-test_locale.py-correct-the-test-output-format.patch \
28 file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \
29 file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \
30 file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \
31 file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
32 file://0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch \
33 "
34
35SRC_URI_append_class-native = " \
36 file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \
37 file://12-distutils-prefix-is-inside-staging-area.patch \
38 file://0001-Don-t-search-system-for-headers-libraries.patch \
39 "
40SRC_URI[sha256sum] = "3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d"
41
42# exclude pre-releases for both python 2.x and 3.x
43UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
44UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/"
45
46CVE_PRODUCT = "python"
47
48# Upstream consider this expected behaviour
49CVE_CHECK_WHITELIST += "CVE-2007-4559"
50# This is not exploitable when glibc has CVE-2016-10739 fixed.
51CVE_CHECK_WHITELIST += "CVE-2019-18348"
52
53# This is windows only issue.
54CVE_CHECK_WHITELIST += "CVE-2020-15523"
55
56PYTHON_MAJMIN = "3.9"
57
58S = "${WORKDIR}/Python-${PV}"
59
60BBCLASSEXTEND = "native nativesdk"
61
62inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
63
64MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
65
66ALTERNATIVE_${PN}-dev = "python3-config"
67ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config"
68ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}"
69
70
71DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2"
72DEPENDS_append_class-target = " python3-native"
73DEPENDS_append_class-nativesdk = " python3-native"
74
75EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}"
76EXTRA_OECONF_append_class-native = " --bindir=${bindir}/${PN}"
77
78export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
79
80EXTRANATIVEPATH += "python3-native"
81
82# LTO will be enabled via packageconfig depending upong distro features
83LTO_class-target = ""
84
85CACHED_CONFIGUREVARS = " \
86 ac_cv_file__dev_ptmx=yes \
87 ac_cv_file__dev_ptc=no \
88 ac_cv_working_tzset=yes \
89"
90
91def possibly_include_pgo(d):
92 # PGO currently causes builds to not be reproducible, so disable it for
93 # now. See YOCTO #13407
94 if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) and d.getVar('BUILD_REPRODUCIBLE_BINARIES') != '1':
95 return 'pgo'
96
97 return ''
98
99PACKAGECONFIG_class-target ??= "readline ${@possibly_include_pgo(d)} gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
100PACKAGECONFIG_class-native ??= "readline gdbm"
101PACKAGECONFIG_class-nativesdk ??= "readline gdbm"
102PACKAGECONFIG[readline] = ",,readline"
103# Use profile guided optimisation by running PyBench inside qemu-user
104PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
105PACKAGECONFIG[tk] = ",,tk"
106PACKAGECONFIG[gdbm] = ",,gdbm"
107PACKAGECONFIG[lto] = "--with-lto,,"
108
109do_configure_prepend () {
110 mkdir -p ${B}/Modules
111 cat > ${B}/Modules/Setup.local << EOF
112*disabled*
113${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)}
114${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)}
115EOF
116}
117
118CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
119
120EXTRA_OEMAKE = '\
121 STAGING_LIBDIR=${STAGING_LIBDIR} \
122 STAGING_INCDIR=${STAGING_INCDIR} \
123 LIB=${baselib} \
124'
125
126do_compile_prepend_class-target() {
127 if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
128 qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}"
129 cat >pgo-wrapper <<EOF
130#!/bin/sh
131cd ${B}
132$qemu_binary "\$@"
133EOF
134 chmod +x pgo-wrapper
135 fi
136}
137
138do_install_prepend() {
139 ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
140}
141
142do_install_append_class-target() {
143 oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
144}
145
146do_install_append_class-native() {
147 # Make sure we use /usr/bin/env python
148 for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
149 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
150 done
151 # Add a symlink to the native Python so that scripts can just invoke
152 # "nativepython" and get the right one without needing absolute paths
153 # (these often end up too long for the #! parser in the kernel as the
154 # buffer is 128 bytes long).
155 ln -s python3-native/python3 ${D}${bindir}/nativepython3
156}
157
158do_install_append() {
159 mkdir -p ${D}${libdir}/python-sysconfigdata
160 sysconfigfile=`find ${D} -name _sysconfig*.py`
161 cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
162
163 sed -i \
164 -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
165 -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
166 -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
167 -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \
168 -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \
169 ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
170
171 # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
172 # being written without strict ordering, even with PYTHONHASHSEED = 0
173 # Upstream is discussing ways to solve the issue properly, until then let's
174 # just not install the problematic files.
175 # More info: http://benno.id.au/blog/2013/01/15/python-determinism
176 rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
177 rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
178}
179
180do_install_append_class-nativesdk () {
181 # Make sure we use /usr/bin/env python
182 for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
183 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
184 done
185 create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
186}
187
188SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
189PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
190
191py_package_preprocess () {
192 # Remove references to buildmachine paths in target Makefile and _sysconfigdata
193 sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
194 -e 's|${DEBUG_PREFIX_MAP}||g' \
195 -e 's:${HOSTTOOLS_DIR}/::g' \
196 -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
197 -e 's:${RECIPE_SYSROOT}::g' \
198 -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
199 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
200 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
201 ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
202
203 # Reformat _sysconfigdata after modifying it so that it remains
204 # reproducible
205 for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
206 python3 ${WORKDIR}/reformat_sysconfig.py $c
207 done
208
209 # Recompile _sysconfigdata after modifying it
210 cd ${PKGD}
211 sysconfigfile=`find . -name _sysconfigdata_*.py`
212 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
213 -c "from py_compile import compile; compile('$sysconfigfile')"
214 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
215 -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
216 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
217 -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
218 cd -
219
220 mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
221
222 #Remove the unneeded copy of target sysconfig data
223 rm -rf ${PKGD}/${libdir}/python-sysconfigdata
224}
225
226# We want bytecode precompiled .py files (.pyc's) by default
227# but the user may set it on their own conf
228INCLUDE_PYCS ?= "1"
229
230python(){
231 import collections, json
232
233 filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
234 # This python changes the datastore based on the contents of a file, so mark
235 # that dependency.
236 bb.parse.mark_dependency(d, filename)
237
238 with open(filename) as manifest_file:
239 manifest_str = manifest_file.read()
240 json_start = manifest_str.find('# EOC') + 6
241 manifest_file.seek(json_start)
242 manifest_str = manifest_file.read()
243 python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
244
245 # First set RPROVIDES for -native case
246 # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
247 pn = 'python3'
248 rprovides = (d.getVar('RPROVIDES') or "").split()
249
250 # ${PN}-misc-native is not in the manifest
251 rprovides.append(pn + '-misc-native')
252
253 for key in python_manifest:
254 pypackage = pn + '-' + key + '-native'
255 if pypackage not in rprovides:
256 rprovides.append(pypackage)
257
258 d.setVar('RPROVIDES_class-native', ' '.join(rprovides))
259
260 # Then work on the target
261 include_pycs = d.getVar('INCLUDE_PYCS')
262
263 packages = d.getVar('PACKAGES').split()
264 pn = d.getVar('PN')
265
266 newpackages=[]
267 for key in python_manifest:
268 pypackage = pn + '-' + key
269
270 if pypackage not in packages:
271 # We need to prepend, otherwise python-misc gets everything
272 # so we use a new variable
273 newpackages.append(pypackage)
274
275 # "Build" python's manifest FILES, RDEPENDS and SUMMARY
276 d.setVar('FILES_' + pypackage, '')
277 for value in python_manifest[key]['files']:
278 d.appendVar('FILES_' + pypackage, ' ' + value)
279
280 # Add cached files
281 if include_pycs == '1':
282 for value in python_manifest[key]['cached']:
283 d.appendVar('FILES_' + pypackage, ' ' + value)
284
285 for value in python_manifest[key]['rdepends']:
286 # Make it work with or without $PN
287 if '${PN}' in value:
288 value=value.split('-', 1)[1]
289 d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value)
290
291 for value in python_manifest[key].get('rrecommends', ()):
292 if '${PN}' in value:
293 value=value.split('-', 1)[1]
294 d.appendVar('RRECOMMENDS_' + pypackage, ' ' + pn + '-' + value)
295
296 d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary'])
297
298 # Prepending so to avoid python-misc getting everything
299 packages = newpackages + packages
300 d.setVar('PACKAGES', ' '.join(packages))
301 d.setVar('ALLOW_EMPTY_${PN}-modules', '1')
302 d.setVar('ALLOW_EMPTY_${PN}-pkgutil', '1')
303}
304
305# Files needed to create a new manifest
306
307do_create_manifest() {
308 # This task should be run with every new release of Python.
309 # We must ensure that PACKAGECONFIG enables everything when creating
310 # a new manifest, this is to base our new manifest on a complete
311 # native python build, containing all dependencies, otherwise the task
312 # wont be able to find the required files.
313 # e.g. BerkeleyDB is an optional build dependency so it may or may not
314 # be present, we must ensure it is.
315
316 cd ${WORKDIR}
317 # This needs to be executed by python-native and NOT by HOST's python
318 nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
319 cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
320}
321
322# bitbake python -c create_manifest
323# Make sure we have native python ready when we create a new manifest
324addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
325
326# manual dependency additions
327RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules"
328RRECOMMENDS_${PN}-crypt_append_class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
329RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
330
331# For historical reasons PN is empty and provided by python3-modules
332FILES_${PN} = ""
333RPROVIDES_${PN}-modules = "${PN}"
334
335FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
336FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
337
338# provide python-pyvenv from python3-venv
339RPROVIDES_${PN}-venv += "${MLPREFIX}python3-pyvenv"
340
341# package libpython3
342PACKAGES =+ "libpython3 libpython3-staticdev"
343FILES_libpython3 = "${libdir}/libpython*.so.*"
344FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
345INSANE_SKIP_${PN}-dev += "dev-elf"
346
347# catch all the rest (unsorted)
348PACKAGES += "${PN}-misc"
349RDEPENDS_${PN}-misc += "\
350 ${PN}-core \
351 ${PN}-email \
352 ${PN}-codecs \
353 ${PN}-pydoc \
354 ${PN}-pickle \
355 ${PN}-audio \
356 ${PN}-numbers \
357"
358RDEPENDS_${PN}-modules_append_class-target = " ${MLPREFIX}python3-misc"
359RDEPENDS_${PN}-modules_append_class-nativesdk = " ${MLPREFIX}python3-misc"
360FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
361
362# catch manpage
363PACKAGES += "${PN}-man"
364FILES_${PN}-man = "${datadir}/man"
365
366# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
367RDEPENDS_libpython3_append_libc-glibc = " libgcc"
368RDEPENDS_${PN}-ctypes_append_libc-glibc = " ${MLPREFIX}ldconfig"
369RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2 libgcc tzdata-europe coreutils sed"
370RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9"
371RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}"
372RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}"
373RDEPENDS_${PN}-dev = ""
374
375RDEPENDS_${PN}-tests_append_class-target = " ${MLPREFIX}bash"
376RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash"
377
378# Python's tests contain large numbers of files we don't need in the recipe sysroots
379SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
380py3_sysroot_cleanup () {
381 rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
382}