summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/python')
-rw-r--r--meta/recipes-devtools/python/python-async.inc14
-rw-r--r--meta/recipes-devtools/python/python-cython.inc45
-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-pyasn1.inc31
-rw-r--r--meta/recipes-devtools/python/python-pycryptodome.inc18
-rw-r--r--meta/recipes-devtools/python/python-pyparsing.inc22
-rw-r--r--meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch32
-rw-r--r--meta/recipes-devtools/python/python-six.inc2
-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_0.7.16.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-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb (renamed from meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb)16
-rw-r--r--meta/recipes-devtools/python/python3-attrs/0001-conftest.py-disable-deadline.patch45
-rw-r--r--meta/recipes-devtools/python/python3-attrs/0001-test_funcs-skip-test_unknown-for-pytest-8.patch30
-rw-r--r--meta/recipes-devtools/python/python3-attrs/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-attrs_20.3.0.bb20
-rw-r--r--meta/recipes-devtools/python/python3-attrs_23.2.0.bb39
-rw-r--r--meta/recipes-devtools/python/python3-babel_2.14.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt-crates.inc114
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt/0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch111
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-bcrypt_4.1.2.bb37
-rw-r--r--meta/recipes-devtools/python/python3-beartype_0.18.5.bb11
-rw-r--r--meta/recipes-devtools/python/python3-booleanpy_4.0.bb13
-rw-r--r--meta/recipes-devtools/python/python3-build_1.2.1.bb32
-rw-r--r--meta/recipes-devtools/python/python3-calver/0001-setup.py-hard-code-version.patch32
-rw-r--r--meta/recipes-devtools/python/python3-calver/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-calver_2022.6.26.bb28
-rw-r--r--meta/recipes-devtools/python/python3-certifi_2024.2.2.bb16
-rw-r--r--meta/recipes-devtools/python/python3-cffi_1.16.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-chardet_5.2.0.bb24
-rw-r--r--meta/recipes-devtools/python/python3-click/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-click_8.1.7.bb39
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-crates.inc102
-rw-r--r--meta/recipes-devtools/python/python3-cryptography-vectors_42.0.5.bb31
-rw-r--r--meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch43
-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-cryptography_42.0.5.bb67
-rw-r--r--meta/recipes-devtools/python/python3-cython_0.29.22.bb33
-rw-r--r--meta/recipes-devtools/python/python3-cython_3.0.10.bb37
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.2.16.bb26
-rw-r--r--meta/recipes-devtools/python/python3-dbus_1.3.2.bb23
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb17
-rw-r--r--meta/recipes-devtools/python/python3-dbusmock_0.31.1.bb22
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.16.bb17
-rw-r--r--meta/recipes-devtools/python/python3-docutils_0.20.1.bb20
-rw-r--r--meta/recipes-devtools/python/python3-dtc/0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch132
-rw-r--r--meta/recipes-devtools/python/python3-dtc_1.7.0.bb25
-rw-r--r--meta/recipes-devtools/python/python3-dtschema_2024.4.bb20
-rw-r--r--meta/recipes-devtools/python/python3-editables_0.5.bb15
-rw-r--r--meta/recipes-devtools/python/python3-flit-core_3.9.0.bb37
-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.bb32
-rw-r--r--meta/recipes-devtools/python/python3-gitdb_4.0.11.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_24.1.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-hatch-vcs_0.4.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-hatchling_1.24.1.bb17
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis/run-ptest10
-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.100.1.bb39
-rw-r--r--meta/recipes-devtools/python/python3-hypothesis_6.2.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-idna_3.7.bb14
-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-importlib-metadata_7.1.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.0.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.5.bb (renamed from meta/recipes-devtools/python/python3-iniparse_0.4.bb)11
-rw-r--r--meta/recipes-devtools/python/python3-installer/interpreter.patch71
-rw-r--r--meta/recipes-devtools/python/python3-installer_0.7.0.bb34
-rw-r--r--meta/recipes-devtools/python/python3-iso8601_2.1.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-isodate_0.6.1.bb16
-rw-r--r--meta/recipes-devtools/python/python3-jinja2/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_2.11.3.bb45
-rw-r--r--meta/recipes-devtools/python/python3-jinja2_3.1.3.bb48
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-jsonpointer_2.4.bb28
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb16
-rw-r--r--meta/recipes-devtools/python/python3-jsonschema_4.21.1.bb50
-rw-r--r--meta/recipes-devtools/python/python3-libarchive-c_5.1.bb (renamed from meta/recipes-devtools/python/python3-libarchive-c_2.9.bb)10
-rw-r--r--meta/recipes-devtools/python/python3-license-expression/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-license-expression_30.3.0.bb38
-rw-r--r--meta/recipes-devtools/python/python3-lxml_5.2.1.bb42
-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.3.bb20
-rw-r--r--meta/recipes-devtools/python/python3-markdown_3.6.bb13
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_1.1.1.bb28
-rw-r--r--meta/recipes-devtools/python/python3-markupsafe_2.1.5.bb27
-rw-r--r--meta/recipes-devtools/python/python3-maturin-crates.inc618
-rw-r--r--meta/recipes-devtools/python/python3-maturin/0001-Add-32-bit-RISC-V-support.patch102
-rw-r--r--meta/recipes-devtools/python/python3-maturin_1.4.0.bb43
-rw-r--r--meta/recipes-devtools/python/python3-meson-python_0.15.0.bb27
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_10.2.0.bb29
-rw-r--r--meta/recipes-devtools/python/python3-more-itertools_8.7.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb31
-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-.patch70
-rw-r--r--meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch50
-rw-r--r--meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch33
-rw-r--r--meta/recipes-devtools/python/python3-numpy/run-ptest5
-rw-r--r--meta/recipes-devtools/python/python3-numpy_1.26.4.bb64
-rw-r--r--meta/recipes-devtools/python/python3-packaging_20.9.bb13
-rw-r--r--meta/recipes-devtools/python/python3-packaging_24.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-pathlib2_2.3.5.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb12
-rw-r--r--meta/recipes-devtools/python/python3-pathspec_0.12.1.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pbr_5.4.4.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pbr_6.0.0.bb4
-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_24.0.bb60
-rw-r--r--meta/recipes-devtools/python/python3-pluggy/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-pluggy_0.13.1.bb27
-rw-r--r--meta/recipes-devtools/python/python3-pluggy_1.5.0.bb29
-rw-r--r--meta/recipes-devtools/python/python3-ply_3.11.bb18
-rw-r--r--meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb42
-rw-r--r--meta/recipes-devtools/python/python3-pretend_1.0.9.bb11
-rw-r--r--meta/recipes-devtools/python/python3-psutil_5.9.8.bb41
-rw-r--r--meta/recipes-devtools/python/python3-py_1.11.0.bb (renamed from meta/recipes-devtools/python/python3-py_1.10.0.bb)8
-rw-r--r--meta/recipes-devtools/python/python3-pyasn1/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pyasn1_0.6.0.bb3
-rw-r--r--meta/recipes-devtools/python/python3-pycairo_1.26.0.bb (renamed from meta/recipes-devtools/python/python3-pycairo_1.20.0.bb)13
-rw-r--r--meta/recipes-devtools/python/python3-pycparser_2.22.bb21
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.10.1.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodome_3.20.0.bb5
-rw-r--r--meta/recipes-devtools/python/python3-pycryptodomex_3.20.0.bb (renamed from meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb)4
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.27.bb13
-rw-r--r--meta/recipes-devtools/python/python3-pyelftools_0.31.bb15
-rw-r--r--meta/recipes-devtools/python/python3-pygments_2.17.2.bb14
-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.48.2.bb39
-rw-r--r--meta/recipes-devtools/python/python3-pyopenssl_24.1.0.bb23
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_2.4.7.bb3
-rw-r--r--meta/recipes-devtools/python/python3-pyparsing_3.1.2.bb30
-rw-r--r--meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-pyproject-metadata_0.7.1.bb27
-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.bb20
-rw-r--r--meta/recipes-devtools/python/python3-pytest-runner_6.0.1.bb16
-rw-r--r--meta/recipes-devtools/python/python3-pytest-subtests_0.12.1.bb20
-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.1.1.bb41
-rw-r--r--meta/recipes-devtools/python/python3-pytz/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pytz_2024.1.bb36
-rw-r--r--meta/recipes-devtools/python/python3-pyyaml/0001-Fix-builds-with-Cython-3.patch54
-rw-r--r--meta/recipes-devtools/python/python3-pyyaml/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-pyyaml_6.0.1.bb40
-rw-r--r--meta/recipes-devtools/python/python3-rdflib_7.0.0.bb21
-rw-r--r--meta/recipes-devtools/python/python3-referencing_0.34.0.bb14
-rw-r--r--meta/recipes-devtools/python/python3-requests_2.31.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-rfc3339-validator_0.1.4.bb21
-rw-r--r--meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb24
-rw-r--r--meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb11
-rw-r--r--meta/recipes-devtools/python/python3-rpds-py-crates.inc80
-rw-r--r--meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-ruamel-yaml_0.18.6.bb23
-rw-r--r--meta/recipes-devtools/python/python3-scons-native_3.1.2.bb7
-rw-r--r--meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch29
-rw-r--r--meta/recipes-devtools/python/python3-scons_3.1.2.bb33
-rw-r--r--meta/recipes-devtools/python/python3-scons_4.7.0.bb36
-rw-r--r--meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb18
-rw-r--r--meta/recipes-devtools/python/python3-setuptools-rust_1.9.0.bb35
-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.0.4.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/0001-conditionally-do-not-fetch-code-by-easy_install.patch (renamed from meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch)9
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_53.0.0.bb55
-rw-r--r--meta/recipes-devtools/python/python3-setuptools_69.5.1.bb55
-rw-r--r--meta/recipes-devtools/python/python3-six_1.15.0.bb5
-rw-r--r--meta/recipes-devtools/python/python3-six_1.16.0.bb4
-rw-r--r--meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch47
-rw-r--r--meta/recipes-devtools/python/python3-smartypants_2.0.0.bb14
-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_2.2.0.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.2.bb28
-rw-r--r--meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb26
-rw-r--r--meta/recipes-devtools/python/python3-sphinx_7.2.6.bb35
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb12
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb12
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb12
-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_1.0.7.bb12
-rw-r--r--meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb12
-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.1.bb20
-rw-r--r--meta/recipes-devtools/python/python3-toml_0.10.2.bb4
-rw-r--r--meta/recipes-devtools/python/python3-tomli_2.0.1.bb18
-rw-r--r--meta/recipes-devtools/python/python3-trove-classifiers/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-trove-classifiers_2024.4.10.bb26
-rw-r--r--meta/recipes-devtools/python/python3-typing-extensions_4.11.0.bb24
-rw-r--r--meta/recipes-devtools/python/python3-typogrify_2.0.7.bb14
-rw-r--r--meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb13
-rw-r--r--meta/recipes-devtools/python/python3-uritools_4.0.2.bb11
-rw-r--r--meta/recipes-devtools/python/python3-urllib3_2.2.1.bb24
-rw-r--r--meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb12
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth/run-ptest2
-rw-r--r--meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb (renamed from meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb)14
-rw-r--r--meta/recipes-devtools/python/python3-webcolors/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-webcolors_1.13.bb28
-rw-r--r--meta/recipes-devtools/python/python3-websockets_12.0.bb16
-rw-r--r--meta/recipes-devtools/python/python3-wheel_0.43.0.bb15
-rw-r--r--meta/recipes-devtools/python/python3-xmltodict/run-ptest3
-rw-r--r--meta/recipes-devtools/python/python3-xmltodict_0.13.0.bb31
-rw-r--r--meta/recipes-devtools/python/python3-yamllint_1.35.1.bb15
-rw-r--r--meta/recipes-devtools/python/python3-zipp_3.18.1.bb18
-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-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch47
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch35
-rw-r--r--meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch58
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch16
-rw-r--r--meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch72
-rw-r--r--meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch37
-rw-r--r--meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch33
-rw-r--r--meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch209
-rw-r--r--meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch42
-rw-r--r--meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch26
-rw-r--r--meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch67
-rw-r--r--meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch69
-rw-r--r--meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch29
-rw-r--r--meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch28
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch34
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch18
-rw-r--r--meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch30
-rw-r--r--meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch32
-rw-r--r--meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch37
-rw-r--r--meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch60
-rw-r--r--meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch31
-rw-r--r--meta/recipes-devtools/python/python3/cgi_py.patch4
-rw-r--r--meta/recipes-devtools/python/python3/create_manifest3.py47
-rw-r--r--meta/recipes-devtools/python/python3/crosspythonpath.patch31
-rw-r--r--meta/recipes-devtools/python/python3/deterministic_imports.patch40
-rw-r--r--meta/recipes-devtools/python/python3/get_module_deps3.py76
-rw-r--r--meta/recipes-devtools/python/python3/makerace.patch31
-rw-r--r--meta/recipes-devtools/python/python3/python-config.patch54
-rw-r--r--meta/recipes-devtools/python/python3/python3-manifest.json194
-rw-r--r--meta/recipes-devtools/python/python3/reformat_sysconfig.py2
-rw-r--r--meta/recipes-devtools/python/python3/run-ptest4
-rw-r--r--meta/recipes-devtools/python/python3_3.12.3.bb470
-rw-r--r--meta/recipes-devtools/python/python3_3.9.2.bb382
268 files changed, 6339 insertions, 2943 deletions
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
index da6eba254f..87a2e88a1a 100644
--- a/meta/recipes-devtools/python/python-cython.inc
+++ b/meta/recipes-devtools/python/python-cython.inc
@@ -1,40 +1,45 @@
1SUMMARY = "The Cython language"
2HOMEPAGE = "https://pypi.org/project/Cython/"
1DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \ 3DESCRIPTION = "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 \ 4It'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." 5and the messy, low-level world of C."
4SECTION = "devel/python" 6SECTION = "devel/python"
5LICENSE = "Apache-2.0" 7LICENSE = "Apache-2.0"
6LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" 8LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c"
7PYPI_PACKAGE = "Cython" 9PYPI_PACKAGE = "Cython"
8BBCLASSEXTEND = "native nativesdk" 10BBCLASSEXTEND = "native nativesdk"
9 11
10SRC_URI[sha256sum] = "df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406" 12SRC_URI[sha256sum] = "dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99"
11UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar" 13UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar"
12 14
13inherit pypi 15inherit pypi
14 16
15RDEPENDS_${PN}_class-target += "\ 17RDEPENDS:${PN}:class-target += "\
16 ${PYTHON_PN}-misc \ 18 python3-misc \
17 ${PYTHON_PN}-netserver \ 19 python3-netserver \
18 ${PYTHON_PN}-pkgutil \ 20 python3-pkgutil \
19 ${PYTHON_PN}-pyparsing \ 21 python3-pyparsing \
20 ${PYTHON_PN}-setuptools \ 22 python3-setuptools \
21 ${PYTHON_PN}-shell \ 23 python3-shell \
22 ${PYTHON_PN}-xml \ 24 python3-xml \
23" 25"
24 26
25RDEPENDS_${PN}_class-nativesdk += "\ 27RDEPENDS:${PN}:class-nativesdk += "\
26 nativesdk-${PYTHON_PN}-misc \ 28 nativesdk-python3-misc \
27 nativesdk-${PYTHON_PN}-netserver \ 29 nativesdk-python3-netserver \
28 nativesdk-${PYTHON_PN}-pkgutil \ 30 nativesdk-python3-pkgutil \
29 nativesdk-${PYTHON_PN}-pyparsing \ 31 nativesdk-python3-pyparsing \
30 nativesdk-${PYTHON_PN}-setuptools \ 32 nativesdk-python3-setuptools \
31 nativesdk-${PYTHON_PN}-shell \ 33 nativesdk-python3-shell \
32 nativesdk-${PYTHON_PN}-xml \ 34 nativesdk-python3-xml \
33" 35"
34 36
35do_install_append() { 37do_install:append() {
36 # Make sure we use /usr/bin/env python 38 # Make sure we use /usr/bin/env python
37 for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do 39 for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do
38 sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT 40 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
39 done 41 done
42
43 # remove build paths from generated sources
44 sed -i -e 's|${WORKDIR}||' ${S}/Cython/*.c ${S}/Cython/Compiler/*.c ${S}/Cython/Plex/*.c
40} 45}
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-pyasn1.inc b/meta/recipes-devtools/python/python-pyasn1.inc
new file mode 100644
index 0000000000..7b269f2940
--- /dev/null
+++ b/meta/recipes-devtools/python/python-pyasn1.inc
@@ -0,0 +1,31 @@
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] = "3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c"
7
8RDEPENDS:${PN}:class-target += " \
9 python3-codecs \
10 python3-logging \
11 python3-math \
12 python3-shell \
13"
14
15BBCLASSEXTEND = "native nativesdk"
16
17inherit ptest
18
19SRC_URI += " \
20 file://run-ptest \
21 "
22
23RDEPENDS:${PN}-ptest += " \
24 python3-pytest \
25 python3-unittest-automake-output \
26"
27
28do_install_ptest() {
29 install -d ${D}${PTEST_PATH}/tests
30 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
31}
diff --git a/meta/recipes-devtools/python/python-pycryptodome.inc b/meta/recipes-devtools/python/python-pycryptodome.inc
index 48481bcf9a..8d9b6d911e 100644
--- a/meta/recipes-devtools/python/python-pycryptodome.inc
+++ b/meta/recipes-devtools/python/python-pycryptodome.inc
@@ -3,22 +3,26 @@ 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} += " \ 10PYPI_PACKAGE_EXT = "tar.gz"
11 ${PYTHON_PN}-io \ 11
12 ${PYTHON_PN}-math \ 12RDEPENDS:${PN} += " \
13 python3-cffi \
14 python3-ctypes \
15 python3-io \
16 python3-math \
13" 17"
14 18
15RDEPENDS_${PN}-tests += " \ 19RDEPENDS:${PN}-tests += " \
16 ${PYTHON_PN}-unittest \ 20 python3-unittest \
17" 21"
18 22
19PACKAGES =+ "${PN}-tests" 23PACKAGES =+ "${PN}-tests"
20 24
21FILES_${PN}-tests = " \ 25FILES:${PN}-tests = " \
22 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \ 26 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \
23 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \ 27 ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \
24" 28"
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-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch b/meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
new file mode 100644
index 0000000000..8a646874e8
--- /dev/null
+++ b/meta/recipes-devtools/python/python-rfc3986-validator/0001-setup.py-move-pytest-runner-to-test_requirements.patch
@@ -0,0 +1,32 @@
1From 3531ff73631a0d59234eb4713e7b3a7f5ea57bbb Mon Sep 17 00:00:00 2001
2From: Nicola Lunghi <nicola.lunghi@jci.com>
3Date: Thu, 14 Nov 2019 12:17:51 +0000
4Subject: [PATCH] setup.py: move pytest-runner to test_requirements
5
6This fixes an issue with yocto build.
7pytest-runner is only needed when running tests.
8
9Upstream-Status: Pending
10---
11 setup.py | 4 ++--
12 1 file changed, 2 insertions(+), 2 deletions(-)
13
14diff --git a/setup.py b/setup.py
15index 53ebea7..ebb0de2 100644
16--- a/setup.py
17+++ b/setup.py
18@@ -10,9 +10,9 @@ with open('README.md') as readme_file:
19
20 requirements = []
21
22-setup_requirements = ['pytest-runner', ]
23+setup_requirements = []
24
25-test_requirements = ['pytest>=3', ]
26+test_requirements = ['pytest>=3', 'pytest-runner']
27
28 setup(
29 author="Nicolas Aimetti",
30--
312.20.1
32
diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc
index df97f845bc..6b1b4ba481 100644
--- a/meta/recipes-devtools/python/python-six.inc
+++ b/meta/recipes-devtools/python/python-six.inc
@@ -6,6 +6,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=43cfc9e4ac0e377acfb9b76f56b8415d"
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_0.7.16.bb b/meta/recipes-devtools/python/python3-alabaster_0.7.16.bb
new file mode 100644
index 0000000000..c61fce454f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-alabaster_0.7.16.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] = "75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"
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
index b63c4de0d9..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
+++ b/meta/recipes-devtools/python/python3-atomicwrites/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 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}}' 3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
index 7edd41030f..848f74d612 100644
--- a/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb
+++ b/meta/recipes-devtools/python/python3-atomicwrites_1.4.1.bb
@@ -1,10 +1,9 @@
1DESCRIPTION = "Powerful Python library for atomic file writes" 1SUMMARY = "Powerful Python library for atomic file writes"
2HOMEPAGE = "https://github.com/untitaker/python-atomicwrites" 2HOMEPAGE = "https://github.com/untitaker/python-atomicwrites"
3LICENSE = "MIT" 3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4"
5 5
6SRC_URI[md5sum] = "b5cc15c8f9f180a48665f9aacf91d817" 6SRC_URI[sha256sum] = "81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"
7SRC_URI[sha256sum] = "ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"
8 7
9inherit pypi setuptools3 ptest 8inherit pypi setuptools3 ptest
10 9
@@ -12,9 +11,10 @@ SRC_URI += " \
12 file://run-ptest \ 11 file://run-ptest \
13" 12"
14 13
15RDEPENDS_${PN}-ptest += " \ 14RDEPENDS:${PN}-ptest += " \
16 ${PYTHON_PN}-pytest \ 15 python3-pytest \
17 ${PYTHON_PN}-unixadmin \ 16 python3-unittest-automake-output \
17 python3-unixadmin \
18" 18"
19 19
20do_install_ptest() { 20do_install_ptest() {
@@ -22,4 +22,6 @@ do_install_ptest() {
22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ 22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
23} 23}
24 24
25RDEPENDS_${PN} = "${PYTHON_PN}-misc" 25RDEPENDS:${PN} = "python3-misc"
26
27BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-attrs/0001-conftest.py-disable-deadline.patch b/meta/recipes-devtools/python/python3-attrs/0001-conftest.py-disable-deadline.patch
new file mode 100644
index 0000000000..b1e6d99916
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs/0001-conftest.py-disable-deadline.patch
@@ -0,0 +1,45 @@
1From 41103f017f6a233ebb477dd1712fe82ea8f1c84c Mon Sep 17 00:00:00 2001
2From: Tim Orling <tim.orling@konsulko.com>
3Date: Thu, 29 Feb 2024 08:45:54 -0800
4Subject: [PATCH] conftest.py: disable deadline
5
6The deadline is by default 200ms, but this is intended to be useful to
7the developer and not necessarily recommended for heavily loaded CI
8systems. Avoid warnings by disabling the deadline completely.
9
10https://github.com/HypothesisWorks/hypothesis/issues/3713
11https://hypothesis.readthedocs.io/en/latest/settings.html#hypothesis.settings.deadline
12https://lists.openembedded.org/g/openembedded-core/topic/104640034#196437
13
14Fixes:
15"""
16Unreliable test timings! On an initial run, this test took 268.29ms,
17which exceeded the deadline of 200.00ms, but on a subsequent run it
18took 2.63 ms, which did not. If you expect this sort of variability in
19your test timings, consider turning deadlines off for this test by
20setting deadline=None.
21"""
22
23Upstream-Status: Submitted [https://github.com/python-attrs/attrs/pull/1252]
24
25Signed-off-by: Tim Orling <tim.orling@konsulko.com>
26---
27 conftest.py | 2 +-
28 1 file changed, 1 insertion(+), 1 deletion(-)
29
30diff --git a/conftest.py b/conftest.py
31index 144e5f3..fdead3d 100644
32--- a/conftest.py
33+++ b/conftest.py
34@@ -20,7 +20,7 @@ def _frozen(request):
35 def pytest_configure(config):
36 # HealthCheck.too_slow causes more trouble than good -- especially in CIs.
37 settings.register_profile(
38- "patience", settings(suppress_health_check=[HealthCheck.too_slow])
39+ "patience", settings(suppress_health_check=[HealthCheck.too_slow], deadline=None)
40 )
41 settings.load_profile("patience")
42
43--
442.34.1
45
diff --git a/meta/recipes-devtools/python/python3-attrs/0001-test_funcs-skip-test_unknown-for-pytest-8.patch b/meta/recipes-devtools/python/python3-attrs/0001-test_funcs-skip-test_unknown-for-pytest-8.patch
new file mode 100644
index 0000000000..bb69c0f157
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs/0001-test_funcs-skip-test_unknown-for-pytest-8.patch
@@ -0,0 +1,30 @@
1From cbe95e1aa6d95195dce13406a6f0522b2964babc Mon Sep 17 00:00:00 2001
2From: Tim Orling <tim.orling@konsulko.com>
3Date: Fri, 16 Feb 2024 07:17:19 -0800
4Subject: [PATCH] test_funcs: skip test_unknown for pytest 8
5
6https://github.com/python-attrs/attrs/issues/1233
7
8Upstream-Status: Inappropriate [Test case needs to be properly fixed upstream]
9
10Signed-off-by: Tim Orling <tim.orling@konsulko.com>
11---
12 tests/test_funcs.py | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/tests/test_funcs.py b/tests/test_funcs.py
16index 044aaab..0872c31 100644
17--- a/tests/test_funcs.py
18+++ b/tests/test_funcs.py
19@@ -593,7 +593,7 @@ class TestAssoc:
20 for k, v in change_dict.items():
21 assert getattr(changed, k) == v
22
23- @given(simple_classes())
24+ @pytest.mark.skip('Broken with pytest 8. See https://github.com/python-attrs/attrs/issues/1233')
25 def test_unknown(self, C):
26 """
27 Wanting to change an unknown attribute raises an
28--
292.34.1
30
diff --git a/meta/recipes-devtools/python/python3-attrs/run-ptest b/meta/recipes-devtools/python/python3-attrs/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
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_23.2.0.bb b/meta/recipes-devtools/python/python3-attrs_23.2.0.bb
new file mode 100644
index 0000000000..a638097988
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-attrs_23.2.0.bb
@@ -0,0 +1,39 @@
1SUMMARY = "Classes Without Boilerplate"
2HOMEPAGE = "http://www.attrs.org/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=5e55731824cf9205cfabeab9a0600887"
5
6SRC_URI[sha256sum] = "935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"
7
8inherit pypi ptest python_hatchling
9
10SRC_URI += " \
11 file://0001-test_funcs-skip-test_unknown-for-pytest-8.patch \
12 file://0001-conftest.py-disable-deadline.patch \
13 file://run-ptest \
14"
15
16DEPENDS += " \
17 python3-hatch-vcs-native \
18 python3-hatch-fancy-pypi-readme-native \
19"
20
21RDEPENDS:${PN}+= " \
22 python3-compression \
23 python3-ctypes \
24 python3-crypt \
25"
26
27RDEPENDS:${PN}-ptest += " \
28 python3-hypothesis \
29 python3-pytest \
30 python3-unittest-automake-output \
31"
32
33do_install_ptest() {
34 install -d ${D}${PTEST_PATH}/tests
35 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
36 install ${S}/conftest.py ${D}${PTEST_PATH}/
37}
38
39BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-babel_2.14.0.bb b/meta/recipes-devtools/python/python3-babel_2.14.0.bb
new file mode 100644
index 0000000000..cd40d4222b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-babel_2.14.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=0f97d9a63e91407b4c0d01efde91cfc0"
5
6SRC_URI[sha256sum] = "6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"
7
8PYPI_PACKAGE = "Babel"
9
10inherit pypi setuptools3
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..0e7479f0b5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt-crates.inc
@@ -0,0 +1,114 @@
1# Autogenerated with 'bitbake -c update_crates python3-bcrypt'
2
3# from src/_bcrypt/Cargo.lock
4SRC_URI += " \
5 crate://crates.io/autocfg/1.1.0 \
6 crate://crates.io/base64/0.21.5 \
7 crate://crates.io/bcrypt/0.15.0 \
8 crate://crates.io/bcrypt-pbkdf/0.10.0 \
9 crate://crates.io/bitflags/1.3.2 \
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.11 \
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.2.11 \
20 crate://crates.io/heck/0.4.1 \
21 crate://crates.io/indoc/2.0.4 \
22 crate://crates.io/inout/0.1.3 \
23 crate://crates.io/libc/0.2.151 \
24 crate://crates.io/lock_api/0.4.11 \
25 crate://crates.io/memoffset/0.9.0 \
26 crate://crates.io/once_cell/1.19.0 \
27 crate://crates.io/parking_lot/0.12.1 \
28 crate://crates.io/parking_lot_core/0.9.9 \
29 crate://crates.io/pbkdf2/0.12.2 \
30 crate://crates.io/portable-atomic/1.6.0 \
31 crate://crates.io/proc-macro2/1.0.70 \
32 crate://crates.io/pyo3/0.20.3 \
33 crate://crates.io/pyo3-build-config/0.20.3 \
34 crate://crates.io/pyo3-ffi/0.20.3 \
35 crate://crates.io/pyo3-macros/0.20.3 \
36 crate://crates.io/pyo3-macros-backend/0.20.3 \
37 crate://crates.io/quote/1.0.33 \
38 crate://crates.io/redox_syscall/0.4.1 \
39 crate://crates.io/scopeguard/1.2.0 \
40 crate://crates.io/sha2/0.10.8 \
41 crate://crates.io/smallvec/1.11.2 \
42 crate://crates.io/subtle/2.5.0 \
43 crate://crates.io/syn/2.0.41 \
44 crate://crates.io/target-lexicon/0.12.12 \
45 crate://crates.io/typenum/1.17.0 \
46 crate://crates.io/unicode-ident/1.0.12 \
47 crate://crates.io/unindent/0.2.3 \
48 crate://crates.io/version_check/0.9.4 \
49 crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
50 crate://crates.io/windows-targets/0.48.5 \
51 crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
52 crate://crates.io/windows_aarch64_msvc/0.48.5 \
53 crate://crates.io/windows_i686_gnu/0.48.5 \
54 crate://crates.io/windows_i686_msvc/0.48.5 \
55 crate://crates.io/windows_x86_64_gnu/0.48.5 \
56 crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
57 crate://crates.io/windows_x86_64_msvc/0.48.5 \
58 crate://crates.io/zeroize/1.7.0 \
59"
60
61SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
62SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
63SRC_URI[bcrypt-0.15.0.sha256sum] = "28d1c9c15093eb224f0baa400f38fcd713fc1391a6f1c389d886beef146d60a3"
64SRC_URI[bcrypt-pbkdf-0.10.0.sha256sum] = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2"
65SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
66SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
67SRC_URI[blowfish-0.9.1.sha256sum] = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7"
68SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
69SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
70SRC_URI[cipher-0.4.4.sha256sum] = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
71SRC_URI[cpufeatures-0.2.11.sha256sum] = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
72SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
73SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
74SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
75SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
76SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
77SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
78SRC_URI[inout-0.1.3.sha256sum] = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
79SRC_URI[libc-0.2.151.sha256sum] = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
80SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
81SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
82SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
83SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
84SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
85SRC_URI[pbkdf2-0.12.2.sha256sum] = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
86SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
87SRC_URI[proc-macro2-1.0.70.sha256sum] = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
88SRC_URI[pyo3-0.20.3.sha256sum] = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
89SRC_URI[pyo3-build-config-0.20.3.sha256sum] = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
90SRC_URI[pyo3-ffi-0.20.3.sha256sum] = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
91SRC_URI[pyo3-macros-0.20.3.sha256sum] = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
92SRC_URI[pyo3-macros-backend-0.20.3.sha256sum] = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
93SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
94SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
95SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
96SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
97SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
98SRC_URI[subtle-2.5.0.sha256sum] = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
99SRC_URI[syn-2.0.41.sha256sum] = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
100SRC_URI[target-lexicon-0.12.12.sha256sum] = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
101SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
102SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
103SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
104SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
105SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
106SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
107SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
108SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
109SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
110SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
111SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
112SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
113SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
114SRC_URI[zeroize-1.7.0.sha256sum] = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/meta/recipes-devtools/python/python3-bcrypt/0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch b/meta/recipes-devtools/python/python3-bcrypt/0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch
new file mode 100644
index 0000000000..3f671fcc98
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt/0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch
@@ -0,0 +1,111 @@
1From cfdd98b3215cc12e66190a9c7f0a32c052e3c2e7 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 26 Feb 2024 18:26:30 -0800
4Subject: [PATCH] Bump pyo3 from 0.20.0 to 0.20.3 in /src/_bcrypt (#746)
5
6It fixes build on hosts without 64bit atomics
7
8Upstream-Status: Backport [https://github.com/pyca/bcrypt/commit/c2ef9350798ab59b18e8a0e04a01389858578fe0]
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11 src/_bcrypt/Cargo.lock | 22 ++++++++++++++--------
12 src/_bcrypt/Cargo.toml | 2 +-
13 2 files changed, 15 insertions(+), 9 deletions(-)
14
15--- a/src/_bcrypt/Cargo.lock
16+++ b/src/_bcrypt/Cargo.lock
17@@ -233,6 +233,12 @@ dependencies = [
18 ]
19
20 [[package]]
21+name = "portable-atomic"
22+version = "1.6.0"
23+source = "registry+https://github.com/rust-lang/crates.io-index"
24+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
25+
26+[[package]]
27 name = "proc-macro2"
28 version = "1.0.70"
29 source = "registry+https://github.com/rust-lang/crates.io-index"
30@@ -243,15 +249,16 @@ dependencies = [
31
32 [[package]]
33 name = "pyo3"
34-version = "0.20.0"
35+version = "0.20.3"
36 source = "registry+https://github.com/rust-lang/crates.io-index"
37-checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b"
38+checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
39 dependencies = [
40 "cfg-if",
41 "indoc",
42 "libc",
43 "memoffset",
44 "parking_lot",
45+ "portable-atomic",
46 "pyo3-build-config",
47 "pyo3-ffi",
48 "pyo3-macros",
49@@ -260,9 +267,9 @@ dependencies = [
50
51 [[package]]
52 name = "pyo3-build-config"
53-version = "0.20.0"
54+version = "0.20.3"
55 source = "registry+https://github.com/rust-lang/crates.io-index"
56-checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5"
57+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
58 dependencies = [
59 "once_cell",
60 "target-lexicon",
61@@ -270,9 +277,9 @@ dependencies = [
62
63 [[package]]
64 name = "pyo3-ffi"
65-version = "0.20.0"
66+version = "0.20.3"
67 source = "registry+https://github.com/rust-lang/crates.io-index"
68-checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b"
69+checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
70 dependencies = [
71 "libc",
72 "pyo3-build-config",
73@@ -280,9 +287,9 @@ dependencies = [
74
75 [[package]]
76 name = "pyo3-macros"
77-version = "0.20.0"
78+version = "0.20.3"
79 source = "registry+https://github.com/rust-lang/crates.io-index"
80-checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b"
81+checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
82 dependencies = [
83 "proc-macro2",
84 "pyo3-macros-backend",
85@@ -292,12 +299,13 @@ dependencies = [
86
87 [[package]]
88 name = "pyo3-macros-backend"
89-version = "0.20.0"
90+version = "0.20.3"
91 source = "registry+https://github.com/rust-lang/crates.io-index"
92-checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424"
93+checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
94 dependencies = [
95 "heck",
96 "proc-macro2",
97+ "pyo3-build-config",
98 "quote",
99 "syn",
100 ]
101--- a/src/_bcrypt/Cargo.toml
102+++ b/src/_bcrypt/Cargo.toml
103@@ -6,7 +6,7 @@ edition = "2018"
104 publish = false
105
106 [dependencies]
107-pyo3 = { version = "0.20.0", features = ["abi3"] }
108+pyo3 = { version = "0.20.3", features = ["abi3"] }
109 bcrypt = "0.15"
110 bcrypt-pbkdf = "0.10.0"
111 base64 = "0.21.5"
diff --git a/meta/recipes-devtools/python/python3-bcrypt/run-ptest b/meta/recipes-devtools/python/python3-bcrypt/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-bcrypt_4.1.2.bb b/meta/recipes-devtools/python/python3-bcrypt_4.1.2.bb
new file mode 100644
index 0000000000..93fa645f33
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-bcrypt_4.1.2.bb
@@ -0,0 +1,37 @@
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:append = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', ' -fuse-ld=bfd', '', d)}"
8
9SRC_URI[sha256sum] = "33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258"
10
11inherit pypi python_setuptools3_rust ptest-cargo cargo-update-recipe-crates
12
13SRC_URI += " \
14 file://0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch \
15 file://run-ptest \
16"
17
18CARGO_SRC_DIR = "src/_bcrypt"
19
20require ${BPN}-crates.inc
21
22RDEPENDS:${PN}-ptest += " \
23 python3-pytest \
24 python3-unittest-automake-output \
25"
26
27do_install_ptest() {
28 install -d ${D}${PTEST_PATH}/tests
29 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
30}
31
32RDEPENDS:${PN}:class-target += "\
33 python3-cffi \
34 python3-ctypes \
35 python3-shell \
36 python3-six \
37"
diff --git a/meta/recipes-devtools/python/python3-beartype_0.18.5.bb b/meta/recipes-devtools/python/python3-beartype_0.18.5.bb
new file mode 100644
index 0000000000..04fbd3139f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-beartype_0.18.5.bb
@@ -0,0 +1,11 @@
1SUMMARY = "Unbearably fast runtime type checking in pure Python."
2HOMEPAGE = "https://beartype.readthedocs.io"
3
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=e71f94261c1b39896cacacfeaf60560e"
6
7SRC_URI[sha256sum] = "264ddc2f1da9ec94ff639141fbe33d22e12a9f75aa863b83b7046ffff1381927"
8
9inherit setuptools3 pypi
10
11BBCLASSEXTEND = "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..41fd3d960a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-booleanpy_4.0.bb
@@ -0,0 +1,13 @@
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"
10
11inherit pypi setuptools3
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-build_1.2.1.bb b/meta/recipes-devtools/python/python3-build_1.2.1.bb
new file mode 100644
index 0000000000..0156861201
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-build_1.2.1.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] = "526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d"
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/0001-setup.py-hard-code-version.patch b/meta/recipes-devtools/python/python3-calver/0001-setup.py-hard-code-version.patch
new file mode 100644
index 0000000000..43f8a78ef0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-calver/0001-setup.py-hard-code-version.patch
@@ -0,0 +1,32 @@
1From 390a233ed969f82b2ef209b23bfb523e785603f9 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Tue, 9 May 2023 10:19:41 -0400
4Subject: [PATCH] setup.py: hard-code version
5
6setup.py is pulling the build version from the current date rather than
7a release tag or other predictable method, causing reproducibility
8issues in builds. Patch this to make reproducible builds work while
9discussing this with upstream maintainer (or developing a patch that can
10make calver rely on a more standard pyproject.toml solution).
11
12Upstream-Status: Inappropriate (configuration)
13
14Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
15---
16 setup.py | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/setup.py b/setup.py
20index 73f6b10..2e27cf1 100644
21--- a/setup.py
22+++ b/setup.py
23@@ -42,5 +42,5 @@ setup(
24 "use_calver = calver.integration:version",
25 ],
26 },
27- version=calver_version(True),
28+ version=calver_version("2022.6.26"),
29 )
30--
312.40.0
32
diff --git a/meta/recipes-devtools/python/python3-calver/run-ptest b/meta/recipes-devtools/python/python3-calver/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-calver/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-calver_2022.6.26.bb b/meta/recipes-devtools/python/python3-calver_2022.6.26.bb
new file mode 100644
index 0000000000..71b5431400
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-calver_2022.6.26.bb
@@ -0,0 +1,28 @@
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 = " \
7 git://github.com/di/calver;branch=master;protocol=https \
8 file://run-ptest \
9 file://0001-setup.py-hard-code-version.patch \
10"
11SRCREV = "3268d8acf2c345f32a1c5f08ba25dc67f76cca81"
12
13inherit python_setuptools_build_meta ptest
14
15S = "${WORKDIR}/git"
16
17RDEPENDS:${PN}-ptest += " \
18 python3-pretend \
19 python3-pytest \
20 python3-unittest-automake-output \
21"
22
23do_install_ptest() {
24 install -d ${D}${PTEST_PATH}/tests
25 cp -rf ${S}/tests ${D}${PTEST_PATH}/
26}
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb b/meta/recipes-devtools/python/python3-certifi_2024.2.2.bb
new file mode 100644
index 0000000000..4e61b8d9d4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-certifi_2024.2.2.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] = "0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"
11
12inherit pypi setuptools3
13
14BBCLASSEXTEND = "native nativesdk"
15
16RDEPENDS:${PN} += "python3-io"
diff --git a/meta/recipes-devtools/python/python3-cffi_1.16.0.bb b/meta/recipes-devtools/python/python3-cffi_1.16.0.bb
new file mode 100644
index 0000000000..c5f6578ab2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cffi_1.16.0.bb
@@ -0,0 +1,18 @@
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] = "bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"
8
9inherit pypi setuptools3
10
11RDEPENDS:${PN}:class-target = " \
12 python3-ctypes \
13 python3-io \
14 python3-pycparser \
15 python3-shell \
16"
17
18BBCLASSEXTEND = "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..ed792b1c7e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-chardet_5.2.0.bb
@@ -0,0 +1,24 @@
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
8# setup.py of chardet needs this.
9DEPENDS += "python3-pytest-runner-native"
10
11inherit pypi python_setuptools_build_meta
12
13PACKAGES =+ "${PN}-cli"
14FILES:${PN}-cli += " \
15 ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \
16"
17
18RDEPENDS:${PN}-cli = "${PN} "
19
20RDEPENDS:${PN}:class-target += " \
21 python3-logging \
22"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-click/run-ptest b/meta/recipes-devtools/python/python3-click/run-ptest
new file mode 100644
index 0000000000..b63c4de0d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-click/run-ptest
@@ -0,0 +1,3 @@
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-click_8.1.7.bb b/meta/recipes-devtools/python/python3-click_8.1.7.bb
new file mode 100644
index 0000000000..7d91e1af83
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-click_8.1.7.bb
@@ -0,0 +1,39 @@
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.rst;md5=1fa98232fd645608937a0fdc82e999b8"
10
11SRC_URI[sha256sum] = "ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"
12
13inherit pypi setuptools3 ptest
14
15SRC_URI += "file://run-ptest"
16
17RDEPENDS:${PN}-ptest += " \
18 python3-pytest \
19 python3-terminal \
20 python3-unixadmin \
21"
22
23do_install_ptest() {
24 install -d ${D}${PTEST_PATH}/tests
25 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
26 cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
27 cp -rf ${S}/docs ${D}${PTEST_PATH}/
28}
29
30UPSTREAM_CHECK_REGEX = "click/(?P<pver>\d+(\.\d+)+)/"
31
32CLEANBROKEN = "1"
33
34RDEPENDS:${PN} += "\
35 python3-io \
36 python3-threading \
37 "
38
39BBCLASSEXTEND = "native nativesdk"
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..b26e22b70c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-crates.inc
@@ -0,0 +1,102 @@
1# Autogenerated with 'bitbake -c update_crates python3-cryptography'
2
3# from src/rust/Cargo.lock
4SRC_URI += " \
5 crate://crates.io/asn1/0.15.5 \
6 crate://crates.io/asn1_derive/0.15.5 \
7 crate://crates.io/autocfg/1.1.0 \
8 crate://crates.io/base64/0.21.7 \
9 crate://crates.io/bitflags/1.3.2 \
10 crate://crates.io/bitflags/2.4.2 \
11 crate://crates.io/cc/1.0.83 \
12 crate://crates.io/cfg-if/1.0.0 \
13 crate://crates.io/foreign-types/0.3.2 \
14 crate://crates.io/foreign-types-shared/0.1.1 \
15 crate://crates.io/heck/0.4.1 \
16 crate://crates.io/indoc/2.0.4 \
17 crate://crates.io/libc/0.2.152 \
18 crate://crates.io/lock_api/0.4.11 \
19 crate://crates.io/memoffset/0.9.0 \
20 crate://crates.io/once_cell/1.19.0 \
21 crate://crates.io/openssl/0.10.63 \
22 crate://crates.io/openssl-macros/0.1.1 \
23 crate://crates.io/openssl-sys/0.9.99 \
24 crate://crates.io/parking_lot/0.12.1 \
25 crate://crates.io/parking_lot_core/0.9.9 \
26 crate://crates.io/pem/3.0.3 \
27 crate://crates.io/pkg-config/0.3.29 \
28 crate://crates.io/portable-atomic/1.6.0 \
29 crate://crates.io/proc-macro2/1.0.78 \
30 crate://crates.io/pyo3/0.20.3 \
31 crate://crates.io/pyo3-build-config/0.20.3 \
32 crate://crates.io/pyo3-ffi/0.20.3 \
33 crate://crates.io/pyo3-macros/0.20.3 \
34 crate://crates.io/pyo3-macros-backend/0.20.3 \
35 crate://crates.io/quote/1.0.35 \
36 crate://crates.io/redox_syscall/0.4.1 \
37 crate://crates.io/scopeguard/1.2.0 \
38 crate://crates.io/self_cell/1.0.3 \
39 crate://crates.io/smallvec/1.13.1 \
40 crate://crates.io/syn/2.0.48 \
41 crate://crates.io/target-lexicon/0.12.13 \
42 crate://crates.io/unicode-ident/1.0.12 \
43 crate://crates.io/unindent/0.2.3 \
44 crate://crates.io/vcpkg/0.2.15 \
45 crate://crates.io/windows-targets/0.48.5 \
46 crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
47 crate://crates.io/windows_aarch64_msvc/0.48.5 \
48 crate://crates.io/windows_i686_gnu/0.48.5 \
49 crate://crates.io/windows_i686_msvc/0.48.5 \
50 crate://crates.io/windows_x86_64_gnu/0.48.5 \
51 crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
52 crate://crates.io/windows_x86_64_msvc/0.48.5 \
53"
54
55SRC_URI[asn1-0.15.5.sha256sum] = "ae3ecbce89a22627b5e8e6e11d69715617138290289e385cde773b1fe50befdb"
56SRC_URI[asn1_derive-0.15.5.sha256sum] = "861af988fac460ac69a09f41e6217a8fb9178797b76fcc9478444be6a59be19c"
57SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
58SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
59SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
60SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
61SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
62SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
63SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
64SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
65SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
66SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
67SRC_URI[libc-0.2.152.sha256sum] = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
68SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
69SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
70SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
71SRC_URI[openssl-0.10.63.sha256sum] = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
72SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
73SRC_URI[openssl-sys-0.9.99.sha256sum] = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
74SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
75SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
76SRC_URI[pem-3.0.3.sha256sum] = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
77SRC_URI[pkg-config-0.3.29.sha256sum] = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
78SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
79SRC_URI[proc-macro2-1.0.78.sha256sum] = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
80SRC_URI[pyo3-0.20.3.sha256sum] = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
81SRC_URI[pyo3-build-config-0.20.3.sha256sum] = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
82SRC_URI[pyo3-ffi-0.20.3.sha256sum] = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
83SRC_URI[pyo3-macros-0.20.3.sha256sum] = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
84SRC_URI[pyo3-macros-backend-0.20.3.sha256sum] = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
85SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
86SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
87SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
88SRC_URI[self_cell-1.0.3.sha256sum] = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
89SRC_URI[smallvec-1.13.1.sha256sum] = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
90SRC_URI[syn-2.0.48.sha256sum] = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
91SRC_URI[target-lexicon-0.12.13.sha256sum] = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
92SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
93SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
94SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
95SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
96SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
97SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
98SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
99SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
100SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
101SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
102SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
diff --git a/meta/recipes-devtools/python/python3-cryptography-vectors_42.0.5.bb b/meta/recipes-devtools/python/python3-cryptography-vectors_42.0.5.bb
new file mode 100644
index 0000000000..ee522af08e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography-vectors_42.0.5.bb
@@ -0,0 +1,31 @@
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
11
12SRC_URI[sha256sum] = "505cd5e3b0cb32da1526f07042b7fc38a4b6c356710cb73d2b5f76b037a38ed1"
13
14PYPI_PACKAGE = "cryptography_vectors"
15
16inherit pypi python_setuptools_build_meta
17
18DEPENDS += " \
19 python3-cryptography \
20"
21
22do_install:append () {
23 # Remove the sha256 checksum lines for pycache files
24 sed ${D}${PYTHON_SITEPACKAGES_DIR}/cryptography_vectors-${PV}.dist-info/RECORD -e '/__pycache__/d' -i
25}
26
27BBCLASSEXTEND = "native nativesdk"
28
29UPSTREAM_CHECK_REGEX = ""
30
31RECIPE_NO_UPDATE_REASON = "Must be updated in sync with python3-cryptography."
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..f9c8d1393d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography/0001-pyproject.toml-remove-benchmark-disable-option.patch
@@ -0,0 +1,43 @@
1From b7dd3ce1d75d1e6255e1aca82aa7f401d4246a75 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 c9a7979bd..dec4b7157 100644
30--- a/pyproject.toml
31+++ b/pyproject.toml
32@@ -92,7 +92,7 @@ rust-version = ">=1.63.0"
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",
41--
422.34.1
43
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-cryptography_42.0.5.bb b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
new file mode 100644
index 0000000000..732f925d92
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cryptography_42.0.5.bb
@@ -0,0 +1,67 @@
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
11SRC_URI[sha256sum] = "6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"
12
13SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
14 file://check-memfree.py \
15 file://run-ptest \
16 "
17
18require ${BPN}-crates.inc
19
20inherit pypi python_setuptools3_rust cargo-update-recipe-crates pkgconfig
21
22DEPENDS += " \
23 python3-cffi-native \
24"
25
26RDEPENDS:${PN} += " \
27 python3-cffi \
28"
29
30RDEPENDS:${PN}:append:class-target = " \
31 python3-numbers \
32 python3-threading \
33"
34
35RDEPENDS:${PN}-ptest += " \
36 python3-bcrypt \
37 python3-cryptography-vectors (= ${PV}) \
38 python3-hypothesis \
39 python3-iso8601 \
40 python3-mmap \
41 python3-pretend \
42 python3-psutil \
43 python3-pytest \
44 python3-unittest-automake-output \
45 python3-pytest-subtests \
46 python3-pytz \
47"
48
49inherit ptest
50
51do_install_ptest() {
52 install -D ${WORKDIR}/check-memfree.py ${D}${PTEST_PATH}/
53 install -d ${D}${PTEST_PATH}/tests
54 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
55 # remove test_x509.py as it needs benchmark and we don't
56 # want to introduce the benchmark dependency
57 rm -rf ${D}${PTEST_PATH}/tests/bench/test_x509.py
58 install -d ${D}${PTEST_PATH}/tests/hazmat
59 cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/
60 cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/
61}
62
63FILES:${PN}-dbg += " \
64 ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \
65"
66
67BBCLASSEXTEND = "native nativesdk"
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.0.10.bb b/meta/recipes-devtools/python/python3-cython_3.0.10.bb
new file mode 100644
index 0000000000..07638d7ad7
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-cython_3.0.10.bb
@@ -0,0 +1,37 @@
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.
11SETUPTOOLS_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
20PACKAGESPLITFUNCS =+ "cython_fix_sources"
21
22cython_fix_sources () {
23 for f in ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/FlowControl.c \
24 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/FusedNode.c \
25 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/Scanning.c \
26 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/Visitor.c \
27 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Plex/Actions.c \
28 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Plex/Scanners.c \
29 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Runtime/refnanny.c \
30 ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Tempita/_tempita.c \
31 ${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt; do
32 if [ -e $f ]; then
33 sed -i -e 's#${WORKDIR}/Cython-${PV}#${TARGET_DBGSRC_DIR}#g' $f
34 fi
35 done
36}
37
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.3.2.bb b/meta/recipes-devtools/python/python3-dbus_1.3.2.bb
new file mode 100644
index 0000000000..e0cf64c70e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbus_1.3.2.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.gz"
9
10SRC_URI[sha256sum] = "ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8"
11
12S = "${WORKDIR}/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.31.1.bb b/meta/recipes-devtools/python/python3-dbusmock_0.31.1.bb
new file mode 100644
index 0000000000..fc32c6bbb6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dbusmock_0.31.1.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] = "b23b8e1b51fe2a9b13e617fff6b60b3ed8e536c080cf3498019d223678d5ea49"
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.20.1.bb b/meta/recipes-devtools/python/python3-docutils_0.20.1.bb
new file mode 100644
index 0000000000..6038732cc4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-docutils_0.20.1.bb
@@ -0,0 +1,20 @@
1SUMMARY = "Docutils is a modular system for processing documentation into useful formats"
2HOMEPAGE = "http://docutils.sourceforge.net"
3SECTION = "devel/python"
4LICENSE = "PSF-2.0 & BSD-2-Clause & GPL-3.0-only"
5LIC_FILES_CHKSUM = "file://COPYING.txt;md5=08f5f8aa6a1db2500c08a2bb558e45af"
6
7SRC_URI[sha256sum] = "f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"
8
9inherit pypi setuptools3
10
11do_install:append() {
12 for f in rst2html rst2html4 rst2html5 rst2latex rst2man \
13 rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml \
14 rstpep2html
15 do
16 mv ${D}${bindir}/$f.py ${D}${bindir}/$f;
17 done
18}
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dtc/0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch b/meta/recipes-devtools/python/python3-dtc/0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch
new file mode 100644
index 0000000000..a2df482e3a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtc/0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch
@@ -0,0 +1,132 @@
1From 4d4703e0199fb3556c37694e4d951785abca22fd Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@gmail.com>
3Date: Wed, 19 Jan 2022 12:46:42 -0500
4Subject: [PATCH] Revert "libfdt: overlay: make overlay_get_target() public"
5
6This reverts commit 45f3d1a095dd3440578d5c6313eba555a791f3fb.
7
8Upstream-Status: Inappropriate [embedded specific]
9
10---
11 libfdt/fdt_overlay.c | 29 ++++++++++++++++++++++-------
12 libfdt/libfdt.h | 18 ------------------
13 libfdt/version.lds | 1 -
14 3 files changed, 22 insertions(+), 26 deletions(-)
15
16diff --git a/libfdt/fdt_overlay.c b/libfdt/fdt_overlay.c
17index 5c0c398..d217e79 100644
18--- a/libfdt/fdt_overlay.c
19+++ b/libfdt/fdt_overlay.c
20@@ -40,22 +40,37 @@ static uint32_t overlay_get_target_phandle(const void *fdto, int fragment)
21 return fdt32_to_cpu(*val);
22 }
23
24-int fdt_overlay_target_offset(const void *fdt, const void *fdto,
25- int fragment_offset, char const **pathp)
26+/**
27+ * overlay_get_target - retrieves the offset of a fragment's target
28+ * @fdt: Base device tree blob
29+ * @fdto: Device tree overlay blob
30+ * @fragment: node offset of the fragment in the overlay
31+ * @pathp: pointer which receives the path of the target (or NULL)
32+ *
33+ * overlay_get_target() retrieves the target offset in the base
34+ * device tree of a fragment, no matter how the actual targeting is
35+ * done (through a phandle or a path)
36+ *
37+ * returns:
38+ * the targeted node offset in the base device tree
39+ * Negative error code on error
40+ */
41+static int overlay_get_target(const void *fdt, const void *fdto,
42+ int fragment, char const **pathp)
43 {
44 uint32_t phandle;
45 const char *path = NULL;
46 int path_len = 0, ret;
47
48 /* Try first to do a phandle based lookup */
49- phandle = overlay_get_target_phandle(fdto, fragment_offset);
50+ phandle = overlay_get_target_phandle(fdto, fragment);
51 if (phandle == (uint32_t)-1)
52 return -FDT_ERR_BADPHANDLE;
53
54 /* no phandle, try path */
55 if (!phandle) {
56 /* And then a path based lookup */
57- path = fdt_getprop(fdto, fragment_offset, "target-path", &path_len);
58+ path = fdt_getprop(fdto, fragment, "target-path", &path_len);
59 if (path)
60 ret = fdt_path_offset(fdt, path);
61 else
62@@ -621,7 +636,7 @@ static int overlay_merge(void *fdt, void *fdto)
63 if (overlay < 0)
64 return overlay;
65
66- target = fdt_overlay_target_offset(fdt, fdto, fragment, NULL);
67+ target = overlay_get_target(fdt, fdto, fragment, NULL);
68 if (target < 0)
69 return target;
70
71@@ -764,7 +779,7 @@ static int overlay_symbol_update(void *fdt, void *fdto)
72 return -FDT_ERR_BADOVERLAY;
73
74 /* get the target of the fragment */
75- ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path);
76+ ret = overlay_get_target(fdt, fdto, fragment, &target_path);
77 if (ret < 0)
78 return ret;
79 target = ret;
80@@ -786,7 +801,7 @@ static int overlay_symbol_update(void *fdt, void *fdto)
81
82 if (!target_path) {
83 /* again in case setprop_placeholder changed it */
84- ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path);
85+ ret = overlay_get_target(fdt, fdto, fragment, &target_path);
86 if (ret < 0)
87 return ret;
88 target = ret;
89diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h
90index a7f432c..7f117e8 100644
91--- a/libfdt/libfdt.h
92+++ b/libfdt/libfdt.h
93@@ -2116,24 +2116,6 @@ int fdt_del_node(void *fdt, int nodeoffset);
94 */
95 int fdt_overlay_apply(void *fdt, void *fdto);
96
97-/**
98- * fdt_overlay_target_offset - retrieves the offset of a fragment's target
99- * @fdt: Base device tree blob
100- * @fdto: Device tree overlay blob
101- * @fragment_offset: node offset of the fragment in the overlay
102- * @pathp: pointer which receives the path of the target (or NULL)
103- *
104- * fdt_overlay_target_offset() retrieves the target offset in the base
105- * device tree of a fragment, no matter how the actual targeting is
106- * done (through a phandle or a path)
107- *
108- * returns:
109- * the targeted node offset in the base device tree
110- * Negative error code on error
111- */
112-int fdt_overlay_target_offset(const void *fdt, const void *fdto,
113- int fragment_offset, char const **pathp);
114-
115 /**********************************************************************/
116 /* Debugging / informational functions */
117 /**********************************************************************/
118diff --git a/libfdt/version.lds b/libfdt/version.lds
119index cbce5d4..7ab85f1 100644
120--- a/libfdt/version.lds
121+++ b/libfdt/version.lds
122@@ -77,7 +77,6 @@ LIBFDT_1.2 {
123 fdt_appendprop_addrrange;
124 fdt_setprop_inplace_namelen_partial;
125 fdt_create_with_flags;
126- fdt_overlay_target_offset;
127 local:
128 *;
129 };
130--
1312.19.1
132
diff --git a/meta/recipes-devtools/python/python3-dtc_1.7.0.bb b/meta/recipes-devtools/python/python3-dtc_1.7.0.bb
new file mode 100644
index 0000000000..85e48d4694
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtc_1.7.0.bb
@@ -0,0 +1,25 @@
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=master \
10 file://0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch \
11 "
12
13UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)"
14
15LIC_FILES_CHKSUM = "file://pylibfdt/libfdt.i;beginline=1;endline=6;md5=afda088c974174a29108c8d80b5dce90"
16
17SRCREV = "039a99414e778332d8f9c04cbd3072e1dcc62798"
18
19S = "${WORKDIR}/git"
20
21PYPA_WHEEL = "${S}/dist/libfdt-1.6.2*.whl"
22
23inherit setuptools3 pkgconfig
24
25BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-dtschema_2024.4.bb b/meta/recipes-devtools/python/python3-dtschema_2024.4.bb
new file mode 100644
index 0000000000..9583cd57b9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-dtschema_2024.4.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] = "18dd1d34b4a5e451291e5444e9ceb4a6febc605871cdaef22673b6f80aa4a131"
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.9.0.bb b/meta/recipes-devtools/python/python3-flit-core_3.9.0.bb
new file mode 100644
index 0000000000..b0bef4b6b6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-flit-core_3.9.0.bb
@@ -0,0 +1,37 @@
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] = "d75edf5eb324da20d53570a6a6f87f51e606eee8384925cd66a90611140844c7"
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
31PACKAGES =+ "${PN}-tests"
32
33FILES:${PN}-tests += "\
34 ${PYTHON_SITEPACKAGES_DIR}/flit_core/tests/* \
35"
36
37BBCLASSEXTEND = "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..45c988117b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-git_3.1.43.bb
@@ -0,0 +1,32 @@
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"
12
13inherit pypi python_setuptools_build_meta
14
15SRC_URI[sha256sum] = "35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"
16
17DEPENDS += " python3-gitdb"
18
19RDEPENDS:${PN} += " \
20 python3-datetime \
21 python3-gitdb \
22 python3-io \
23 python3-logging \
24 python3-math \
25 python3-netclient \
26 python3-stringold \
27 python3-unittest \
28 python3-unixadmin \
29 git \
30"
31
32BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-gitdb_4.0.11.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.11.bb
new file mode 100644
index 0000000000..25e1a2df7e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-gitdb_4.0.11.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] = "bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"
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_24.1.0.bb b/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_24.1.0.bb
new file mode 100644
index 0000000000..1e5c67f832
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatch-fancy-pypi-readme_24.1.0.bb
@@ -0,0 +1,14 @@
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"
9
10SRC_URI[sha256sum] = "44dd239f1a779b9dcf8ebc9401a611fd7f7e3e14578dcf22c265dfaf7c1514b8"
11
12BBCLASSEXTEND = "native nativesdk"
13
14UPSTREAM_CHECK_REGEX = "/hatch-fancy-pypi-readme/(?P<pver>(\d+[\.\-_]*)+)/"
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..2e49aba469
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatch-vcs_0.4.0.bb
@@ -0,0 +1,14 @@
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"
9
10SRC_URI[sha256sum] = "093810748fe01db0d451fabcf2c1ac2688caefd232d4ede967090b1c1b07d9f7"
11
12BBCLASSEXTEND = "native nativesdk"
13
14UPSTREAM_CHECK_REGEX = "/hatch-vcs/(?P<pver>(\d+[\.\-_]*)+)/"
diff --git a/meta/recipes-devtools/python/python3-hatchling_1.24.1.bb b/meta/recipes-devtools/python/python3-hatchling_1.24.1.bb
new file mode 100644
index 0000000000..fc8d953281
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hatchling_1.24.1.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] = "51f861891e98c4044eb455163a737e5d2328d7aa74890b182db2d80fee22a497"
12
13do_compile:prepend() {
14 export PYTHONPATH=src
15}
16
17BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-hypothesis/run-ptest b/meta/recipes-devtools/python/python3-hypothesis/run-ptest
new file mode 100644
index 0000000000..54f6e7930f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis/run-ptest
@@ -0,0 +1,10 @@
1#!/bin/sh
2
3# Upstream "fast" tests take about 5 minutes and currently do not run cleanly
4# (tests/cover and tests/pytest)
5# https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python/tests
6# https://github.com/HypothesisWorks/hypothesis/blob/master/hypothesis-python/scripts/basic-test.sh#L18
7#
8# Instead we run two test suites imported from examples/
9
10pytest --automake
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.100.1.bb b/meta/recipes-devtools/python/python3-hypothesis_6.100.1.bb
new file mode 100644
index 0000000000..af7facfe7e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-hypothesis_6.100.1.bb
@@ -0,0 +1,39 @@
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 ptest
9
10SRC_URI += " \
11 file://run-ptest \
12 file://test_binary_search.py \
13 file://test_rle.py \
14 "
15
16SRC_URI[sha256sum] = "ebff09d7fa4f1fb6a855a812baf17e578b4481b7b70ec6d96496210d1a4c6c35"
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 "
28
29RDEPENDS:${PN}-ptest += " \
30 python3-unittest-automake-output \
31 "
32
33do_install_ptest() {
34 install -d ${D}${PTEST_PATH}/examples
35 install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/
36 install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/
37}
38
39BBCLASSEXTEND = "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.7.bb b/meta/recipes-devtools/python/python3-idna_3.7.bb
new file mode 100644
index 0000000000..729aff1c46
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-idna_3.7.bb
@@ -0,0 +1,14 @@
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] = "028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"
7
8inherit pypi python_flit_core
9
10RDEPENDS:${PN}:class-target = "\
11 python3-codecs \
12"
13
14BBCLASSEXTEND = "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..4edac0a533
--- /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-importlib-metadata_7.1.0.bb b/meta/recipes-devtools/python/python3-importlib-metadata_7.1.0.bb
new file mode 100644
index 0000000000..fdb37cecef
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-importlib-metadata_7.1.0.bb
@@ -0,0 +1,20 @@
1SUMMARY = "Read metadata from Python packages"
2HOMEPAGE = "https://pypi.org/project/importlib-metadata/"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
5
6inherit pypi python_setuptools_build_meta
7
8PYPI_PACKAGE = "importlib_metadata"
9UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/"
10
11SRC_URI[sha256sum] = "b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"
12
13S = "${WORKDIR}/importlib_metadata-${PV}"
14
15DEPENDS += "python3-setuptools-scm-native python3-toml-native"
16RDEPENDS:${PN} += "python3-zipp python3-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.0.0.bb b/meta/recipes-devtools/python/python3-iniconfig_2.0.0.bb
new file mode 100644
index 0000000000..2abeec62f4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-iniconfig_2.0.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=a6bb0320b04a0a503f12f69fea479de9"
6
7SRC_URI[sha256sum] = "2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"
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.5.bb
index 47cd6598cc..c18949014b 100644
--- a/meta/recipes-devtools/python/python3-iniparse_0.4.bb
+++ b/meta/recipes-devtools/python/python3-iniparse_0.5.bb
@@ -1,17 +1,14 @@
1SUMMARY = "Accessing and Modifying INI files" 1SUMMARY = "Accessing and Modifying INI files"
2HOMEPAGE = "https://pypi.org/project/iniparse/" 2HOMEPAGE = "https://pypi.org/project/iniparse/"
3LICENSE = "MIT & PSF" 3LICENSE = "MIT & PSF-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \ 4LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \
5 file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54" 5 file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54"
6 6
7SRC_URI = "file://0001-Add-python-3-compatibility.patch " 7SRC_URI[sha256sum] = "932e5239d526e7acb504017bb707be67019ac428a6932368e6851691093aa842"
8 8
9SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6" 9inherit pypi setuptools3
10SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054"
11 10
12inherit pypi distutils3 11RDEPENDS:${PN} += "python3-core python3-six"
13
14RDEPENDS_${PN} += "python3-core python3-six"
15DEPENDS += "python3-six" 12DEPENDS += "python3-six"
16 13
17BBCLASSEXTEND = "native nativesdk" 14BBCLASSEXTEND = "native nativesdk"
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..9429705b1f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-installer_0.7.0.bb
@@ -0,0 +1,34 @@
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
11SRC_URI[sha256sum] = "a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631"
12
13inherit pypi python_flit_core
14
15# Bootstrap the native build
16DEPENDS:remove:class-native = "python3-build-native python3-installer-native"
17
18RDEPENDS:${PN} += " \
19 python3-compile \
20 python3-compression \
21 python3-netclient \
22"
23
24INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
25
26do_compile:class-native () {
27 python_flit_core_do_manual_build
28}
29
30do_install:prepend:class-native() {
31 export PYTHONPATH="${S}/src"
32}
33
34BBCLASSEXTEND = "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-isodate_0.6.1.bb b/meta/recipes-devtools/python/python3-isodate_0.6.1.bb
new file mode 100644
index 0000000000..293fb08277
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-isodate_0.6.1.bb
@@ -0,0 +1,16 @@
1SUMMARY = "ISO 8601 date/time parser"
2HOMEPAGE = "https://github.com/gweis/isodate/"
3SECTION = "devel/python"
4LICENSE = "BSD-3-Clause"
5LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709"
6
7SRC_URI[sha256sum] = "48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9"
8
9inherit pypi setuptools3
10
11RDEPENDS:${PN} += " \
12 python3-numbers \
13 python3-six \
14"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jinja2/run-ptest b/meta/recipes-devtools/python/python3-jinja2/run-ptest
index 5cec711696..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-jinja2/run-ptest
+++ b/meta/recipes-devtools/python/python3-jinja2/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 2
3pytest 3pytest --automake
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.3.bb b/meta/recipes-devtools/python/python3-jinja2_3.1.3.bb
new file mode 100644
index 0000000000..636fb35811
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jinja2_3.1.3.bb
@@ -0,0 +1,48 @@
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.rst;md5=5dc88300786f1c214c1e9827a5229462"
6
7SRC_URI[sha256sum] = "ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"
8
9PYPI_PACKAGE = "Jinja2"
10
11CVE_PRODUCT = "jinja2 jinja"
12
13CLEANBROKEN = "1"
14
15inherit pypi setuptools3 ptest
16
17SRC_URI += " \
18 file://run-ptest \
19"
20
21do_install_ptest() {
22 install -d ${D}${PTEST_PATH}/tests
23 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
24}
25
26RDEPENDS:${PN}-ptest += " \
27 python3-pytest \
28 python3-unittest-automake-output \
29 python3-toml \
30 python3-unixadmin \
31"
32
33RDEPENDS:${PN} += " \
34 python3-asyncio \
35 python3-crypt \
36 python3-io \
37 python3-json \
38 python3-markupsafe \
39 python3-math \
40 python3-netclient \
41 python3-numbers\
42 python3-pickle \
43 python3-pprint \
44 python3-shell \
45 python3-threading \
46"
47
48BBCLASSEXTEND = "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_2.4.bb b/meta/recipes-devtools/python/python3-jsonpointer_2.4.bb
new file mode 100644
index 0000000000..062fa5243f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonpointer_2.4.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] = "585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"
9
10RDEPENDS:${PN} += " \
11 python3-json \
12"
13
14BBCLASSEXTEND = "native nativesdk"
15
16SRC_URI += " \
17 file://run-ptest \
18"
19
20RDEPENDS:${PN}-ptest += " \
21 python3-doctest \
22 python3-unittest \
23 python3-unittest-automake-output \
24"
25
26do_install_ptest() {
27 cp -f ${S}/tests.py ${D}${PTEST_PATH}/
28}
diff --git a/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb b/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
new file mode 100644
index 0000000000..4ee0dd9b12
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
@@ -0,0 +1,16 @@
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] = "48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"
9
10inherit pypi python_hatchling
11
12PYPI_PACKAGE = "jsonschema_specifications"
13
14DEPENDS += "python3-hatch-vcs-native"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-jsonschema_4.21.1.bb b/meta/recipes-devtools/python/python3-jsonschema_4.21.1.bb
new file mode 100644
index 0000000000..381148f4bb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-jsonschema_4.21.1.bb
@@ -0,0 +1,50 @@
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] = "85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"
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[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-importlib-metadata \
37 python3-io \
38 python3-json \
39 python3-jsonschema-specifications \
40 python3-netclient \
41 python3-numbers \
42 python3-pprint \
43 python3-pyrsistent \
44 python3-referencing \
45 python3-zipp \
46"
47
48RDEPENDS:${PN}-tests = "${PN}"
49
50BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb b/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
index 3a2d8733e9..4e318e52f4 100644
--- a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb
+++ b/meta/recipes-devtools/python/python3-libarchive-c_5.1.bb
@@ -9,13 +9,13 @@ PYPI_PACKAGE = "libarchive-c"
9 9
10inherit pypi setuptools3 10inherit pypi setuptools3
11 11
12SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532" 12SRC_URI[sha256sum] = "7bcce24ea6c0fa3bc62468476c6d2f6264156db2f04878a372027c10615a2721"
13SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60"
14 13
15RDEPENDS_${PN} += "\ 14RDEPENDS:${PN} += "\
16 libarchive \ 15 libarchive \
17 ${PYTHON_PN}-ctypes \ 16 python3-ctypes \
18 ${PYTHON_PN}-mmap \ 17 python3-mmap \
18 python3-logging \
19" 19"
20 20
21BBCLASSEXTEND = "native" 21BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-license-expression/run-ptest b/meta/recipes-devtools/python/python3-license-expression/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-license-expression/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-license-expression_30.3.0.bb b/meta/recipes-devtools/python/python3-license-expression_30.3.0.bb
new file mode 100644
index 0000000000..f36336b592
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-license-expression_30.3.0.bb
@@ -0,0 +1,38 @@
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] = "1295406f736b4f395ff069aec1cebfad53c0fcb3cf57df0f5ec58fc7b905aea5"
8
9inherit pypi ptest python_setuptools_build_meta
10
11DEPENDS += "python3-setuptools-scm-native"
12
13RDEPENDS:${PN} += "\
14 python3-booleanpy \
15 python3-core \
16 python3-json \
17 python3-stringold \
18 python3-logging \
19"
20
21BBCLASSEXTEND = "native nativesdk"
22
23SRC_URI += " \
24 file://run-ptest \
25"
26
27RDEPENDS:${PN}-ptest += " \
28 python3-pytest \
29 python3-unittest-automake-output \
30"
31
32do_install_ptest() {
33 install -d ${D}${PTEST_PATH}/tests
34 install -d ${D}${PTEST_PATH}/src
35 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
36 cp -rf ${S}/src/* ${D}${PTEST_PATH}/src/
37 cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/
38}
diff --git a/meta/recipes-devtools/python/python3-lxml_5.2.1.bb b/meta/recipes-devtools/python/python3-lxml_5.2.1.bb
new file mode 100644
index 0000000000..44a10505f3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-lxml_5.2.1.bb
@@ -0,0 +1,42 @@
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] = "3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"
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
42CLEANBROKEN = "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.3.bb b/meta/recipes-devtools/python/python3-mako_1.3.3.bb
new file mode 100644
index 0000000000..7545cbef99
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-mako_1.3.3.bb
@@ -0,0 +1,20 @@
1SUMMARY = "Templating library for Python"
2HOMEPAGE = "http://www.makotemplates.org/"
3SECTION = "devel/python"
4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=d0995d6f7ba3f186a03118f244e88f57"
6
7PYPI_PACKAGE = "Mako"
8
9inherit pypi python_setuptools_build_meta
10
11SRC_URI[sha256sum] = "e16c01d9ab9c11f7290eef1cfefc093fb5a45ee4a3da09e2fec2e4d1bae54e73"
12
13RDEPENDS:${PN} = "python3-html \
14 python3-markupsafe \
15 python3-netclient \
16 python3-pygments \
17 python3-threading \
18"
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-markdown_3.6.bb b/meta/recipes-devtools/python/python3-markdown_3.6.bb
new file mode 100644
index 0000000000..7c64837395
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markdown_3.6.bb
@@ -0,0 +1,13 @@
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
8PYPI_PACKAGE = "Markdown"
9SRC_URI[sha256sum] = "ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${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
index 5cec711696..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-markupsafe/run-ptest
+++ b/meta/recipes-devtools/python/python3-markupsafe/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 2
3pytest 3pytest --automake
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_2.1.5.bb b/meta/recipes-devtools/python/python3-markupsafe_2.1.5.bb
new file mode 100644
index 0000000000..821332fe7c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-markupsafe_2.1.5.bb
@@ -0,0 +1,27 @@
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.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
5
6SRC_URI[sha256sum] = "d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"
7
8PYPI_PACKAGE = "MarkupSafe"
9inherit pypi python_setuptools_build_meta ptest
10
11RDEPENDS:${PN} += "python3-stringold"
12
13BBCLASSEXTEND = "native nativesdk"
14
15SRC_URI += " \
16 file://run-ptest \
17"
18
19RDEPENDS:${PN}-ptest += " \
20 python3-pytest \
21 python3-unittest-automake-output \
22"
23
24do_install_ptest() {
25 install -d ${D}${PTEST_PATH}/tests
26 cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/
27}
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..3cb614d52a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin-crates.inc
@@ -0,0 +1,618 @@
1# Autogenerated with 'bitbake -c update_crates python3-maturin'
2
3# from Cargo.lock
4SRC_URI += " \
5 crate://crates.io/adler/1.0.2 \
6 crate://crates.io/ahash/0.8.6 \
7 crate://crates.io/aho-corasick/1.1.2 \
8 crate://crates.io/allocator-api2/0.2.16 \
9 crate://crates.io/anstream/0.3.2 \
10 crate://crates.io/anstream/0.6.4 \
11 crate://crates.io/anstyle/1.0.2 \
12 crate://crates.io/anstyle-parse/0.2.1 \
13 crate://crates.io/anstyle-query/1.0.0 \
14 crate://crates.io/anstyle-wincon/1.0.2 \
15 crate://crates.io/anstyle-wincon/3.0.1 \
16 crate://crates.io/anyhow/1.0.75 \
17 crate://crates.io/autocfg/1.1.0 \
18 crate://crates.io/base64/0.13.1 \
19 crate://crates.io/base64/0.21.5 \
20 crate://crates.io/bitflags/1.3.2 \
21 crate://crates.io/bitflags/2.4.1 \
22 crate://crates.io/block-buffer/0.10.4 \
23 crate://crates.io/bstr/1.8.0 \
24 crate://crates.io/byteorder/1.5.0 \
25 crate://crates.io/bytes/1.5.0 \
26 crate://crates.io/bytesize/1.3.0 \
27 crate://crates.io/bzip2/0.4.4 \
28 crate://crates.io/bzip2-sys/0.1.11+1.0.8 \
29 crate://crates.io/cab/0.4.1 \
30 crate://crates.io/camino/1.1.6 \
31 crate://crates.io/cargo-config2/0.1.16 \
32 crate://crates.io/cargo-options/0.7.2 \
33 crate://crates.io/cargo-platform/0.1.5 \
34 crate://crates.io/cargo-xwin/0.16.2 \
35 crate://crates.io/cargo-zigbuild/0.18.0 \
36 crate://crates.io/cargo_metadata/0.18.1 \
37 crate://crates.io/cbindgen/0.26.0 \
38 crate://crates.io/cc/1.0.83 \
39 crate://crates.io/cfb/0.9.0 \
40 crate://crates.io/cfg-if/1.0.0 \
41 crate://crates.io/charset/0.1.3 \
42 crate://crates.io/chumsky/0.9.3 \
43 crate://crates.io/clap/4.3.24 \
44 crate://crates.io/clap_builder/4.3.24 \
45 crate://crates.io/clap_complete/4.3.2 \
46 crate://crates.io/clap_complete_command/0.5.1 \
47 crate://crates.io/clap_complete_fig/4.3.1 \
48 crate://crates.io/clap_complete_nushell/0.1.11 \
49 crate://crates.io/clap_derive/4.3.12 \
50 crate://crates.io/clap_lex/0.5.0 \
51 crate://crates.io/cli-table/0.4.7 \
52 crate://crates.io/colorchoice/1.0.0 \
53 crate://crates.io/configparser/3.0.3 \
54 crate://crates.io/console/0.15.7 \
55 crate://crates.io/content_inspector/0.2.4 \
56 crate://crates.io/core-foundation/0.9.3 \
57 crate://crates.io/core-foundation-sys/0.8.4 \
58 crate://crates.io/cpufeatures/0.2.11 \
59 crate://crates.io/crc32fast/1.3.2 \
60 crate://crates.io/crossbeam-channel/0.5.8 \
61 crate://crates.io/crossbeam-deque/0.8.3 \
62 crate://crates.io/crossbeam-epoch/0.9.15 \
63 crate://crates.io/crossbeam-utils/0.8.16 \
64 crate://crates.io/crypto-common/0.1.6 \
65 crate://crates.io/data-encoding/2.5.0 \
66 crate://crates.io/deranged/0.3.9 \
67 crate://crates.io/dialoguer/0.11.0 \
68 crate://crates.io/diff/0.1.13 \
69 crate://crates.io/digest/0.10.7 \
70 crate://crates.io/dirs/5.0.1 \
71 crate://crates.io/dirs-sys/0.4.1 \
72 crate://crates.io/dissimilar/1.0.7 \
73 crate://crates.io/dunce/1.0.4 \
74 crate://crates.io/either/1.9.0 \
75 crate://crates.io/encode_unicode/0.3.6 \
76 crate://crates.io/encoding_rs/0.8.33 \
77 crate://crates.io/equivalent/1.0.1 \
78 crate://crates.io/errno/0.3.8 \
79 crate://crates.io/expect-test/1.4.1 \
80 crate://crates.io/fastrand/2.0.1 \
81 crate://crates.io/fat-macho/0.4.7 \
82 crate://crates.io/filetime/0.2.22 \
83 crate://crates.io/flate2/1.0.28 \
84 crate://crates.io/fnv/1.0.7 \
85 crate://crates.io/foreign-types/0.3.2 \
86 crate://crates.io/foreign-types-shared/0.1.1 \
87 crate://crates.io/form_urlencoded/1.2.1 \
88 crate://crates.io/fs-err/2.11.0 \
89 crate://crates.io/generic-array/0.14.7 \
90 crate://crates.io/getrandom/0.2.11 \
91 crate://crates.io/glob/0.3.1 \
92 crate://crates.io/globset/0.4.14 \
93 crate://crates.io/goblin/0.7.1 \
94 crate://crates.io/hashbrown/0.12.3 \
95 crate://crates.io/hashbrown/0.14.3 \
96 crate://crates.io/heck/0.4.1 \
97 crate://crates.io/hermit-abi/0.3.3 \
98 crate://crates.io/home/0.5.5 \
99 crate://crates.io/humantime/2.1.0 \
100 crate://crates.io/humantime-serde/1.1.1 \
101 crate://crates.io/idna/0.5.0 \
102 crate://crates.io/ignore/0.4.20 \
103 crate://crates.io/indexmap/1.9.3 \
104 crate://crates.io/indexmap/2.1.0 \
105 crate://crates.io/indicatif/0.17.7 \
106 crate://crates.io/indoc/2.0.4 \
107 crate://crates.io/instant/0.1.12 \
108 crate://crates.io/io-lifetimes/1.0.11 \
109 crate://crates.io/is-terminal/0.4.9 \
110 crate://crates.io/itertools/0.11.0 \
111 crate://crates.io/itertools/0.12.0 \
112 crate://crates.io/itoa/1.0.9 \
113 crate://crates.io/keyring/2.0.5 \
114 crate://crates.io/lazy_static/1.4.0 \
115 crate://crates.io/lddtree/0.3.3 \
116 crate://crates.io/libc/0.2.150 \
117 crate://crates.io/libredox/0.0.1 \
118 crate://crates.io/linux-keyutils/0.2.3 \
119 crate://crates.io/linux-raw-sys/0.3.8 \
120 crate://crates.io/linux-raw-sys/0.4.11 \
121 crate://crates.io/lock_api/0.4.11 \
122 crate://crates.io/log/0.4.20 \
123 crate://crates.io/lzxd/0.1.4 \
124 crate://crates.io/mailparse/0.14.0 \
125 crate://crates.io/matchers/0.1.0 \
126 crate://crates.io/memchr/2.6.4 \
127 crate://crates.io/memoffset/0.9.0 \
128 crate://crates.io/mime/0.3.17 \
129 crate://crates.io/mime_guess/2.0.4 \
130 crate://crates.io/minijinja/1.0.10 \
131 crate://crates.io/minimal-lexical/0.2.1 \
132 crate://crates.io/miniz_oxide/0.7.1 \
133 crate://crates.io/msi/0.7.0 \
134 crate://crates.io/multipart/0.18.0 \
135 crate://crates.io/native-tls/0.2.11 \
136 crate://crates.io/nom/7.1.3 \
137 crate://crates.io/normalize-line-endings/0.3.0 \
138 crate://crates.io/normpath/1.1.1 \
139 crate://crates.io/nu-ansi-term/0.46.0 \
140 crate://crates.io/number_prefix/0.4.0 \
141 crate://crates.io/once_cell/1.18.0 \
142 crate://crates.io/openssl/0.10.60 \
143 crate://crates.io/openssl-macros/0.1.1 \
144 crate://crates.io/openssl-probe/0.1.5 \
145 crate://crates.io/openssl-sys/0.9.96 \
146 crate://crates.io/option-ext/0.2.0 \
147 crate://crates.io/os_pipe/1.1.4 \
148 crate://crates.io/overload/0.1.1 \
149 crate://crates.io/parking_lot/0.12.1 \
150 crate://crates.io/parking_lot_core/0.9.9 \
151 crate://crates.io/paste/1.0.14 \
152 crate://crates.io/path-slash/0.2.1 \
153 crate://crates.io/pep440_rs/0.3.12 \
154 crate://crates.io/pep508_rs/0.2.3 \
155 crate://crates.io/percent-encoding/2.3.1 \
156 crate://crates.io/pin-project-lite/0.2.13 \
157 crate://crates.io/pkg-config/0.3.27 \
158 crate://crates.io/plain/0.2.3 \
159 crate://crates.io/platform-info/2.0.2 \
160 crate://crates.io/portable-atomic/1.5.1 \
161 crate://crates.io/powerfmt/0.2.0 \
162 crate://crates.io/ppv-lite86/0.2.17 \
163 crate://crates.io/pretty_assertions/1.4.0 \
164 crate://crates.io/proc-macro2/1.0.70 \
165 crate://crates.io/psm/0.1.21 \
166 crate://crates.io/pyproject-toml/0.8.1 \
167 crate://crates.io/python-pkginfo/0.6.0 \
168 crate://crates.io/quote/1.0.33 \
169 crate://crates.io/quoted_printable/0.4.8 \
170 crate://crates.io/rand/0.8.5 \
171 crate://crates.io/rand_chacha/0.3.1 \
172 crate://crates.io/rand_core/0.6.4 \
173 crate://crates.io/rayon/1.8.0 \
174 crate://crates.io/rayon-core/1.12.0 \
175 crate://crates.io/redox_syscall/0.3.5 \
176 crate://crates.io/redox_syscall/0.4.1 \
177 crate://crates.io/redox_users/0.4.4 \
178 crate://crates.io/regex/1.10.2 \
179 crate://crates.io/regex-automata/0.1.10 \
180 crate://crates.io/regex-automata/0.4.3 \
181 crate://crates.io/regex-syntax/0.6.29 \
182 crate://crates.io/regex-syntax/0.8.2 \
183 crate://crates.io/rfc2047-decoder/0.2.2 \
184 crate://crates.io/ring/0.17.6 \
185 crate://crates.io/rustc_version/0.4.0 \
186 crate://crates.io/rustix/0.37.27 \
187 crate://crates.io/rustix/0.38.21 \
188 crate://crates.io/rustls/0.21.9 \
189 crate://crates.io/rustls-pemfile/2.0.0 \
190 crate://crates.io/rustls-pki-types/1.0.0 \
191 crate://crates.io/rustls-webpki/0.101.7 \
192 crate://crates.io/rustversion/1.0.14 \
193 crate://crates.io/ryu/1.0.15 \
194 crate://crates.io/same-file/1.0.6 \
195 crate://crates.io/schannel/0.1.22 \
196 crate://crates.io/scopeguard/1.2.0 \
197 crate://crates.io/scroll/0.11.0 \
198 crate://crates.io/scroll_derive/0.11.1 \
199 crate://crates.io/sct/0.7.1 \
200 crate://crates.io/security-framework/2.9.2 \
201 crate://crates.io/security-framework-sys/2.9.1 \
202 crate://crates.io/semver/1.0.20 \
203 crate://crates.io/serde/1.0.193 \
204 crate://crates.io/serde_derive/1.0.193 \
205 crate://crates.io/serde_json/1.0.108 \
206 crate://crates.io/serde_spanned/0.6.4 \
207 crate://crates.io/sha2/0.10.8 \
208 crate://crates.io/sharded-slab/0.1.7 \
209 crate://crates.io/shell-words/1.1.0 \
210 crate://crates.io/shlex/1.2.0 \
211 crate://crates.io/similar/2.3.0 \
212 crate://crates.io/smallvec/1.11.2 \
213 crate://crates.io/smawk/0.3.2 \
214 crate://crates.io/snapbox/0.4.14 \
215 crate://crates.io/snapbox-macros/0.3.6 \
216 crate://crates.io/socks/0.3.4 \
217 crate://crates.io/spin/0.9.8 \
218 crate://crates.io/stacker/0.1.15 \
219 crate://crates.io/static_assertions/1.1.0 \
220 crate://crates.io/strsim/0.10.0 \
221 crate://crates.io/syn/1.0.109 \
222 crate://crates.io/syn/2.0.39 \
223 crate://crates.io/tar/0.4.40 \
224 crate://crates.io/target-lexicon/0.12.12 \
225 crate://crates.io/tempfile/3.8.1 \
226 crate://crates.io/termcolor/1.4.0 \
227 crate://crates.io/terminal_size/0.2.6 \
228 crate://crates.io/textwrap/0.16.0 \
229 crate://crates.io/thiserror/1.0.50 \
230 crate://crates.io/thiserror-impl/1.0.50 \
231 crate://crates.io/thread_local/1.1.7 \
232 crate://crates.io/time/0.3.30 \
233 crate://crates.io/time-core/0.1.2 \
234 crate://crates.io/time-macros/0.2.15 \
235 crate://crates.io/tinyvec/1.6.0 \
236 crate://crates.io/tinyvec_macros/0.1.1 \
237 crate://crates.io/toml/0.5.11 \
238 crate://crates.io/toml/0.8.8 \
239 crate://crates.io/toml_datetime/0.6.5 \
240 crate://crates.io/toml_edit/0.20.7 \
241 crate://crates.io/toml_edit/0.21.0 \
242 crate://crates.io/tracing/0.1.40 \
243 crate://crates.io/tracing-attributes/0.1.27 \
244 crate://crates.io/tracing-core/0.1.32 \
245 crate://crates.io/tracing-log/0.2.0 \
246 crate://crates.io/tracing-serde/0.1.3 \
247 crate://crates.io/tracing-subscriber/0.3.18 \
248 crate://crates.io/trycmd/0.14.19 \
249 crate://crates.io/twox-hash/1.6.3 \
250 crate://crates.io/typenum/1.17.0 \
251 crate://crates.io/unicase/2.7.0 \
252 crate://crates.io/unicode-bidi/0.3.13 \
253 crate://crates.io/unicode-ident/1.0.12 \
254 crate://crates.io/unicode-linebreak/0.1.5 \
255 crate://crates.io/unicode-normalization/0.1.22 \
256 crate://crates.io/unicode-width/0.1.11 \
257 crate://crates.io/untrusted/0.9.0 \
258 crate://crates.io/ureq/2.9.1 \
259 crate://crates.io/url/2.5.0 \
260 crate://crates.io/utf8parse/0.2.1 \
261 crate://crates.io/uuid/1.6.1 \
262 crate://crates.io/valuable/0.1.0 \
263 crate://crates.io/vcpkg/0.2.15 \
264 crate://crates.io/version_check/0.9.4 \
265 crate://crates.io/versions/5.0.1 \
266 crate://crates.io/wait-timeout/0.2.0 \
267 crate://crates.io/walkdir/2.4.0 \
268 crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
269 crate://crates.io/webpki-roots/0.25.3 \
270 crate://crates.io/which/5.0.0 \
271 crate://crates.io/wild/2.2.0 \
272 crate://crates.io/winapi/0.3.9 \
273 crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
274 crate://crates.io/winapi-util/0.1.6 \
275 crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
276 crate://crates.io/windows-sys/0.45.0 \
277 crate://crates.io/windows-sys/0.48.0 \
278 crate://crates.io/windows-sys/0.52.0 \
279 crate://crates.io/windows-targets/0.42.2 \
280 crate://crates.io/windows-targets/0.48.5 \
281 crate://crates.io/windows-targets/0.52.0 \
282 crate://crates.io/windows_aarch64_gnullvm/0.42.2 \
283 crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
284 crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
285 crate://crates.io/windows_aarch64_msvc/0.42.2 \
286 crate://crates.io/windows_aarch64_msvc/0.48.5 \
287 crate://crates.io/windows_aarch64_msvc/0.52.0 \
288 crate://crates.io/windows_i686_gnu/0.42.2 \
289 crate://crates.io/windows_i686_gnu/0.48.5 \
290 crate://crates.io/windows_i686_gnu/0.52.0 \
291 crate://crates.io/windows_i686_msvc/0.42.2 \
292 crate://crates.io/windows_i686_msvc/0.48.5 \
293 crate://crates.io/windows_i686_msvc/0.52.0 \
294 crate://crates.io/windows_x86_64_gnu/0.42.2 \
295 crate://crates.io/windows_x86_64_gnu/0.48.5 \
296 crate://crates.io/windows_x86_64_gnu/0.52.0 \
297 crate://crates.io/windows_x86_64_gnullvm/0.42.2 \
298 crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
299 crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
300 crate://crates.io/windows_x86_64_msvc/0.42.2 \
301 crate://crates.io/windows_x86_64_msvc/0.48.5 \
302 crate://crates.io/windows_x86_64_msvc/0.52.0 \
303 crate://crates.io/winnow/0.5.19 \
304 crate://crates.io/xattr/1.0.1 \
305 crate://crates.io/xwin/0.5.0 \
306 crate://crates.io/yansi/0.5.1 \
307 crate://crates.io/zerocopy/0.7.28 \
308 crate://crates.io/zerocopy-derive/0.7.28 \
309 crate://crates.io/zeroize/1.7.0 \
310 crate://crates.io/zip/0.6.6 \
311"
312
313SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
314SRC_URI[ahash-0.8.6.sha256sum] = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
315SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
316SRC_URI[allocator-api2-0.2.16.sha256sum] = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
317SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
318SRC_URI[anstream-0.6.4.sha256sum] = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
319SRC_URI[anstyle-1.0.2.sha256sum] = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea"
320SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
321SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
322SRC_URI[anstyle-wincon-1.0.2.sha256sum] = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
323SRC_URI[anstyle-wincon-3.0.1.sha256sum] = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
324SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
325SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
326SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
327SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
328SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
329SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
330SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
331SRC_URI[bstr-1.8.0.sha256sum] = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
332SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
333SRC_URI[bytes-1.5.0.sha256sum] = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
334SRC_URI[bytesize-1.3.0.sha256sum] = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc"
335SRC_URI[bzip2-0.4.4.sha256sum] = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8"
336SRC_URI[bzip2-sys-0.1.11+1.0.8.sha256sum] = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
337SRC_URI[cab-0.4.1.sha256sum] = "ae6b4de23c7d39c0631fd3cc952d87951c86c75a13812d7247cb7a896e7b3551"
338SRC_URI[camino-1.1.6.sha256sum] = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
339SRC_URI[cargo-config2-0.1.16.sha256sum] = "7f387366785e82c7ec7ef5b845a7f61324fbf5d467d6a878469eac30c1c44b1b"
340SRC_URI[cargo-options-0.7.2.sha256sum] = "cad71bf996c8e5b9d28ef3472d7ee41f277edf4e38cd597f51ad0438d05d76ea"
341SRC_URI[cargo-platform-0.1.5.sha256sum] = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff"
342SRC_URI[cargo-xwin-0.16.2.sha256sum] = "02bb6bf59526935e47445f959a19c2168f151284dbf7e57f5577934334e9a61d"
343SRC_URI[cargo-zigbuild-0.18.0.sha256sum] = "edc9c2fe646a29983b5f7263bd789175f2aaad7ea42525affa40e2172be93286"
344SRC_URI[cargo_metadata-0.18.1.sha256sum] = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
345SRC_URI[cbindgen-0.26.0.sha256sum] = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49"
346SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
347SRC_URI[cfb-0.9.0.sha256sum] = "b390793e912300f1aa713429f7fd0c391024e6c18b988962558bc4f96a349b1f"
348SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
349SRC_URI[charset-0.1.3.sha256sum] = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46"
350SRC_URI[chumsky-0.9.3.sha256sum] = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9"
351SRC_URI[clap-4.3.24.sha256sum] = "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487"
352SRC_URI[clap_builder-4.3.24.sha256sum] = "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e"
353SRC_URI[clap_complete-4.3.2.sha256sum] = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce"
354SRC_URI[clap_complete_command-0.5.1.sha256sum] = "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d"
355SRC_URI[clap_complete_fig-4.3.1.sha256sum] = "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f"
356SRC_URI[clap_complete_nushell-0.1.11.sha256sum] = "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e"
357SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
358SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
359SRC_URI[cli-table-0.4.7.sha256sum] = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d"
360SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
361SRC_URI[configparser-3.0.3.sha256sum] = "e0e56e414a2a52ab2a104f85cd40933c2fbc278b83637facf646ecf451b49237"
362SRC_URI[console-0.15.7.sha256sum] = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8"
363SRC_URI[content_inspector-0.2.4.sha256sum] = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
364SRC_URI[core-foundation-0.9.3.sha256sum] = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
365SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
366SRC_URI[cpufeatures-0.2.11.sha256sum] = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
367SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
368SRC_URI[crossbeam-channel-0.5.8.sha256sum] = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
369SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
370SRC_URI[crossbeam-epoch-0.9.15.sha256sum] = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
371SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
372SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
373SRC_URI[data-encoding-2.5.0.sha256sum] = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
374SRC_URI[deranged-0.3.9.sha256sum] = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
375SRC_URI[dialoguer-0.11.0.sha256sum] = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
376SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
377SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
378SRC_URI[dirs-5.0.1.sha256sum] = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
379SRC_URI[dirs-sys-0.4.1.sha256sum] = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
380SRC_URI[dissimilar-1.0.7.sha256sum] = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632"
381SRC_URI[dunce-1.0.4.sha256sum] = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
382SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
383SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
384SRC_URI[encoding_rs-0.8.33.sha256sum] = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
385SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
386SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
387SRC_URI[expect-test-1.4.1.sha256sum] = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3"
388SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
389SRC_URI[fat-macho-0.4.7.sha256sum] = "63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b"
390SRC_URI[filetime-0.2.22.sha256sum] = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
391SRC_URI[flate2-1.0.28.sha256sum] = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
392SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
393SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
394SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
395SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
396SRC_URI[fs-err-2.11.0.sha256sum] = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41"
397SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
398SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
399SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
400SRC_URI[globset-0.4.14.sha256sum] = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
401SRC_URI[goblin-0.7.1.sha256sum] = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134"
402SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
403SRC_URI[hashbrown-0.14.3.sha256sum] = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
404SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
405SRC_URI[hermit-abi-0.3.3.sha256sum] = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
406SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
407SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
408SRC_URI[humantime-serde-1.1.1.sha256sum] = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c"
409SRC_URI[idna-0.5.0.sha256sum] = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
410SRC_URI[ignore-0.4.20.sha256sum] = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
411SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
412SRC_URI[indexmap-2.1.0.sha256sum] = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
413SRC_URI[indicatif-0.17.7.sha256sum] = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25"
414SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
415SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
416SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
417SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
418SRC_URI[itertools-0.11.0.sha256sum] = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
419SRC_URI[itertools-0.12.0.sha256sum] = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
420SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
421SRC_URI[keyring-2.0.5.sha256sum] = "9549a129bd08149e0a71b2d1ce2729780d47127991bfd0a78cc1df697ec72492"
422SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
423SRC_URI[lddtree-0.3.3.sha256sum] = "2f5bfec46830ad3a95199ae6804dfe9f51fdad43d7a95fbb6c185efa9824c295"
424SRC_URI[libc-0.2.150.sha256sum] = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
425SRC_URI[libredox-0.0.1.sha256sum] = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
426SRC_URI[linux-keyutils-0.2.3.sha256sum] = "3f27bb67f6dd1d0bb5ab582868e4f65052e58da6401188a08f0da09cf512b84b"
427SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
428SRC_URI[linux-raw-sys-0.4.11.sha256sum] = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
429SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
430SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
431SRC_URI[lzxd-0.1.4.sha256sum] = "784462f20dddd9dfdb45de963fa4ad4a288cb10a7889ac5d2c34fb6481c6b213"
432SRC_URI[mailparse-0.14.0.sha256sum] = "6b56570f5f8c0047260d1c8b5b331f62eb9c660b9dd4071a8c46f8c7d3f280aa"
433SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
434SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
435SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
436SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
437SRC_URI[mime_guess-2.0.4.sha256sum] = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
438SRC_URI[minijinja-1.0.10.sha256sum] = "208758577ef2c86cf5dd3e85730d161413ec3284e2d73b2ef65d9a24d9971bcb"
439SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
440SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
441SRC_URI[msi-0.7.0.sha256sum] = "226b2404f03d2cf47375b9715c8adfae4e388bb2377cff908e8a40f31e421514"
442SRC_URI[multipart-0.18.0.sha256sum] = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182"
443SRC_URI[native-tls-0.2.11.sha256sum] = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
444SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
445SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
446SRC_URI[normpath-1.1.1.sha256sum] = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5"
447SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
448SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
449SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
450SRC_URI[openssl-0.10.60.sha256sum] = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800"
451SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
452SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
453SRC_URI[openssl-sys-0.9.96.sha256sum] = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f"
454SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
455SRC_URI[os_pipe-1.1.4.sha256sum] = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177"
456SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
457SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
458SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
459SRC_URI[paste-1.0.14.sha256sum] = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
460SRC_URI[path-slash-0.2.1.sha256sum] = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42"
461SRC_URI[pep440_rs-0.3.12.sha256sum] = "887f66cc62717ea72caac4f1eb4e6f392224da3ffff3f40ec13ab427802746d6"
462SRC_URI[pep508_rs-0.2.3.sha256sum] = "e4516b53d9ea6112ebb38b4af08d5707d30b994fb7f98ff133c5dcf7ed8fa854"
463SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
464SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
465SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
466SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
467SRC_URI[platform-info-2.0.2.sha256sum] = "d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f"
468SRC_URI[portable-atomic-1.5.1.sha256sum] = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"
469SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
470SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
471SRC_URI[pretty_assertions-1.4.0.sha256sum] = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66"
472SRC_URI[proc-macro2-1.0.70.sha256sum] = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
473SRC_URI[psm-0.1.21.sha256sum] = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
474SRC_URI[pyproject-toml-0.8.1.sha256sum] = "46d4a5e69187f23a29f8aa0ea57491d104ba541bc55f76552c2a74962aa20e04"
475SRC_URI[python-pkginfo-0.6.0.sha256sum] = "037469c164f08c891bf6d69ca02f1d56210011451e229618669777df82124cfa"
476SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
477SRC_URI[quoted_printable-0.4.8.sha256sum] = "5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49"
478SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
479SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
480SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
481SRC_URI[rayon-1.8.0.sha256sum] = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
482SRC_URI[rayon-core-1.12.0.sha256sum] = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
483SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
484SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
485SRC_URI[redox_users-0.4.4.sha256sum] = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
486SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
487SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
488SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
489SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
490SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
491SRC_URI[rfc2047-decoder-0.2.2.sha256sum] = "61fc4b4e52897c3e30b12b7e9b04461215b647fbe66f6def60dd8edbce14ec2e"
492SRC_URI[ring-0.17.6.sha256sum] = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866"
493SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
494SRC_URI[rustix-0.37.27.sha256sum] = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
495SRC_URI[rustix-0.38.21.sha256sum] = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
496SRC_URI[rustls-0.21.9.sha256sum] = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9"
497SRC_URI[rustls-pemfile-2.0.0.sha256sum] = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4"
498SRC_URI[rustls-pki-types-1.0.0.sha256sum] = "eb0a1f9b9efec70d32e6d6aa3e58ebd88c3754ec98dfe9145c63cf54cc829b83"
499SRC_URI[rustls-webpki-0.101.7.sha256sum] = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
500SRC_URI[rustversion-1.0.14.sha256sum] = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
501SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
502SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
503SRC_URI[schannel-0.1.22.sha256sum] = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
504SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
505SRC_URI[scroll-0.11.0.sha256sum] = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da"
506SRC_URI[scroll_derive-0.11.1.sha256sum] = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
507SRC_URI[sct-0.7.1.sha256sum] = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
508SRC_URI[security-framework-2.9.2.sha256sum] = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
509SRC_URI[security-framework-sys-2.9.1.sha256sum] = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
510SRC_URI[semver-1.0.20.sha256sum] = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
511SRC_URI[serde-1.0.193.sha256sum] = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
512SRC_URI[serde_derive-1.0.193.sha256sum] = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
513SRC_URI[serde_json-1.0.108.sha256sum] = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
514SRC_URI[serde_spanned-0.6.4.sha256sum] = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
515SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
516SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
517SRC_URI[shell-words-1.1.0.sha256sum] = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
518SRC_URI[shlex-1.2.0.sha256sum] = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
519SRC_URI[similar-2.3.0.sha256sum] = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597"
520SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
521SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
522SRC_URI[snapbox-0.4.14.sha256sum] = "4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed"
523SRC_URI[snapbox-macros-0.3.6.sha256sum] = "ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e"
524SRC_URI[socks-0.3.4.sha256sum] = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
525SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
526SRC_URI[stacker-0.1.15.sha256sum] = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce"
527SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
528SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
529SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
530SRC_URI[syn-2.0.39.sha256sum] = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
531SRC_URI[tar-0.4.40.sha256sum] = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
532SRC_URI[target-lexicon-0.12.12.sha256sum] = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a"
533SRC_URI[tempfile-3.8.1.sha256sum] = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
534SRC_URI[termcolor-1.4.0.sha256sum] = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
535SRC_URI[terminal_size-0.2.6.sha256sum] = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
536SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
537SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
538SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
539SRC_URI[thread_local-1.1.7.sha256sum] = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
540SRC_URI[time-0.3.30.sha256sum] = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
541SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
542SRC_URI[time-macros-0.2.15.sha256sum] = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
543SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
544SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
545SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
546SRC_URI[toml-0.8.8.sha256sum] = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
547SRC_URI[toml_datetime-0.6.5.sha256sum] = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
548SRC_URI[toml_edit-0.20.7.sha256sum] = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
549SRC_URI[toml_edit-0.21.0.sha256sum] = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
550SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
551SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
552SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
553SRC_URI[tracing-log-0.2.0.sha256sum] = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
554SRC_URI[tracing-serde-0.1.3.sha256sum] = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
555SRC_URI[tracing-subscriber-0.3.18.sha256sum] = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
556SRC_URI[trycmd-0.14.19.sha256sum] = "ed009372a42fb103e6f8767b9222925485e03cca032b700d203e2c5b67bee4fb"
557SRC_URI[twox-hash-1.6.3.sha256sum] = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
558SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
559SRC_URI[unicase-2.7.0.sha256sum] = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
560SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
561SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
562SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
563SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
564SRC_URI[unicode-width-0.1.11.sha256sum] = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
565SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
566SRC_URI[ureq-2.9.1.sha256sum] = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97"
567SRC_URI[url-2.5.0.sha256sum] = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
568SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
569SRC_URI[uuid-1.6.1.sha256sum] = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
570SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
571SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
572SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
573SRC_URI[versions-5.0.1.sha256sum] = "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd"
574SRC_URI[wait-timeout-0.2.0.sha256sum] = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
575SRC_URI[walkdir-2.4.0.sha256sum] = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
576SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
577SRC_URI[webpki-roots-0.25.3.sha256sum] = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
578SRC_URI[which-5.0.0.sha256sum] = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14"
579SRC_URI[wild-2.2.0.sha256sum] = "10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67"
580SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
581SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
582SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
583SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
584SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
585SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
586SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
587SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
588SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
589SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
590SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
591SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
592SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
593SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
594SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
595SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
596SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
597SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
598SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
599SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
600SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
601SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
602SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
603SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
604SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
605SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
606SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
607SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
608SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
609SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
610SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
611SRC_URI[winnow-0.5.19.sha256sum] = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
612SRC_URI[xattr-1.0.1.sha256sum] = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985"
613SRC_URI[xwin-0.5.0.sha256sum] = "c43e0202f5457b48558096cb7b36d0e473f267551a89c82ed72d73b01dfd4007"
614SRC_URI[yansi-0.5.1.sha256sum] = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
615SRC_URI[zerocopy-0.7.28.sha256sum] = "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e"
616SRC_URI[zerocopy-derive-0.7.28.sha256sum] = "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b"
617SRC_URI[zeroize-1.7.0.sha256sum] = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
618SRC_URI[zip-0.6.6.sha256sum] = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
diff --git a/meta/recipes-devtools/python/python3-maturin/0001-Add-32-bit-RISC-V-support.patch b/meta/recipes-devtools/python/python3-maturin/0001-Add-32-bit-RISC-V-support.patch
new file mode 100644
index 0000000000..a0ef0c9e22
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin/0001-Add-32-bit-RISC-V-support.patch
@@ -0,0 +1,102 @@
1From a945706bd610c5400fc85a248d5e0c96ebd2e953 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 27 Feb 2024 10:38:49 -0800
4Subject: [PATCH] Add 32-bit RISC-V support
5
6Tested with qemuriscv32 and it builds fine with all tests passed on a
7qemu machine.
8
9Upstream-Status: Submitted [https://github.com/PyO3/maturin/pull/1969]
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 src/target.rs | 11 ++++++++++-
13 1 file changed, 10 insertions(+), 1 deletion(-)
14
15diff --git a/src/target.rs b/src/target.rs
16index fbb93531..33fa9273 100644
17--- a/src/target.rs
18+++ b/src/target.rs
19@@ -69,6 +69,7 @@ pub enum Arch {
20 X86_64,
21 S390X,
22 Wasm32,
23+ Riscv32,
24 Riscv64,
25 Mips64el,
26 Mips64,
27@@ -91,6 +92,7 @@ impl fmt::Display for Arch {
28 Arch::X86_64 => write!(f, "x86_64"),
29 Arch::S390X => write!(f, "s390x"),
30 Arch::Wasm32 => write!(f, "wasm32"),
31+ Arch::Riscv32 => write!(f, "riscv32"),
32 Arch::Riscv64 => write!(f, "riscv64"),
33 Arch::Mips64el => write!(f, "mips64el"),
34 Arch::Mips64 => write!(f, "mips64"),
35@@ -115,7 +117,7 @@ impl Arch {
36 Arch::Powerpc | Arch::Powerpc64Le | Arch::Powerpc64 => "powerpc",
37 Arch::X86 => "i386",
38 Arch::X86_64 => "amd64",
39- Arch::Riscv64 => "riscv",
40+ Arch::Riscv32 | Arch::Riscv64 => "riscv",
41 Arch::Mips64el | Arch::Mips64 | Arch::Mipsel | Arch::Mips => "mips",
42 // sparc64 is unsupported since FreeBSD 13.0
43 Arch::Sparc64 => "sparc64",
44@@ -139,6 +141,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> {
45 Arch::S390X,
46 Arch::X86,
47 Arch::X86_64,
48+ Arch::Riscv32,
49 Arch::Riscv64,
50 Arch::Mips64el,
51 Arch::Mips64,
52@@ -158,6 +161,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> {
53 Arch::Powerpc64Le,
54 Arch::X86,
55 Arch::X86_64,
56+ Arch::Riscv32,
57 Arch::Riscv64,
58 Arch::Mips64el,
59 Arch::Mipsel,
60@@ -171,6 +175,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> {
61 Arch::Powerpc,
62 Arch::Powerpc64,
63 Arch::Powerpc64Le,
64+ Arch::Riscv32,
65 Arch::Riscv64,
66 Arch::Sparc64,
67 ],
68@@ -255,6 +260,7 @@ impl Target {
69 Architecture::Powerpc64le => Arch::Powerpc64Le,
70 Architecture::S390x => Arch::S390X,
71 Architecture::Wasm32 => Arch::Wasm32,
72+ Architecture::Riscv32(_) => Arch::Riscv32,
73 Architecture::Riscv64(_) => Arch::Riscv64,
74 Architecture::Mips64(mips64_arch) => match mips64_arch {
75 Mips64Architecture::Mips64el => Arch::Mips64el,
76@@ -343,6 +349,7 @@ impl Target {
77 Arch::X86_64 => "x86_64",
78 Arch::S390X => "s390x",
79 Arch::Wasm32 => "wasm32",
80+ Arch::Riscv32 => "riscv32",
81 Arch::Riscv64 => "riscv64",
82 // It's kinda surprising that Python doesn't include the `el` suffix
83 Arch::Mips64el | Arch::Mips64 => "mips64",
84@@ -388,6 +395,7 @@ impl Target {
85 }
86 Arch::Armv6L
87 | Arch::Wasm32
88+ | Arch::Riscv32
89 | Arch::Riscv64
90 | Arch::Mips64el
91 | Arch::Mips64
92@@ -418,6 +426,7 @@ impl Target {
93 | Arch::Wasm32
94 | Arch::Mipsel
95 | Arch::Mips
96+ | Arch::Riscv32
97 | Arch::Powerpc => 32,
98 }
99 }
100--
1012.44.0
102
diff --git a/meta/recipes-devtools/python/python3-maturin_1.4.0.bb b/meta/recipes-devtools/python/python3-maturin_1.4.0.bb
new file mode 100644
index 0000000000..ed19ee647a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-maturin_1.4.0.bb
@@ -0,0 +1,43 @@
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 += "file://0001-Add-32-bit-RISC-V-support.patch"
9SRC_URI[sha256sum] = "ed12e1768094a7adeafc3a74ebdb8dc2201fa64c4e7e31f14cfc70378bf93790"
10
11S = "${WORKDIR}/maturin-${PV}"
12
13CFLAGS:append = " -fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home"
14
15DEPENDS += "\
16 python3-setuptools-rust-native \
17 python3-semantic-version-native \
18 python3-setuptools-rust \
19"
20
21require ${BPN}-crates.inc
22
23inherit pypi cargo-update-recipe-crates python_pyo3 python_setuptools_build_meta
24
25do_configure() {
26 python_pyo3_do_configure
27 cargo_common_do_configure
28 python_pep517_do_configure
29}
30
31RDEPENDS:${PN} += "\
32 cargo \
33 python3-json \
34 rust \
35"
36
37RRECOMMENDS:${PN} += "\
38 python3-ensurepip \
39 python3-pip \
40 python3-venv \
41"
42
43BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-meson-python_0.15.0.bb b/meta/recipes-devtools/python/python3-meson-python_0.15.0.bb
new file mode 100644
index 0000000000..ad3cfe17d9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-meson-python_0.15.0.bb
@@ -0,0 +1,27 @@
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"
14
15inherit pypi python_mesonpy
16SRC_URI[sha256sum] = "fddb73eecd49e89c1c41c87937cd89c2d0b65a1c63ba28238681d4bd9484d26f"
17
18DEPENDS:remove:class-native = "python3-meson-python-native"
19
20RDEPENDS:${PN} = " \
21 meson \
22 ninja \
23 patchelf \
24 python3-pyproject-metadata \
25"
26
27BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-more-itertools/run-ptest b/meta/recipes-devtools/python/python3-more-itertools/run-ptest
index 3385d68939..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-more-itertools/run-ptest
+++ b/meta/recipes-devtools/python/python3-more-itertools/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 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}}' 3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-more-itertools_10.2.0.bb b/meta/recipes-devtools/python/python3-more-itertools_10.2.0.bb
new file mode 100644
index 0000000000..e1e1f5e18f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-more-itertools_10.2.0.bb
@@ -0,0 +1,29 @@
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] = "8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1"
7
8inherit pypi python_flit_core ptest
9
10SRC_URI += " \
11 file://run-ptest \
12"
13
14RDEPENDS:${PN} += " \
15 python3-asyncio \
16 "
17
18RDEPENDS:${PN}-ptest += " \
19 python3-statistics \
20 python3-pytest \
21 python3-unittest-automake-output \
22 "
23
24do_install_ptest() {
25 install -d ${D}${PTEST_PATH}/tests
26 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
27}
28
29BBCLASSEXTEND = "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-ndg-httpsclient_0.5.1.bb b/meta/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
new file mode 100644
index 0000000000..68d8668a41
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ndg-httpsclient_0.5.1.bb
@@ -0,0 +1,31 @@
1SUMMARY = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL"
2HOMEPAGE = "https://github.com/cedadev/ndg_httpsclient/"
3LICENSE = "BSD-3-Clause"
4LIC_FILES_CHKSUM = "file://MANIFEST.in;md5=ce22c0cd986d2de3f7073cd6b5523ae0"
5
6SRC_URI[md5sum] = "b0fc8ea38f87d2c1ab1ed79a95c078f9"
7SRC_URI[sha256sum] = "d72faed0376ab039736c2ba12e30695e2788c4aa569c9c3e3d72131de2592210"
8
9inherit pypi setuptools3 update-alternatives
10
11PYPI_PACKAGE = "ndg_httpsclient"
12
13DEPENDS += " \
14 python3-pyopenssl \
15 python3-pyasn1 \
16"
17
18RDEPENDS:${PN} += " \
19 python3-datetime \
20 python3-logging \
21 python3-pyopenssl \
22 python3-pyasn1 \
23"
24
25BBCLASSEXTEND = "native nativesdk"
26
27UPSTREAM_CHECK_REGEX = ""
28
29ALTERNATIVE:${PN} = "ndg_httpclient"
30ALTERNATIVE_LINK_NAME[ndg_httpclient] = "${bindir}/ndg_httpclient"
31ALTERNATIVE_PRIORITY = "30"
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..bbe309c556
--- /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,70 @@
1From 46eea664cf89d0602e7ff16d587c37c045b125b7 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---
13 numpy/distutils/system_info.py | 42 +++++-----------------------------
14 1 file changed, 6 insertions(+), 36 deletions(-)
15
16diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py
17index feb28f6..a48d6d1 100644
18--- a/numpy/distutils/system_info.py
19+++ b/numpy/distutils/system_info.py
20@@ -327,44 +327,14 @@ def add_system_root(library_root):
21 add_system_root(os.path.join(conda_dir, 'Library'))
22
23 else:
24- default_lib_dirs = libpaths(['/usr/local/lib', '/opt/lib', '/usr/lib',
25- '/opt/local/lib', '/sw/lib'], platform_bits)
26 default_runtime_dirs = []
27- default_include_dirs = ['/usr/local/include',
28- '/opt/include',
29- # path of umfpack under macports
30- '/opt/local/include/ufsparse',
31- '/opt/local/include', '/sw/include',
32- '/usr/include/suitesparse']
33- default_src_dirs = ['.', '/usr/local/src', '/opt/src', '/sw/src']
34-
35- default_x11_lib_dirs = libpaths(['/usr/X11R6/lib', '/usr/X11/lib',
36- '/usr/lib'], platform_bits)
37- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include']
38-
39- if os.path.exists('/usr/lib/X11'):
40- globbed_x11_dir = glob('/usr/lib/*/libX11.so')
41- if globbed_x11_dir:
42- x11_so_dir = os.path.split(globbed_x11_dir[0])[0]
43- default_x11_lib_dirs.extend([x11_so_dir, '/usr/lib/X11'])
44- default_x11_include_dirs.extend(['/usr/lib/X11/include',
45- '/usr/include/X11'])
46-
47- with open(os.devnull, 'w') as tmp:
48- try:
49- p = subprocess.Popen(["gcc", "-print-multiarch"], stdout=subprocess.PIPE,
50- stderr=tmp)
51- except (OSError, DistutilsError):
52- # OSError if gcc is not installed, or SandboxViolation (DistutilsError
53- # subclass) if an old setuptools bug is triggered (see gh-3160).
54- pass
55- else:
56- triplet = str(p.communicate()[0].decode().strip())
57- if p.returncode == 0:
58- # gcc supports the "-print-multiarch" option
59- default_x11_lib_dirs += [os.path.join("/usr/lib/", triplet)]
60- default_lib_dirs += [os.path.join("/usr/lib/", triplet)]
61
62+ default_lib_dirs = libpaths(['/deadir/lib'], platform_bits)
63+ default_include_dirs = ['/deaddir/include']
64+ default_src_dirs = ['.', '/deaddir/src']
65+
66+ default_x11_lib_dirs = libpaths(['/deaddir/lib'], platform_bits)
67+ default_x11_include_dirs = ['/deaddir/include']
68
69 if os.path.join(sys.prefix, 'lib') not in default_lib_dirs:
70 default_lib_dirs.insert(0, os.path.join(sys.prefix, 'lib'))
diff --git a/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
new file mode 100644
index 0000000000..676bdbb3af
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/0001-numpy-core-Define-RISCV-32-support.patch
@@ -0,0 +1,50 @@
1From eb6d6579150bf4684603ce377c51e90ad3bb8109 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sun, 15 Nov 2020 15:32:39 -0800
4Subject: [PATCH] numpy/core: Define RISCV-32 support
5
6Helps compile on riscv32
7
8Upstream-Status: Submitted [https://github.com/numpy/numpy/pull/17780]
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11 numpy/core/include/numpy/npy_cpu.h | 3 +++
12 numpy/core/include/numpy/npy_endian.h | 1 +
13 2 files changed, 4 insertions(+)
14
15diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h
16index 78d229e..04be511 100644
17--- a/numpy/core/include/numpy/npy_cpu.h
18+++ b/numpy/core/include/numpy/npy_cpu.h
19@@ -19,6 +19,7 @@
20 * NPY_CPU_ARCEB
21 * NPY_CPU_RISCV64
22 * NPY_CPU_LOONGARCH
23+ * NPY_CPU_RISCV32
24 * NPY_CPU_WASM
25 */
26 #ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_CPU_H_
27@@ -104,6 +105,8 @@
28 #define NPY_CPU_ARCEB
29 #elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
30 #define NPY_CPU_RISCV64
31+#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 32
32+ #define NPY_CPU_RISCV32
33 #elif defined(__loongarch__)
34 #define NPY_CPU_LOONGARCH
35 #elif defined(__EMSCRIPTEN__)
36diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h
37index 5e58a7f..0926212 100644
38--- a/numpy/core/include/numpy/npy_endian.h
39+++ b/numpy/core/include/numpy/npy_endian.h
40@@ -49,6 +49,7 @@
41 || defined(NPY_CPU_PPC64LE) \
42 || defined(NPY_CPU_ARCEL) \
43 || defined(NPY_CPU_RISCV64) \
44+ || defined(NPY_CPU_RISCV32) \
45 || defined(NPY_CPU_LOONGARCH) \
46 || defined(NPY_CPU_WASM)
47 #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
48--
492.20.1
50
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..d952aed00c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/fix_reproducibility.patch
@@ -0,0 +1,33 @@
1This regex decides whether to use O3 opimisation on numpy or not.
2
3It includes "od", which happens to be a substring of "reproducible"
4but not "qemux86-world".
5
6The regex will run against all compiler options including things like:
7
8-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
9
10i.e. including build paths.
11
12Reduce the regex to something deterministic for our builds, assuming
13nobody builds in /home/debug:full/
14
15The autobuilder race depended upon whether qemux86-world or the
16reproducible target ran first and won the race to populate sstate.
17
18Upstream-Status: Inappropriate [upstream have dropped distutils and switched to meson]
19Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
20
21Index: numpy-1.26.0/numpy/distutils/ccompiler_opt.py
22===================================================================
23--- numpy-1.26.0.orig/numpy/distutils/ccompiler_opt.py
24+++ numpy-1.26.0/numpy/distutils/ccompiler_opt.py
25@@ -990,7 +990,7 @@ class _CCompiler:
26 ("cc_is_nocc", "", ""),
27 )
28 detect_args = (
29- ("cc_has_debug", ".*(O0|Od|ggdb|coverage|debug:full).*", ""),
30+ ("cc_has_debug", ".*debug:full.*", ""),
31 ("cc_has_native",
32 ".*(-march=native|-xHost|/QxHost|-mcpu=a64fx).*", ""),
33 # 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..9a1c72aeb1
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy/run-ptest
@@ -0,0 +1,5 @@
1#!/usr/bin/env python3
2
3import numpy
4numpy.test(label='full', verbose=2)
5
diff --git a/meta/recipes-devtools/python/python3-numpy_1.26.4.bb b/meta/recipes-devtools/python/python3-numpy_1.26.4.bb
new file mode 100644
index 0000000000..ccd08147af
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-numpy_1.26.4.bb
@@ -0,0 +1,64 @@
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=a752eb20459cf74a9d84ee4825e8317c"
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://0001-numpy-core-Define-RISCV-32-support.patch \
13 file://fix_reproducibility.patch \
14 file://run-ptest \
15 "
16SRC_URI[sha256sum] = "2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"
17
18GITHUB_BASE_URI = "https://github.com/numpy/numpy/releases"
19UPSTREAM_CHECK_REGEX = "releases/tag/v?(?P<pver>\d+(\.\d+)+)$"
20
21DEPENDS += "python3-cython-native"
22
23inherit ptest setuptools3 github-releases
24
25S = "${WORKDIR}/numpy-${PV}"
26
27CLEANBROKEN = "1"
28
29do_compile:prepend() {
30 export NPY_DISABLE_SVML=1
31}
32
33FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a"
34
35# install what is needed for numpy.test()
36RDEPENDS:${PN} = "python3-unittest \
37 python3-difflib \
38 python3-pprint \
39 python3-pickle \
40 python3-shell \
41 python3-doctest \
42 python3-datetime \
43 python3-misc \
44 python3-mmap \
45 python3-netclient \
46 python3-numbers \
47 python3-pydoc \
48 python3-pkgutil \
49 python3-email \
50 python3-compression \
51 python3-ctypes \
52 python3-threading \
53 python3-multiprocessing \
54 python3-json \
55"
56RDEPENDS:${PN}-ptest += "python3-pytest \
57 python3-hypothesis \
58 python3-sortedcontainers \
59 python3-resource \
60 python3-typing-extensions \
61 ldd \
62"
63
64BBCLASSEXTEND = "native nativesdk"
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_24.0.bb b/meta/recipes-devtools/python/python3-packaging_24.0.bb
new file mode 100644
index 0000000000..0942eeb15e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-packaging_24.0.bb
@@ -0,0 +1,18 @@
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] = "eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
7
8inherit pypi python_flit_core
9
10BBCLASSEXTEND = "native nativesdk"
11
12# Bootstrap the native build
13DEPENDS:remove:class-native = "python3-build-native"
14RDEPENDS:${PN} += "python3-profile"
15
16do_compile:class-native () {
17 python_flit_core_do_manual_build
18}
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-pathlib2_2.3.7.bb b/meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb
new file mode 100644
index 0000000000..d4de40893a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb
@@ -0,0 +1,12 @@
1SUMMARY = "Object-oriented filesystem paths"
2HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2dc08586cce3ab91bfa091b655c0e440"
5
6SRC_URI[sha256sum] = "7a4329d67beff9a712e1d3ae147e4e3e108b0bfd284ffdea03a635126c76b3c0"
7
8inherit pypi setuptools3
9
10RDEPENDS:${PN} += "python3-six python3-ctypes"
11
12BBCLASSEXTEND = "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..b61f673397
--- /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 setuptools3
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} += "python3-profile"
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.0.0.bb b/meta/recipes-devtools/python/python3-pbr_6.0.0.bb
new file mode 100644
index 0000000000..6c8171196a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pbr_6.0.0.bb
@@ -0,0 +1,4 @@
1inherit setuptools3
2require python-pbr.inc
3
4SRC_URI[sha256sum] = "d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"
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..99fa14ee03
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch
@@ -0,0 +1,36 @@
1From 2aa82aeb0783c5fa7777b32bfe1dd3da9ae8fc6e 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 cfa45d2..313f499 100644
17--- a/src/pip/_vendor/distlib/scripts.py
18+++ b/src/pip/_vendor/distlib/scripts.py
19@@ -144,6 +144,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 else:
28@@ -362,7 +364,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_24.0.bb b/meta/recipes-devtools/python/python3-pip_24.0.bb
new file mode 100644
index 0000000000..be4a29500a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pip_24.0.bb
@@ -0,0 +1,60 @@
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=3c2b7404369c587c3559afb604fce2f2 \
8 file://src/pip/_vendor/chardet/LICENSE;md5=4fbd65380cdd255951079008b364516c \
9 file://src/pip/_vendor/colorama/LICENSE.txt;md5=b4936429a56a652b84c5c01280dcaa26 \
10 file://src/pip/_vendor/distlib/LICENSE.txt;md5=f6a11430d5cd6e2cd3832ee94f22ddfc \
11 file://src/pip/_vendor/distro/LICENSE;md5=d2794c0df5b907fdace235a619d80314 \
12 file://src/pip/_vendor/idna/LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1 \
13 file://src/pip/_vendor/msgpack/COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751 \
14 file://src/pip/_vendor/packaging/LICENSE;md5=faadaedca9251a90b205c9167578ce91 \
15 file://src/pip/_vendor/packaging/LICENSE.APACHE;md5=2ee41112a44fe7014dce33e26468ba93 \
16 file://src/pip/_vendor/pkg_resources/LICENSE;md5=141643e11c48898150daa83802dbc65f \
17 file://src/pip/_vendor/platformdirs/LICENSE;md5=ea4f5a41454746a9ed111e3d8723d17a \
18 file://src/pip/_vendor/pygments/LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592 \
19 file://src/pip/_vendor/pyparsing/LICENSE;md5=657a566233888513e1f07ba13e2f47f1 \
20 file://src/pip/_vendor/pyproject_hooks/LICENSE;md5=aad69c93f605003e3342b174d9b0708c \
21 file://src/pip/_vendor/requests/LICENSE;md5=34400b68072d710fecd0a2940a0d1658 \
22 file://src/pip/_vendor/resolvelib/LICENSE;md5=78e1c0248051c32a38a7f820c30bd7a5 \
23 file://src/pip/_vendor/rich/LICENSE;md5=b5f0b94fbc94f5ad9ae4efcf8a778303 \
24 file://src/pip/_vendor/six.LICENSE;md5=43cfc9e4ac0e377acfb9b76f56b8415d \
25 file://src/pip/_vendor/tenacity/LICENSE;md5=175792518e4ac015ab6696d16c4f607e \
26 file://src/pip/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \
27 file://src/pip/_vendor/typing_extensions.LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2 \
28 file://src/pip/_vendor/urllib3/LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c \
29 file://src/pip/_vendor/webencodings/LICENSE;md5=81fb24cd7823cce23b69f721993dce4d \
30 "
31
32inherit pypi python_setuptools_build_meta
33
34SRC_URI += "file://no_shebang_mangling.patch"
35
36SRC_URI[sha256sum] = "ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2"
37
38do_install:append() {
39 rm -f ${D}/${bindir}/pip
40}
41
42RDEPENDS:${PN} = "\
43 python3-compile \
44 python3-io \
45 python3-html \
46 python3-json \
47 python3-multiprocessing \
48 python3-netserver \
49 python3-setuptools \
50 python3-unixadmin \
51 python3-xmlrpc \
52 python3-pickle \
53 python3-image \
54"
55
56BBCLASSEXTEND = "native nativesdk"
57
58# This used to use the bootstrap install which didn't compile. Until we bump the
59# tmpdir version we can't compile the native otherwise the sysroot unpack fails
60INSTALL_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
index b63c4de0d9..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-pluggy/run-ptest
+++ b/meta/recipes-devtools/python/python3-pluggy/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 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}}' 3pytest --automake
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.5.0.bb b/meta/recipes-devtools/python/python3-pluggy_1.5.0.bb
new file mode 100644
index 0000000000..9822cd59f3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pluggy_1.5.0.bb
@@ -0,0 +1,29 @@
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] = "2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"
7
8DEPENDS += "python3-setuptools-scm-native"
9RDEPENDS:${PN} += "python3-importlib-metadata \
10 python3-more-itertools \
11"
12
13inherit pypi ptest python_setuptools_build_meta
14
15SRC_URI += " \
16 file://run-ptest \
17"
18
19RDEPENDS:${PN}-ptest += " \
20 python3-pytest \
21 python3-unittest-automake-output \
22"
23
24do_install_ptest() {
25 install -d ${D}${PTEST_PATH}/testing
26 cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/
27}
28
29BBCLASSEXTEND = "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..a05bd6702d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ply_3.11.bb
@@ -0,0 +1,18 @@
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[md5sum] = "6465f602e656455affcd7c5734c638f8"
9SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"
10
11inherit pypi setuptools3
12
13RDEPENDS:${PN}:class-target += "\
14 python3-netclient \
15 python3-shell \
16"
17
18BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb b/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
new file mode 100644
index 0000000000..540fdffaed
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-poetry-core_1.9.0.bb
@@ -0,0 +1,42 @@
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] = "fa7a4001eae8aa572ee84f35feb510b321bd652e5cf9293249d62853e1f935a2"
19
20inherit python_poetry_core pypi
21
22PYPI_PACKAGE = "poetry_core"
23
24RDEPENDS:${PN}:append:class-target = "\
25 python3-compression \
26 python3-core \
27 python3-crypt \
28 python3-io \
29 python3-json \
30 python3-logging \
31 python3-netclient \
32 python3-pathlib2 \
33 python3-pprint \
34 python3-shell \
35"
36
37RDEPENDS:${PN} += "\
38 python3-pip \
39 python3-six \
40"
41
42BBCLASSEXTEND = "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..21d14a03b8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pretend_1.0.9.bb
@@ -0,0 +1,11 @@
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[md5sum] = "ad53883ede48aeac7ae584f0de0240e8"
7SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10"
8
9inherit pypi setuptools3
10
11BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-psutil_5.9.8.bb b/meta/recipes-devtools/python/python3-psutil_5.9.8.bb
new file mode 100644
index 0000000000..1a394eda33
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-psutil_5.9.8.bb
@@ -0,0 +1,41 @@
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] = "6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"
7
8inherit pypi setuptools3
9
10PACKAGES =+ "${PN}-tests"
11
12FILES:${PN}-tests += " \
13 ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \
14 ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \
15"
16
17
18RDEPENDS:${PN} += " \
19 python3-shell \
20 python3-threading \
21 python3-xml \
22 python3-netclient \
23 python3-ctypes \
24 python3-resource \
25"
26
27RDEPENDS:${PN}-tests += " \
28 ${PN} \
29 python3 \
30 coreutils \
31 procps \
32 binutils \
33 gcc \
34 gcc-symlinks \
35 libstdc++ \
36 libstdc++-dev \
37"
38
39INSANE_SKIP:${PN}-tests += "dev-deps"
40
41BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-py_1.10.0.bb b/meta/recipes-devtools/python/python3-py_1.11.0.bb
index 4e16ad1743..31d5a377a7 100644
--- a/meta/recipes-devtools/python/python3-py_1.10.0.bb
+++ b/meta/recipes-devtools/python/python3-py_1.11.0.bb
@@ -3,12 +3,12 @@ HOMEPAGE = "http://py.readthedocs.io/"
3LICENSE = "MIT" 3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9" 4LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9"
5 5
6SRC_URI[sha256sum] = "21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3" 6SRC_URI[sha256sum] = "51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"
7 7
8DEPENDS += "${PYTHON_PN}-setuptools-scm-native" 8DEPENDS += "python3-setuptools-scm-native"
9 9
10inherit pypi setuptools3 10inherit pypi python_setuptools_build_meta
11 11
12BBCLASSEXTEND = "native nativesdk" 12BBCLASSEXTEND = "native nativesdk"
13 13
14RDEPENDS_${PN} += "${PYTHON_PN}-netclient" 14RDEPENDS:${PN} += "python3-netclient"
diff --git a/meta/recipes-devtools/python/python3-pyasn1/run-ptest b/meta/recipes-devtools/python/python3-pyasn1/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyasn1/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-pyasn1_0.6.0.bb b/meta/recipes-devtools/python/python3-pyasn1_0.6.0.bb
new file mode 100644
index 0000000000..0519ba5edb
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyasn1_0.6.0.bb
@@ -0,0 +1,3 @@
1inherit pypi setuptools3
2require python-pyasn1.inc
3
diff --git a/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb b/meta/recipes-devtools/python/python3-pycairo_1.26.0.bb
index 8987b7a428..ea8b81be76 100644
--- a/meta/recipes-devtools/python/python3-pycairo_1.20.0.bb
+++ b/meta/recipes-devtools/python/python3-pycairo_1.26.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] = "2dddd0a874fbddb21e14acd9b955881ee1dc6e63b9c549a192d613a907f9cbeb"
17SRC_URI[sha256sum] = "5695a10cb7f9ae0d01f665b56602a845b0a8cb17e2123bfece10c2e58552468c"
18 17
19S = "${WORKDIR}/pycairo-${PV}" 18S = "${WORKDIR}/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..9a5abc42bd
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycparser_2.22.bb
@@ -0,0 +1,21 @@
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 python3-ply \
15 python3-pprint \
16 "
17
18RSUGGESTS:${PN}:class-target += "\
19 cpp \
20 cpp-symlinks \
21 "
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.20.0.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.20.0.bb
new file mode 100644
index 0000000000..d24fa58d43
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pycryptodome_3.20.0.bb
@@ -0,0 +1,5 @@
1require python-pycryptodome.inc
2inherit setuptools3
3
4SRC_URI[sha256sum] = "09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7"
5
diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.20.0.bb
index a6b3b3e935..2673ea8326 100644
--- a/meta/recipes-devtools/python/python3-pycryptodomex_3.10.1.bb
+++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.20.0.bb
@@ -1,9 +1,9 @@
1require python-pycryptodome.inc 1require python-pycryptodome.inc
2inherit setuptools3 2inherit setuptools3
3 3
4SRC_URI[sha256sum] = "541cd3e3e252fb19a7b48f420b798b53483302b7fe4d9954c947605d0a263d62" 4SRC_URI[sha256sum] = "7a710b79baddd65b806402e14766c721aee8fb83381769c27920f26476276c1e"
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.31.bb b/meta/recipes-devtools/python/python3-pyelftools_0.31.bb
new file mode 100644
index 0000000000..551fed6876
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyelftools_0.31.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] = "c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99"
8
9PYPI_PACKAGE = "pyelftools"
10
11inherit pypi setuptools3
12
13BBCLASSEXTEND = "native"
14
15RDEPENDS:${PN} += "python3-debugger python3-pprint"
diff --git a/meta/recipes-devtools/python/python3-pygments_2.17.2.bb b/meta/recipes-devtools/python/python3-pygments_2.17.2.bb
new file mode 100644
index 0000000000..8b98064b78
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygments_2.17.2.bb
@@ -0,0 +1,14 @@
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] = "da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"
9
10UPSTREAM_CHECK_PYPI_PACKAGE = "Pygments"
11inherit pypi
12
13BBCLASSEXTEND = "native nativesdk"
14
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.48.2.bb b/meta/recipes-devtools/python/python3-pygobject_3.48.2.bb
new file mode 100644
index 0000000000..3d83a8a1c2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pygobject_3.48.2.bb
@@ -0,0 +1,39 @@
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.xz"
22SRC_URI[sha256sum] = "0794aeb4a9be31a092ac20621b5f54ec280f9185943d328b105cdae6298ad1a7"
23
24S = "${WORKDIR}/${SRCNAME}-${PV}"
25
26PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}"
27
28RDEPENDS:${PN} += " \
29 python3-io \
30 python3-pkgutil \
31"
32
33# python3-pycairo is checked on configuration -> DEPENDS
34# we don't link against python3-pycairo -> RDEPENDS
35PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo"
36PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,"
37
38BBCLASSEXTEND = "native"
39PACKAGECONFIG:class-native = ""
diff --git a/meta/recipes-devtools/python/python3-pyopenssl_24.1.0.bb b/meta/recipes-devtools/python/python3-pyopenssl_24.1.0.bb
new file mode 100644
index 0000000000..e714ad838e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyopenssl_24.1.0.bb
@@ -0,0 +1,23 @@
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] = "cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"
9
10PYPI_PACKAGE = "pyOpenSSL"
11inherit pypi setuptools3
12
13PACKAGES =+ "${PN}-tests"
14FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test"
15
16RDEPENDS:${PN}:class-target = " \
17 python3-cryptography \
18 python3-six \
19 python3-threading \
20"
21RDEPENDS:${PN}-tests = "${PN}"
22
23BBCLASSEXTEND = "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.1.2.bb b/meta/recipes-devtools/python/python3-pyparsing_3.1.2.bb
new file mode 100644
index 0000000000..64210ade53
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyparsing_3.1.2.bb
@@ -0,0 +1,30 @@
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] = "a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"
14
15UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar"
16
17inherit pypi python_flit_core
18
19RDEPENDS:${PN} += " \
20 python3-datetime \
21 python3-debugger \
22 python3-html \
23 python3-json \
24 python3-netclient \
25 python3-pprint \
26 python3-stringold \
27 python3-threading \
28"
29
30BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb b/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb
new file mode 100644
index 0000000000..9d08e7acc4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb
@@ -0,0 +1,26 @@
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] = "f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5"
7
8inherit pypi python_flit_core
9
10PYPI_PACKAGE = "pyproject_hooks"
11
12BBCLASSEXTEND = "native nativesdk"
13
14# Bootstrap the native build
15DEPENDS:remove:class-native = "python3-build-native"
16
17RDEPENDS:${PN} += " \
18 python3-io \
19 python3-json \
20"
21
22do_compile:class-native () {
23 python_flit_core_do_manual_build
24}
25
26UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
diff --git a/meta/recipes-devtools/python/python3-pyproject-metadata_0.7.1.bb b/meta/recipes-devtools/python/python3-pyproject-metadata_0.7.1.bb
new file mode 100644
index 0000000000..8b9549f3d0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyproject-metadata_0.7.1.bb
@@ -0,0 +1,27 @@
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"
16
17inherit pypi python_setuptools_build_meta
18
19SRC_URI[sha256sum] = "0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67"
20
21RDEPENDS:${PN} += " \
22 python3-logging \
23 python3-packaging \
24 python3-profile \
25"
26
27BBCLASSEXTEND = "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..7f2c217f19
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pysocks_1.7.1.bb
@@ -0,0 +1,20 @@
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[md5sum] = "89b1a6865c61bae67a32417517612ee6"
7SRC_URI[sha256sum] = "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0"
8
9PYPI_PACKAGE = "PySocks"
10inherit pypi setuptools3
11
12RDEPENDS:${PN}:class-target += "\
13 python3-email \
14 python3-io \
15 python3-logging \
16 python3-netclient \
17 python3-shell \
18"
19
20BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest-runner_6.0.1.bb b/meta/recipes-devtools/python/python3-pytest-runner_6.0.1.bb
new file mode 100644
index 0000000000..cce9ce33e2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest-runner_6.0.1.bb
@@ -0,0 +1,16 @@
1SUMMARY = "Invoke py.test as distutils command with dependency resolution"
2HOMEPAGE = "https://pypi.org/project/pytest-runner/"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6"
5
6SRC_URI[sha256sum] = "70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b"
7
8inherit pypi python_setuptools_build_meta
9
10DEPENDS += " \
11 python3-setuptools-scm-native"
12
13RDEPENDS:${PN} = "python3-py python3-setuptools python3-debugger python3-json \
14 python3-io"
15
16BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytest-subtests_0.12.1.bb b/meta/recipes-devtools/python/python3-pytest-subtests_0.12.1.bb
new file mode 100644
index 0000000000..0590be705f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest-subtests_0.12.1.bb
@@ -0,0 +1,20 @@
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] = "d6605dcb88647e0b7c1889d027f8ef1c17d7a2c60927ebfdc09c7b0d8120476d"
11
12inherit pypi python_setuptools_build_meta
13
14DEPENDS += "python3-setuptools-scm-native"
15
16RDEPENDS:${PN} += " \
17 python3-pytest \
18"
19
20BBCLASSEXTEND = "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.1.1.bb b/meta/recipes-devtools/python/python3-pytest_8.1.1.bb
new file mode 100644
index 0000000000..b1cf23fbc4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytest_8.1.1.bb
@@ -0,0 +1,41 @@
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] = "ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"
9
10DEPENDS += "python3-setuptools-scm-native"
11
12inherit update-alternatives pypi python_setuptools_build_meta
13
14RDEPENDS:${PN} += " \
15 python3-atomicwrites \
16 python3-attrs \
17 python3-debugger \
18 python3-doctest \
19 python3-importlib-metadata \
20 python3-iniconfig \
21 python3-json \
22 python3-more-itertools \
23 python3-packaging \
24 python3-pathlib2 \
25 python3-pluggy \
26 python3-py \
27 python3-setuptools \
28 python3-six \
29 python3-tomllib \
30 python3-wcwidth \
31"
32
33ALTERNATIVE:${PN} += "py.test pytest"
34
35NATIVE_LINK_NAME[pytest] = "${bindir}/pytest"
36ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest"
37
38ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test"
39ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test"
40
41BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-pytz/run-ptest b/meta/recipes-devtools/python/python3-pytz/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytz/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-pytz_2024.1.bb b/meta/recipes-devtools/python/python3-pytz_2024.1.bb
new file mode 100644
index 0000000000..158e800fed
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pytz_2024.1.bb
@@ -0,0 +1,36 @@
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
7
8SRC_URI[sha256sum] = "2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"
9
10RDEPENDS:${PN}:class-target += "\
11 python3-datetime \
12 python3-doctest \
13 python3-io \
14 python3-pickle \
15 python3-pprint \
16 python3-threading \
17"
18
19BBCLASSEXTEND = "native nativesdk"
20
21SRC_URI += " \
22 file://run-ptest \
23"
24
25RDEPENDS:${PN}-ptest += " \
26 python3-pytest \
27 python3-unittest-automake-output \
28"
29
30do_install_ptest() {
31 install -d ${D}${PTEST_PATH}/pytz
32 install -d ${D}${PTEST_PATH}/pytz/tests
33 cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/
34 cp -f ${S}/README.rst ${D}${PTEST_PATH}/
35
36}
diff --git a/meta/recipes-devtools/python/python3-pyyaml/0001-Fix-builds-with-Cython-3.patch b/meta/recipes-devtools/python/python3-pyyaml/0001-Fix-builds-with-Cython-3.patch
new file mode 100644
index 0000000000..a87d588b6a
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyyaml/0001-Fix-builds-with-Cython-3.patch
@@ -0,0 +1,54 @@
1From 9cc23db56add79357b8f8257fe6fc0d6879d4579 Mon Sep 17 00:00:00 2001
2From: "Andrew J. Hesford" <ajh@sideband.org>
3Date: Fri, 21 Jul 2023 09:50:00 -0400
4Subject: [PATCH] Fix builds with Cython 3
5
6This is a *de minimis* fix for building with Cython 3. Recent Cython<3
7releases provided `Cython.Distutils.build_ext` as an alias to
8`Cython.Distutils.old_build_ext.old_build_ext`; Cython 3 drops this
9alias and instead uses a wholly new `Cython.Distutils.build_ext` that
10does not provide the `cython_sources` function used in `setup.py`.
11
12Explicitly importing `old_build_ext` preserves the existing behavior for
13recent Cython<3 and uses the correct behavior for Cython 3. Should the
14import fail (*e.g.*, because the version of Cython available predates
15the availability of `old_build_ext`), the import falls back to just
16`Cython.Distutils.build_ext`.
17
18Signed-off-by: Andrew J. Hesford <ajh@sideband.org>
19Upstream-Status: Denied [https://github.com/yaml/pyyaml/pull/731]
20Signed-off-by: Alexander Kanavin <alex@linutronix.de>
21---
22 pyproject.toml | 2 +-
23 setup.py | 6 +++++-
24 2 files changed, 6 insertions(+), 2 deletions(-)
25
26diff --git a/pyproject.toml b/pyproject.toml
27index 4bc04c0..2bf5ec8 100644
28--- a/pyproject.toml
29+++ b/pyproject.toml
30@@ -1,3 +1,3 @@
31 [build-system]
32-requires = ["setuptools", "wheel", "Cython<3.0"]
33+requires = ["setuptools", "wheel", "Cython"]
34 build-backend = "setuptools.build_meta"
35diff --git a/setup.py b/setup.py
36index 65b0ea0..4461580 100644
37--- a/setup.py
38+++ b/setup.py
39@@ -82,7 +82,11 @@ if 'sdist' in sys.argv or os.environ.get('PYYAML_FORCE_CYTHON') == '1':
40 with_cython = True
41 try:
42 from Cython.Distutils.extension import Extension as _Extension
43- from Cython.Distutils import build_ext as _build_ext
44+ try:
45+ from Cython.Distutils.old_build_ext import old_build_ext as _build_ext
46+ except ImportError:
47+ from Cython.Distutils import build_ext as _build_ext
48+
49 with_cython = True
50 except ImportError:
51 if with_cython:
52--
532.39.2
54
diff --git a/meta/recipes-devtools/python/python3-pyyaml/run-ptest b/meta/recipes-devtools/python/python3-pyyaml/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyyaml/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-pyyaml_6.0.1.bb b/meta/recipes-devtools/python/python3-pyyaml_6.0.1.bb
new file mode 100644
index 0000000000..3388312557
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-pyyaml_6.0.1.bb
@@ -0,0 +1,40 @@
1SUMMARY = "Python support for YAML"
2DEPENDS += "libyaml python3-cython-native"
3HOMEPAGE = "https://pyyaml.org/"
4
5LICENSE = "MIT"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079"
7
8PYPI_PACKAGE = "PyYAML"
9
10inherit pypi python_setuptools_build_meta
11
12SRC_URI += "file://0001-Fix-builds-with-Cython-3.patch"
13SRC_URI[sha256sum] = "bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"
14
15PACKAGECONFIG ?= "libyaml"
16PACKAGECONFIG[libyaml] = "--with-libyaml,--without-libyaml,libyaml"
17
18RDEPENDS:${PN} += "\
19 python3-datetime \
20 python3-netclient \
21"
22
23inherit ptest
24SRC_URI += "\
25 https://raw.githubusercontent.com/yaml/pyyaml/a98fd6088e81d7aca571220c966bbfe2ac43c335/tests/test_dump_load.py;name=test \
26 file://run-ptest \
27"
28SRC_URI[test.sha256sum] = "b6a8a2825d89fdc8aee226560f66b8196e872012a0ea7118cbef1a832359434a"
29
30RDEPENDS:${PN}-ptest += " \
31 python3-pytest \
32 python3-unittest-automake-output \
33"
34
35do_install_ptest() {
36 install -d ${D}${PTEST_PATH}/tests
37 cp -rf ${WORKDIR}/test_dump_load.py ${D}${PTEST_PATH}/tests/
38}
39
40BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-rdflib_7.0.0.bb b/meta/recipes-devtools/python/python3-rdflib_7.0.0.bb
new file mode 100644
index 0000000000..4057c1dbbc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rdflib_7.0.0.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=37d489c0cefe52a17e1d5007e196464a"
6
7SRC_URI[sha256sum] = "9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae"
8
9inherit pypi python_poetry_core
10
11RDEPENDS:${PN} += " \
12 python3-isodate \
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.34.0.bb b/meta/recipes-devtools/python/python3-referencing_0.34.0.bb
new file mode 100644
index 0000000000..6fbd10d9cf
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-referencing_0.34.0.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] = "5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"
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_2.31.0.bb b/meta/recipes-devtools/python/python3-requests_2.31.0.bb
new file mode 100644
index 0000000000..df48cd54c3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-requests_2.31.0.bb
@@ -0,0 +1,26 @@
1SUMMARY = "Python HTTP for Humans."
2HOMEPAGE = "http://python-requests.org"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
5
6SRC_URI[sha256sum] = "942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"
7
8inherit pypi setuptools3
9
10RDEPENDS:${PN} += " \
11 python3-email \
12 python3-json \
13 python3-ndg-httpsclient \
14 python3-netserver \
15 python3-pyasn1 \
16 python3-pyopenssl \
17 python3-pysocks \
18 python3-urllib3 \
19 python3-chardet \
20 python3-idna \
21 python3-compression \
22"
23
24CVE_PRODUCT = "requests"
25
26BBCLASSEXTEND = "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..e809c2280d
--- /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_REGEX = "/rfc3339-validator/(?P<pver>(\d+[\.\-_]*)+)/"
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-rfc3986-validator_0.1.1.bb b/meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
new file mode 100644
index 0000000000..e374979cb4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3986-validator_0.1.1.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Pure python rfc3986 validator"
2HOMEPAGE = "https://github.com/naimetti/rfc3986-validator"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6"
5
6FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3986-validator:"
7
8SRC_URI[md5sum] = "47f7657b790aaf6011a1ab3d86c6be95"
9SRC_URI[sha256sum] = "3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"
10
11PYPI_PACKAGE = "rfc3986_validator"
12UPSTREAM_CHECK_REGEX = "/rfc3986-validator/(?P<pver>(\d+[\.\-_]*)+)/"
13
14inherit pypi setuptools3
15
16SRC_URI += "\
17 file://0001-setup.py-move-pytest-runner-to-test_requirements.patch \
18"
19
20RDEPENDS:${PN} += "\
21 python3-core \
22"
23
24BBCLASSEXTEND = "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..316dc544de
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rfc3987_1.3.8.bb
@@ -0,0 +1,11 @@
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[md5sum] = "b6c4028acdc788a9ba697e1c1d6b896c"
7SRC_URI[sha256sum] = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"
8
9inherit pypi setuptools3
10
11BBCLASSEXTEND = "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..b9048bde51
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rpds-py-crates.inc
@@ -0,0 +1,80 @@
1# Autogenerated with 'bitbake -c update_crates python3-rpds-py'
2
3# from Cargo.lock
4SRC_URI += " \
5 crate://crates.io/archery/1.1.0 \
6 crate://crates.io/autocfg/1.1.0 \
7 crate://crates.io/bitflags/1.3.2 \
8 crate://crates.io/cfg-if/1.0.0 \
9 crate://crates.io/heck/0.4.1 \
10 crate://crates.io/indoc/2.0.4 \
11 crate://crates.io/libc/0.2.147 \
12 crate://crates.io/lock_api/0.4.10 \
13 crate://crates.io/memoffset/0.9.0 \
14 crate://crates.io/once_cell/1.18.0 \
15 crate://crates.io/parking_lot/0.12.1 \
16 crate://crates.io/parking_lot_core/0.9.8 \
17 crate://crates.io/proc-macro2/1.0.66 \
18 crate://crates.io/pyo3/0.20.2 \
19 crate://crates.io/pyo3-build-config/0.20.2 \
20 crate://crates.io/pyo3-ffi/0.20.2 \
21 crate://crates.io/pyo3-macros/0.20.2 \
22 crate://crates.io/pyo3-macros-backend/0.20.2 \
23 crate://crates.io/quote/1.0.31 \
24 crate://crates.io/redox_syscall/0.3.5 \
25 crate://crates.io/rpds/1.1.0 \
26 crate://crates.io/scopeguard/1.1.0 \
27 crate://crates.io/smallvec/1.11.0 \
28 crate://crates.io/static_assertions/1.1.0 \
29 crate://crates.io/syn/2.0.32 \
30 crate://crates.io/target-lexicon/0.12.9 \
31 crate://crates.io/triomphe/0.1.9 \
32 crate://crates.io/unicode-ident/1.0.11 \
33 crate://crates.io/unindent/0.2.3 \
34 crate://crates.io/windows-targets/0.48.1 \
35 crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
36 crate://crates.io/windows_aarch64_msvc/0.48.0 \
37 crate://crates.io/windows_i686_gnu/0.48.0 \
38 crate://crates.io/windows_i686_msvc/0.48.0 \
39 crate://crates.io/windows_x86_64_gnu/0.48.0 \
40 crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
41 crate://crates.io/windows_x86_64_msvc/0.48.0 \
42"
43
44SRC_URI[archery-1.1.0.sha256sum] = "487955f60962765486ce000015a3492ca45c34a2ebbf12bc0aa2b5110ca6e7d2"
45SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
46SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
47SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
48SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
49SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
50SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
51SRC_URI[lock_api-0.4.10.sha256sum] = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
52SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
53SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
54SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
55SRC_URI[parking_lot_core-0.9.8.sha256sum] = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
56SRC_URI[proc-macro2-1.0.66.sha256sum] = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
57SRC_URI[pyo3-0.20.2.sha256sum] = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0"
58SRC_URI[pyo3-build-config-0.20.2.sha256sum] = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be"
59SRC_URI[pyo3-ffi-0.20.2.sha256sum] = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1"
60SRC_URI[pyo3-macros-0.20.2.sha256sum] = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3"
61SRC_URI[pyo3-macros-backend-0.20.2.sha256sum] = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f"
62SRC_URI[quote-1.0.31.sha256sum] = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0"
63SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
64SRC_URI[rpds-1.1.0.sha256sum] = "a0e15515d3ce3313324d842629ea4905c25a13f81953eadb88f85516f59290a4"
65SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
66SRC_URI[smallvec-1.11.0.sha256sum] = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
67SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
68SRC_URI[syn-2.0.32.sha256sum] = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2"
69SRC_URI[target-lexicon-0.12.9.sha256sum] = "df8e77cb757a61f51b947ec4a7e3646efd825b73561db1c232a8ccb639e611a0"
70SRC_URI[triomphe-0.1.9.sha256sum] = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f"
71SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
72SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
73SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
74SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
75SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
76SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
77SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
78SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
79SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
80SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
diff --git a/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb b/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb
new file mode 100644
index 0000000000..cece2cb8cc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-rpds-py_0.18.0.bb
@@ -0,0 +1,15 @@
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] = "42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"
8
9require ${BPN}-crates.inc
10
11inherit pypi cargo-update-recipe-crates python_maturin
12
13PYPI_PACKAGE = "rpds_py"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.6.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.6.bb
new file mode 100644
index 0000000000..197bf91d6c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.18.6.bb
@@ -0,0 +1,23 @@
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=30cbbccd94bf3a2b0285ec35671a1938"
6
7PYPI_PACKAGE = "ruamel.yaml"
8
9inherit pypi setuptools3
10
11SRC_URI[sha256sum] = "8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"
12
13RDEPENDS:${PN} += "\
14 python3-shell \
15 python3-datetime \
16 python3-netclient \
17"
18
19do_install:prepend() {
20 export RUAMEL_NO_PIP_INSTALL_CHECK=1
21}
22
23BBCLASSEXTEND = "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/0001-Fix-man-page-installation.patch b/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch
new file mode 100644
index 0000000000..6dffe64809
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons/0001-Fix-man-page-installation.patch
@@ -0,0 +1,29 @@
1From 8b482e618047e94833545dce3a26924ef4f075db Mon Sep 17 00:00:00 2001
2From: Tim Orling <ticotimo@gmail.com>
3Date: Sat, 22 May 2021 11:20:46 -0700
4Subject: [PATCH] Fix man page installation
5
6Fixes:
7 error: can't copy 'build/doc/man/scons.1': doesn't exist or not a regular file
8
9Upstream-Status: Inappropriate [oe specific]
10
11Signed-off-by: Tim Orling <ticotimo@gmail.com>
12
13---
14 MANIFEST.in | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/MANIFEST.in b/MANIFEST.in
18index 04ec000..937f6f3 100644
19--- a/MANIFEST.in
20+++ b/MANIFEST.in
21@@ -4,7 +4,7 @@ recursive-include SCons/Tool/docbook *
22 include LICENSE
23
24 include scons.1 sconsign.1 scons-time.1
25-recursive-include build/doc/man *.1
26+#recursive-include build/doc/man *.1
27
28
29
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.7.0.bb b/meta/recipes-devtools/python/python3-scons_4.7.0.bb
new file mode 100644
index 0000000000..bba6c799d4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-scons_4.7.0.bb
@@ -0,0 +1,36 @@
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 += " file://0001-Fix-man-page-installation.patch"
8SRC_URI[sha256sum] = "d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3"
9
10PYPI_PACKAGE = "SCons"
11
12inherit pypi setuptools3
13
14RDEPENDS:${PN}:class-target = "\
15 python3-core \
16 python3-compression \
17 python3-fcntl \
18 python3-importlib-metadata \
19 python3-io \
20 python3-json \
21 python3-shell \
22 python3-pickle \
23 python3-pkg-resources \
24 python3-pprint \
25 "
26
27do_install:append() {
28 install -d ${D}${mandir}/man1
29 mv ${D}${prefix}/scons*.1 ${D}${mandir}/man1/
30}
31
32do_install:append:class-native() {
33 create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1'
34}
35
36BBCLASSEXTEND = "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..27e3f534b8
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-semantic-version_2.10.0.bb
@@ -0,0 +1,18 @@
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"
10inherit pypi setuptools3
11
12RDEPENDS:${PN} += " \
13 python3-pkg-resources \
14"
15
16BBCLASSEXTEND = "native nativesdk"
17
18UPSTREAM_CHECK_REGEX = "/semantic-version/(?P<pver>(\d+[\.\-_]*)+)/"
diff --git a/meta/recipes-devtools/python/python3-setuptools-rust_1.9.0.bb b/meta/recipes-devtools/python/python3-setuptools-rust_1.9.0.bb
new file mode 100644
index 0000000000..8eb2513d69
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-rust_1.9.0.bb
@@ -0,0 +1,35 @@
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 = "${PYPI_SRC_URI} \
13 https://files.pythonhosted.org/packages/67/08/e1aa2c582c62ac76e4d60f8e454bd3bba933781a06a88b4e38797445822a/setuptools-rust-${PV}.tar.gz \
14 "
15SRC_URI[sha256sum] = "704df0948f2e4cc60c2596ad6e840ea679f4f43e58ed4ad0c1857807240eab96"
16
17inherit cargo pypi python_setuptools_build_meta
18
19DEPENDS += "python3-setuptools-scm-native python3-wheel-native"
20# remove when https://github.com/PyO3/setuptools-rust/commit/7ced8d2a8f36e1b4fc41b5544636defb7bd44bdf
21# is included
22DEPENDS += "python3-semantic-version-native"
23
24RDEPENDS:${PN} += " \
25 python3-json \
26 python3-semantic-version \
27 python3-setuptools \
28 python3-setuptools-scm \
29 python3-shell \
30 python3-toml \
31 python3-typing-extensions \
32 python3-wheel \
33"
34
35BBCLASSEXTEND = "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.0.4.bb b/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.bb
new file mode 100644
index 0000000000..64b5050c3b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools-scm_8.0.4.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] = "b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"
10
11inherit pypi python_setuptools_build_meta
12
13UPSTREAM_CHECK_REGEX = "scm-(?P<pver>.*)\.tar"
14
15DEPENDS += "python3-tomli-native python3-packaging-native python3-typing-extensions-native"
16
17RDEPENDS:${PN} = "\
18 python3-packaging \
19 python3-pip \
20 python3-pyparsing \
21 python3-setuptools \
22 python3-tomli \
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..0f6c9d250d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch
@@ -0,0 +1,58 @@
1From d393759315b189a738e4b6a2ce31dc18dbbfae29 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 a40a723..14f35e7 100644
24--- a/setuptools/_distutils/sysconfig.py
25+++ b/setuptools/_distutils/sysconfig.py
26@@ -119,6 +119,8 @@ def get_python_inc(plat_specific=0, prefix=None):
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 try:
34 getter = globals()[f'_get_python_inc_{os.name}']
35@@ -238,7 +240,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
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@@ -253,7 +261,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
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/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch
index 680edbe704..e227c2889c 100644
--- a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch
+++ b/meta/recipes-devtools/python/python3-setuptools/0001-conditionally-do-not-fetch-code-by-easy_install.patch
@@ -1,4 +1,4 @@
1From 6380cc63f79abe8b8404c9be5ed5f213a70c8c6a Mon Sep 17 00:00:00 2001 1From 80fe63816eb3bfd1f5b6d354e1f2442805cff4e0 Mon Sep 17 00:00:00 2001
2From: Hongxu Jia <hongxu.jia@windriver.com> 2From: Hongxu Jia <hongxu.jia@windriver.com>
3Date: Tue, 17 Jul 2018 10:13:38 +0800 3Date: Tue, 17 Jul 2018 10:13:38 +0800
4Subject: [PATCH] conditionally do not fetch code by easy_install 4Subject: [PATCH] conditionally do not fetch code by easy_install
@@ -9,17 +9,16 @@ internet by easy_install.
9Upstream-Status: Inappropriate [oe specific] 9Upstream-Status: Inappropriate [oe specific]
10 10
11Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 11Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
12
13--- 12---
14 setuptools/command/easy_install.py | 5 +++++ 13 setuptools/command/easy_install.py | 5 +++++
15 1 file changed, 5 insertions(+) 14 1 file changed, 5 insertions(+)
16 15
17diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py 16diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
18index eeb21b5..eca1edd 100644 17index 858fb20..62bd853 100644
19--- a/setuptools/command/easy_install.py 18--- a/setuptools/command/easy_install.py
20+++ b/setuptools/command/easy_install.py 19+++ b/setuptools/command/easy_install.py
21@@ -636,6 +636,11 @@ class easy_install(Command): 20@@ -672,6 +672,11 @@ class easy_install(Command):
22 os.path.exists(tmpdir) and rmtree(tmpdir) 21 os.path.exists(tmpdir) and _rmtree(tmpdir)
23 22
24 def easy_install(self, spec, deps=False): 23 def easy_install(self, spec, deps=False):
25+ if os.environ.get('NO_FETCH_BUILD', None): 24+ if os.environ.get('NO_FETCH_BUILD', None):
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_69.5.1.bb b/meta/recipes-devtools/python/python3-setuptools_69.5.1.bb
new file mode 100644
index 0000000000..8261b09d16
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-setuptools_69.5.1.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
9SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch"
10
11SRC_URI += " \
12 file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch"
13
14SRC_URI[sha256sum] = "6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"
15
16DEPENDS += "python3"
17
18RDEPENDS:${PN} = "\
19 python3-2to3 \
20 python3-compile \
21 python3-compression \
22 python3-ctypes \
23 python3-email \
24 python3-html \
25 python3-json \
26 python3-netserver \
27 python3-numbers \
28 python3-pickle \
29 python3-pkg-resources \
30 python3-pkgutil \
31 python3-plistlib \
32 python3-shell \
33 python3-stringold \
34 python3-threading \
35 python3-unittest \
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.16.0.bb b/meta/recipes-devtools/python/python3-six_1.16.0.bb
new file mode 100644
index 0000000000..1ba48d4f47
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-six_1.16.0.bb
@@ -0,0 +1,4 @@
1inherit setuptools3
2require python-six.inc
3
4SRC_URI[sha256sum] = "1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"
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..aab16eaab4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants/0001-Change-hash-bang-to-python3.patch
@@ -0,0 +1,47 @@
1From e299bcb05405ff49450307bf3002c1fac14a866c 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
12---
13 setup.py | 2 +-
14 smartypants | 2 +-
15 smartypants.py | 2 +-
16 3 files changed, 3 insertions(+), 3 deletions(-)
17
18diff --git a/setup.py b/setup.py
19index ff1ea76..96a8b73 100755
20--- a/setup.py
21+++ b/setup.py
22@@ -1,4 +1,4 @@
23-#!/usr/bin/env python
24+#!/usr/bin/env python3
25 # Copyright (C) 2013, 2014 by Yu-Jie Lin
26 # For detail license information, See COPYING
27
28diff --git a/smartypants b/smartypants
29index 189adf5..0cca568 100755
30--- a/smartypants
31+++ b/smartypants
32@@ -1,4 +1,4 @@
33-#!/usr/bin/env python
34+#!/usr/bin/env python3
35 # Copyright (c) 2013, 2014 Yu-Jie Lin
36 # Licensed under the BSD License, for detailed license information, see COPYING
37
38diff --git a/smartypants.py b/smartypants.py
39index a70575b..e53bd87 100755
40--- a/smartypants.py
41+++ b/smartypants.py
42@@ -1,4 +1,4 @@
43-#!/usr/bin/python
44+#!/usr/bin/env python3
45 # -*- coding: utf-8 -*-
46 # Copyright (c) 2013, 2014, 2016 Yu-Jie Lin
47 # Copyright (c) 2004, 2005, 2007, 2013 Chad Miller
diff --git a/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb b/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb
new file mode 100644
index 0000000000..d089a89b95
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-smartypants_2.0.0.bb
@@ -0,0 +1,14 @@
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=977036977591ac666c728921ecc54c4f"
5
6inherit pypi setuptools3
7
8PYPI_PACKAGE = "smartypants"
9SRC_URI += "file://0001-Change-hash-bang-to-python3.patch"
10SRC_URI[sha256sum] = "7812353a32022699a1aa8cd5626e01c94a946dcaeedaee2d0b382bae4c4cbf36"
11
12BBCLASSEXTEND = "native nativesdk"
13
14UPSTREAM_CHECK_REGEX = "/${PYPI_PACKAGE}/(?P<pver>(?!2\.0\.1)(\d+[\.\-_]*)+)/"
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_2.2.0.bb b/meta/recipes-devtools/python/python3-snowballstemmer_2.2.0.bb
new file mode 100644
index 0000000000..ff120a3fc4
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-snowballstemmer_2.2.0.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] = "09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"
8
9PYPI_PACKAGE = "snowballstemmer"
10
11inherit pypi setuptools3
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.2.bb b/meta/recipes-devtools/python/python3-spdx-tools_0.8.2.bb
new file mode 100644
index 0000000000..53263ca032
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-spdx-tools_0.8.2.bb
@@ -0,0 +1,28 @@
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] = "aea4ac9c2c375e7f439b1cef5ff32ef34914c083de0f61e08ed67cd3d9deb2a9"
8
9BBCLASSEXTEND = "native nativesdk"
10
11inherit setuptools3 pypi
12
13# Dependency required for pyspdxtools : python3-click
14# Dependencies required for conversion to spdx3 : python3-semantic-version, python3-ply
15RDEPENDS:${PN} += "\
16 python3-core \
17 python3-beartype \
18 python3-click \
19 python3-datetime \
20 python3-json \
21 python3-license-expression \
22 python3-ply \
23 python3-pyyaml \
24 python3-rdflib \
25 python3-semantic-version \
26 python3-uritools \
27 python3-xmltodict \
28 "
diff --git a/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb b/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb
new file mode 100644
index 0000000000..22b4d96444
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.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"
16
17SRC_URI[sha256sum] = "bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"
18UPSTREAM_CHECK_REGEX ?= "/sphinx-rtd-theme/(?P<pver>(\d+[\.\-_]*)+)/"
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_7.2.6.bb b/meta/recipes-devtools/python/python3-sphinx_7.2.6.bb
new file mode 100644
index 0000000000..f4ed0720ff
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinx_7.2.6.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;md5=5eb6ac1b115a1ed24a12d9f15b633993"
6
7SRC_URI[sha256sum] = "9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"
8
9inherit python_flit_core pypi
10UPSTREAM_CHECK_REGEX = "/Sphinx/(?P<pver>(\d+[\.\-_]*)+)/"
11
12do_install:append () {
13 # The cache format of "{None, 'en', 'ja'}" doesn't seem to be consistent (dict ordering?)
14 rm ${D}${libdir}/${PYTHON_DIR}/site-packages/sphinx/writers/__pycache__/*latex*
15}
16
17RDEPENDS:${PN} = "\
18 python3-alabaster \
19 python3-babel \
20 python3-docutils \
21 python3-imagesize \
22 python3-jinja2 \
23 python3-packaging \
24 python3-pygments \
25 python3-requests \
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_1.0.8.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb
new file mode 100644
index 0000000000..67dd299b72
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.8.bb
@@ -0,0 +1,12 @@
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://LICENSE;md5=c7715857042d4c8c0105999ca0c072c5"
5
6SRC_URI[sha256sum] = "c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"
7
8PYPI_PACKAGE = "sphinxcontrib_applehelp"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb
new file mode 100644
index 0000000000..31f77a0a14
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.6.bb
@@ -0,0 +1,12 @@
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://LICENSE;md5=fd30d9972a142c857a80c9f312e92b93"
5
6SRC_URI[sha256sum] = "9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"
7
8PYPI_PACKAGE = "sphinxcontrib_devhelp"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb
new file mode 100644
index 0000000000..e30c61c398
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.5.bb
@@ -0,0 +1,12 @@
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://LICENSE;md5=24dce5ef6a13563241c24bc366f48886"
5
6SRC_URI[sha256sum] = "0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"
7
8PYPI_PACKAGE = "sphinxcontrib_htmlhelp"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "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_1.0.7.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb
new file mode 100644
index 0000000000..2225ec521e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.7.bb
@@ -0,0 +1,12 @@
1SUMMARY = "Is a sphinx extension which outputs QtHelp document."
2HOMEPAGE = "http://babel.edgewall.org/"
3LICENSE = "BSD-2-Clause"
4LIC_FILES_CHKSUM = "file://LICENSE;md5=f7a83b72ea86d04827575ec0b63430eb"
5
6SRC_URI[sha256sum] = "053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"
7
8PYPI_PACKAGE = "sphinxcontrib_qthelp"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb b/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb
new file mode 100644
index 0000000000..49be5200f0
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.10.bb
@@ -0,0 +1,12 @@
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://LICENSE;md5=32a84ac5cd3bbd10c4d479233ad588b6"
5
6SRC_URI[sha256sum] = "93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"
7
8PYPI_PACKAGE = "sphinxcontrib_serializinghtml"
9
10inherit pypi python_flit_core
11
12BBCLASSEXTEND = "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..11be10bab6
--- /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 setuptools3
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.1.bb b/meta/recipes-devtools/python/python3-testtools_2.7.1.bb
new file mode 100644
index 0000000000..cc7e055632
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-testtools_2.7.1.bb
@@ -0,0 +1,20 @@
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] = "df6de96010e29ee21f637a147eabf30d50b25e3841dd1d68f93ee89ce77e366c"
12
13RDEPENDS:${PN} += "\
14 python3-doctest \
15 python3-extras \
16 python3-six \
17 "
18
19BBCLASSEXTEND = "nativesdk"
20
diff --git a/meta/recipes-devtools/python/python3-toml_0.10.2.bb b/meta/recipes-devtools/python/python3-toml_0.10.2.bb
index b46eba6fd1..649464b961 100644
--- a/meta/recipes-devtools/python/python3-toml_0.10.2.bb
+++ b/meta/recipes-devtools/python/python3-toml_0.10.2.bb
@@ -10,6 +10,6 @@ inherit pypi setuptools3
10 10
11BBCLASSEXTEND = "native nativesdk" 11BBCLASSEXTEND = "native nativesdk"
12 12
13RDEPENDS_${PN} += " \ 13RDEPENDS:${PN} += " \
14 ${PYTHON_PN}-misc \ 14 python3-misc \
15" 15"
diff --git a/meta/recipes-devtools/python/python3-tomli_2.0.1.bb b/meta/recipes-devtools/python/python3-tomli_2.0.1.bb
new file mode 100644
index 0000000000..9401ed897f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-tomli_2.0.1.bb
@@ -0,0 +1,18 @@
1SUMMARY = "A lil' TOML parser"
2DESCRIPTION = "Tomli is a Python library for parsing TOML. Tomli is fully \
3compatible with TOML v1.0.0."
4HOMEPAGE = "https://github.com/hukkin/tomli"
5BUGTRACKER = "https://github.com/hukkin/tomli/issues"
6LICENSE = "MIT"
7LIC_FILES_CHKSUM = "file://LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5"
8
9inherit pypi python_flit_core
10
11SRC_URI[sha256sum] = "de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
12
13BBCLASSEXTEND = "native nativesdk"
14
15RDEPENDS:${PN} += " \
16 python3-datetime \
17 python3-stringold \
18"
diff --git a/meta/recipes-devtools/python/python3-trove-classifiers/run-ptest b/meta/recipes-devtools/python/python3-trove-classifiers/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-trove-classifiers/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-trove-classifiers_2024.4.10.bb b/meta/recipes-devtools/python/python3-trove-classifiers_2024.4.10.bb
new file mode 100644
index 0000000000..357b428983
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-trove-classifiers_2024.4.10.bb
@@ -0,0 +1,26 @@
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] = "49f40bb6a746b72a1cba4f8d55ee8252169cda0f70802e3fd24f04b7fb25a492"
7
8inherit pypi python_setuptools_build_meta ptest
9
10DEPENDS += " python3-calver-native"
11
12SRC_URI += " \
13 file://run-ptest \
14"
15
16RDEPENDS:${PN}-ptest += " \
17 python3-pytest \
18 python3-unittest-automake-output \
19"
20
21do_install_ptest() {
22 install -d ${D}${PTEST_PATH}/tests
23 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
24}
25
26BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typing-extensions_4.11.0.bb b/meta/recipes-devtools/python/python3-typing-extensions_4.11.0.bb
new file mode 100644
index 0000000000..ad45b669ec
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typing-extensions_4.11.0.bb
@@ -0,0 +1,24 @@
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"
17
18SRC_URI[sha256sum] = "83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"
19
20inherit pypi python_flit_core
21
22UPSTREAM_CHECK_REGEX = "/typing-extensions/(?P<pver>(\d+[\.\-_]*)+)/"
23
24BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb b/meta/recipes-devtools/python/python3-typogrify_2.0.7.bb
new file mode 100644
index 0000000000..8ba2788c9b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-typogrify_2.0.7.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=12bc792d6f5415dbf421f3fd183c6dd2"
5
6inherit pypi setuptools3
7
8PYPI_PACKAGE = "typogrify"
9SRC_URI[sha256sum] = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38"
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} += "python3-smartypants"
14
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..1fc6180d0e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-unittest-automake-output_0.2.bb
@@ -0,0 +1,13 @@
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"
7SRCREV = "aebdfb188e368c690ea55cf6c9c9ffa1a52def65"
8
9S = "${WORKDIR}/git"
10
11inherit python_flit_core
12
13BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-uritools_4.0.2.bb b/meta/recipes-devtools/python/python3-uritools_4.0.2.bb
new file mode 100644
index 0000000000..5ffedccb85
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-uritools_4.0.2.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=1ec55353c80c662e4255f8889a0ca558"
6
7SRC_URI[sha256sum] = "04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573"
8
9inherit setuptools3 pypi
10
11BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-urllib3_2.2.1.bb b/meta/recipes-devtools/python/python3-urllib3_2.2.1.bb
new file mode 100644
index 0000000000..fc1828b4ee
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-urllib3_2.2.1.bb
@@ -0,0 +1,24 @@
1SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more"
2HOMEPAGE = "https://github.com/shazow/urllib3"
3LICENSE = "MIT"
4LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda"
5
6SRC_URI[sha256sum] = "d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"
7
8inherit pypi python_hatchling
9
10RDEPENDS:${PN} += "\
11 python3-certifi \
12 python3-cryptography \
13 python3-email \
14 python3-idna \
15 python3-json \
16 python3-netclient \
17 python3-pyopenssl \
18 python3-threading \
19 python3-logging \
20"
21
22CVE_PRODUCT = "urllib3"
23
24BBCLASSEXTEND = "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..149078c51b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-vcversioner_2.16.0.0.bb
@@ -0,0 +1,12 @@
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[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d"
8SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b"
9
10inherit pypi setuptools3
11
12BBCLASSEXTEND = "native"
diff --git a/meta/recipes-devtools/python/python3-wcwidth/run-ptest b/meta/recipes-devtools/python/python3-wcwidth/run-ptest
index b63c4de0d9..8d2017d39c 100644
--- a/meta/recipes-devtools/python/python3-wcwidth/run-ptest
+++ b/meta/recipes-devtools/python/python3-wcwidth/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 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}}' 3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
index bb4aae2e86..4a9bf75323 100644
--- a/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb
+++ b/meta/recipes-devtools/python/python3-wcwidth_0.2.13.bb
@@ -4,8 +4,7 @@ HOMEPAGE = "https://github.com/jquast/wcwidth"
4LICENSE = "MIT" 4LICENSE = "MIT"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb" 5LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb"
6 6
7SRC_URI[md5sum] = "a07a75f99d316e14838ac760c831ea37" 7SRC_URI[sha256sum] = "72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"
8SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
9 8
10inherit pypi setuptools3 ptest 9inherit pypi setuptools3 ptest
11 10
@@ -13,13 +12,16 @@ SRC_URI += " \
13 file://run-ptest \ 12 file://run-ptest \
14" 13"
15 14
16RDEPENDS_${PN}-ptest += " \ 15RDEPENDS:${PN}-ptest += " \
17 ${PYTHON_PN}-pytest \ 16 python3-pytest \
17 python3-unittest-automake-output \
18" 18"
19 19
20do_install_ptest() { 20do_install_ptest() {
21 install -d ${D}${PTEST_PATH}/tests 21 install -d ${D}${PTEST_PATH}/tests
22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ 22 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
23 install -d ${D}${PTEST_PATH}/bin
24 cp -rf ${S}/bin/* ${D}${PTEST_PATH}/bin/
23} 25}
24 26
25BBCLASSEXTEND = "native nativesdk" 27BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-webcolors/run-ptest b/meta/recipes-devtools/python/python3-webcolors/run-ptest
new file mode 100644
index 0000000000..8d2017d39c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-webcolors/run-ptest
@@ -0,0 +1,3 @@
1#!/bin/sh
2
3pytest --automake
diff --git a/meta/recipes-devtools/python/python3-webcolors_1.13.bb b/meta/recipes-devtools/python/python3-webcolors_1.13.bb
new file mode 100644
index 0000000000..cea2a971d3
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-webcolors_1.13.bb
@@ -0,0 +1,28 @@
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=702b1ef12cf66832a88f24c8f2ee9c19"
5
6SRC_URI[sha256sum] = "c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"
7
8inherit pypi python_setuptools_build_meta ptest
9
10RDEPENDS:${PN}:class-target = "\
11 python3-stringold \
12"
13
14SRC_URI += " \
15 file://run-ptest \
16"
17
18RDEPENDS:${PN}-ptest += " \
19 python3-pytest \
20 python3-unittest-automake-output \
21"
22
23do_install_ptest() {
24 install -d ${D}${PTEST_PATH}/tests
25 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
26}
27
28BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-websockets_12.0.bb b/meta/recipes-devtools/python/python3-websockets_12.0.bb
new file mode 100644
index 0000000000..f89c3b629e
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-websockets_12.0.bb
@@ -0,0 +1,16 @@
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 setuptools3
8
9SRC_URI[sha256sum] = "81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"
10
11BBCLASSEXTEND = "native nativesdk"
12
13RDEPENDS:${PN} = " \
14 python3-asyncio \
15 python3-profile \
16"
diff --git a/meta/recipes-devtools/python/python3-wheel_0.43.0.bb b/meta/recipes-devtools/python/python3-wheel_0.43.0.bb
new file mode 100644
index 0000000000..ba309ae5fc
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-wheel_0.43.0.bb
@@ -0,0 +1,15 @@
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] = "465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"
8
9inherit python_flit_core pypi
10
11BBCLASSEXTEND = "native nativesdk"
12
13# This used to use the bootstrap install which didn't compile. Until we bump the
14# tmpdir version we can't compile the native otherwise the sysroot unpack fails
15INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
diff --git a/meta/recipes-devtools/python/python3-xmltodict/run-ptest b/meta/recipes-devtools/python/python3-xmltodict/run-ptest
new file mode 100644
index 0000000000..3385d68939
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-xmltodict/run-ptest
@@ -0,0 +1,3 @@
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-xmltodict_0.13.0.bb b/meta/recipes-devtools/python/python3-xmltodict_0.13.0.bb
new file mode 100644
index 0000000000..e8e275647c
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-xmltodict_0.13.0.bb
@@ -0,0 +1,31 @@
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] = "341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"
7
8PYPI_PACKAGE = "xmltodict"
9
10BBCLASSEXTEND = "native nativesdk"
11
12inherit pypi setuptools3 ptest
13
14SRC_URI += " \
15 file://run-ptest \
16"
17
18RDEPENDS:${PN} += " \
19 python3-core \
20 python3-xml \
21 python3-io \
22"
23
24RDEPENDS:${PN}-ptest += " \
25 python3-pytest \
26"
27
28do_install_ptest() {
29 install -d ${D}${PTEST_PATH}/tests
30 cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
31}
diff --git a/meta/recipes-devtools/python/python3-yamllint_1.35.1.bb b/meta/recipes-devtools/python/python3-yamllint_1.35.1.bb
new file mode 100644
index 0000000000..53188b0262
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-yamllint_1.35.1.bb
@@ -0,0 +1,15 @@
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 setuptools3
7
8PYPI_PACKAGE = "yamllint"
9
10SRC_URI[sha256sum] = "7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd"
11
12DEPENDS += "python3-setuptools-scm-native"
13RDEPENDS:${PN} += "python3-pathspec python3-pyyaml"
14
15BBCLASSEXTEND = "native nativesdk"
diff --git a/meta/recipes-devtools/python/python3-zipp_3.18.1.bb b/meta/recipes-devtools/python/python3-zipp_3.18.1.bb
new file mode 100644
index 0000000000..e43432469d
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-zipp_3.18.1.bb
@@ -0,0 +1,18 @@
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] = "2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"
7
8DEPENDS += "python3-setuptools-scm-native"
9
10inherit pypi python_setuptools_build_meta
11
12DEPENDS += "python3-toml-native"
13
14RDEPENDS:${PN} += "python3-compression \
15 python3-math \
16 python3-more-itertools"
17
18BBCLASSEXTEND = "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..0d807db39f
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Avoid-shebang-overflow-on-python-config.py.patch
@@ -0,0 +1,30 @@
1From 365399f17d35719d828ddd49182dcb401fb7791c Mon Sep 17 00:00:00 2001
2From: Paulo Neves <ptsneves@gmail.com>
3Date: Tue, 7 Jun 2022 16:16:41 +0200
4Subject: [PATCH] Avoid shebang overflow on python-config.py
5
6The whole native path may be too big, leading to shebang
7overflow. Let's just use the env shebang.
8
9Denial reason: [1]
10
11Upstream-Status: Denied [distribution]
12
13[1] https://github.com/python/cpython/pull/93760#pullrequestreview-1005365737
14---
15 Makefile.pre.in | 2 ++
16 1 file changed, 2 insertions(+)
17
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 77bf09a..6353c57 100644
20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in
22@@ -2339,6 +2339,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
23 @ # Substitution happens here, as the completely-expanded BINDIR
24 @ # is not available in configure
25 sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py
26+ @ # Otherwise we might get huge shebangs with native paths
27+ sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' python-config.py
28 @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
29 LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
30 @ # On Darwin, always use the python version of the script, the shell
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch b/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
deleted file mode 100644
index 59592821d7..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch
+++ /dev/null
@@ -1,25 +0,0 @@
1From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Fri, 25 Jan 2019 19:04:13 +0100
4Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host
5 contamination
6
7Upstream-Status: Inappropriate [oe-core specific]
8Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
9
10---
11 setup.py | 1 -
12 1 file changed, 1 deletion(-)
13
14diff --git a/setup.py b/setup.py
15index 20d7f35..ab18ff0 100644
16--- a/setup.py
17+++ b/setup.py
18@@ -957,7 +957,6 @@ class PyBuildExt(build_ext):
19 'termcap'):
20 readline_libs.append('termcap')
21 self.add(Extension('readline', ['readline.c'],
22- library_dirs=['/usr/lib/termcap'],
23 extra_link_args=readline_extra_link_args,
24 libraries=readline_libs))
25 else:
diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch b/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
deleted file mode 100644
index 83fd52d87f..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Do-not-use-the-shell-version-of-python-config-that-w.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Tue, 29 Jan 2019 15:03:01 +0100
4Subject: [PATCH] Do not use the shell version of python-config that was
5 introduced in 3.4
6
7Revert instead to the original python version: it has our tweaks and
8outputs directories correctly.
9
10Upstream-Status: Inappropriate [oe-specific]
11Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
12---
13 Makefile.pre.in | 9 +++------
14 1 file changed, 3 insertions(+), 6 deletions(-)
15
16diff --git a/Makefile.pre.in b/Makefile.pre.in
17index 2d2e11f..cc19942 100644
18--- a/Makefile.pre.in
19+++ b/Makefile.pre.in
20@@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
21 sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
22 @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
23 LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config
24- @ # On Darwin, always use the python version of the script, the shell
25- @ # version doesn't use the compiler customizations that are provided
26- @ # in python (_osx_support.py).
27- @if test `uname -s` = Darwin; then \
28- cp python-config.py python-config; \
29- fi
30+ @ # In OpenEmbedded, always use the python version of the script, the shell
31+ @ # version is broken in multiple ways, and doesn't return correct directories
32+ cp python-config.py python-config
33
34
35 # Install the include files
diff --git a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch b/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
deleted file mode 100644
index a94fa0a5a9..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Don-t-search-system-for-headers-libraries.patch
+++ /dev/null
@@ -1,27 +0,0 @@
1From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001
2From: Jeremy Puhlman <jpuhlman@mvista.com>
3Date: Wed, 4 Mar 2020 00:06:42 +0000
4Subject: [PATCH] Don't search system for headers/libraries
5
6Upstream-Status: Inappropriate [oe-core specific]
7Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com>
8
9---
10 setup.py | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/setup.py b/setup.py
14index a0bf9ea..da099bf 100644
15--- a/setup.py
16+++ b/setup.py
17@@ -674,8 +674,8 @@ class PyBuildExt(build_ext):
18 add_dir_to_list(self.compiler.include_dirs,
19 sysconfig.get_config_var("INCLUDEDIR"))
20
21- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']
22- system_include_dirs = ['/usr/include']
23+ system_lib_dirs = []
24+ system_include_dirs = []
25 # lib_dirs and inc_dirs are used to search for files;
26 # if a file is found in one of those directories, it can
27 # be assumed that no additional -I,-L directives are needed.
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
new file mode 100644
index 0000000000..026150f0e2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch
@@ -0,0 +1,47 @@
1From f8a664cf1fc73e381d57d6927207286059744837 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Thu, 16 Sep 2021 16:35:37 +0200
4Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O
5 errors
6
7reading stdin can throw the same I/O errors as reading from master fd does,
8e.g. when running under Yocto's test harness:
9======================================================================
10ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest)
11----------------------------------------------------------------------
12Traceback (most recent call last):
13 File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang
14 pty.spawn([sys.executable, '-c', 'print("hi there")'])
15 File "/usr/lib/python3.10/pty.py", line 181, in spawn
16 _copy(master_fd, master_read, stdin_read)
17 File "/usr/lib/python3.10/pty.py", line 157, in _copy
18 data = stdin_read(STDIN_FILENO)
19 File "/usr/lib/python3.10/pty.py", line 132, in _read
20 return os.read(fd, 1024)
21OSError: [Errno 5] Input/output error
22
23So let's treat both channels the same.
24
25Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388]
26Signed-off-by: Alexander Kanavin <alex@linutronix.de>
27
28---
29 Lib/pty.py | 5 ++++-
30 1 file changed, 4 insertions(+), 1 deletion(-)
31
32diff --git a/Lib/pty.py b/Lib/pty.py
33index 1d97994..fa8821b 100644
34--- a/Lib/pty.py
35+++ b/Lib/pty.py
36@@ -178,7 +178,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read):
37 i_buf = i_buf[n:]
38
39 if stdin_avail and STDIN_FILENO in rfds:
40- data = stdin_read(STDIN_FILENO)
41+ try:
42+ data = stdin_read(STDIN_FILENO)
43+ except OSError:
44+ data = b""
45 if not data:
46 stdin_avail = False
47 else:
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
deleted file mode 100644
index 1490cdbb18..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
1From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 22 Oct 2020 13:10:34 +0200
4Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file
5
6This allows correctly substituting them for target installs using
7native python.
8
9Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10---
11 Lib/sysconfig.py | 8 ++++----
12 1 file changed, 4 insertions(+), 4 deletions(-)
13
14diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
15index bf04ac5..ed0462b 100644
16--- a/Lib/sysconfig.py
17+++ b/Lib/sysconfig.py
18@@ -20,10 +20,10 @@ __all__ = [
19
20 _INSTALL_SCHEMES = {
21 'posix_prefix': {
22- 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
23- 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
24- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
25- 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
26+ 'stdlib': '{LIBDEST}',
27+ 'platstdlib': '{LIBDEST}',
28+ 'purelib': '{LIBDEST}/site-packages',
29+ 'platlib': '{LIBDEST}/site-packages',
30 'include':
31 '{installed_base}/include/python{py_version_short}{abiflags}',
32 'platinclude':
33--
342.24.0
35
diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
new file mode 100644
index 0000000000..680254fab9
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch
@@ -0,0 +1,32 @@
1From 71c194077bb907bfe423d3f3275f33a6c8ca0e74 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Fri, 17 Nov 2023 14:26:32 +0100
4Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration
5 file
6
7This allows correctly substituting them for target installs using
8native python.
9
10Upstream-Status: Inappropriate [oe-core cross builds]
11Signed-off-by: Alexander Kanavin <alex@linutronix.de>
12
13---
14 Lib/sysconfig.py | 5 +++++
15 1 file changed, 5 insertions(+)
16
17diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
18index 79c0510..91ebcb6 100644
19--- a/Lib/sysconfig.py
20+++ b/Lib/sysconfig.py
21@@ -668,6 +668,11 @@ def _init_config_vars():
22 _CONFIG_VARS['VPATH'] = sys._vpath
23 if os.name == 'posix':
24 _init_posix(_CONFIG_VARS)
25+ _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix']
26+ _CONFIG_VARS['base'] = _CONFIG_VARS['prefix']
27+ _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix']
28+ _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix']
29+ _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR']
30 if _HAS_USER_BASE:
31 # Setting 'userbase' is done below the call to the
32 # init function to enable using 'get_config_var' in
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch b/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
deleted file mode 100644
index b1bceac512..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile-do-not-compile-.pyc-in-parallel.patch
+++ /dev/null
@@ -1,58 +0,0 @@
1From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 16 Jan 2020 12:34:20 +0100
4Subject: [PATCH] Makefile: do not compile .pyc in parallel
5
6This was found to break reproducibility, and produce strange file ownership
7races.
8
9The upstream commit introducing the change was:
10https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
11
12Upstream-Status: Pending
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14---
15 Makefile.pre.in | 12 ++++++------
16 1 file changed, 6 insertions(+), 6 deletions(-)
17
18diff --git a/Makefile.pre.in b/Makefile.pre.in
19index 1241112..5dfdf44 100644
20--- a/Makefile.pre.in
21+++ b/Makefile.pre.in
22@@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c
23 fi
24 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
25 $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
26- -j0 -d $(LIBDEST) -f \
27+ -d $(LIBDEST) -f \
28 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
29 $(DESTDIR)$(LIBDEST)
30 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
31 $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
32- -j0 -d $(LIBDEST) -f \
33+ -d $(LIBDEST) -f \
34 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
35 $(DESTDIR)$(LIBDEST)
36 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
37 $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
38- -j0 -d $(LIBDEST) -f \
39+ -d $(LIBDEST) -f \
40 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \
41 $(DESTDIR)$(LIBDEST)
42 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
43 $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \
44- -j0 -d $(LIBDEST)/site-packages -f \
45+ -d $(LIBDEST)/site-packages -f \
46 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
47 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
48 $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \
49- -j0 -d $(LIBDEST)/site-packages -f \
50+ -d $(LIBDEST)/site-packages -f \
51 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
52 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
53 $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \
54- -j0 -d $(LIBDEST)/site-packages -f \
55+ -d $(LIBDEST)/site-packages -f \
56 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
57 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
58 $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch b/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
deleted file mode 100644
index 237645bc60..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch
+++ /dev/null
@@ -1,34 +0,0 @@
1From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Wed, 8 May 2019 16:10:29 +0800
4Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem)
5
6When using make -j with the 'install' target, it's possible for altbininstall
7(which normally creates BINDIR) and libainstall (which doesn't, though it
8installs python-config there) to race, resulting in a failure due to
9attempting to install python-config into a nonexistent BINDIR. Ensure it also
10exists in the libainstall target.
11
12Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186]
13
14Signed-off-by: Changqing Li <changqing.li@windriver.com>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 15f3687..7e9f173 100644
21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in
23@@ -1456,7 +1456,7 @@ LIBPL= @LIBPL@
24 LIBPC= $(LIBDIR)/pkgconfig
25
26 libainstall: @DEF_MAKE_RULE@ python-config
27- @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \
28+ @for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \
29 do \
30 if test ! -d $(DESTDIR)$$i; then \
31 echo "Creating directory $$i"; \
32--
332.7.4
34
diff --git a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
index fa7735ff93..ee33128fa1 100644
--- a/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
+++ b/meta/recipes-devtools/python/python3/0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch
@@ -1,4 +1,4 @@
1From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 1From 38278339832a57dbf5fa3ef21accaa03e2c814d7 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Wed, 30 Jan 2019 12:41:04 +0100 3Date: Wed, 30 Jan 2019 12:41:04 +0100
4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data 4Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data
@@ -10,16 +10,16 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
10 1 file changed, 1 insertion(+), 2 deletions(-) 10 1 file changed, 1 insertion(+), 2 deletions(-)
11 11
12diff --git a/Makefile.pre.in b/Makefile.pre.in 12diff --git a/Makefile.pre.in b/Makefile.pre.in
13index a3a02a7..d5503dd 100644 13index dd5e69f..381feb0 100644
14--- a/Makefile.pre.in 14--- a/Makefile.pre.in
15+++ b/Makefile.pre.in 15+++ b/Makefile.pre.in
16@@ -507,8 +507,7 @@ build_all_generate_profile: 16@@ -658,8 +658,7 @@ profile-run-stamp:
17 $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)" 17 # enabled.
18 18 $(MAKE) profile-gen-stamp
19 run_profile_task: 19 # Next, run the profile task to generate the profile information.
20- @ # FIXME: can't run for a cross build 20- @ # FIXME: can't run for a cross build
21- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true 21- $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true
22+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true 22+ ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true
23
24 build_all_merge_profile:
25 $(LLVM_PROF_MERGER) 23 $(LLVM_PROF_MERGER)
24 # Remove profile generation binary since we are done with it.
25 $(MAKE) clean-retain-profile
diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
new file mode 100644
index 0000000000..197daa71a5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch
@@ -0,0 +1,72 @@
1From 3471e3478e0760c42e04f8046cee2367ab5706d2 Mon Sep 17 00:00:00 2001
2From: Yi Fan Yu <yifan.yu@windriver.com>
3Date: Thu, 1 Apr 2021 13:08:37 -0700
4Subject: [PATCH] Skip failing tests due to load variability on YP AB
5
6Skip these tests until AB-INT is solved.
7
8[YOCTO #14296]
9
10Upstream-Status: Inappropriate [OE-Specific]
11
12Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
13
14Skip two additional tests due to suspected load variability failures.
15
16[YOCTO #15131]
17[YOCTO #15177]
18
19Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
20---
21 Lib/test/_test_multiprocessing.py | 3 +++
22 Lib/test/test_time.py | 2 ++
23 2 files changed, 5 insertions(+)
24
25diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
26index e42c7ab..dff5227 100644
27--- a/Lib/test/_test_multiprocessing.py
28+++ b/Lib/test/_test_multiprocessing.py
29@@ -682,6 +682,7 @@ class _TestProcess(BaseTestCase):
30 close_queue(q)
31
32 @support.requires_resource('walltime')
33+ @unittest.skip('timing related test, dependent on load')
34 def test_many_processes(self):
35 if self.TYPE == 'threads':
36 self.skipTest('test not appropriate for {}'.format(self.TYPE))
37@@ -2066,6 +2067,7 @@ class _TestBarrier(BaseTestCase):
38 except threading.BrokenBarrierError:
39 results.append(True)
40
41+ @unittest.skip('timing related test, dependent on load')
42 def test_timeout(self):
43 """
44 Test wait(timeout)
45@@ -5024,6 +5026,7 @@ class TestWait(unittest.TestCase):
46 time.sleep(period)
47
48 @support.requires_resource('walltime')
49+ @unittest.skip('timing related test, dependent on load')
50 def test_wait_integer(self):
51 from multiprocessing.connection import wait
52
53diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
54index 02cc3f4..51a4548 100644
55--- a/Lib/test/test_time.py
56+++ b/Lib/test/test_time.py
57@@ -492,6 +492,7 @@ class TimeTestCase(unittest.TestCase):
58 @unittest.skipIf(
59 support.is_wasi, "process_time not available on WASI"
60 )
61+ @unittest.skip('timing related test, dependent on load')
62 def test_process_time(self):
63 # process_time() should not include time spend during a sleep
64 start = time.process_time()
65@@ -505,6 +506,7 @@ class TimeTestCase(unittest.TestCase):
66 self.assertTrue(info.monotonic)
67 self.assertFalse(info.adjustable)
68
69+ @unittest.skip('timing related test, dependent on load')
70 def test_thread_time(self):
71 if not hasattr(time, 'thread_time'):
72 if sys.platform.startswith(('linux', 'win')):
diff --git a/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
new file mode 100644
index 0000000000..b6c6ac5a28
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-Update-test_sysconfig-for-posix_user-purelib.patch
@@ -0,0 +1,37 @@
1From 37d058e841ba3bd89b5746cc5381afb014b11581 Mon Sep 17 00:00:00 2001
2From: Wentao Zhang <wentao.zhang@windriver.com>
3Date: Mon, 20 Mar 2023 13:39:52 +0800
4Subject: [PATCH] Update test_sysconfig for posix_user purelib
5
6Steps to trigger the failed test:
7Edit local.conf to add something as follows:
8 BASELIB = "lib64"
9 IMAGE_INSTALL:append = " python3-tests".
10bitbake core-image-sato
11runqemu qemux86-64 nographic slirp
12Reproducer:
13 $python3 -m test test_sysconfig
14
15Update test_sysconfig.test_user_similar() for the posix_user scheme:
16"purelib" doesn't use sys.platlibdir.
17
18Upstream-Status: Inappropriate [oe-core specific]
19Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com>
20
21---
22 Lib/test/test_sysconfig.py | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py
26index b6dbf3d..5672590 100644
27--- a/Lib/test/test_sysconfig.py
28+++ b/Lib/test/test_sysconfig.py
29@@ -372,7 +372,7 @@ class TestSysConfig(unittest.TestCase):
30 expected = os.path.normpath(global_path.replace(base, user, 1))
31 # bpo-44860: platlib of posix_user doesn't use sys.platlibdir,
32 # whereas posix_prefix does.
33- if name == 'platlib':
34+ if name == 'platlib' or name == 'purelib':
35 # Replace "/lib64/python3.11/site-packages" suffix
36 # with "/lib/python3.11/site-packages".
37 py_version_short = sysconfig.get_python_version()
diff --git a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch b/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
deleted file mode 100644
index 793385de91..0000000000
--- a/meta/recipes-devtools/python/python3/0001-Use-FLAG_REF-always-for-interned-strings.patch
+++ /dev/null
@@ -1,33 +0,0 @@
1From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001
2From: Inada Naoki <songofacandy@gmail.com>
3Date: Sat, 14 Jul 2018 00:46:11 +0900
4Subject: [PATCH] Use FLAG_REF always for interned strings
5
6Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226]
7Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
8
9---
10 Python/marshal.c | 9 +++++++--
11 1 file changed, 7 insertions(+), 2 deletions(-)
12
13diff --git a/Python/marshal.c b/Python/marshal.c
14index c4538bd..2437160 100644
15--- a/Python/marshal.c
16+++ b/Python/marshal.c
17@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
18 if (p->version < 3 || p->hashtable == NULL)
19 return 0; /* not writing object references */
20
21- /* if it has only one reference, it definitely isn't shared */
22- if (Py_REFCNT(v) == 1)
23+ /* If it has only one reference, it definitely isn't shared.
24+ * But we use TYPE_REF always for interned string, to PYC file stable
25+ * as possible.
26+ */
27+ if (Py_REFCNT(v) == 1 &&
28+ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) {
29 return 0;
30+ }
31
32 entry = _Py_hashtable_get_entry(p->hashtable, v);
33 if (entry != NULL) {
diff --git a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch b/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
deleted file mode 100644
index c4fae09a5b..0000000000
--- a/meta/recipes-devtools/python/python3/0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
+++ /dev/null
@@ -1,209 +0,0 @@
1From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001
2From: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
3Date: Fri, 31 May 2019 15:34:34 +0200
4Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft
5 float
6
7When (cross) compiling for softfloat mips, __mips_hard_float will not be
8defined and detection of OS triplet in configure.ac / configure will fail.
9
10This also has to do with the custom detection of the build triplet. Trying
11to do this in a more autoconf/autotools manner.
12
13Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196]
14Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io>
15
16%% original patch: 0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch
17---
18 configure.ac | 175 +++++++--------------------------------------------
19 1 file changed, 21 insertions(+), 154 deletions(-)
20
21diff --git a/configure.ac b/configure.ac
22index ede710e..bc81b0b 100644
23--- a/configure.ac
24+++ b/configure.ac
25@@ -710,160 +710,27 @@ fi
26 MULTIARCH=$($CC --print-multiarch 2>/dev/null)
27 AC_SUBST(MULTIARCH)
28
29-AC_MSG_CHECKING([for the platform triplet based on compiler characteristics])
30-cat >> conftest.c <<EOF
31-#undef bfin
32-#undef cris
33-#undef fr30
34-#undef linux
35-#undef hppa
36-#undef hpux
37-#undef i386
38-#undef mips
39-#undef powerpc
40-#undef sparc
41-#undef unix
42-#if defined(__ANDROID__)
43- # Android is not a multiarch system.
44-#elif defined(__linux__)
45-# if defined(__x86_64__) && defined(__LP64__)
46- x86_64-linux-gnu
47-# elif defined(__x86_64__) && defined(__ILP32__)
48- x86_64-linux-gnux32
49-# elif defined(__i386__)
50- i386-linux-gnu
51-# elif defined(__aarch64__) && defined(__AARCH64EL__)
52-# if defined(__ILP32__)
53- aarch64_ilp32-linux-gnu
54-# else
55- aarch64-linux-gnu
56-# endif
57-# elif defined(__aarch64__) && defined(__AARCH64EB__)
58-# if defined(__ILP32__)
59- aarch64_be_ilp32-linux-gnu
60-# else
61- aarch64_be-linux-gnu
62-# endif
63-# elif defined(__alpha__)
64- alpha-linux-gnu
65-# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
66-# if defined(__ARMEL__)
67- arm-linux-gnueabihf
68-# else
69- armeb-linux-gnueabihf
70-# endif
71-# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
72-# if defined(__ARMEL__)
73- arm-linux-gnueabi
74-# else
75- armeb-linux-gnueabi
76-# endif
77-# elif defined(__hppa__)
78- hppa-linux-gnu
79-# elif defined(__ia64__)
80- ia64-linux-gnu
81-# elif defined(__m68k__) && !defined(__mcoldfire__)
82- m68k-linux-gnu
83-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
84-# if _MIPS_SIM == _ABIO32
85- mipsisa32r6el-linux-gnu
86-# elif _MIPS_SIM == _ABIN32
87- mipsisa64r6el-linux-gnuabin32
88-# elif _MIPS_SIM == _ABI64
89- mipsisa64r6el-linux-gnuabi64
90-# else
91-# error unknown platform triplet
92-# endif
93-# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6)
94-# if _MIPS_SIM == _ABIO32
95- mipsisa32r6-linux-gnu
96-# elif _MIPS_SIM == _ABIN32
97- mipsisa64r6-linux-gnuabin32
98-# elif _MIPS_SIM == _ABI64
99- mipsisa64r6-linux-gnuabi64
100-# else
101-# error unknown platform triplet
102-# endif
103-# elif defined(__mips_hard_float) && defined(_MIPSEL)
104-# if _MIPS_SIM == _ABIO32
105- mipsel-linux-gnu
106-# elif _MIPS_SIM == _ABIN32
107- mips64el-linux-gnuabin32
108-# elif _MIPS_SIM == _ABI64
109- mips64el-linux-gnuabi64
110-# else
111-# error unknown platform triplet
112-# endif
113-# elif defined(__mips_hard_float)
114-# if _MIPS_SIM == _ABIO32
115- mips-linux-gnu
116-# elif _MIPS_SIM == _ABIN32
117- mips64-linux-gnuabin32
118-# elif _MIPS_SIM == _ABI64
119- mips64-linux-gnuabi64
120-# else
121-# error unknown platform triplet
122-# endif
123-# elif defined(__or1k__)
124- or1k-linux-gnu
125-# elif defined(__powerpc__) && defined(__SPE__)
126- powerpc-linux-gnuspe
127-# elif defined(__powerpc64__)
128-# if defined(__LITTLE_ENDIAN__)
129- powerpc64le-linux-gnu
130-# else
131- powerpc64-linux-gnu
132-# endif
133-# elif defined(__powerpc__)
134- powerpc-linux-gnu
135-# elif defined(__s390x__)
136- s390x-linux-gnu
137-# elif defined(__s390__)
138- s390-linux-gnu
139-# elif defined(__sh__) && defined(__LITTLE_ENDIAN__)
140- sh4-linux-gnu
141-# elif defined(__sparc__) && defined(__arch64__)
142- sparc64-linux-gnu
143-# elif defined(__sparc__)
144- sparc-linux-gnu
145-# elif defined(__riscv)
146-# if __riscv_xlen == 32
147- riscv32-linux-gnu
148-# elif __riscv_xlen == 64
149- riscv64-linux-gnu
150-# else
151-# error unknown platform triplet
152-# endif
153-# else
154-# error unknown platform triplet
155-# endif
156-#elif defined(__FreeBSD_kernel__)
157-# if defined(__LP64__)
158- x86_64-kfreebsd-gnu
159-# elif defined(__i386__)
160- i386-kfreebsd-gnu
161-# else
162-# error unknown platform triplet
163-# endif
164-#elif defined(__gnu_hurd__)
165- i386-gnu
166-#elif defined(__APPLE__)
167- darwin
168-#elif defined(__VXWORKS__)
169- vxworks
170-#else
171-# error unknown platform triplet
172-#endif
173-
174-EOF
175-
176-if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then
177- PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '`
178- AC_MSG_RESULT([$PLATFORM_TRIPLET])
179-else
180- AC_MSG_RESULT([none])
181-fi
182-rm -f conftest.c conftest.out
183+AC_CANONICAL_TARGET
184+## Not using $target to filter out vendor
185+## Need to handle macos, vxworks and hurd special (?) :-/
186+case ${target_os} in
187+ darwin*)
188+ PLATFORM_TRIPLET=darwin
189+ ;;
190+ hurd*)
191+ PLATFORM_TRIPLET=i386-gnu
192+ ;;
193+ vxworks*)
194+ PLATFORM_TRIPLET=vxworks
195+ ;;
196+ *)
197+ if test "${target_cpu}" != "i686"; then
198+ PLATFORM_TRIPLET=${target_cpu}-${target_os}
199+ else
200+ PLATFORM_TRIPLET=i386-${target_os}
201+ fi
202+ ;;
203+esac
204
205 if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then
206 if test x$PLATFORM_TRIPLET != x$MULTIARCH; then
207--
2082.24.1
209
diff --git a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch b/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
deleted file mode 100644
index b982691b36..0000000000
--- a/meta/recipes-devtools/python/python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch
+++ /dev/null
@@ -1,42 +0,0 @@
1From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 31 Jan 2019 16:46:30 +0100
4Subject: [PATCH] distutils/sysconfig: append
5 STAGING_LIBDIR/python-sysconfigdata to sys.path
6
7So that target configuration can be used when running native python
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
11
12---
13 Lib/distutils/sysconfig.py | 2 ++
14 Lib/sysconfig.py | 2 ++
15 2 files changed, 4 insertions(+)
16
17diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
18index b51629e..2df348c 100644
19--- a/Lib/distutils/sysconfig.py
20+++ b/Lib/distutils/sysconfig.py
21@@ -438,6 +438,8 @@ def _init_posix():
22 platform=sys.platform,
23 multiarch=getattr(sys.implementation, '_multiarch', ''),
24 ))
25+ if 'STAGING_LIBDIR' in os.environ:
26+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
27 _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
28 build_time_vars = _temp.build_time_vars
29 global _config_vars
30diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
31index b2d790b..405273c 100644
32--- a/Lib/sysconfig.py
33+++ b/Lib/sysconfig.py
34@@ -419,6 +419,8 @@ def _init_posix(vars):
35 """Initialize the module as appropriate for POSIX systems."""
36 # _sysconfigdata is generated at build time, see _generate_posix_vars()
37 name = _get_sysconfigdata_name()
38+ if 'STAGING_LIBDIR' in os.environ:
39+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
40 _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
41 build_time_vars = _temp.build_time_vars
42 vars.update(build_time_vars)
diff --git a/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch b/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch
new file mode 100644
index 0000000000..8406ef30a2
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-gh-114492-Initialize-struct-termios-before-calling-t.patch
@@ -0,0 +1,26 @@
1From 439aa02f42d6e6715c172076261757fcb89a936a Mon Sep 17 00:00:00 2001
2From: "Miss Islington (bot)"
3 <31488909+miss-islington@users.noreply.github.com>
4Date: Tue, 23 Jan 2024 23:02:02 +0100
5Subject: [PATCH] gh-114492: Initialize struct termios before calling
6 tcgetattr() (GH-114495) (GH-114502)
7
8On Alpine Linux it could leave some field non-initialized.
9(cherry picked from commit d22c066b802592932f9eb18434782299e80ca42e)
10
11Upstream-Status: Backport [https://github.com/python/cpython/commit/386c72d9928c51aa2c855ce592bd8022da3b407f]
12Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15 .../next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | 2 ++
16 1 file changed, 2 insertions(+)
17 create mode 100644 Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
18
19diff --git a/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
20new file mode 100644
21index 0000000..8df8299
22--- /dev/null
23+++ b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst
24@@ -0,0 +1,2 @@
25+Make the result of :func:`termios.tcgetattr` reproducible on Alpine Linux.
26+Previously it could leave a random garbage in some fields.
diff --git a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
index bfddc1ad52..bbeabe4389 100644
--- a/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
+++ b/meta/recipes-devtools/python/python3/0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch
@@ -1,4 +1,4 @@
1From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001 1From ababc7b1db8c406910766e11cdd04cbef7a706c9 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com> 2From: Changqing Li <changqing.li@windriver.com>
3Date: Mon, 22 Oct 2018 15:19:51 +0800 3Date: Mon, 22 Oct 2018 15:19:51 +0800
4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler 4Subject: [PATCH] python3: use cc_basename to replace CC for checking compiler
@@ -14,40 +14,39 @@ x86_64-wrs-linux-gcc: error: unrecognized command line option '-fp-model'
14Here use cc_basename to replace CC for checking compiler to avoid such 14Here use cc_basename to replace CC for checking compiler to avoid such
15kind of issue. 15kind of issue.
16 16
17Upstream-Status: Pending 17Upstream-Status: Submitted [https://github.com/python/cpython/pull/96399]
18 18
19Signed-off-by: Li Zhou <li.zhou@windriver.com> 19Signed-off-by: Li Zhou <li.zhou@windriver.com>
20 20
21patch originally from Li Zhou, I just rework it to new version 21patch originally from Li Zhou, I just rework it to new version
22 22
23Signed-off-by: Changqing Li <changqing.li@windriver.com> 23Signed-off-by: Changqing Li <changqing.li@windriver.com>
24
25--- 24---
26 configure.ac | 19 ++++++++++--------- 25 configure.ac | 19 ++++++++++---------
27 1 file changed, 10 insertions(+), 9 deletions(-) 26 1 file changed, 10 insertions(+), 9 deletions(-)
28 27
29diff --git a/configure.ac b/configure.ac 28diff --git a/configure.ac b/configure.ac
30index d60f052..e491e24 100644 29index 384718d..5a1d58b 100644
31--- a/configure.ac 30--- a/configure.ac
32+++ b/configure.ac 31+++ b/configure.ac
33@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h) 32@@ -137,6 +137,7 @@ AC_CONFIG_HEADERS([pyconfig.h])
34 AC_CANONICAL_HOST 33 AC_CANONICAL_HOST
35 AC_SUBST(build) 34 AC_SUBST([build])
36 AC_SUBST(host) 35 AC_SUBST([host])
37+LT_INIT 36+LT_INIT
38 37
39 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile 38 AS_VAR_IF([cross_compiling], [maybe],
40 rm -f pybuilddir.txt 39 [AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])]
41@@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main) 40@@ -896,7 +897,7 @@ AC_SUBST([CXX])
42 preset_cxx="$CXX" 41 preset_cxx="$CXX"
43 if test -z "$CXX" 42 if test -z "$CXX"
44 then 43 then
45- case "$CC" in 44- case "$CC" in
46+ case "$cc_basename" in 45+ case "$cc_basename" in
47 gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;; 46 gcc) AC_PATH_TOOL([CXX], [g++], [g++], [notfound]) ;;
48 cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;; 47 cc) AC_PATH_TOOL([CXX], [c++], [c++], [notfound]) ;;
49 clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;; 48 clang|*/clang) AC_PATH_TOOL([CXX], [clang++], [clang++], [notfound]) ;;
50@@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir 49@@ -1328,7 +1329,7 @@ rmdir CaseSensitiveTestDir
51 50
52 case $ac_sys_system in 51 case $ac_sys_system in
53 hp*|HP*) 52 hp*|HP*)
@@ -56,16 +55,16 @@ index d60f052..e491e24 100644
56 cc|*/cc) CC="$CC -Ae";; 55 cc|*/cc) CC="$CC -Ae";;
57 esac;; 56 esac;;
58 esac 57 esac
59@@ -1366,7 +1367,7 @@ else 58@@ -1854,7 +1855,7 @@ esac
60 fi], 59 ],
61 [AC_MSG_RESULT(no)]) 60 [AC_MSG_RESULT([no])])
62 if test "$Py_LTO" = 'true' ; then 61 if test "$Py_LTO" = 'true' ; then
63- case $CC in 62- case $CC in
64+ case $cc_basename in 63+ case $cc_basename in
65 *clang*) 64 *clang*)
66 AC_SUBST(LLVM_AR) 65 LDFLAGS_NOLTO="-fno-lto"
67 AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path}) 66 dnl Clang linker requires -flto in order to link objects with LTO information.
68@@ -1456,7 +1457,7 @@ then 67@@ -1983,7 +1984,7 @@ then
69 fi 68 fi
70 fi 69 fi
71 LLVM_PROF_ERR=no 70 LLVM_PROF_ERR=no
@@ -74,7 +73,7 @@ index d60f052..e491e24 100644
74 *clang*) 73 *clang*)
75 # Any changes made here should be reflected in the GCC+Darwin case below 74 # Any changes made here should be reflected in the GCC+Darwin case below
76 PGO_PROF_GEN_FLAG="-fprofile-instr-generate" 75 PGO_PROF_GEN_FLAG="-fprofile-instr-generate"
77@@ -1517,7 +1518,7 @@ esac 76@@ -2147,7 +2148,7 @@ AC_MSG_RESULT([$BOLT_APPLY_FLAGS])
78 # compiler and platform. BASECFLAGS tweaks need to be made even if the 77 # compiler and platform. BASECFLAGS tweaks need to be made even if the
79 # user set OPT. 78 # user set OPT.
80 79
@@ -83,25 +82,25 @@ index d60f052..e491e24 100644
83 *clang*) 82 *clang*)
84 cc_is_clang=1 83 cc_is_clang=1
85 ;; 84 ;;
86@@ -1653,7 +1654,7 @@ yes) 85@@ -2419,7 +2420,7 @@ yes)
87 86
88 # ICC doesn't recognize the option, but only emits a warning 87 # ICC doesn't recognize the option, but only emits a warning
89 ## XXX does it emit an unused result warning and can it be disabled? 88 ## XXX does it emit an unused result warning and can it be disabled?
90- case "$CC" in 89- AS_CASE([$CC],
91+ case "$cc_basename" in 90+ AS_CASE([$cc_basename],
92 *icc*) 91 [*icc*], [ac_cv_disable_unused_result_warning=no]
93 ac_cv_disable_unused_result_warning=no 92 [PY_CHECK_CC_WARNING([disable], [unused-result])])
94 ;; 93 AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes],
95@@ -1993,7 +1994,7 @@ yes) 94@@ -2665,7 +2666,7 @@ yes)
96 ;; 95 ;;
97 esac 96 esac
98 97
99-case "$CC" in 98-case "$CC" in
100+case "$cc_basename" in 99+case "$cc_basename" in
101 *icc*) 100 *mpicc*)
102 # ICC needs -fp-model strict or floats behave badly 101 CFLAGS_NODIST="$CFLAGS_NODIST"
103 CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" 102 ;;
104@@ -2765,7 +2766,7 @@ then 103@@ -3482,7 +3483,7 @@ then
105 then 104 then
106 LINKFORSHARED="-Wl,--export-dynamic" 105 LINKFORSHARED="-Wl,--export-dynamic"
107 fi;; 106 fi;;
@@ -110,12 +109,12 @@ index d60f052..e491e24 100644
110 *gcc*) 109 *gcc*)
111 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null 110 if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null
112 then 111 then
113@@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then 112@@ -6803,7 +6804,7 @@ if test "$ac_cv_gcc_asm_for_x87" = yes; then
114 # Some versions of gcc miscompile inline asm: 113 # Some versions of gcc miscompile inline asm:
115 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 114 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491
116 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html 115 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html
117- case $CC in 116- case $CC in
118+ case $cc_basename in 117+ case $cc_basename in
119 *gcc*) 118 *gcc*)
120 AC_MSG_CHECKING(for gcc ipa-pure-const bug) 119 AC_MSG_CHECKING([for gcc ipa-pure-const bug])
121 saved_cflags="$CFLAGS" 120 saved_cflags="$CFLAGS"
diff --git a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch b/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
deleted file mode 100644
index ea0af02e72..0000000000
--- a/meta/recipes-devtools/python/python3/0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch
+++ /dev/null
@@ -1,69 +0,0 @@
1From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Thu, 9 Jan 2020 17:44:05 +0100
4Subject: [PATCH] setup.py: pass missing libraries to Extension for
5 multiprocessing module
6
7In the following commit:
8...
9commit e711cafab13efc9c1fe6c5cd75826401445eb585
10Author: Benjamin Peterson <benjamin@python.org>
11Date: Wed Jun 11 16:44:04 2008 +0000
12
13 Merged revisions 64104,64117 via svnmerge from
14 svn+ssh://pythondev@svn.python.org/python/trunk
15...
16(see diff in setup.py)
17It assigned libraries for multiprocessing module according
18the host_platform, but not pass it to Extension.
19
20In glibc, the following commit caused two definition of
21sem_getvalue are different.
22https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524
23(see diff in nptl/sem_getvalue.c for detail)
24`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1
25and `__old_sem_getvalue' is to compat the old version
26sem_getvalue@GLIBC_2.0.
27
28To build python for embedded Linux systems:
29http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html
30If not explicitly link to library pthread (-lpthread), it will
31load glibc's sem_getvalue randomly at runtime.
32
33Such as build python on linux x86_64 host and run the python
34on linux x86_32 target. If not link library pthread, it caused
35multiprocessing bounded semaphore could not work correctly.
36...
37>>> import multiprocessing
38>>> pool_sema = multiprocessing.BoundedSemaphore(value=1)
39>>> pool_sema.acquire()
40True
41>>> pool_sema.release()
42Traceback (most recent call last):
43 File "<stdin>", line 1, in <module>
44ValueError: semaphore or lock released too many times
45...
46
47And the semaphore issue also caused multiprocessing.Queue().put() hung.
48
49Upstream-Status: Pending
50
51Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
52Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
53---
54 setup.py | 2 +-
55 1 file changed, 1 insertion(+), 1 deletion(-)
56
57diff --git a/setup.py b/setup.py
58index ec3f2a4..b0f1541 100644
59--- a/setup.py
60+++ b/setup.py
61@@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext):
62 libraries=libs,
63 include_dirs=["Modules/_multiprocessing"]))
64
65- self.add(Extension('_multiprocessing', multiprocessing_srcs,
66+ self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'],
67 include_dirs=["Modules/_multiprocessing"]))
68
69 def detect_uuid(self):
diff --git a/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
new file mode 100644
index 0000000000..2d7bca6a77
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-skip-no_stdout_fileno-test-due-to-load-variability.patch
@@ -0,0 +1,29 @@
1From 217cea231462e7703e8c9ea39c0a6833f799a420 Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 15 Sep 2023 08:48:33 -0400
4Subject: [PATCH] skip no_stdout_fileno test due to load variability
5
6Skip test_input_no_stdout_fileno so that it doesn't fail on systems
7under heavy load.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #15210]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14---
15 Lib/test/test_builtin.py | 1 +
16 1 file changed, 1 insertion(+)
17
18diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
19index 4d03c46..b329b7a 100644
20--- a/Lib/test/test_builtin.py
21+++ b/Lib/test/test_builtin.py
22@@ -2326,6 +2326,7 @@ class PtyTests(unittest.TestCase):
23 # Check stdin/stdout error handler is used when invoking PyOS_Readline()
24 self.check_input_tty("prompté", b"quux\xe9", "ascii")
25
26+ @unittest.skip("Test may fail under heavy load")
27 def test_input_no_stdout_fileno(self):
28 # Issue #24402: If stdin is the original terminal but stdout.fileno()
29 # fails, do not use the original stdout file descriptor
diff --git a/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
new file mode 100644
index 0000000000..fc52fdac26
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch
@@ -0,0 +1,28 @@
1From a5d429a0e1a4809c1ded7be7e45dcabeb82c53d8 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 12 Sep 2021 21:44:36 +0200
4Subject: [PATCH] sysconfig.py: use platlibdir also for purelib
5
6This is needed in multilib configurations where hardcoding 'lib'
7is not correct.
8
9Upstream-Status: Inappropriate [oe-core specific]
10Signed-off-by: Alexander Kanavin <alex@linutronix.de>
11
12---
13 Lib/sysconfig.py | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
17index 122d441..79c0510 100644
18--- a/Lib/sysconfig.py
19+++ b/Lib/sysconfig.py
20@@ -28,7 +28,7 @@ _INSTALL_SCHEMES = {
21 'posix_prefix': {
22 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}',
23 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}',
24- 'purelib': '{base}/lib/python{py_version_short}/site-packages',
25+ 'purelib': '{base}/{platlibdir}/python{py_version_short}/site-packages',
26 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages',
27 'include':
28 '{installed_base}/include/python{py_version_short}{abiflags}',
diff --git a/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
new file mode 100644
index 0000000000..b4fe946cba
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch
@@ -0,0 +1,34 @@
1From b64c131a576a4b4f821514e711ab91b1394fb4ff Mon Sep 17 00:00:00 2001
2From: Tim Orling <timothy.t.orling@intel.com>
3Date: Fri, 18 Jun 2021 11:56:50 -0700
4Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk
5
6These tests need full packagegroup-core-buildessential, the
7easiest way to dynamically check for that is looking for
8'tools-sdk' in IMAGE_FEATURES.
9
10Upstream-Status: Inappropriate [oe-specific]
11
12Signed-off-by: Tim Orling <timothy.t.orling@intel.com>
13
14---
15 Lib/test/test_ctypes/test_find.py | 2 ++
16 1 file changed, 2 insertions(+)
17
18diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py
19index 1ff9d01..59def26 100644
20--- a/Lib/test/test_ctypes/test_find.py
21+++ b/Lib/test/test_ctypes/test_find.py
22@@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase):
23 # LD_LIBRARY_PATH)
24 self.assertEqual(find_library(libname), 'lib%s.so' % libname)
25
26+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
27 def test_find_library_with_gcc(self):
28 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
29 self.assertNotEqual(find_library('c'), None)
30
31+ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"")
32 def test_find_library_with_ld(self):
33 with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
34 unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
index 35b7e0c480..410a9fc7f1 100644
--- a/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
+++ b/meta/recipes-devtools/python/python3/0001-test_locale.py-correct-the-test-output-format.patch
@@ -1,4 +1,4 @@
1From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001 1From ef5728f0af14da5c9f80b0f038fe5bf6d44cb0e9 Mon Sep 17 00:00:00 2001
2From: Mingli Yu <mingli.yu@windriver.com> 2From: Mingli Yu <mingli.yu@windriver.com>
3Date: Mon, 5 Aug 2019 15:57:39 +0800 3Date: Mon, 5 Aug 2019 15:57:39 +0800
4Subject: [PATCH] test_locale.py: correct the test output format 4Subject: [PATCH] test_locale.py: correct the test output format
@@ -23,24 +23,24 @@ Before this patch:
23 23
24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] 24Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132]
25 25
26Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org>
27
26Signed-off-by: Mingli Yu <mingli.yu@windriver.com> 28Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
29
27--- 30---
28 Lib/test/test_locale.py | 2 +- 31 Lib/test/test_locale.py | 2 +-
29 1 file changed, 1 insertion(+), 1 deletion(-) 32 1 file changed, 1 insertion(+), 1 deletion(-)
30 33
31diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py 34diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
32index e2c2178..558d63c 100644 35index b0d7998..cb12153 100644
33--- a/Lib/test/test_locale.py 36--- a/Lib/test/test_locale.py
34+++ b/Lib/test/test_locale.py 37+++ b/Lib/test/test_locale.py
35@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): 38@@ -557,7 +557,7 @@ class TestMiscellaneous(unittest.TestCase):
36 self.skipTest('test needs Turkish locale') 39 self.skipTest('test needs Turkish locale')
37 loc = locale.getlocale(locale.LC_CTYPE) 40 loc = locale.getlocale(locale.LC_CTYPE)
38 if verbose: 41 if verbose:
39- print('testing with %a' % (loc,), end=' ', flush=True) 42- print('testing with %a' % (loc,), end=' ', flush=True)
40+ print('testing with %a...' % (loc,), end=' ', flush=True) 43+ print('testing with %a...' % (loc,), end=' ', flush=True)
41 locale.setlocale(locale.LC_CTYPE, loc) 44 try:
42 self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) 45 locale.setlocale(locale.LC_CTYPE, loc)
43 46 except locale.Error as exc:
44--
452.7.4
46
diff --git a/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
new file mode 100644
index 0000000000..0d0eb08459
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -0,0 +1,30 @@
1From dc69a1afdb3ba619705ff71e14f19ed3142e422f Mon Sep 17 00:00:00 2001
2From: Trevor Gamblin <tgamblin@baylibre.com>
3Date: Fri, 6 Oct 2023 10:59:44 -0400
4Subject: [PATCH] test_storlines: skip due to load variability
5
6This is yet another test that intermittently fails on the Yocto AB when
7a worker is under heavy load, so skip it during testing.
8
9Upstream-Status: Inappropriate [OE-Specific]
10
11[YOCTO #14933]
12
13Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
14
15---
16 Lib/test/test_ftplib.py | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
20index 2f191ea..dc29346 100644
21--- a/Lib/test/test_ftplib.py
22+++ b/Lib/test/test_ftplib.py
23@@ -626,6 +626,7 @@ class TestFTPClass(TestCase):
24 self.client.storbinary('stor', f, rest=r)
25 self.assertEqual(self.server.handler_instance.rest, str(r))
26
27+ @unittest.skip('timing related test, dependent on load')
28 def test_storlines(self):
29 data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
30 f = io.BytesIO(data)
diff --git a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch b/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
deleted file mode 100644
index 5c620361da..0000000000
--- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch
+++ /dev/null
@@ -1,32 +0,0 @@
1From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com>
3Date: Mon, 7 Oct 2019 13:22:14 +0200
4Subject: [PATCH] setup.py: do not report missing dependencies for disabled
5 modules
6
7Reporting those missing dependencies is misleading as the modules would not
8have been built anyway. This particularly matters in oe-core's automated
9build completeness checker which relies on the report.
10
11Upstream-Status: Inappropriate [oe-core specific]
12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
13
14---
15 setup.py | 4 ++++
16 1 file changed, 4 insertions(+)
17
18diff --git a/setup.py b/setup.py
19index 7691258..ec3f2a4 100644
20--- a/setup.py
21+++ b/setup.py
22@@ -408,6 +408,10 @@ class PyBuildExt(build_ext):
23 print("%-*s %-*s %-*s" % (longest, e, longest, f,
24 longest, g))
25
26+ # There is no need to report missing module dependencies,
27+ # if the modules have been disabled in the first place.
28+ self.missing = list(set(self.missing) - set(mods_disabled))
29+
30 if self.missing:
31 print()
32 print("Python build finished successfully!")
diff --git a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
index e04a91605c..0661249bfd 100644
--- a/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
+++ b/meta/recipes-devtools/python/python3/0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch
@@ -1,8 +1,7 @@
1From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001 1From d0205c60d08f51d84bd8ddc07a57e8c71710fdad Mon Sep 17 00:00:00 2001
2From: Alexander Kanavin <alex.kanavin@gmail.com> 2From: Alexander Kanavin <alex@linutronix.de>
3Date: Sun, 16 Feb 2020 17:50:25 +0100 3Date: Fri, 17 Nov 2023 14:16:40 +0100
4Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from 4Subject: [PATCH] configure.ac: do not add a curses include path from the host
5 the host
6 5
7This leads to host contamination, and particularly can cause 6This leads to host contamination, and particularly can cause
8curses modules to fail at runtime if the host curses is configured 7curses modules to fail at runtime if the host curses is configured
@@ -13,16 +12,15 @@ Upstream-Status: Inappropriate [oe-core specific]
13Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 12Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
14--- 13---
15 configure.ac | 6 ------ 14 configure.ac | 6 ------
16 setup.py | 2 -- 15 1 file changed, 6 deletions(-)
17 2 files changed, 8 deletions(-)
18 16
19diff --git a/configure.ac b/configure.ac 17diff --git a/configure.ac b/configure.ac
20index 915f475..c911011 100644 18index c49cd4f..affdedf 100644
21--- a/configure.ac 19--- a/configure.ac
22+++ b/configure.ac 20+++ b/configure.ac
23@@ -4828,12 +4828,6 @@ then 21@@ -6508,12 +6508,6 @@ AS_VAR_IF([have_panel], [no], [
24 [Define if you have struct stat.st_mtimensec]) 22 AC_MSG_RESULT([$have_panel (CFLAGS: $PANEL_CFLAGS, LIBS: $PANEL_LIBS)])
25 fi 23 ])
26 24
27-# first curses header check 25-# first curses header check
28-ac_save_cppflags="$CPPFLAGS" 26-ac_save_cppflags="$CPPFLAGS"
@@ -30,19 +28,6 @@ index 915f475..c911011 100644
30- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" 28- CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw"
31-fi 29-fi
32- 30-
33 AC_CHECK_HEADERS(curses.h ncurses.h)
34
35 # On Solaris, term.h requires curses.h 31 # On Solaris, term.h requires curses.h
36diff --git a/setup.py b/setup.py 32 AC_CHECK_HEADERS([term.h], [], [], [
37index b0f1541..7208cd0 100644 33 #ifdef HAVE_CURSES_H
38--- a/setup.py
39+++ b/setup.py
40@@ -973,8 +973,6 @@ class PyBuildExt(build_ext):
41 panel_library = 'panel'
42 if curses_library == 'ncursesw':
43 curses_defines.append(('HAVE_NCURSESW', '1'))
44- if not CROSS_COMPILING:
45- curses_includes.append('/usr/include/ncursesw')
46 # Bug 1464056: If _curses.so links with ncursesw,
47 # _curses_panel.so must link with panelw.
48 panel_library = 'panelw'
diff --git a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch b/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
deleted file mode 100644
index 5a39cf8933..0000000000
--- a/meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch
+++ /dev/null
@@ -1,60 +0,0 @@
1From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 14 May 2013 15:00:26 -0700
4Subject: [PATCH 1/2] python3: Add target and native recipes
5
6Upstream-Status: Inappropriate [embedded specific]
7
802/2015 Rebased for Python 3.4.2
9
10The proper prefix is inside our staging area.
11Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de>
12Signed-off-by: Phil Blundell <philb@gnu.org>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
15---
16 Lib/distutils/sysconfig.py | 14 +++++++++++---
17 1 file changed, 11 insertions(+), 3 deletions(-)
18
19diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
20index 4774e12..ccf7d58 100644
21--- a/Lib/distutils/sysconfig.py
22+++ b/Lib/distutils/sysconfig.py
23@@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None):
24 If 'prefix' is supplied, use it instead of sys.base_prefix or
25 sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
26 """
27- if prefix is None:
28+ if prefix is None and os.environ.get('STAGING_INCDIR', ""):
29+ prefix = os.environ['STAGING_INCDIR'].rstrip('include')
30+ elif prefix is None:
31 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
32 if os.name == "posix":
33 if python_build:
34@@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
35 If 'prefix' is supplied, use it instead of sys.base_prefix or
36 sys.base_exec_prefix -- i.e., ignore 'plat_specific'.
37 """
38- if prefix is None:
39+ if os.environ.get('STAGING_LIBDIR', ""):
40+ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1]
41+ else:
42+ lib_basename = "lib"
43+ if prefix is None and os.environ.get('STAGING_LIBDIR', ""):
44+ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename)
45+ elif prefix is None:
46 if standard_lib:
47 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX
48 else:
49@@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
50 else:
51 # Pure Python
52 libdir = "lib"
53- libpython = os.path.join(prefix, libdir,
54+ libpython = os.path.join(prefix, lib_basename,
55 "python" + get_python_version())
56 if standard_lib:
57 return libpython
58--
592.24.0
60
diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
deleted file mode 100644
index 184540e794..0000000000
--- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch
+++ /dev/null
@@ -1,31 +0,0 @@
1From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001
2From: Andrei Gherzan <andrei@gherzan.ro>
3Date: Mon, 28 Jan 2019 15:57:54 +0000
4Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet
5 integrated in yocto so we skip the check for this module. Avoid a warning by
6 not adding this module to missing variable.
7
8Upstream-Status: Inappropriate [distribution]
9
10Also simply disable the tk module since its not in DEPENDS.
11Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
12
13---
14 setup.py | 4 ++--
15 1 file changed, 2 insertions(+), 2 deletions(-)
16
17diff --git a/setup.py b/setup.py
18index ab18ff0..7691258 100644
19--- a/setup.py
20+++ b/setup.py
21@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext):
22 self.detect_decimal()
23 self.detect_ctypes()
24 self.detect_multiprocessing()
25- if not self.detect_tkinter():
26- self.missing.append('_tkinter')
27+# if not self.detect_tkinter():
28+# self.missing.append('_tkinter')
29 self.detect_uuid()
30
31 ## # Uncomment these lines if you want to play with xxmodule.c
diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch
index 6c4ba54320..8262c88e73 100644
--- a/meta/recipes-devtools/python/python3/cgi_py.patch
+++ b/meta/recipes-devtools/python/python3/cgi_py.patch
@@ -1,4 +1,4 @@
1From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001 1From a56778372fe8dc7c42f5ffd911d89498c22dd064 Mon Sep 17 00:00:00 2001
2From: Mark Hatle <mark.hatle@windriver.com> 2From: Mark Hatle <mark.hatle@windriver.com>
3Date: Wed, 21 Sep 2011 20:55:33 -0500 3Date: Wed, 21 Sep 2011 20:55:33 -0500
4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment 4Subject: [PATCH] Lib/cgi.py: Update the script as mentioned in the comment
@@ -12,7 +12,7 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
12 1 file changed, 1 insertion(+), 10 deletions(-) 12 1 file changed, 1 insertion(+), 10 deletions(-)
13 13
14diff --git a/Lib/cgi.py b/Lib/cgi.py 14diff --git a/Lib/cgi.py b/Lib/cgi.py
15index 8cf6687..094c7b4 100755 15index 8787567..ebe8652 100755
16--- a/Lib/cgi.py 16--- a/Lib/cgi.py
17+++ b/Lib/cgi.py 17+++ b/Lib/cgi.py
18@@ -1,13 +1,4 @@ 18@@ -1,13 +1,4 @@
diff --git a/meta/recipes-devtools/python/python3/create_manifest3.py b/meta/recipes-devtools/python/python3/create_manifest3.py
index 4da02a2991..045240ea0b 100644
--- a/meta/recipes-devtools/python/python3/create_manifest3.py
+++ b/meta/recipes-devtools/python/python3/create_manifest3.py
@@ -36,7 +36,7 @@
36# Tha method to handle cached files does not work when a module includes a folder which 36# Tha method to handle cached files does not work when a module includes a folder which
37# itself contains the pycache folder, gladly this is almost never the case. 37# itself contains the pycache folder, gladly this is almost never the case.
38# 38#
39# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com> 39# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
40 40
41 41
42import sys 42import sys
@@ -45,6 +45,11 @@ import json
45import os 45import os
46import collections 46import collections
47 47
48if '-d' in sys.argv:
49 debugFlag = '-d'
50else:
51 debugFlag = ''
52
48# Get python version from ${PYTHON_MAJMIN} 53# Get python version from ${PYTHON_MAJMIN}
49pyversion = str(sys.argv[1]) 54pyversion = str(sys.argv[1])
50 55
@@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest):
84 manifest.seek(0, 0) 89 manifest.seek(0, 0)
85 manifest.write(comments + json_contents) 90 manifest.write(comments + json_contents)
86 91
92def print_indent(msg, offset):
93 for l in msg.splitlines():
94 msg = ' ' * offset + l
95 print(msg)
96
97
87# Read existing JSON manifest 98# Read existing JSON manifest
88with open('python3-manifest.json') as manifest: 99with open('python3-manifest.json') as manifest:
89 # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker 100 # The JSON format doesn't allow comments so we hack the call to keep the comments using a marker
@@ -99,7 +110,7 @@ with open('python3-manifest.json') as manifest:
99# Not exactly the same so it should not be a function 110# Not exactly the same so it should not be a function
100# 111#
101 112
102print ('Getting dependencies for package: core') 113print_indent('Getting dependencies for package: core', 0)
103 114
104 115
105# This special call gets the core dependencies and 116# This special call gets the core dependencies and
@@ -109,7 +120,7 @@ print ('Getting dependencies for package: core')
109# on the new core package, they will still find them 120# on the new core package, they will still find them
110# even when checking the old_manifest 121# even when checking the old_manifest
111 122
112output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') 123output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8')
113for coredep in output.split(): 124for coredep in output.split():
114 coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') 125 coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}')
115 if isCached(coredep): 126 if isCached(coredep):
@@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']:
149 # Get actual module name , shouldnt be affected by libdir/bindir, etc. 160 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
150 pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] 161 pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0]
151 162
152
153 # We now know that were dealing with a python module, so we can import it 163 # We now know that were dealing with a python module, so we can import it
154 # and check what its dependencies are. 164 # and check what its dependencies are.
155 # We launch a separate task for each module for deterministic behavior. 165 # We launch a separate task for each module for deterministic behavior.
156 # Each module will only import what is necessary for it to work in specific. 166 # Each module will only import what is necessary for it to work in specific.
157 # The output of each task will contain each module's dependencies 167 # The output of each task will contain each module's dependencies
158 168
159 print ('Getting dependencies for module: %s' % pymodule) 169 print_indent('Getting dependencies for module: %s' % pymodule, 2)
160 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') 170 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
161 print ('The following dependencies were found for module %s:\n' % pymodule) 171 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
162 print (output) 172 print_indent(output, 6)
163 173
164 174
165 for pymodule_dep in output.split(): 175 for pymodule_dep in output.split():
@@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']:
178# all others will use this a base. 188# all others will use this a base.
179 189
180 190
191print('\n\nChecking for directories...\n')
181# To improve the script speed, we check which packages contain directories 192# To improve the script speed, we check which packages contain directories
182# since we will be looping through (only) those later. 193# since we will be looping through (only) those later.
183for pypkg in old_manifest: 194for pypkg in old_manifest:
184 for filedep in old_manifest[pypkg]['files']: 195 for filedep in old_manifest[pypkg]['files']:
185 if isFolder(filedep): 196 if isFolder(filedep):
186 print ('%s is a folder' % filedep) 197 print_indent('%s is a directory' % filedep, 2)
187 if pypkg not in hasfolders: 198 if pypkg not in hasfolders:
188 hasfolders.append(pypkg) 199 hasfolders.append(pypkg)
189 if filedep not in allfolders: 200 if filedep not in allfolders:
@@ -221,14 +232,14 @@ for pypkg in old_manifest:
221 232
222 print('\n') 233 print('\n')
223 print('--------------------------') 234 print('--------------------------')
224 print ('Handling package %s' % pypkg) 235 print('Handling package %s' % pypkg)
225 print('--------------------------') 236 print('--------------------------')
226 237
227 # Handle special cases, we assume that when they were manually added 238 # Handle special cases, we assume that when they were manually added
228 # to the manifest we knew what we were doing. 239 # to the manifest we knew what we were doing.
229 special_packages = ['misc', 'modules', 'dev', 'tests'] 240 special_packages = ['misc', 'modules', 'dev', 'tests']
230 if pypkg in special_packages or 'staticdev' in pypkg: 241 if pypkg in special_packages or 'staticdev' in pypkg:
231 print('Passing %s package directly' % pypkg) 242 print_indent('Passing %s package directly' % pypkg, 2)
232 new_manifest[pypkg] = old_manifest[pypkg] 243 new_manifest[pypkg] = old_manifest[pypkg]
233 continue 244 continue
234 245
@@ -259,7 +270,7 @@ for pypkg in old_manifest:
259 270
260 # Get actual module name , shouldnt be affected by libdir/bindir, etc. 271 # Get actual module name , shouldnt be affected by libdir/bindir, etc.
261 # We need to check if the imported module comes from another (e.g. sqlite3.dump) 272 # We need to check if the imported module comes from another (e.g. sqlite3.dump)
262 path,pymodule = os.path.split(filedep) 273 path, pymodule = os.path.split(filedep)
263 path = os.path.basename(path) 274 path = os.path.basename(path)
264 pymodule = os.path.splitext(os.path.basename(pymodule))[0] 275 pymodule = os.path.splitext(os.path.basename(pymodule))[0]
265 276
@@ -279,10 +290,10 @@ for pypkg in old_manifest:
279 # Each module will only import what is necessary for it to work in specific. 290 # Each module will only import what is necessary for it to work in specific.
280 # The output of each task will contain each module's dependencies 291 # The output of each task will contain each module's dependencies
281 292
282 print ('\nGetting dependencies for module: %s' % pymodule) 293 print_indent('\nGetting dependencies for module: %s' % pymodule, 2)
283 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') 294 output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8')
284 print ('The following dependencies were found for module %s:\n' % pymodule) 295 print_indent('The following dependencies were found for module %s:\n' % pymodule, 4)
285 print (output) 296 print_indent(output, 6)
286 297
287 reportFILES = [] 298 reportFILES = []
288 reportRDEPS = [] 299 reportRDEPS = []
@@ -325,7 +336,7 @@ for pypkg in old_manifest:
325 # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) 336 # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder))
326 for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: 337 for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']:
327 if folder_dep == folder: 338 if folder_dep == folder:
328 print ('%s folder found in %s' % (folder, pypkg_with_folder)) 339 print ('%s directory found in %s' % (folder, pypkg_with_folder))
329 folderFound = True 340 folderFound = True
330 if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: 341 if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg:
331 new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) 342 new_manifest[pypkg]['rdepends'].append(pypkg_with_folder)
@@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new')
424 435
425if (repeated): 436if (repeated):
426 error_msg = '\n\nERROR:\n' 437 error_msg = '\n\nERROR:\n'
427 error_msg += 'The following files are repeated (contained in more than one package),\n' 438 error_msg += 'The following files were found in more than one package),\n'
428 error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' 439 error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n'
429 error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' 440 error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n'
430 error_msg += '\n'.join(repeated) 441 error_msg += '\n'.join(repeated)
diff --git a/meta/recipes-devtools/python/python3/crosspythonpath.patch b/meta/recipes-devtools/python/python3/crosspythonpath.patch
index d789ab57d4..2c4aef0511 100644
--- a/meta/recipes-devtools/python/python3/crosspythonpath.patch
+++ b/meta/recipes-devtools/python/python3/crosspythonpath.patch
@@ -1,4 +1,8 @@
1configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD 1From 5b66463c10fec1440e977d5a21a0167862d6d79c Mon Sep 17 00:00:00 2001
2From: Ricardo Ribalda <ricardo@ribalda.com>
3Date: Tue, 18 Nov 2014 03:35:33 -0500
4Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for
5 PYTHON_FOR_BUILD
2 6
3When building x86->x86 the system will try to execute .so and related items 7When building x86->x86 the system will try to execute .so and related items
4from the default PYTHONPATH. This will fail if the target CPU contains 8from the default PYTHONPATH. This will fail if the target CPU contains
@@ -10,16 +14,21 @@ Upstream-Status: Inappropriate [OE-Core integration specific]
10Credits-to: Mark Hatle <mark.hatle@windriver.com> 14Credits-to: Mark Hatle <mark.hatle@windriver.com>
11Credits-to: Jackie Huang <jackie.huang@windriver.com> 15Credits-to: Jackie Huang <jackie.huang@windriver.com>
12Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> 16Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com>
17
18---
19 configure.ac | 2 +-
20 1 file changed, 1 insertion(+), 1 deletion(-)
21
13diff --git a/configure.ac b/configure.ac 22diff --git a/configure.ac b/configure.ac
14index 4ab19a6..7036a53 100644 23index cb9e198..d81c19a 100644
15--- a/configure.ac 24--- a/configure.ac
16+++ b/configure.ac 25+++ b/configure.ac
17@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then 26@@ -165,7 +165,7 @@ AC_ARG_WITH([build-python],
18 AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) 27 dnl Build Python interpreter is used for regeneration and freezing.
19 fi 28 ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python
20 AC_MSG_RESULT($interp) 29 PYTHON_FOR_FREEZE="$with_build_python"
21- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp 30- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
22+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$interp 31+ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(CROSSPYTHONPATH):$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH) '$with_build_python
23 fi 32 AC_MSG_RESULT([$with_build_python])
24 elif test "$cross_compiling" = maybe; then 33 ], [
25 AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH]) 34 AS_VAR_IF([cross_compiling], [yes],
diff --git a/meta/recipes-devtools/python/python3/deterministic_imports.patch b/meta/recipes-devtools/python/python3/deterministic_imports.patch
new file mode 100644
index 0000000000..104df94964
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/deterministic_imports.patch
@@ -0,0 +1,40 @@
1From 039d5e652796b55f1132afa568c7432b6ed89afd Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Fri, 27 May 2022 17:05:44 +0100
4Subject: [PATCH] python3: Ensure stale empty python module directories don't
5
6There are two issues here. Firstly, the modules are accessed in on disk order. This
7means behaviour seen on one system might not reproduce on another and is a real headache.
8
9Secondly, empty directories left behind by previous modules might be looked at. This
10has caused a long string of different issues for us.
11
12As a result, patch this to a behaviour which works for us.
13
14Upstream-Status: Pending [need to talk to upstream to see if they'll take one or both fixes]
15Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
16
17---
18 Lib/importlib/metadata/__init__.py | 9 ++++++++-
19 1 file changed, 8 insertions(+), 1 deletion(-)
20
21diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
22index 82e0ce1..969cac4 100644
23--- a/Lib/importlib/metadata/__init__.py
24+++ b/Lib/importlib/metadata/__init__.py
25@@ -710,7 +710,14 @@ class Lookup:
26 self.infos = FreezableDefaultDict(list)
27 self.eggs = FreezableDefaultDict(list)
28
29- for child in path.children():
30+ for child in sorted(path.children()):
31+ childpath = pathlib.Path(path.root, child)
32+ try:
33+ if childpath.is_dir() and not any(childpath.iterdir()):
34+ # Empty directories aren't interesting
35+ continue
36+ except PermissionError:
37+ continue
38 low = child.lower()
39 if low.endswith((".dist-info", ".egg-info")):
40 # rpartition is faster than splitext and suitable for this purpose.
diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py
index 6806f23172..8e432b49af 100644
--- a/meta/recipes-devtools/python/python3/get_module_deps3.py
+++ b/meta/recipes-devtools/python/python3/get_module_deps3.py
@@ -3,14 +3,18 @@
3# them out, the output of this execution will have all dependencies 3# them out, the output of this execution will have all dependencies
4# for a specific module, which will be parsed an dealt on create_manifest.py 4# for a specific module, which will be parsed an dealt on create_manifest.py
5# 5#
6# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> 6# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org>
7 7
8# We can get a log per module, for all the dependencies that were found, but its messy.
9debug=False
10 8
11import sys 9import sys
12import os 10import os
13 11
12# We can get a log per module, for all the dependencies that were found, but its messy.
13if '-d' in sys.argv:
14 debug = True
15else:
16 debug = False
17
14# We can get a list of the modules which are currently required to run python 18# We can get a list of the modules which are currently required to run python
15# so we run python-core and get its modules, we then import what we need 19# so we run python-core and get its modules, we then import what we need
16# and check what modules are currently running, if we substract them from the 20# and check what modules are currently running, if we substract them from the
@@ -19,16 +23,16 @@ import os
19# We use importlib to achieve this, so we also need to know what modules importlib needs 23# We use importlib to achieve this, so we also need to know what modules importlib needs
20import importlib 24import importlib
21 25
22core_deps=set(sys.modules) 26core_deps = set(sys.modules)
23 27
24def fix_path(dep_path): 28def fix_path(dep_path):
25 import os 29 import os
26 # We DONT want the path on our HOST system 30 # We DONT want the path on our HOST system
27 pivot='recipe-sysroot-native' 31 pivot = 'recipe-sysroot-native'
28 dep_path=dep_path[dep_path.find(pivot)+len(pivot):] 32 dep_path = dep_path[dep_path.find(pivot)+len(pivot):]
29 33
30 if '/usr/bin' in dep_path: 34 if '/usr/bin' in dep_path:
31 dep_path = dep_path.replace('/usr/bin''${bindir}') 35 dep_path = dep_path.replace('/usr/bin','${bindir}')
32 36
33 # Handle multilib, is there a better way? 37 # Handle multilib, is there a better way?
34 if '/usr/lib32' in dep_path: 38 if '/usr/lib32' in dep_path:
@@ -46,13 +50,13 @@ def fix_path(dep_path):
46 50
47# Module to import was passed as an argument 51# Module to import was passed as an argument
48current_module = str(sys.argv[1]).rstrip() 52current_module = str(sys.argv[1]).rstrip()
49if(debug==True): 53if debug == True:
50 log = open('log_%s' % current_module,'w') 54 log = open('temp/log_%s' % current_module.strip('.*'),'w')
51 log.write('Module %s generated the following dependencies:\n' % current_module) 55 log.write('Module %s generated the following dependencies:\n' % current_module)
52try: 56try:
53 m = importlib.import_module(current_module) 57 m = importlib.import_module(current_module)
54 # handle python packages which may not include all modules in the __init__ 58 # handle python packages which may not include all modules in the __init__
55 if os.path.basename(m.__file__) == "__init__.py": 59 if hasattr(m, '__file__') and os.path.basename(m.__file__) == "__init__.py":
56 modulepath = os.path.dirname(m.__file__) 60 modulepath = os.path.dirname(m.__file__)
57 for i in os.listdir(modulepath): 61 for i in os.listdir(modulepath):
58 if i.startswith("_") or not(i.endswith(".py")): 62 if i.startswith("_") or not(i.endswith(".py")):
@@ -63,13 +67,13 @@ try:
63 except: 67 except:
64 pass # ignore all import or other exceptions raised during import 68 pass # ignore all import or other exceptions raised during import
65except ImportError as e: 69except ImportError as e:
66 if (debug==True): 70 if debug == True:
67 log.write('Module was not found') 71 log.write('Module was not found\n')
68 pass 72 pass
69 73
70 74
71# Get current module dependencies, dif will contain a list of specific deps for this module 75# Get current module dependencies, dif will contain a list of specific deps for this module
72module_deps=set(sys.modules) 76module_deps = set(sys.modules)
73 77
74# We handle the core package (1st pass on create_manifest.py) as a special case 78# We handle the core package (1st pass on create_manifest.py) as a special case
75if current_module == 'python-core-package': 79if current_module == 'python-core-package':
@@ -81,14 +85,18 @@ else:
81 85
82# Check where each dependency came from 86# Check where each dependency came from
83for item in dif: 87for item in dif:
84 dep_path='' 88 # Main module returns script filename, __main matches mp_main__ as well
89 if 'main__' in item:
90 continue
91
92 dep_path = ''
85 try: 93 try:
86 if (debug==True): 94 if debug == True:
87 log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') 95 log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n')
88 dep_path = sys.modules['%s' % item].__file__ 96 dep_path = sys.modules['%s' % item].__file__
89 except AttributeError as e: 97 except AttributeError as e:
90 # Deals with thread (builtin module) not having __file__ attribute 98 # Deals with thread (builtin module) not having __file__ attribute
91 if debug==True: 99 if debug == True:
92 log.write(item + ' ') 100 log.write(item + ' ')
93 log.write(str(e)) 101 log.write(str(e))
94 log.write('\n') 102 log.write('\n')
@@ -96,11 +104,16 @@ for item in dif:
96 except NameError as e: 104 except NameError as e:
97 # Deals with NameError: name 'dep_path' is not defined 105 # Deals with NameError: name 'dep_path' is not defined
98 # because module is not found (wasn't compiled?), e.g. bddsm 106 # because module is not found (wasn't compiled?), e.g. bddsm
99 if (debug==True): 107 if debug == True:
100 log.write(item+' ') 108 log.write(item+' ')
101 log.write(str(e)) 109 log.write(str(e))
102 pass 110 pass
103 111
112 if dep_path == '':
113 continue
114 if debug == True:
115 log.write('Dependency path found:\n%s\n' % dep_path)
116
104 # Site-customize is a special case since we (OpenEmbedded) put it there manually 117 # Site-customize is a special case since we (OpenEmbedded) put it there manually
105 if 'sitecustomize' in dep_path: 118 if 'sitecustomize' in dep_path:
106 dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' 119 dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py'
@@ -111,52 +124,51 @@ for item in dif:
111 dep_path = fix_path(dep_path) 124 dep_path = fix_path(dep_path)
112 125
113 import sysconfig 126 import sysconfig
114 soabi=sysconfig.get_config_var('SOABI') 127 soabi = sysconfig.get_config_var('SOABI')
115 # Check if its a shared library and deconstruct it 128 # Check if its a shared library and deconstruct it
116 if soabi in dep_path: 129 if soabi in dep_path:
117 if (debug==True): 130 if debug == True:
118 log.write('Shared library found in %s' % dep_path) 131 log.write('Shared library found in %s\n' % dep_path)
119 dep_path = dep_path.replace(soabi,'*') 132 dep_path = dep_path.replace(soabi,'*')
120 print (dep_path) 133 print (dep_path)
121 continue 134 continue
122 if "_sysconfigdata" in dep_path: 135 if "_sysconfigdata" in dep_path:
123 dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") 136 dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
124 137
125 if (debug==True): 138 if debug == True:
126 log.write(dep_path+'\n') 139 log.write(dep_path+'\n')
127 # Prints out result, which is what will be used by create_manifest 140 # Prints out result, which is what will be used by create_manifest
128 print (dep_path) 141 print (dep_path)
129 142
130 143
131 import imp 144 cpython_tag = sys.implementation.cache_tag
132 cpython_tag = imp.get_tag() 145 cached = ''
133 cached=''
134 # Theres no naive way to find *.pyc files on python3 146 # Theres no naive way to find *.pyc files on python3
135 try: 147 try:
136 if (debug==True): 148 if debug == True:
137 log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') 149 log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n')
138 cached = sys.modules['%s' % item].__cached__ 150 cached = sys.modules['%s' % item].__cached__
139 except AttributeError as e: 151 except AttributeError as e:
140 # Deals with thread (builtin module) not having __cached__ attribute 152 # Deals with thread (builtin module) not having __cached__ attribute
141 if debug==True: 153 if debug == True:
142 log.write(item + ' ') 154 log.write(item + ' ')
143 log.write(str(e)) 155 log.write(str(e))
144 log.write('\n') 156 log.write('\n')
145 pass 157 pass
146 except NameError as e: 158 except NameError as e:
147 # Deals with NameError: name 'cached' is not defined 159 # Deals with NameError: name 'cached' is not defined
148 if (debug==True): 160 if debug == True:
149 log.write(item+' ') 161 log.write(item+' ')
150 log.write(str(e)) 162 log.write(str(e))
151 pass 163 pass
152 if cached is not None: 164 if cached is not None:
153 if (debug==True): 165 if debug == True:
154 log.write(cached) 166 log.write(cached + '\n')
155 cached = fix_path(cached) 167 cached = fix_path(cached)
156 cached = cached.replace(cpython_tag,'*') 168 cached = cached.replace(cpython_tag,'*')
157 if "_sysconfigdata" in cached: 169 if "_sysconfigdata" in cached:
158 cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") 170 cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*")
159 print (cached) 171 print (cached)
160 172
161if debug==True: 173if debug == True:
162 log.close() 174 log.close()
diff --git a/meta/recipes-devtools/python/python3/makerace.patch b/meta/recipes-devtools/python/python3/makerace.patch
new file mode 100644
index 0000000000..c1b20703e6
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/makerace.patch
@@ -0,0 +1,31 @@
1From 9f827c29adbe656af3c8fc963fdd8f47aec0c442 Mon Sep 17 00:00:00 2001
2From: Richard Purdie <richard.purdie@linuxfoundation.org>
3Date: Tue, 13 Jul 2021 23:19:29 +0100
4Subject: [PATCH] python3: Fix make race
5
6libainstall installs python-config.py but the .pyc cache files are generated
7by the libinstall target. This means some builds may not generate the pyc files
8for python-config.py depending on the order things happen in. This means builds
9are not always reproducible.
10
11Add a dependency to avoid the race.
12
13Upstream-Status: Pending
14Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
15---
16 Makefile.pre.in | 2 +-
17 1 file changed, 1 insertion(+), 1 deletion(-)
18
19diff --git a/Makefile.pre.in b/Makefile.pre.in
20index 381feb0..77bf09a 100644
21--- a/Makefile.pre.in
22+++ b/Makefile.pre.in
23@@ -2250,7 +2250,7 @@ COMPILEALL_OPTS=-j0
24 TEST_MODULES=@TEST_MODULES@
25
26 .PHONY: libinstall
27-libinstall: all $(srcdir)/Modules/xxmodule.c
28+libinstall: all $(srcdir)/Modules/xxmodule.c libainstall
29 @for i in $(SCRIPTDIR) $(LIBDEST); \
30 do \
31 if test ! -d $(DESTDIR)$$i; then \
diff --git a/meta/recipes-devtools/python/python3/python-config.patch b/meta/recipes-devtools/python/python3/python-config.patch
deleted file mode 100644
index d0ddbbc7fd..0000000000
--- a/meta/recipes-devtools/python/python3/python-config.patch
+++ /dev/null
@@ -1,54 +0,0 @@
1From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001
2From: Tyler Hall <tylerwhall@gmail.com>
3Date: Sun, 4 May 2014 20:06:43 -0400
4Subject: [PATCH] python-config: Revert to using distutils.sysconfig
5
6The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in
7
812-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig
9
10affect the native runtime as well as cross building. Use the old, patched
11implementation which returns paths in the staging directory and for the target,
12as appropriate.
13
14Upstream-Status: Inappropriate [Embedded Specific]
15
16Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
17:
18
19---
20 Misc/python-config.in | 10 +++++-----
21 1 file changed, 5 insertions(+), 5 deletions(-)
22
23diff --git a/Misc/python-config.in b/Misc/python-config.in
24index ebd99da..13e57ae 100644
25--- a/Misc/python-config.in
26+++ b/Misc/python-config.in
27@@ -6,7 +6,7 @@
28 import getopt
29 import os
30 import sys
31-import sysconfig
32+from distutils import sysconfig
33
34 valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
35 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir',
36@@ -35,14 +35,14 @@ if '--help' in opt_flags:
37
38 for opt in opt_flags:
39 if opt == '--prefix':
40- print(getvar('prefix'))
41+ print(sysconfig.PREFIX)
42
43 elif opt == '--exec-prefix':
44- print(getvar('exec_prefix'))
45+ print(sysconfig.EXEC_PREFIX)
46
47 elif opt in ('--includes', '--cflags'):
48- flags = ['-I' + sysconfig.get_path('include'),
49- '-I' + sysconfig.get_path('platinclude')]
50+ flags = ['-I' + sysconfig.get_python_inc(),
51+ '-I' + sysconfig.get_python_inc(plat_specific=True)]
52 if opt == '--cflags':
53 flags.extend(getvar('CFLAGS').split())
54 print(' '.join(flags))
diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json
index 615dc3a5e5..46092d4004 100644
--- a/meta/recipes-devtools/python/python3/python3-manifest.json
+++ b/meta/recipes-devtools/python/python3/python3-manifest.json
@@ -152,6 +152,23 @@
152 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" 152 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc"
153 ] 153 ]
154 }, 154 },
155 "cgitb": {
156 "summary": "Special exception handler for Python scripts",
157 "rdepends": [
158 "core",
159 "crypt",
160 "html",
161 "io",
162 "math",
163 "pydoc"
164 ],
165 "files": [
166 "${libdir}/python${PYTHON_MAJMIN}/cgitb.py"
167 ],
168 "cached": [
169 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgitb.*.pyc"
170 ]
171 },
155 "codecs": { 172 "codecs": {
156 "summary": "Python codec", 173 "summary": "Python codec",
157 "rdepends": [ 174 "rdepends": [
@@ -189,12 +206,12 @@
189 "files": [ 206 "files": [
190 "${libdir}/python${PYTHON_MAJMIN}/gzip.py", 207 "${libdir}/python${PYTHON_MAJMIN}/gzip.py",
191 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", 208 "${libdir}/python${PYTHON_MAJMIN}/tarfile.py",
192 "${libdir}/python${PYTHON_MAJMIN}/zipfile.py" 209 "${libdir}/python${PYTHON_MAJMIN}/zipfile",
210 "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path"
193 ], 211 ],
194 "cached": [ 212 "cached": [
195 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", 213 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc",
196 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc", 214 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc"
197 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc"
198 ] 215 ]
199 }, 216 },
200 "core": { 217 "core": {
@@ -232,6 +249,7 @@
232 "${libdir}/python${PYTHON_MAJMIN}/copy.py", 249 "${libdir}/python${PYTHON_MAJMIN}/copy.py",
233 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", 250 "${libdir}/python${PYTHON_MAJMIN}/copyreg.py",
234 "${libdir}/python${PYTHON_MAJMIN}/csv.py", 251 "${libdir}/python${PYTHON_MAJMIN}/csv.py",
252 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
235 "${libdir}/python${PYTHON_MAJMIN}/dis.py", 253 "${libdir}/python${PYTHON_MAJMIN}/dis.py",
236 "${libdir}/python${PYTHON_MAJMIN}/encodings", 254 "${libdir}/python${PYTHON_MAJMIN}/encodings",
237 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", 255 "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py",
@@ -246,6 +264,7 @@
246 "${libdir}/python${PYTHON_MAJMIN}/heapq.py", 264 "${libdir}/python${PYTHON_MAJMIN}/heapq.py",
247 "${libdir}/python${PYTHON_MAJMIN}/imp.py", 265 "${libdir}/python${PYTHON_MAJMIN}/imp.py",
248 "${libdir}/python${PYTHON_MAJMIN}/importlib", 266 "${libdir}/python${PYTHON_MAJMIN}/importlib",
267 "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py",
249 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", 268 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py",
250 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", 269 "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py",
251 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", 270 "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py",
@@ -253,6 +272,7 @@
253 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", 272 "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py",
254 "${libdir}/python${PYTHON_MAJMIN}/inspect.py", 273 "${libdir}/python${PYTHON_MAJMIN}/inspect.py",
255 "${libdir}/python${PYTHON_MAJMIN}/io.py", 274 "${libdir}/python${PYTHON_MAJMIN}/io.py",
275 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
256 "${libdir}/python${PYTHON_MAJMIN}/keyword.py", 276 "${libdir}/python${PYTHON_MAJMIN}/keyword.py",
257 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", 277 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so",
258 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", 278 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so",
@@ -266,6 +286,7 @@
266 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", 286 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so",
267 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", 287 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so",
268 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", 288 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so",
289 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so",
269 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", 290 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so",
270 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", 291 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so",
271 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", 292 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so",
@@ -290,7 +311,11 @@
290 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", 311 "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py",
291 "${libdir}/python${PYTHON_MAJMIN}/platform.py", 312 "${libdir}/python${PYTHON_MAJMIN}/platform.py",
292 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", 313 "${libdir}/python${PYTHON_MAJMIN}/posixpath.py",
293 "${libdir}/python${PYTHON_MAJMIN}/re.py", 314 "${libdir}/python${PYTHON_MAJMIN}/re",
315 "${libdir}/python${PYTHON_MAJMIN}/re/_casefix.py",
316 "${libdir}/python${PYTHON_MAJMIN}/re/_compiler.py",
317 "${libdir}/python${PYTHON_MAJMIN}/re/_constants.py",
318 "${libdir}/python${PYTHON_MAJMIN}/re/_parser.py",
294 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", 319 "${libdir}/python${PYTHON_MAJMIN}/reprlib.py",
295 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", 320 "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py",
296 "${libdir}/python${PYTHON_MAJMIN}/runpy.py", 321 "${libdir}/python${PYTHON_MAJMIN}/runpy.py",
@@ -319,6 +344,7 @@
319 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", 344 "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py",
320 "${libdir}/python${PYTHON_MAJMIN}/warnings.py", 345 "${libdir}/python${PYTHON_MAJMIN}/warnings.py",
321 "${libdir}/python${PYTHON_MAJMIN}/weakref.py", 346 "${libdir}/python${PYTHON_MAJMIN}/weakref.py",
347 "${libdir}/python${PYTHON_MAJMIN}/zipimport.py",
322 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" 348 "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]"
323 ], 349 ],
324 "cached": [ 350 "cached": [
@@ -343,6 +369,7 @@
343 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", 369 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc",
344 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", 370 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc",
345 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", 371 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc",
372 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
346 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", 373 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc",
347 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", 374 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc",
348 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", 375 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc",
@@ -354,6 +381,7 @@
354 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", 381 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc",
355 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", 382 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc",
356 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", 383 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc",
384 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
357 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", 385 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc",
358 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", 386 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc",
359 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", 387 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc",
@@ -400,9 +428,15 @@
400 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", 428 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc",
401 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", 429 "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc",
402 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", 430 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__",
431 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc",
403 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", 432 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc",
404 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", 433 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc",
405 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", 434 "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc",
435 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__",
436 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_casefix.*.pyc",
437 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_compiler.*.pyc",
438 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_constants.*.pyc",
439 "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_parser.*.pyc",
406 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", 440 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__",
407 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" 441 "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc"
408 ] 442 ]
@@ -422,9 +456,8 @@
422 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", 456 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so",
423 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", 457 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so",
424 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", 458 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so",
425 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so", 459 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so",
426 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so", 460 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so"
427 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so"
428 ], 461 ],
429 "cached": [ 462 "cached": [
430 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc", 463 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc",
@@ -519,8 +552,7 @@
519 "${libdir}/pkgconfig" 552 "${libdir}/pkgconfig"
520 ], 553 ],
521 "rdepends": [ 554 "rdepends": [
522 "core", 555 "core"
523 "distutils"
524 ], 556 ],
525 "summary": "Python development package" 557 "summary": "Python development package"
526 }, 558 },
@@ -536,27 +568,6 @@
536 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" 568 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc"
537 ] 569 ]
538 }, 570 },
539 "distutils-windows": {
540 "summary": "Python distribution utilities (Windows installer stubs)",
541 "rdepends": [
542 "core"
543 ],
544 "files": [],
545 "cached": []
546 },
547 "distutils": {
548 "summary": "Python Distribution Utilities",
549 "rdepends": [
550 "compression",
551 "core",
552 "email",
553 "stringold"
554 ],
555 "files": [
556 "${libdir}/python${PYTHON_MAJMIN}/distutils"
557 ],
558 "cached": []
559 },
560 "doctest": { 571 "doctest": {
561 "summary": "Python framework for running examples in docstrings", 572 "summary": "Python framework for running examples in docstrings",
562 "rdepends": [ 573 "rdepends": [
@@ -595,6 +606,16 @@
595 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" 606 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc"
596 ] 607 ]
597 }, 608 },
609 "ensurepip": {
610 "summary": "Support for bootstrapping the pip installer",
611 "rdepends": [
612 "core"
613 ],
614 "files": [
615 "${libdir}/python${PYTHON_MAJMIN}/ensurepip/"
616 ],
617 "cached": []
618 },
598 "fcntl": { 619 "fcntl": {
599 "summary": "Python's fcntl interface", 620 "summary": "Python's fcntl interface",
600 "rdepends": [ 621 "rdepends": [
@@ -621,12 +642,9 @@
621 "core" 642 "core"
622 ], 643 ],
623 "files": [ 644 "files": [
624 "${libdir}/python${PYTHON_MAJMIN}/formatter.py",
625 "${libdir}/python${PYTHON_MAJMIN}/html" 645 "${libdir}/python${PYTHON_MAJMIN}/html"
626 ], 646 ],
627 "cached": [ 647 "cached": []
628 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc"
629 ]
630 }, 648 },
631 "idle": { 649 "idle": {
632 "summary": "Python Integrated Development Environment", 650 "summary": "Python Integrated Development Environment",
@@ -664,7 +682,6 @@
664 ], 682 ],
665 "files": [ 683 "files": [
666 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", 684 "${libdir}/python${PYTHON_MAJMIN}/_pyio.py",
667 "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py",
668 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", 685 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so",
669 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", 686 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so",
670 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", 687 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so",
@@ -675,7 +692,6 @@
675 ], 692 ],
676 "cached": [ 693 "cached": [
677 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", 694 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc",
678 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc",
679 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc", 695 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc",
680 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", 696 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc",
681 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", 697 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc",
@@ -715,7 +731,6 @@
715 "crypt", 731 "crypt",
716 "datetime", 732 "datetime",
717 "email", 733 "email",
718 "fcntl",
719 "io", 734 "io",
720 "math", 735 "math",
721 "mime", 736 "mime",
@@ -786,9 +801,9 @@
786 "db", 801 "db",
787 "debugger", 802 "debugger",
788 "difflib", 803 "difflib",
789 "distutils",
790 "doctest", 804 "doctest",
791 "email", 805 "email",
806 "ensurepip",
792 "fcntl", 807 "fcntl",
793 "html", 808 "html",
794 "idle", 809 "idle",
@@ -812,21 +827,20 @@
812 "pydoc", 827 "pydoc",
813 "resource", 828 "resource",
814 "shell", 829 "shell",
815 "smtpd",
816 "sqlite3", 830 "sqlite3",
831 "statistics",
817 "stringold", 832 "stringold",
818 "syslog", 833 "syslog",
819 "terminal", 834 "terminal",
820 "threading", 835 "threading",
821 "tkinter", 836 "tkinter",
837 "tomllib",
822 "unittest", 838 "unittest",
823 "unixadmin", 839 "unixadmin",
824 "venv", 840 "venv",
825 "xml", 841 "xml",
826 "xmlrpc" 842 "xmlrpc",
827 ], 843 "zoneinfo"
828 "rrecommends": [
829 "distutils-windows"
830 ], 844 ],
831 "summary": "All Python modules" 845 "summary": "All Python modules"
832 }, 846 },
@@ -875,6 +889,7 @@
875 "${libdir}/python${PYTHON_MAJMIN}/secrets.py", 889 "${libdir}/python${PYTHON_MAJMIN}/secrets.py",
876 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", 890 "${libdir}/python${PYTHON_MAJMIN}/smtplib.py",
877 "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", 891 "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py",
892 "${libdir}/python${PYTHON_MAJMIN}/urllib",
878 "${libdir}/python${PYTHON_MAJMIN}/uuid.py" 893 "${libdir}/python${PYTHON_MAJMIN}/uuid.py"
879 ], 894 ],
880 "cached": [ 895 "cached": [
@@ -995,14 +1010,12 @@
995 ], 1010 ],
996 "files": [ 1011 "files": [
997 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", 1012 "${libdir}/python${PYTHON_MAJMIN}/cProfile.py",
998 "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py",
999 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", 1013 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so",
1000 "${libdir}/python${PYTHON_MAJMIN}/profile.py", 1014 "${libdir}/python${PYTHON_MAJMIN}/profile.py",
1001 "${libdir}/python${PYTHON_MAJMIN}/pstats.py" 1015 "${libdir}/python${PYTHON_MAJMIN}/pstats.py"
1002 ], 1016 ],
1003 "cached": [ 1017 "cached": [
1004 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", 1018 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc",
1005 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc",
1006 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", 1019 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc",
1007 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" 1020 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc"
1008 ] 1021 ]
@@ -1048,31 +1061,6 @@
1048 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" 1061 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc"
1049 ] 1062 ]
1050 }, 1063 },
1051 "smtpd": {
1052 "summary": "Python Simple Mail Transport Daemon",
1053 "rdepends": [
1054 "core",
1055 "crypt",
1056 "datetime",
1057 "email",
1058 "io",
1059 "math",
1060 "mime",
1061 "netclient",
1062 "stringold"
1063 ],
1064 "files": [
1065 "${bindir}/smtpd.py",
1066 "${libdir}/python${PYTHON_MAJMIN}/asynchat.py",
1067 "${libdir}/python${PYTHON_MAJMIN}/asyncore.py",
1068 "${libdir}/python${PYTHON_MAJMIN}/smtpd.py"
1069 ],
1070 "cached": [
1071 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asynchat.*.pyc",
1072 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asyncore.*.pyc",
1073 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtpd.*.pyc"
1074 ]
1075 },
1076 "sqlite3": { 1064 "sqlite3": {
1077 "summary": "Python Sqlite3 database support", 1065 "summary": "Python Sqlite3 database support",
1078 "rdepends": [ 1066 "rdepends": [
@@ -1085,6 +1073,22 @@
1085 ], 1073 ],
1086 "cached": [] 1074 "cached": []
1087 }, 1075 },
1076 "statistics": {
1077 "summary": "Basic statistics module",
1078 "rdepends": [
1079 "core",
1080 "crypt",
1081 "math",
1082 "numbers"
1083 ],
1084 "files": [
1085 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_statistics.*.so",
1086 "${libdir}/python${PYTHON_MAJMIN}/statistics.py"
1087 ],
1088 "cached": [
1089 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc"
1090 ]
1091 },
1088 "stringold": { 1092 "stringold": {
1089 "summary": "Python string APIs [deprecated]", 1093 "summary": "Python string APIs [deprecated]",
1090 "rdepends": [ 1094 "rdepends": [
@@ -1143,11 +1147,33 @@
1143 "core" 1147 "core"
1144 ], 1148 ],
1145 "files": [ 1149 "files": [
1146 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", 1150 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so",
1147 "${libdir}/python${PYTHON_MAJMIN}/tkinter" 1151 "${libdir}/python${PYTHON_MAJMIN}/tkinter"
1148 ], 1152 ],
1149 "cached": [] 1153 "cached": []
1150 }, 1154 },
1155 "tomllib": {
1156 "summary": "Provides an interface for parsing TOML",
1157 "rdepends": [
1158 "core"
1159 ],
1160 "files": [
1161 "${libdir}/python${PYTHON_MAJMIN}/tomllib/"
1162 ],
1163 "cached": []
1164 },
1165 "turtle": {
1166 "summary": "Turtle graphics is a popular way for introducing programming to kids.",
1167 "rdepends": [
1168 "tkinter"
1169 ],
1170 "files": [
1171 "${libdir}/python${PYTHON_MAJMIN}/turtle.py"
1172 ],
1173 "cached": [
1174 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/turtle.*.pyc"
1175 ]
1176 },
1151 "unittest": { 1177 "unittest": {
1152 "summary": "Python unit testing framework", 1178 "summary": "Python unit testing framework",
1153 "rdepends": [ 1179 "rdepends": [
@@ -1215,7 +1241,6 @@
1215 "crypt", 1241 "crypt",
1216 "datetime", 1242 "datetime",
1217 "email", 1243 "email",
1218 "fcntl",
1219 "html", 1244 "html",
1220 "io", 1245 "io",
1221 "math", 1246 "math",
@@ -1232,5 +1257,30 @@
1232 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" 1257 "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__"
1233 ], 1258 ],
1234 "cached": [] 1259 "cached": []
1260 },
1261 "zipapp": {
1262 "summary": "Tools to manage the creation of zip files containing Python code",
1263 "rdepends": [
1264 "compression",
1265 "core"
1266 ],
1267 "files": [
1268 "${libdir}/python${PYTHON_MAJMIN}/zipapp.py"
1269 ],
1270 "cached": [
1271 "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipapp.*.pyc"
1272 ]
1273 },
1274 "zoneinfo": {
1275 "summary": "IANA time zone support",
1276 "rdepends": [
1277 "core",
1278 "datetime"
1279 ],
1280 "files": [
1281 "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_zoneinfo.*.so",
1282 "${libdir}/python${PYTHON_MAJMIN}/zoneinfo"
1283 ],
1284 "cached": []
1235 } 1285 }
1236} 1286}
diff --git a/meta/recipes-devtools/python/python3/reformat_sysconfig.py b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
index c4164313e8..5e2b12879d 100644
--- a/meta/recipes-devtools/python/python3/reformat_sysconfig.py
+++ b/meta/recipes-devtools/python/python3/reformat_sysconfig.py
@@ -16,6 +16,6 @@ with open(sys.argv[1], 'r') as f:
16with open(sys.argv[1], 'w') as f: 16with open(sys.argv[1], 'w') as f:
17 for k in sorted(l.keys()): 17 for k in sorted(l.keys()):
18 f.write('%s = ' % k) 18 f.write('%s = ' % k)
19 pprint.pprint(l[k], stream=f, width=sys.maxsize) 19 pprint.pprint(l[k], stream=f, width=1)
20 f.write('\n') 20 f.write('\n')
21 21
diff --git a/meta/recipes-devtools/python/python3/run-ptest b/meta/recipes-devtools/python/python3/run-ptest
index 405b07f495..d1c26c11e2 100644
--- a/meta/recipes-devtools/python/python3/run-ptest
+++ b/meta/recipes-devtools/python/python3/run-ptest
@@ -1,3 +1,3 @@
1#!/bin/sh 1#!/bin/sh
2 2SKIPPED_TESTS=
3python3 -m test -v | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g' 3{ SETUPTOOLS_USE_DISTUTILS=nonlocal python3 -m test $SKIPPED_TESTS -v -j 4 || echo "FAIL: python3" ; } | sed -u -e '/\.\.\. ok/ s/^/PASS: /g' -r -e '/\.\.\. (ERROR|FAIL)/ s/^/FAIL: /g' -e '/\.\.\. skipped/ s/^/SKIP: /g' -e 's/ \.\.\. ok//g' -e 's/ \.\.\. ERROR//g' -e 's/ \.\.\. FAIL//g' -e 's/ \.\.\. skipped//g'
diff --git a/meta/recipes-devtools/python/python3_3.12.3.bb b/meta/recipes-devtools/python/python3_3.12.3.bb
new file mode 100644
index 0000000000..b49a58a101
--- /dev/null
+++ b/meta/recipes-devtools/python/python3_3.12.3.bb
@@ -0,0 +1,470 @@
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=fcf6b249c2641540219a727f35d8d2c2"
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-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \
18 file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \
19 file://crosspythonpath.patch \
20 file://0001-test_locale.py-correct-the-test-output-format.patch \
21 file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \
22 file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \
23 file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \
24 file://makerace.patch \
25 file://0001-sysconfig.py-use-platlibdir-also-for-purelib.patch \
26 file://0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch \
27 file://deterministic_imports.patch \
28 file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
29 file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \
30 file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \
31 file://0001-test_storlines-skip-due-to-load-variability.patch \
32 file://0001-gh-114492-Initialize-struct-termios-before-calling-t.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] = "56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1"
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.12"
55
56S = "${WORKDIR}/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
68
69DEPENDS = "bzip2-replacement-native expat libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux-libuuid libtirpc libnsl2 autoconf-archive-native ncurses"
70DEPENDS:append:class-target = " python3-native"
71DEPENDS:append:class-nativesdk = " python3-native"
72
73EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib} --with-system-expat"
74EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}"
75EXTRA_OECONF:append:class-target = " --with-build-python=nativepython3"
76EXTRA_OECONF:append:class-nativesdk = " --with-build-python=nativepython3"
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# set thread stack size to 2MB on musl for interpreter and stdlib C extensions
91# so it does not run into stack limits due to musl's small thread stack
92# This is only needed to build interpreter and not the subsequent modules
93# Thats why CFLAGS_NODIST is modified instead of CFLAGS
94CACHED_CONFIGUREVARS:append:libc-musl = "\
95 CFLAGS_NODIST='${CFLAGS} -DTHREAD_STACK_SIZE=0x200000' \
96"
97
98# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407
99PACKAGECONFIG ??= "editline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}"
100PACKAGECONFIG[readline] = "--with-readline=readline,,readline,,,editline"
101PACKAGECONFIG[editline] = "--with-readline=editline,,libedit,,,readline"
102# Use profile guided optimisation by running PyBench inside qemu-user
103PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native"
104PACKAGECONFIG[tk] = ",,tk"
105PACKAGECONFIG[tcl] = ",,tcl"
106PACKAGECONFIG[gdbm] = ",,gdbm"
107PACKAGECONFIG[lto] = "--with-lto,--without-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_any('PACKAGECONFIG', 'readline editline', '', 'readline', d)}
115${@bb.utils.contains('PACKAGECONFIG', 'tk', '', '_tkinter', d)}
116EOF
117}
118
119CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid"
120
121# COMPILEALL_OPTS= ensures that .pyc are not compiled in parallel
122# This was found to lock up builds, break reproducibility, and produce strange file ownership
123# races.
124#
125# The upstream commit introducing the change was:
126# https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504
127#
128# The build lock up issue is reported here:
129# https://bugs.python.org/issue45945
130#
131# The repro failures are documented here:
132# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20211130-yr_o1a8d/packages/diff-html/
133
134EXTRA_OEMAKE = '\
135 STAGING_LIBDIR=${STAGING_LIBDIR} \
136 STAGING_INCDIR=${STAGING_INCDIR} \
137 LIB=${baselib} \
138 COMPILEALL_OPTS= \
139'
140
141# Generate a Profile Guided Optimisation wrapper script that uses qemu-user for
142# all cross builds.
143write_pgo_wrapper:class-native = ":"
144write_pgo_wrapper() {
145 if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then
146 cat >pgo-wrapper <<EOF
147#!/bin/sh
148cd ${B}
149${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@"
150EOF
151 chmod +x pgo-wrapper
152 fi
153}
154
155do_compile:prepend() {
156 write_pgo_wrapper
157}
158
159do_install:prepend() {
160 ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile
161}
162
163do_install:append:class-target() {
164 oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h
165}
166
167do_install:append:class-native() {
168 # Make sure we use /usr/bin/env python
169 for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do
170 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
171 done
172 # Add a symlink to the native Python so that scripts can just invoke
173 # "nativepython" and get the right one without needing absolute paths
174 # (these often end up too long for the #! parser in the kernel as the
175 # buffer is 128 bytes long).
176 ln -s python3-native/python3 ${D}${bindir}/nativepython3
177
178 # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 of them
179 # and the overhead in each recipe-sysroot-native isn't worth it, particularly
180 # when they're only used for python called with -O or -OO.
181 #find ${D} -name *opt-*.pyc -delete
182 # Remove all pyc files. There are a ton of them and it is probably faster to let
183 # python create the ones it wants at runtime rather than manage in the sstate
184 # tarballs and sysroot creation.
185 find ${D} -name *.pyc -delete
186
187 # Nothing should be looking into ${B} for python3-native
188 sed -i -e 's:${B}:/build/path/unavailable/:g' \
189 ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile
190
191 # disable the lookup in user's site-packages globally
192 sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py
193
194 # python3-config needs to be in /usr/bin and not in a subdir of it to work properly
195 mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/
196}
197
198do_install:append() {
199 for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
200 python3 ${WORKDIR}/reformat_sysconfig.py $c
201 done
202 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython*
203
204 mkdir -p ${D}${libdir}/python-sysconfigdata
205 sysconfigfile=`find ${D} -name _sysconfig*.py`
206 sed -i \
207 -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \
208 -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
209 -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \
210 -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
211 -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \
212 -e "s,${B},/build/path/unavailable/,g" \
213 $sysconfigfile
214 cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py
215
216
217 # Unfortunately the following pyc files are non-deterministc due to 'frozenset'
218 # being written without strict ordering, even with PYTHONHASHSEED = 0
219 # Upstream is discussing ways to solve the issue properly, until then let's
220 # just not install the problematic files.
221 # More info: http://benno.id.au/blog/2013/01/15/python-determinism
222 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython*
223 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython*
224
225 # Similar to the above, we're getting reproducibility issues with
226 # /usr/lib/python3.10/__pycache__/traceback.cpython-310.pyc
227 # so remove it too
228 rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/traceback.cpython*
229
230 # Remove the opt-1.pyc and opt-2.pyc files. They effectively waste space on embedded
231 # style targets as they're only used when python is called with the -O or -OO options
232 # which is rare.
233 find ${D} -name *opt-*.pyc -delete
234}
235
236do_install:append:class-nativesdk () {
237 # Make sure we use /usr/bin/env python
238 for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do
239 sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT
240 done
241 create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1'
242}
243
244do_install_ptest:append:class-target:libc-musl () {
245 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"|' ${D}${PTEST_PATH}/run-ptest
246}
247
248SYSROOT_PREPROCESS_FUNCS:append:class-target = " provide_target_config_script"
249SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " provide_target_config_script"
250
251# This is installed into /usr/python-target-config/ and not /usr/bin
252# because adding target sysroot's /usr/bin/ to PATH has unwanted side effects
253# in components erroneously picking up other target executables from it
254provide_target_config_script() {
255 install -d ${SYSROOT_DESTDIR}${prefix}/python-target-config/
256 install ${D}/${bindir}/python3-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
257 install ${D}/${bindir}/python${PYTHON_MAJMIN}-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/
258}
259SYSROOT_DIRS += "${prefix}/python-target-config/"
260
261SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py"
262SSTATE_HASHEQUIV_FILEMAP = " \
263 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \
264 populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \
265 populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \
266 populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \
267 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \
268 populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \
269 "
270PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
271
272py_package_preprocess () {
273 # Remove references to buildmachine paths in target Makefile and _sysconfigdata
274 sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \
275 -e 's|${DEBUG_PREFIX_MAP}||g' \
276 -e 's:${HOSTTOOLS_DIR}/::g' \
277 -e 's:${RECIPE_SYSROOT_NATIVE}::g' \
278 -e 's:${RECIPE_SYSROOT}::g' \
279 -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \
280 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \
281 ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \
282 ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config
283
284 # Reformat _sysconfigdata after modifying it so that it remains
285 # reproducible
286 for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do
287 python3 ${WORKDIR}/reformat_sysconfig.py $c
288 done
289
290 # Recompile _sysconfigdata after modifying it
291 cd ${PKGD}
292 sysconfigfile=`find . -name _sysconfigdata_*.py`
293 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
294 -c "from py_compile import compile; compile('$sysconfigfile')"
295 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
296 -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)"
297 ${STAGING_BINDIR_NATIVE}/python3-native/python3 \
298 -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)"
299 cd -
300
301 mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}
302
303 #Remove the unneeded copy of target sysconfig data
304 rm -rf ${PKGD}/${libdir}/python-sysconfigdata
305}
306
307# We want bytecode precompiled .py files (.pyc's) by default
308# but the user may set it on their own conf
309INCLUDE_PYCS ?= "1"
310
311python(){
312 import collections, json
313
314 filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json')
315 # This python changes the datastore based on the contents of a file, so mark
316 # that dependency.
317 bb.parse.mark_dependency(d, filename)
318
319 with open(filename) as manifest_file:
320 manifest_str = manifest_file.read()
321 json_start = manifest_str.find('# EOC') + 6
322 manifest_file.seek(json_start)
323 manifest_str = manifest_file.read()
324 python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict)
325
326 # First set RPROVIDES for -native case
327 # Hardcoded since it cant be python3-native-foo, should be python3-foo-native
328 pn = 'python3'
329 rprovides = (d.getVar('RPROVIDES') or "").split()
330
331 # ${PN}-misc-native is not in the manifest
332 rprovides.append(pn + '-misc-native')
333
334 for key in python_manifest:
335 pypackage = pn + '-' + key + '-native'
336 if pypackage not in rprovides:
337 rprovides.append(pypackage)
338
339 d.setVar('RPROVIDES:class-native', ' '.join(rprovides))
340
341 # Then work on the target
342 include_pycs = d.getVar('INCLUDE_PYCS')
343
344 packages = d.getVar('PACKAGES').split()
345 pn = d.getVar('PN')
346
347 newpackages=[]
348 for key in python_manifest:
349 pypackage = pn + '-' + key
350
351 if pypackage not in packages:
352 # We need to prepend, otherwise python-misc gets everything
353 # so we use a new variable
354 newpackages.append(pypackage)
355
356 # "Build" python's manifest FILES, RDEPENDS and SUMMARY
357 d.setVar('FILES:' + pypackage, '')
358 for value in python_manifest[key]['files']:
359 d.appendVar('FILES:' + pypackage, ' ' + value)
360
361 # Add cached files
362 if include_pycs == '1':
363 for value in python_manifest[key]['cached']:
364 d.appendVar('FILES:' + pypackage, ' ' + value)
365
366 for value in python_manifest[key]['rdepends']:
367 # Make it work with or without $PN
368 if '${PN}' in value:
369 value=value.split('-', 1)[1]
370 d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value)
371
372 for value in python_manifest[key].get('rrecommends', ()):
373 if '${PN}' in value:
374 value=value.split('-', 1)[1]
375 d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value)
376
377 d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary'])
378
379 # Prepending so to avoid python-misc getting everything
380 packages = newpackages + packages
381 d.setVar('PACKAGES', ' '.join(packages))
382 d.setVar('ALLOW_EMPTY:${PN}-modules', '1')
383 d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1')
384
385 if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d):
386 bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine")
387}
388
389# Files needed to create a new manifest
390
391do_create_manifest() {
392 # This task should be run with every new release of Python.
393 # We must ensure that PACKAGECONFIG enables everything when creating
394 # a new manifest, this is to base our new manifest on a complete
395 # native python build, containing all dependencies, otherwise the task
396 # wont be able to find the required files.
397 # e.g. BerkeleyDB is an optional build dependency so it may or may not
398 # be present, we must ensure it is.
399
400 cd ${WORKDIR}
401 # This needs to be executed by python-native and NOT by HOST's python
402 nativepython3 create_manifest3.py ${PYTHON_MAJMIN}
403 cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json
404}
405
406# bitbake python -c create_manifest
407# Make sure we have native python ready when we create a new manifest
408addtask do_create_manifest after do_patch do_prepare_recipe_sysroot
409
410# manual dependency additions
411RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules"
412RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
413RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates"
414
415# For historical reasons PN is empty and provided by python3-modules
416FILES:${PN} = ""
417RPROVIDES:${PN}-modules = "${PN}"
418
419FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3"
420FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}"
421
422# provide python-pyvenv from python3-venv
423RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv"
424
425# package libpython3
426PACKAGES =+ "libpython3 libpython3-staticdev"
427FILES:libpython3 = "${libdir}/libpython*.so.*"
428FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a"
429INSANE_SKIP:${PN}-dev += "dev-elf"
430INSANE_SKIP:${PN}-ptest = "dev-deps"
431
432# catch all the rest (unsorted)
433PACKAGES += "${PN}-misc"
434RDEPENDS:${PN}-misc += "\
435 ${PN}-audio \
436 ${PN}-codecs \
437 ${PN}-core \
438 ${PN}-email \
439 ${PN}-numbers \
440 ${PN}-pickle \
441 ${PN}-pydoc \
442"
443RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc"
444RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc"
445RDEPENDS:${PN}-modules:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '${MLPREFIX}python3-gdbm', '', d)}"
446FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload"
447
448# catch manpage
449PACKAGES += "${PN}-man"
450FILES:${PN}-man = "${datadir}/man"
451
452# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395
453RDEPENDS:libpython3:append:libc-glibc = " libgcc"
454RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig"
455RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev ${PN}-cgitb ${PN}-zipapp unzip bzip2 libgcc tzdata coreutils sed gcc g++ binutils \
456 locale-base-fr-fr locale-base-en-us locale-base-de-de"
457RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr"
458RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}"
459RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}"
460DEV_PKG_DEPENDENCY = ""
461RDEPENDS:${PN}-pydoc += "${PN}-io"
462
463RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash"
464RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash"
465
466# Python's tests contain large numbers of files we don't need in the recipe sysroots
467SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup"
468py3_sysroot_cleanup () {
469 rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test
470}
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}