diff options
Diffstat (limited to 'meta/recipes-devtools/python')
266 files changed, 6273 insertions, 2955 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 @@ -SUMMARY = "Python framework to process interdependent tasks in a pool of workers" -HOMEPAGE = "http://github.com/gitpython-developers/async" -SECTION = "devel/python" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=88df8e78b9edfd744953862179f2d14e" - -inherit pypi - -SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b" -SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051" - -RDEPENDS_${PN} += "${PYTHON_PN}-threading" - -BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-cython.inc b/meta/recipes-devtools/python/python-cython.inc index 0e6bac06a7..87a2e88a1a 100644 --- a/meta/recipes-devtools/python/python-cython.inc +++ b/meta/recipes-devtools/python/python-cython.inc @@ -5,38 +5,41 @@ It's designed to bridge the gap between the nice, high-level, easy-to-use world and the messy, low-level world of C." SECTION = "devel/python" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=61c3ee8961575861fa86c7e62bc9f69c" PYPI_PACKAGE = "Cython" BBCLASSEXTEND = "native nativesdk" -SRC_URI[sha256sum] = "df6b83c7a6d1d967ea89a2903e4a931377634a297459652e4551734c48195406" +SRC_URI[sha256sum] = "dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99" UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar" inherit pypi -RDEPENDS_${PN}_class-target += "\ - ${PYTHON_PN}-misc \ - ${PYTHON_PN}-netserver \ - ${PYTHON_PN}-pkgutil \ - ${PYTHON_PN}-pyparsing \ - ${PYTHON_PN}-setuptools \ - ${PYTHON_PN}-shell \ - ${PYTHON_PN}-xml \ +RDEPENDS:${PN}:class-target += "\ + python3-misc \ + python3-netserver \ + python3-pkgutil \ + python3-pyparsing \ + python3-setuptools \ + python3-shell \ + python3-xml \ " -RDEPENDS_${PN}_class-nativesdk += "\ - nativesdk-${PYTHON_PN}-misc \ - nativesdk-${PYTHON_PN}-netserver \ - nativesdk-${PYTHON_PN}-pkgutil \ - nativesdk-${PYTHON_PN}-pyparsing \ - nativesdk-${PYTHON_PN}-setuptools \ - nativesdk-${PYTHON_PN}-shell \ - nativesdk-${PYTHON_PN}-xml \ +RDEPENDS:${PN}:class-nativesdk += "\ + nativesdk-python3-misc \ + nativesdk-python3-netserver \ + nativesdk-python3-pkgutil \ + nativesdk-python3-pyparsing \ + nativesdk-python3-setuptools \ + nativesdk-python3-shell \ + nativesdk-python3-xml \ " -do_install_append() { +do_install:append() { # Make sure we use /usr/bin/env python for PYTHSCRIPT in `grep -rIl '^#!.*python' ${D}`; do - sed -i -e '1s|^#!.*|#!/usr/bin/env ${PYTHON_PN}|' $PYTHSCRIPT + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT done + + # remove build paths from generated sources + sed -i -e 's|${WORKDIR}||' ${S}/Cython/*.c ${S}/Cython/Compiler/*.c ${S}/Cython/Plex/*.c } 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 @@ -SUMMARY = "A pure-Python git object database" -HOMEPAGE = "http://github.com/gitpython-developers/gitdb" -SECTION = "devel/python" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528" - -inherit pypi - -PYPI_PACKAGE = "gitdb" - -SRC_URI[sha256sum] = "c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9" - -DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap" - -RDEPENDS_${PN} += "${PYTHON_PN}-async \ - ${PYTHON_PN}-compression \ - ${PYTHON_PN}-crypt \ - ${PYTHON_PN}-io \ - ${PYTHON_PN}-mmap \ - ${PYTHON_PN}-shell \ - ${PYTHON_PN}-smmap \ -" -BBCLASSEXTEND = "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 @@ -SUMMARY = "Extends Python unittest to make testing easier" -HOMEPAGE = "http://readthedocs.org/docs/nose/" -DESCRIPTION = "nose extends the test loading and running features of unittest, \ -making it easier to write, find and run tests." -SECTION = "devel/python" -LICENSE = "LGPLv2.1" -LIC_FILES_CHKSUM = "file://lgpl.txt;md5=a6f89e2100d9b6cdffcea4f398e37343" - -SRC_URI[md5sum] = "4d3ad0ff07b61373d2cefc89c5d0b20b" -SRC_URI[sha256sum] = "f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98" - -inherit pypi - -RDEPENDS_${PN} = "\ - ${PYTHON_PN}-unittest \ - " - -BBCLASSEXTEND = "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" inherit pypi -RDEPENDS_${PN} += "${PYTHON_PN}-pip" +RDEPENDS:${PN} += "python3-pip" BBCLASSEXTEND = "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 @@ +SUMMARY = "Python library implementing ASN.1 types." +HOMEPAGE = "http://pyasn1.sourceforge.net/" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=190f79253908c986e6cacf380c3a5f6d" + +SRC_URI[sha256sum] = "3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c" + +RDEPENDS:${PN}:class-target += " \ + python3-codecs \ + python3-logging \ + python3-math \ + python3-shell \ +" + +BBCLASSEXTEND = "native nativesdk" + +inherit ptest + +SRC_URI += " \ + file://run-ptest \ + " + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} 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\ cryptographic primitives." HOMEPAGE = "http://www.pycryptodome.org" LICENSE = "PD & BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=accfa6aeaceb3ba96676edf18e78302c" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=29242a70410a4eeff488a28164e7ab93" inherit pypi -RDEPENDS_${PN} += " \ - ${PYTHON_PN}-io \ - ${PYTHON_PN}-math \ +PYPI_PACKAGE_EXT = "tar.gz" + +RDEPENDS:${PN} += " \ + python3-cffi \ + python3-ctypes \ + python3-io \ + python3-math \ " -RDEPENDS_${PN}-tests += " \ - ${PYTHON_PN}-unittest \ +RDEPENDS:${PN}-tests += " \ + python3-unittest \ " PACKAGES =+ "${PN}-tests" -FILES_${PN}-tests = " \ +FILES:${PN}-tests = " \ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/ \ ${PYTHON_SITEPACKAGES_DIR}/Crypto/SelfTest/__pycache__/ \ " 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 @@ -SUMMARY = "Python parsing module" -HOMEPAGE = "http://pyparsing.wikispaces.com/" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1" - -SRC_URI[md5sum] = "f0953e47a0112f7a65aec2305ffdf7b4" -SRC_URI[sha256sum] = "c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1" -UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar" - -inherit pypi - -RDEPENDS_${PN} += " \ - ${PYTHON_PN}-datetime \ - ${PYTHON_PN}-debugger \ - ${PYTHON_PN}-json \ - ${PYTHON_PN}-netclient \ - ${PYTHON_PN}-pprint \ - ${PYTHON_PN}-stringold \ - ${PYTHON_PN}-threading \ -" - -BBCLASSEXTEND = "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 @@ +From 3531ff73631a0d59234eb4713e7b3a7f5ea57bbb Mon Sep 17 00:00:00 2001 +From: Nicola Lunghi <nicola.lunghi@jci.com> +Date: Thu, 14 Nov 2019 12:17:51 +0000 +Subject: [PATCH] setup.py: move pytest-runner to test_requirements + +This fixes an issue with yocto build. +pytest-runner is only needed when running tests. + +Upstream-Status: Pending +--- + setup.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/setup.py b/setup.py +index 53ebea7..ebb0de2 100644 +--- a/setup.py ++++ b/setup.py +@@ -10,9 +10,9 @@ with open('README.md') as readme_file: + + requirements = [] + +-setup_requirements = ['pytest-runner', ] ++setup_requirements = [] + +-test_requirements = ['pytest>=3', ] ++test_requirements = ['pytest>=3', 'pytest-runner'] + + setup( + author="Nicolas Aimetti", +-- +2.20.1 + 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" inherit pypi -RDEPENDS_${PN} = "${PYTHON_PN}-io" +RDEPENDS:${PN} = "python3-io" BBCLASSEXTEND = "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 @@ -SUMMARY = "Python implementation of subunit test streaming protocol" -HOMEPAGE = "https://pypi.org/project/python-subunit/" -SECTION = "devel/python" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://README.rst;beginline=1;endline=20;md5=909c08e291647fd985fbe5d9836d51b6" - -PYPI_PACKAGE = "python-subunit" - -SRC_URI[md5sum] = "30f1ab20651d94442dd9a7f8c9e8d633" -SRC_URI[sha256sum] = "042039928120fbf392e8c983d60f3d8ae1b88f90a9f8fd7188ddd9c26cad1e48" - -inherit pypi - -BBCLASSEXTEND = "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 @@ -SUMMARY = "Extensions to the Python standard library unit testing framework" -HOMEPAGE = "https://pypi.org/project/testtools/" -SECTION = "devel/python" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a" - -inherit pypi - -SRC_URI[md5sum] = "e8fc7185b47cfb908c641f8c4b2a6add" -SRC_URI[sha256sum] = "64c974a6cca4385d05f4bbfa2deca1c39ce88ede31c3448bee86a7259a9a61c8" - -DEPENDS += " \ - ${PYTHON_PN}-pbr \ - " - -# Satisfy setup.py 'setup_requires' -DEPENDS += " \ - ${PYTHON_PN}-pbr-native \ - " - -RDEPENDS_${PN} += "\ - ${PYTHON_PN}-doctest \ - ${PYTHON_PN}-extras \ - ${PYTHON_PN}-pbr \ - ${PYTHON_PN}-six \ - " - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Alabaster is a visually (c)lean, responsive, configurable theme for the Sphinx documentation system." +HOMEPAGE = "https://alabaster.readthedocs.io/en/latest/" +BUGTRACKER = "https://github.com/sphinx-doc/alabaster/issues" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=21860fdb805bf4e0bfaf94b566b747fa" + +SRC_URI[sha256sum] = "75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65" + +inherit python_flit_core pypi + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A fast, pure Python library for parsing and serializing ASN.1 structures" +HOMEPAGE = "https://github.com/wbond/asn1crypto" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b5cda97fbd7959ad47a952651a87051a" + +PYPI_PACKAGE = "asn1crypto" + +SRC_URI[sha256sum] = "13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target += " \ + python3-codecs \ + python3-crypt \ + python3-ctypes \ + python3-datetime \ + python3-io \ + python3-netclient \ + python3-numbers \ + python3-shell \ +" + +BBCLASSEXTEND = "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 @@ -inherit setuptools3 -require 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 @@ #!/bin/sh -pytest -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}}' +pytest --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 @@ -DESCRIPTION = "Powerful Python library for atomic file writes" +SUMMARY = "Powerful Python library for atomic file writes" HOMEPAGE = "https://github.com/untitaker/python-atomicwrites" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=91cc36cfafeefb7863673bcfcb1d4da4" -SRC_URI[md5sum] = "b5cc15c8f9f180a48665f9aacf91d817" -SRC_URI[sha256sum] = "ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a" +SRC_URI[sha256sum] = "81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11" inherit pypi setuptools3 ptest @@ -12,9 +11,10 @@ SRC_URI += " \ file://run-ptest \ " -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ - ${PYTHON_PN}-unixadmin \ +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ + python3-unixadmin \ " do_install_ptest() { @@ -22,4 +22,6 @@ do_install_ptest() { cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ } -RDEPENDS_${PN} = "${PYTHON_PN}-misc" +RDEPENDS:${PN} = "python3-misc" + +BBCLASSEXTEND = "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 @@ +From 41103f017f6a233ebb477dd1712fe82ea8f1c84c Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Thu, 29 Feb 2024 08:45:54 -0800 +Subject: [PATCH] conftest.py: disable deadline + +The deadline is by default 200ms, but this is intended to be useful to +the developer and not necessarily recommended for heavily loaded CI +systems. Avoid warnings by disabling the deadline completely. + +https://github.com/HypothesisWorks/hypothesis/issues/3713 +https://hypothesis.readthedocs.io/en/latest/settings.html#hypothesis.settings.deadline +https://lists.openembedded.org/g/openembedded-core/topic/104640034#196437 + +Fixes: +""" +Unreliable test timings! On an initial run, this test took 268.29ms, +which exceeded the deadline of 200.00ms, but on a subsequent run it +took 2.63 ms, which did not. If you expect this sort of variability in +your test timings, consider turning deadlines off for this test by +setting deadline=None. +""" + +Upstream-Status: Submitted [https://github.com/python-attrs/attrs/pull/1252] + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + conftest.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conftest.py b/conftest.py +index 144e5f3..fdead3d 100644 +--- a/conftest.py ++++ b/conftest.py +@@ -20,7 +20,7 @@ def _frozen(request): + def pytest_configure(config): + # HealthCheck.too_slow causes more trouble than good -- especially in CIs. + settings.register_profile( +- "patience", settings(suppress_health_check=[HealthCheck.too_slow]) ++ "patience", settings(suppress_health_check=[HealthCheck.too_slow], deadline=None) + ) + settings.load_profile("patience") + +-- +2.34.1 + 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 @@ +From cbe95e1aa6d95195dce13406a6f0522b2964babc Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Fri, 16 Feb 2024 07:17:19 -0800 +Subject: [PATCH] test_funcs: skip test_unknown for pytest 8 + +https://github.com/python-attrs/attrs/issues/1233 + +Upstream-Status: Inappropriate [Test case needs to be properly fixed upstream] + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + tests/test_funcs.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_funcs.py b/tests/test_funcs.py +index 044aaab..0872c31 100644 +--- a/tests/test_funcs.py ++++ b/tests/test_funcs.py +@@ -593,7 +593,7 @@ class TestAssoc: + for k, v in change_dict.items(): + assert getattr(changed, k) == v + +- @given(simple_classes()) ++ @pytest.mark.skip('Broken with pytest 8. See https://github.com/python-attrs/attrs/issues/1233') + def test_unknown(self, C): + """ + Wanting to change an unknown attribute raises an +-- +2.34.1 + 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 @@ +#!/bin/sh + +pytest --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 @@ -DESCRIPTION = "Classes Without Boilerplate" -HOMEPAGE = "http://www.attrs.org/" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff" - -SRC_URI[sha256sum] = "832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700" -SRC_URI[md5sum] = "4fe38f89297b2b446d83190fce189f29" - -inherit pypi setuptools3 - -RDEPENDS_${PN}_class-target += " \ - ${PYTHON_PN}-crypt \ - ${PYTHON_PN}-ctypes \ -" -RDEPENDS_${PN}_class-nativesdk += " \ - ${PYTHON_PN}-crypt \ - ${PYTHON_PN}-ctypes \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Classes Without Boilerplate" +HOMEPAGE = "http://www.attrs.org/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5e55731824cf9205cfabeab9a0600887" + +SRC_URI[sha256sum] = "935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30" + +inherit pypi ptest python_hatchling + +SRC_URI += " \ + file://0001-test_funcs-skip-test_unknown-for-pytest-8.patch \ + file://0001-conftest.py-disable-deadline.patch \ + file://run-ptest \ +" + +DEPENDS += " \ + python3-hatch-vcs-native \ + python3-hatch-fancy-pypi-readme-native \ +" + +RDEPENDS:${PN}+= " \ + python3-compression \ + python3-ctypes \ + python3-crypt \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-hypothesis \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + install ${S}/conftest.py ${D}${PTEST_PATH}/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A collection of tools for internationalizing Python applications" +HOMEPAGE = "http://babel.edgewall.org/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=0f97d9a63e91407b4c0d01efde91cfc0" + +SRC_URI[sha256sum] = "6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363" + +PYPI_PACKAGE = "Babel" + +inherit pypi setuptools3 + +CLEANBROKEN = "1" + +RDEPENDS:${PN} += " \ + python3-codecs \ + python3-difflib \ + python3-netserver \ + python3-numbers \ + python3-pickle \ + python3-pytz \ + python3-setuptools \ + python3-shell \ + python3-threading \ +" + +BBCLASSEXTEND = "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 @@ +# Autogenerated with 'bitbake -c update_crates python3-bcrypt' + +# from src/_bcrypt/Cargo.lock +SRC_URI += " \ + crate://crates.io/autocfg/1.1.0 \ + crate://crates.io/base64/0.21.5 \ + crate://crates.io/bcrypt/0.15.0 \ + crate://crates.io/bcrypt-pbkdf/0.10.0 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/block-buffer/0.10.4 \ + crate://crates.io/blowfish/0.9.1 \ + crate://crates.io/byteorder/1.5.0 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/cipher/0.4.4 \ + crate://crates.io/cpufeatures/0.2.11 \ + crate://crates.io/crypto-common/0.1.6 \ + crate://crates.io/digest/0.10.7 \ + crate://crates.io/generic-array/0.14.7 \ + crate://crates.io/getrandom/0.2.11 \ + crate://crates.io/heck/0.4.1 \ + crate://crates.io/indoc/2.0.4 \ + crate://crates.io/inout/0.1.3 \ + crate://crates.io/libc/0.2.151 \ + crate://crates.io/lock_api/0.4.11 \ + crate://crates.io/memoffset/0.9.0 \ + crate://crates.io/once_cell/1.19.0 \ + crate://crates.io/parking_lot/0.12.1 \ + crate://crates.io/parking_lot_core/0.9.9 \ + crate://crates.io/pbkdf2/0.12.2 \ + crate://crates.io/portable-atomic/1.6.0 \ + crate://crates.io/proc-macro2/1.0.70 \ + crate://crates.io/pyo3/0.20.3 \ + crate://crates.io/pyo3-build-config/0.20.3 \ + crate://crates.io/pyo3-ffi/0.20.3 \ + crate://crates.io/pyo3-macros/0.20.3 \ + crate://crates.io/pyo3-macros-backend/0.20.3 \ + crate://crates.io/quote/1.0.33 \ + crate://crates.io/redox_syscall/0.4.1 \ + crate://crates.io/scopeguard/1.2.0 \ + crate://crates.io/sha2/0.10.8 \ + crate://crates.io/smallvec/1.11.2 \ + crate://crates.io/subtle/2.5.0 \ + crate://crates.io/syn/2.0.41 \ + crate://crates.io/target-lexicon/0.12.12 \ + crate://crates.io/typenum/1.17.0 \ + crate://crates.io/unicode-ident/1.0.12 \ + crate://crates.io/unindent/0.2.3 \ + crate://crates.io/version_check/0.9.4 \ + crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/windows-targets/0.48.5 \ + crate://crates.io/windows_aarch64_gnullvm/0.48.5 \ + crate://crates.io/windows_aarch64_msvc/0.48.5 \ + crate://crates.io/windows_i686_gnu/0.48.5 \ + crate://crates.io/windows_i686_msvc/0.48.5 \ + crate://crates.io/windows_x86_64_gnu/0.48.5 \ + crate://crates.io/windows_x86_64_gnullvm/0.48.5 \ + crate://crates.io/windows_x86_64_msvc/0.48.5 \ + crate://crates.io/zeroize/1.7.0 \ +" + +SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +SRC_URI[bcrypt-0.15.0.sha256sum] = "28d1c9c15093eb224f0baa400f38fcd713fc1391a6f1c389d886beef146d60a3" +SRC_URI[bcrypt-pbkdf-0.10.0.sha256sum] = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +SRC_URI[blowfish-0.9.1.sha256sum] = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" +SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[cipher-0.4.4.sha256sum] = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +SRC_URI[cpufeatures-0.2.11.sha256sum] = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +SRC_URI[inout-0.1.3.sha256sum] = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +SRC_URI[libc-0.2.151.sha256sum] = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +SRC_URI[pbkdf2-0.12.2.sha256sum] = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +SRC_URI[proc-macro2-1.0.70.sha256sum] = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +SRC_URI[pyo3-0.20.3.sha256sum] = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233" +SRC_URI[pyo3-build-config-0.20.3.sha256sum] = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" +SRC_URI[pyo3-ffi-0.20.3.sha256sum] = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa" +SRC_URI[pyo3-macros-0.20.3.sha256sum] = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158" +SRC_URI[pyo3-macros-backend-0.20.3.sha256sum] = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185" +SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +SRC_URI[subtle-2.5.0.sha256sum] = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +SRC_URI[syn-2.0.41.sha256sum] = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +SRC_URI[target-lexicon-0.12.12.sha256sum] = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" +SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +SRC_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 @@ +From cfdd98b3215cc12e66190a9c7f0a32c052e3c2e7 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Mon, 26 Feb 2024 18:26:30 -0800 +Subject: [PATCH] Bump pyo3 from 0.20.0 to 0.20.3 in /src/_bcrypt (#746) + +It fixes build on hosts without 64bit atomics + +Upstream-Status: Backport [https://github.com/pyca/bcrypt/commit/c2ef9350798ab59b18e8a0e04a01389858578fe0] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/_bcrypt/Cargo.lock | 22 ++++++++++++++-------- + src/_bcrypt/Cargo.toml | 2 +- + 2 files changed, 15 insertions(+), 9 deletions(-) + +--- a/src/_bcrypt/Cargo.lock ++++ b/src/_bcrypt/Cargo.lock +@@ -233,6 +233,12 @@ dependencies = [ + ] + + [[package]] ++name = "portable-atomic" ++version = "1.6.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" ++ ++[[package]] + name = "proc-macro2" + version = "1.0.70" + source = "registry+https://github.com/rust-lang/crates.io-index" +@@ -243,15 +249,16 @@ dependencies = [ + + [[package]] + name = "pyo3" +-version = "0.20.0" ++version = "0.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b" ++checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233" + dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", ++ "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", +@@ -260,9 +267,9 @@ dependencies = [ + + [[package]] + name = "pyo3-build-config" +-version = "0.20.0" ++version = "0.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5" ++checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" + dependencies = [ + "once_cell", + "target-lexicon", +@@ -270,9 +277,9 @@ dependencies = [ + + [[package]] + name = "pyo3-ffi" +-version = "0.20.0" ++version = "0.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b" ++checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa" + dependencies = [ + "libc", + "pyo3-build-config", +@@ -280,9 +287,9 @@ dependencies = [ + + [[package]] + name = "pyo3-macros" +-version = "0.20.0" ++version = "0.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b" ++checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158" + dependencies = [ + "proc-macro2", + "pyo3-macros-backend", +@@ -292,12 +299,13 @@ dependencies = [ + + [[package]] + name = "pyo3-macros-backend" +-version = "0.20.0" ++version = "0.20.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424" ++checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185" + dependencies = [ + "heck", + "proc-macro2", ++ "pyo3-build-config", + "quote", + "syn", + ] +--- a/src/_bcrypt/Cargo.toml ++++ b/src/_bcrypt/Cargo.toml +@@ -6,7 +6,7 @@ edition = "2018" + publish = false + + [dependencies] +-pyo3 = { version = "0.20.0", features = ["abi3"] } ++pyo3 = { version = "0.20.3", features = ["abi3"] } + bcrypt = "0.15" + bcrypt-pbkdf = "0.10.0" + 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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Modern password hashing for your software and your servers." +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8f7bb094c7232b058c7e9f2e431f389c" +HOMEPAGE = "https://pypi.org/project/bcrypt/" + +DEPENDS += "python3-cffi-native" +LDFLAGS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', ' -fuse-ld=bfd', '', d)}" + +SRC_URI[sha256sum] = "33313a1200a3ae90b75587ceac502b048b840fc69e7f7a0905b5f87fac7a1258" + +inherit pypi python_setuptools3_rust ptest-cargo cargo-update-recipe-crates + +SRC_URI += " \ + file://0001-Bump-pyo3-from-0.20.0-to-0.20.3-in-src-_bcrypt-746.patch \ + file://run-ptest \ +" + +CARGO_SRC_DIR = "src/_bcrypt" + +require ${BPN}-crates.inc + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +RDEPENDS:${PN}:class-target += "\ + python3-cffi \ + python3-ctypes \ + python3-shell \ + python3-six \ +" 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 @@ +SUMMARY = "Unbearably fast runtime type checking in pure Python." +HOMEPAGE = "https://beartype.readthedocs.io" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e71f94261c1b39896cacacfeaf60560e" + +SRC_URI[sha256sum] = "264ddc2f1da9ec94ff639141fbe33d22e12a9f75aa863b83b7046ffff1381927" + +inherit setuptools3 pypi + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Define boolean algebras, create and parse boolean expressions and create custom boolean DSL" +HOMEPAGE = "https://github.com/bastikr/boolean.py" + +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=d118b5feceee598ebeca76e13395c2bd" + +SRC_URI[sha256sum] = "17b9a181630e43dde1851d42bef546d616d5d9b4480357514597e78b203d06e4" + +PYPI_PACKAGE = "boolean.py" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A simple, correct PEP517 package builder" +HOMEPAGE = "https://github.com/pypa/build" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=310439af287b0fb4780b2ad6907c256c" + +SRC_URI[sha256sum] = "526263f4870c26f26c433545579475377b2b7588b6f1eac76a001e873ae3e19d" + +inherit pypi python_flit_core + +DEPENDS += "python3-pyproject-hooks-native" + +DEPENDS:remove:class-native = "python3-build-native" + +# Skip dependencies as we're doing a minimal build to bootstrap +PEP517_BUILD_OPTS:class-native = "--skip-dependency-check" + +do_compile:prepend:class-native() { + export PYTHONPATH="${S}/src" +} + +RDEPENDS:${PN} += " \ + python3-compression \ + python3-difflib \ + python3-ensurepip \ + python3-logging \ + python3-packaging \ + python3-pyproject-hooks \ + python3-tomllib \ + python3-venv \ +" + +BBCLASSEXTEND = "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 @@ +From 390a233ed969f82b2ef209b23bfb523e785603f9 Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <tgamblin@baylibre.com> +Date: Tue, 9 May 2023 10:19:41 -0400 +Subject: [PATCH] setup.py: hard-code version + +setup.py is pulling the build version from the current date rather than +a release tag or other predictable method, causing reproducibility +issues in builds. Patch this to make reproducible builds work while +discussing this with upstream maintainer (or developing a patch that can +make calver rely on a more standard pyproject.toml solution). + +Upstream-Status: Inappropriate (configuration) + +Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 73f6b10..2e27cf1 100644 +--- a/setup.py ++++ b/setup.py +@@ -42,5 +42,5 @@ setup( + "use_calver = calver.integration:version", + ], + }, +- version=calver_version(True), ++ version=calver_version("2022.6.26"), + ) +-- +2.40.0 + 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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Setuptools extension for CalVer package versions" +HOMEPAGE = "https://github.com/di/calver" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +SRC_URI = " \ + git://github.com/di/calver;branch=master;protocol=https \ + file://run-ptest \ + file://0001-setup.py-hard-code-version.patch \ +" +SRCREV = "3268d8acf2c345f32a1c5f08ba25dc67f76cca81" + +inherit python_setuptools_build_meta ptest + +S = "${WORKDIR}/git" + +RDEPENDS:${PN}-ptest += " \ + python3-pretend \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests ${D}${PTEST_PATH}/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python package for providing Mozilla's CA Bundle." +DESCRIPTION = "This installable Python package contains a CA Bundle that you can reference in your \ +Python code. This is useful for verifying HTTP requests, for example. This is the same CA Bundle \ +which ships with the Requests codebase, and is derived from Mozilla Firefox's canonical set." +HOMEPAGE = " http://certifi.io/" + +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://LICENSE;md5=11618cb6a975948679286b1211bd573c" + +SRC_URI[sha256sum] = "0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${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 @@ +SUMMARY = "Foreign Function Interface for Python calling C code" +HOMEPAGE = "http://cffi.readthedocs.org/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5677e2fdbf7cdda61d6dd2b57df547bf" +DEPENDS += "libffi python3-pycparser" + +SRC_URI[sha256sum] = "bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target = " \ + python3-ctypes \ + python3-io \ + python3-pycparser \ + python3-shell \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Universal encoding detector for Python 2 and 3" +HOMEPAGE = "https://pypi.org/project/chardet/" +LICENSE = "LGPL-2.1-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c" + +SRC_URI[sha256sum] = "1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7" + +# setup.py of chardet needs this. +DEPENDS += "python3-pytest-runner-native" + +inherit pypi python_setuptools_build_meta + +PACKAGES =+ "${PN}-cli" +FILES:${PN}-cli += " \ + ${PYTHON_SITEPACKAGES_DIR}/chardet/cli \ +" + +RDEPENDS:${PN}-cli = "${PN} " + +RDEPENDS:${PN}:class-target += " \ + python3-logging \ +" + +BBCLASSEXTEND = "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 @@ +#!/bin/sh + +pytest -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 @@ +SUMMARY = "A simple wrapper around optparse for powerful command line utilities." +DESCRIPTION = "\ +Click is a Python package for creating beautiful command line interfaces \ +in a composable way with as little code as necessary. It's the "Command \ +Line Interface Creation Kit". It's highly configurable but comes with \ +sensible defaults out of the box." +HOMEPAGE = "http://click.pocoo.org/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=1fa98232fd645608937a0fdc82e999b8" + +SRC_URI[sha256sum] = "ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" + +inherit pypi setuptools3 ptest + +SRC_URI += "file://run-ptest" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-terminal \ + python3-unixadmin \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/ + cp -rf ${S}/docs ${D}${PTEST_PATH}/ +} + +UPSTREAM_CHECK_REGEX = "click/(?P<pver>\d+(\.\d+)+)/" + +CLEANBROKEN = "1" + +RDEPENDS:${PN} += "\ + python3-io \ + python3-threading \ + " + +BBCLASSEXTEND = "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 @@ +# Autogenerated with 'bitbake -c update_crates python3-cryptography' + +# from src/rust/Cargo.lock +SRC_URI += " \ + crate://crates.io/asn1/0.15.5 \ + crate://crates.io/asn1_derive/0.15.5 \ + crate://crates.io/autocfg/1.1.0 \ + crate://crates.io/base64/0.21.7 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/bitflags/2.4.2 \ + crate://crates.io/cc/1.0.83 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/foreign-types/0.3.2 \ + crate://crates.io/foreign-types-shared/0.1.1 \ + crate://crates.io/heck/0.4.1 \ + crate://crates.io/indoc/2.0.4 \ + crate://crates.io/libc/0.2.152 \ + crate://crates.io/lock_api/0.4.11 \ + crate://crates.io/memoffset/0.9.0 \ + crate://crates.io/once_cell/1.19.0 \ + crate://crates.io/openssl/0.10.63 \ + crate://crates.io/openssl-macros/0.1.1 \ + crate://crates.io/openssl-sys/0.9.99 \ + crate://crates.io/parking_lot/0.12.1 \ + crate://crates.io/parking_lot_core/0.9.9 \ + crate://crates.io/pem/3.0.3 \ + crate://crates.io/pkg-config/0.3.29 \ + crate://crates.io/portable-atomic/1.6.0 \ + crate://crates.io/proc-macro2/1.0.78 \ + crate://crates.io/pyo3/0.20.3 \ + crate://crates.io/pyo3-build-config/0.20.3 \ + crate://crates.io/pyo3-ffi/0.20.3 \ + crate://crates.io/pyo3-macros/0.20.3 \ + crate://crates.io/pyo3-macros-backend/0.20.3 \ + crate://crates.io/quote/1.0.35 \ + crate://crates.io/redox_syscall/0.4.1 \ + crate://crates.io/scopeguard/1.2.0 \ + crate://crates.io/self_cell/1.0.3 \ + crate://crates.io/smallvec/1.13.1 \ + crate://crates.io/syn/2.0.48 \ + crate://crates.io/target-lexicon/0.12.13 \ + crate://crates.io/unicode-ident/1.0.12 \ + crate://crates.io/unindent/0.2.3 \ + crate://crates.io/vcpkg/0.2.15 \ + crate://crates.io/windows-targets/0.48.5 \ + crate://crates.io/windows_aarch64_gnullvm/0.48.5 \ + crate://crates.io/windows_aarch64_msvc/0.48.5 \ + crate://crates.io/windows_i686_gnu/0.48.5 \ + crate://crates.io/windows_i686_msvc/0.48.5 \ + crate://crates.io/windows_x86_64_gnu/0.48.5 \ + crate://crates.io/windows_x86_64_gnullvm/0.48.5 \ + crate://crates.io/windows_x86_64_msvc/0.48.5 \ +" + +SRC_URI[asn1-0.15.5.sha256sum] = "ae3ecbce89a22627b5e8e6e11d69715617138290289e385cde773b1fe50befdb" +SRC_URI[asn1_derive-0.15.5.sha256sum] = "861af988fac460ac69a09f41e6217a8fb9178797b76fcc9478444be6a59be19c" +SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +SRC_URI[base64-0.21.7.sha256sum] = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[bitflags-2.4.2.sha256sum] = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +SRC_URI[libc-0.2.152.sha256sum] = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +SRC_URI[openssl-0.10.63.sha256sum] = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" +SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +SRC_URI[openssl-sys-0.9.99.sha256sum] = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" +SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +SRC_URI[pem-3.0.3.sha256sum] = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +SRC_URI[pkg-config-0.3.29.sha256sum] = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +SRC_URI[portable-atomic-1.6.0.sha256sum] = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +SRC_URI[proc-macro2-1.0.78.sha256sum] = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +SRC_URI[pyo3-0.20.3.sha256sum] = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233" +SRC_URI[pyo3-build-config-0.20.3.sha256sum] = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" +SRC_URI[pyo3-ffi-0.20.3.sha256sum] = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa" +SRC_URI[pyo3-macros-0.20.3.sha256sum] = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158" +SRC_URI[pyo3-macros-backend-0.20.3.sha256sum] = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185" +SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +SRC_URI[self_cell-1.0.3.sha256sum] = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba" +SRC_URI[smallvec-1.13.1.sha256sum] = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +SRC_URI[syn-2.0.48.sha256sum] = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +SRC_URI[target-lexicon-0.12.13.sha256sum] = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" +SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +SRC_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 @@ +SUMMARY = "Test vectors for the cryptography package." +HOMEPAGE = "https://cryptography.io/" +SECTION = "devel/python" +LICENSE = "Apache-2.0 | BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \ + file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \ + file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b" + +# NOTE: Make sure to keep this recipe at the same version as python3-cryptography +# Upgrade both recipes at the same time + +SRC_URI[sha256sum] = "505cd5e3b0cb32da1526f07042b7fc38a4b6c356710cb73d2b5f76b037a38ed1" + +PYPI_PACKAGE = "cryptography_vectors" + +inherit pypi python_setuptools_build_meta + +DEPENDS += " \ + python3-cryptography \ +" + +do_install:append () { + # Remove the sha256 checksum lines for pycache files + sed ${D}${PYTHON_SITEPACKAGES_DIR}/cryptography_vectors-${PV}.dist-info/RECORD -e '/__pycache__/d' -i +} + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_CHECK_REGEX = "" + +RECIPE_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 @@ +From b7dd3ce1d75d1e6255e1aca82aa7f401d4246a75 Mon Sep 17 00:00:00 2001 +From: Mingli Yu <mingli.yu@windriver.com> +Date: Tue, 17 May 2022 17:22:48 +0800 +Subject: [PATCH] pyproject.toml: remove --benchmark-disable option + +The new version introduced below change, so remove the option +to avoid python3-pytest-benchmark rdepends to fix the gap. +496703c8 Refs #7079 -- added basic scaffholding for benchmarks (#7087) + +Fixes: + # ./run-ptest + Free memory: 31.283 GB + ERROR: usage: pytest [options] [file_or_dir] [file_or_dir] [...] + pytest: error: unrecognized arguments: --benchmark-disable + inifile: /usr/lib/python3-cryptography/ptest/pyproject.toml + rootdir: /usr/lib/python3-cryptography/ptest + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Mingli Yu <mingli.yu@windriver.com> + +Refresh for 42.02 +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + pyproject.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index c9a7979bd..dec4b7157 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -92,7 +92,7 @@ rust-version = ">=1.63.0" + + + [tool.pytest.ini_options] +-addopts = "-r s --capture=no --strict-markers --benchmark-disable" ++addopts = "-r s --capture=no --strict-markers" + console_output_style = "progress-even-when-capture-no" + markers = [ + "skip_fips: this test is not executed in FIPS mode", +-- +2.34.1 + 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 @@ +#!/usr/bin/env python3 +# https://stackoverflow.com/questions/22102999/get-total-physical-memory-in-python/28161352 +import sys +meminfo = dict((i.split()[0].rstrip(':'),int(i.split()[1])) for i in open('/proc/meminfo').readlines()) +mem_free = meminfo['MemTotal']/1024./1024. +if mem_free < 2.: + print("Insufficient free memory({:.3f}): requires > 2 GB".format(mem_free)) + sys.exit(1) +else: + 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 @@ +#!/bin/sh + +if ./check-memfree.py; then + # Skip the bench test module, we don't yet have pytest3-benchmark in core + # and these are more benchmarks than unit tests. + pytest --automake -k 'not bench' +else + echo "SKIP: crytography.not_enough_memory" +fi 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 @@ +SUMMARY = "Provides cryptographic recipes and primitives to python developers" +HOMEPAGE = "https://cryptography.io/" +SECTION = "devel/python" +LICENSE = "Apache-2.0 | BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8c3617db4fb6fae01f1d253ab91511e4 \ + file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \ + file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b \ + " +LDSHARED += "-pthread" + +SRC_URI[sha256sum] = "6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1" + +SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \ + file://check-memfree.py \ + file://run-ptest \ + " + +require ${BPN}-crates.inc + +inherit pypi python_setuptools3_rust cargo-update-recipe-crates pkgconfig + +DEPENDS += " \ + python3-cffi-native \ +" + +RDEPENDS:${PN} += " \ + python3-cffi \ +" + +RDEPENDS:${PN}:append:class-target = " \ + python3-numbers \ + python3-threading \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-bcrypt \ + python3-cryptography-vectors (= ${PV}) \ + python3-hypothesis \ + python3-iso8601 \ + python3-mmap \ + python3-pretend \ + python3-psutil \ + python3-pytest \ + python3-unittest-automake-output \ + python3-pytest-subtests \ + python3-pytz \ +" + +inherit ptest + +do_install_ptest() { + install -D ${WORKDIR}/check-memfree.py ${D}${PTEST_PATH}/ + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + # remove test_x509.py as it needs benchmark and we don't + # want to introduce the benchmark dependency + rm -rf ${D}${PTEST_PATH}/tests/bench/test_x509.py + install -d ${D}${PTEST_PATH}/tests/hazmat + cp -rf ${S}/tests/hazmat/* ${D}${PTEST_PATH}/tests/hazmat/ + cp -r ${S}/pyproject.toml ${D}${PTEST_PATH}/ +} + +FILES:${PN}-dbg += " \ + ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \ +" + +BBCLASSEXTEND = "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 2ec4033fa0..0000000000 --- a/meta/recipes-devtools/python/python3-cython_0.29.22.bb +++ /dev/null @@ -1,36 +0,0 @@ -inherit setuptools3 -require python-cython.inc - -RDEPENDS_${PN} += "\ - python3-setuptools \ -" - -# running build_ext a second time during install fails, because Python -# would then attempt to import cythonized modules built for the target -# architecture. -DISTUTILS_INSTALL_ARGS += "--skip-build" - -do_install_append() { - # rename scripts that would conflict with the Python 2 build of Cython - mv ${D}${bindir}/cython ${D}${bindir}/cython3 - mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3 - mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3 -} - -PACKAGEBUILDPKGD += "cython_fix_sources" - -cython_fix_sources () { - for f in ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FlowControl.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/FusedNode.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Scanning.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Compiler/Visitor.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Actions.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Plex/Scanners.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Runtime/refnanny.c \ - ${PKGD}/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}/Cython-${PV}/Cython/Tempita/_tempita.c \ - ${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt; do - if [ -e $f ]; then - sed -i -e 's#${WORKDIR}#/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}#g' $f - fi - done -} 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 @@ +inherit setuptools3 +require python-cython.inc + +RDEPENDS:${PN} += "\ + python3-setuptools \ +" + +# running build_ext a second time during install fails, because Python +# would then attempt to import cythonized modules built for the target +# architecture. +SETUPTOOLS_INSTALL_ARGS += "--skip-build" + +do_install:append() { + # rename scripts that would conflict with the Python 2 build of Cython + mv ${D}${bindir}/cython ${D}${bindir}/cython3 + mv ${D}${bindir}/cythonize ${D}${bindir}/cythonize3 + mv ${D}${bindir}/cygdb ${D}${bindir}/cygdb3 +} + +PACKAGESPLITFUNCS =+ "cython_fix_sources" + +cython_fix_sources () { + for f in ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/FlowControl.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/FusedNode.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/Scanning.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Compiler/Visitor.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Plex/Actions.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Plex/Scanners.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Runtime/refnanny.c \ + ${PKGD}${TARGET_DBGSRC_DIR}/Cython/Tempita/_tempita.c \ + ${PKGD}${libdir}/${PYTHON_DIR}/site-packages/Cython*/SOURCES.txt; do + if [ -e $f ]; then + sed -i -e 's#${WORKDIR}/Cython-${PV}#${TARGET_DBGSRC_DIR}#g' $f + fi + done +} + 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 @@ -SUMMARY = "Python bindings for the DBus inter-process communication system" -SECTION = "devel/python" -HOMEPAGE = "http://www.freedesktop.org/Software/dbus" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://COPYING;md5=b03240518994df6d8c974675675e5ca4" -DEPENDS = "expat dbus glib-2.0 virtual/libintl" - -SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz" - -SRC_URI[md5sum] = "51a45c973d82bedff033a4b57d69d5d8" -SRC_URI[sha256sum] = "11238f1d86c995d8aed2e22f04a1e3779f0d70e587caffeab4857f3c662ed5a4" - -S = "${WORKDIR}/dbus-python-${PV}" - -inherit distutils3-base autotools pkgconfig - -# documentation needs python3-sphinx, which is not in oe-core or meta-python for now -# change to use PACKAGECONFIG when python3-sphinx is added to oe-core -EXTRA_OECONF += "--disable-documentation" - - -RDEPENDS_${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml" - -FILES_${PN}-dev += "${libdir}/pkgconfig" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Python bindings for the DBus inter-process communication system" +SECTION = "devel/python" +HOMEPAGE = "http://www.freedesktop.org/Software/dbus" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=97f58951300aa52a9f9e3a62bd5c846c" +DEPENDS = "expat dbus glib-2.0 virtual/libintl" + +SRC_URI = "http://dbus.freedesktop.org/releases/dbus-python/dbus-python-${PV}.tar.gz" + +SRC_URI[sha256sum] = "ad67819308618b5069537be237f8e68ca1c7fcc95ee4a121fe6845b1418248f8" + +S = "${WORKDIR}/dbus-python-${PV}" + +inherit setuptools3-base meson pkgconfig + +# requires dbus-run-session +EXTRA_OEMESON += "-Dtests=false" + +RDEPENDS:${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml" + +FILES:${PN}-dev += "${libdir}/pkgconfig" + +BBCLASSEXTEND = "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 0b87ab0380..0000000000 --- a/meta/recipes-devtools/python/python3-dbusmock_0.22.0.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus" -HOMEPAGE = "https://pypi.org/project/python-dbusmock/" - -LICENSE = "GPL-3.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" - -SRC_URI[sha256sum] = "2191919cc411fb94953b36e46bfd55ee5ad4162432ee0d0892bc2c4770ff5d7c" - -PYPI_PACKAGE = "python-dbusmock" - -inherit pypi setuptools3 - -RDEPENDS_${PN} += "\ - ${PYTHON_PN}-dbus \ - ${PYTHON_PN}-pygobject \ - ${PYTHON_PN}-unittest \ - ${PYTHON_PN}-xml \ - " 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 @@ +SUMMARY = "With this program/Python library you can easily create mock objects on D-Bus" +HOMEPAGE = "https://pypi.org/project/python-dbusmock/" + +LICENSE = "GPL-3.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" + +SRC_URI[sha256sum] = "b23b8e1b51fe2a9b13e617fff6b60b3ed8e536c080cf3498019d223678d5ea49" + +PYPI_PACKAGE = "python-dbusmock" + +inherit pypi python_setuptools_build_meta +DEPENDS += "python3-setuptools-scm-native" + +RDEPENDS:${PN} += "\ + python3-dbus \ + python3-unittest \ + python3-xml \ + " + +RRECOMMENDS:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'gobject-introspection-data', '${MLPREFIX}python3-pygobject', '', d)}" + +BBCLASSEXTEND = "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 @@ -SUMMARY = "Text processing system for documentation" -HOMEPAGE = "http://docutils.sourceforge.net" -SECTION = "devel/python" -LICENSE = "PSF & BSD-2-Clause & GPLv3" -LIC_FILES_CHKSUM = "file://COPYING.txt;md5=7a4646907ab9083c826280b19e103106" - -DEPENDS = "python3" - -SRC_URI = "${SOURCEFORGE_MIRROR}/docutils/docutils-${PV}.tar.gz" -SRC_URI[md5sum] = "9ccb6f332e23360f964de72c8ea5f0ed" -SRC_URI[sha256sum] = "7d4e999cca74a52611773a42912088078363a30912e8822f7a3d38043b767573" - -S = "${WORKDIR}/docutils-${PV}" - -inherit distutils3 - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Docutils is a modular system for processing documentation into useful formats" +HOMEPAGE = "http://docutils.sourceforge.net" +SECTION = "devel/python" +LICENSE = "PSF-2.0 & BSD-2-Clause & GPL-3.0-only" +LIC_FILES_CHKSUM = "file://COPYING.txt;md5=08f5f8aa6a1db2500c08a2bb558e45af" + +SRC_URI[sha256sum] = "f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b" + +inherit pypi setuptools3 + +do_install:append() { + for f in rst2html rst2html4 rst2html5 rst2latex rst2man \ + rst2odt rst2odt_prepstyles rst2pseudoxml rst2s5 rst2xetex rst2xml \ + rstpep2html + do + mv ${D}${bindir}/$f.py ${D}${bindir}/$f; + done +} + +BBCLASSEXTEND = "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 @@ +From 4d4703e0199fb3556c37694e4d951785abca22fd Mon Sep 17 00:00:00 2001 +From: Bruce Ashfield <bruce.ashfield@gmail.com> +Date: Wed, 19 Jan 2022 12:46:42 -0500 +Subject: [PATCH] Revert "libfdt: overlay: make overlay_get_target() public" + +This reverts commit 45f3d1a095dd3440578d5c6313eba555a791f3fb. + +Upstream-Status: Inappropriate [embedded specific] + +--- + libfdt/fdt_overlay.c | 29 ++++++++++++++++++++++------- + libfdt/libfdt.h | 18 ------------------ + libfdt/version.lds | 1 - + 3 files changed, 22 insertions(+), 26 deletions(-) + +diff --git a/libfdt/fdt_overlay.c b/libfdt/fdt_overlay.c +index 5c0c398..d217e79 100644 +--- a/libfdt/fdt_overlay.c ++++ b/libfdt/fdt_overlay.c +@@ -40,22 +40,37 @@ static uint32_t overlay_get_target_phandle(const void *fdto, int fragment) + return fdt32_to_cpu(*val); + } + +-int fdt_overlay_target_offset(const void *fdt, const void *fdto, +- int fragment_offset, char const **pathp) ++/** ++ * overlay_get_target - retrieves the offset of a fragment's target ++ * @fdt: Base device tree blob ++ * @fdto: Device tree overlay blob ++ * @fragment: node offset of the fragment in the overlay ++ * @pathp: pointer which receives the path of the target (or NULL) ++ * ++ * overlay_get_target() retrieves the target offset in the base ++ * device tree of a fragment, no matter how the actual targeting is ++ * done (through a phandle or a path) ++ * ++ * returns: ++ * the targeted node offset in the base device tree ++ * Negative error code on error ++ */ ++static int overlay_get_target(const void *fdt, const void *fdto, ++ int fragment, char const **pathp) + { + uint32_t phandle; + const char *path = NULL; + int path_len = 0, ret; + + /* Try first to do a phandle based lookup */ +- phandle = overlay_get_target_phandle(fdto, fragment_offset); ++ phandle = overlay_get_target_phandle(fdto, fragment); + if (phandle == (uint32_t)-1) + return -FDT_ERR_BADPHANDLE; + + /* no phandle, try path */ + if (!phandle) { + /* And then a path based lookup */ +- path = fdt_getprop(fdto, fragment_offset, "target-path", &path_len); ++ path = fdt_getprop(fdto, fragment, "target-path", &path_len); + if (path) + ret = fdt_path_offset(fdt, path); + else +@@ -621,7 +636,7 @@ static int overlay_merge(void *fdt, void *fdto) + if (overlay < 0) + return overlay; + +- target = fdt_overlay_target_offset(fdt, fdto, fragment, NULL); ++ target = overlay_get_target(fdt, fdto, fragment, NULL); + if (target < 0) + return target; + +@@ -764,7 +779,7 @@ static int overlay_symbol_update(void *fdt, void *fdto) + return -FDT_ERR_BADOVERLAY; + + /* get the target of the fragment */ +- ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path); ++ ret = overlay_get_target(fdt, fdto, fragment, &target_path); + if (ret < 0) + return ret; + target = ret; +@@ -786,7 +801,7 @@ static int overlay_symbol_update(void *fdt, void *fdto) + + if (!target_path) { + /* again in case setprop_placeholder changed it */ +- ret = fdt_overlay_target_offset(fdt, fdto, fragment, &target_path); ++ ret = overlay_get_target(fdt, fdto, fragment, &target_path); + if (ret < 0) + return ret; + target = ret; +diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h +index a7f432c..7f117e8 100644 +--- a/libfdt/libfdt.h ++++ b/libfdt/libfdt.h +@@ -2116,24 +2116,6 @@ int fdt_del_node(void *fdt, int nodeoffset); + */ + int fdt_overlay_apply(void *fdt, void *fdto); + +-/** +- * fdt_overlay_target_offset - retrieves the offset of a fragment's target +- * @fdt: Base device tree blob +- * @fdto: Device tree overlay blob +- * @fragment_offset: node offset of the fragment in the overlay +- * @pathp: pointer which receives the path of the target (or NULL) +- * +- * fdt_overlay_target_offset() retrieves the target offset in the base +- * device tree of a fragment, no matter how the actual targeting is +- * done (through a phandle or a path) +- * +- * returns: +- * the targeted node offset in the base device tree +- * Negative error code on error +- */ +-int fdt_overlay_target_offset(const void *fdt, const void *fdto, +- int fragment_offset, char const **pathp); +- + /**********************************************************************/ + /* Debugging / informational functions */ + /**********************************************************************/ +diff --git a/libfdt/version.lds b/libfdt/version.lds +index cbce5d4..7ab85f1 100644 +--- a/libfdt/version.lds ++++ b/libfdt/version.lds +@@ -77,7 +77,6 @@ LIBFDT_1.2 { + fdt_appendprop_addrrange; + fdt_setprop_inplace_namelen_partial; + fdt_create_with_flags; +- fdt_overlay_target_offset; + local: + *; + }; +-- +2.19.1 + 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 @@ +SUMMARY = "Python Library for the Device Tree Compiler" +HOMEPAGE = "https://devicetree.org/" +DESCRIPTION = "A python library for the Device Tree Compiler, a tool used to manipulate Device Tree files which contain a data structure for describing hardware." +SECTION = "bootloader" +LICENSE = "GPL-2.0-only | BSD-2-Clause" + +DEPENDS = "flex-native bison-native swig-native python3-setuptools-scm-native libyaml dtc" + +SRC_URI = "git://git.kernel.org/pub/scm/utils/dtc/dtc.git;branch=master \ + file://0001-Revert-libfdt-overlay-make-overlay_get_target-public.patch \ + " + +UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>\d+(\.\d+)+)" + +LIC_FILES_CHKSUM = "file://pylibfdt/libfdt.i;beginline=1;endline=6;md5=afda088c974174a29108c8d80b5dce90" + +SRCREV = "039a99414e778332d8f9c04cbd3072e1dcc62798" + +S = "${WORKDIR}/git" + +PYPA_WHEEL = "${S}/dist/libfdt-1.6.2*.whl" + +inherit setuptools3 pkgconfig + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Tooling for devicetree validation using YAML and jsonschema" +HOMEPAGE = "https://github.com/devicetree-org/dt-schema" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=457495c8fa03540db4a576bf7869e811" + +inherit pypi python_setuptools_build_meta + +PYPI_PACKAGE = "dtschema" + +SRC_URI[sha256sum] = "18dd1d34b4a5e451291e5444e9ceb4a6febc605871cdaef22673b6f80aa4a131" + +DEPENDS += "python3-setuptools-scm-native" +RDEPENDS:${PN} += "\ + python3-dtc \ + python3-jsonschema \ + python3-rfc3987 \ + python3-ruamel-yaml \ + " + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A Python library for creating editable wheels" +HOMEPAGE = "https://github.com/pfmoore/editables" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=41bc1be47b7bb8240db3ef928c7cb0bf" + +SRC_URI[sha256sum] = "309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2" + +inherit pypi python_setuptools_build_meta + +RDEPENDS:${PN} += "\ + python3-io \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "This provides a PEP 517 build backend for packages using Flit." +DESCRIPTION = "This provides a PEP 517 build backend for packages using \ +Flit. The only public interface is the API specified by PEP 517, at \ +flit_core.buildapi." +HOMEPAGE = "https://github.com/pypa/flit" +BUGTRACKER = "https://github.com/pypa/flit/issues" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=41eb78fa8a872983a882c694a8305f08" + +SRC_URI[sha256sum] = "d75edf5eb324da20d53570a6a6f87f51e606eee8384925cd66a90611140844c7" + +inherit pypi python_flit_core + +# Need to install by hand as there's a dependency loop +DEPENDS:remove:class-native = " python3-build-native python3-installer-native" +DEPENDS:append:class-native = " unzip-native" + +# We need the full flit tarball +PYPI_PACKAGE = "flit" +PEP517_SOURCE_PATH = "${S}/flit_core" + +do_compile:class-native () { + python_flit_core_do_manual_build +} + +do_install:class-native () { + python_pep517_do_bootstrap_install +} + +PACKAGES =+ "${PN}-tests" + +FILES:${PN}-tests += "\ + ${PYTHON_SITEPACKAGES_DIR}/flit_core/tests/* \ +" + +BBCLASSEXTEND = "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 @@ -SUMMARY = "Python library used to interact with Git repositories" -DESCRIPTION = "GitPython provides object model read and write access to \ -a git repository. Access repository information conveniently, alter the \ -index directly, handle remotes, or go down to low-level object database \ -access with big-files support." -HOMEPAGE = "http://github.com/gitpython-developers/GitPython" -SECTION = "devel/python" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183" - -PYPI_PACKAGE = "GitPython" - -inherit pypi setuptools3 - -SRC_URI[sha256sum] = "be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61" - -DEPENDS += " ${PYTHON_PN}-gitdb" - -RDEPENDS_${PN} += " \ - ${PYTHON_PN}-datetime \ - ${PYTHON_PN}-gitdb \ - ${PYTHON_PN}-io \ - ${PYTHON_PN}-logging \ - ${PYTHON_PN}-math \ - ${PYTHON_PN}-netclient \ - ${PYTHON_PN}-stringold \ - ${PYTHON_PN}-unittest \ - ${PYTHON_PN}-unixadmin \ - git \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Python library used to interact with Git repositories" +DESCRIPTION = "GitPython provides object model read and write access to \ +a git repository. Access repository information conveniently, alter the \ +index directly, handle remotes, or go down to low-level object database \ +access with big-files support." +HOMEPAGE = "http://github.com/gitpython-developers/GitPython" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5279a7ab369ba336989dcf2a107e5c8e" + +PYPI_PACKAGE = "GitPython" + +inherit pypi python_setuptools_build_meta + +SRC_URI[sha256sum] = "35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c" + +DEPENDS += " python3-gitdb" + +RDEPENDS:${PN} += " \ + python3-datetime \ + python3-gitdb \ + python3-io \ + python3-logging \ + python3-math \ + python3-netclient \ + python3-stringold \ + python3-unittest \ + python3-unixadmin \ + git \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A pure-Python git object database" +HOMEPAGE = "http://github.com/gitpython-developers/gitdb" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=59e5ecb13339a936eedf83282eaf4528" + +DEPENDS = "python3-smmap" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "gitdb" + +SRC_URI[sha256sum] = "bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b" + +RDEPENDS:${PN} += "python3-compression \ + python3-crypt \ + python3-io \ + python3-mmap \ + python3-shell \ + python3-smmap \ +" +BBCLASSEXTEND = "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 @@ -inherit setuptools3 -require python-gitdb.inc - -SRC_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 @@ +SUMMARY = "Hatch plugin for fancy PyPI readmes " +HOMEPAGE = "https://pypi.org/project/hatch-fancy-pypi-readme/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=ba5633c60bd3e243091013aa83b4d807" + +inherit pypi python_hatchling + +PYPI_PACKAGE = "hatch_fancy_pypi_readme" + +SRC_URI[sha256sum] = "44dd239f1a779b9dcf8ebc9401a611fd7f7e3e14578dcf22c265dfaf7c1514b8" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_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 @@ +SUMMARY = "Hatch plugin for versioning with your preferred VCS" +HOMEPAGE = "https://pypi.org/project/hatch-vcs/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=26501cfd0bbddf830ee820e95551fa3d" + +inherit pypi python_hatchling + +PYPI_PACKAGE = "hatch_vcs" + +SRC_URI[sha256sum] = "093810748fe01db0d451fabcf2c1ac2688caefd232d4ede967090b1c1b07d9f7" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_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 @@ +SUMMARY = "The extensible, standards compliant build backend used by Hatch" +HOMEPAGE = "https://hatch.pypa.io/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cbe2fd33fc9297692812fc94b7d27fd9" + +inherit pypi python_hatchling + +DEPENDS += "python3-pluggy-native python3-pathspec-native python3-packaging-native python3-editables-native python3-trove-classifiers-native" +DEPENDS:remove:class-native = "python3-hatchling-native" + +SRC_URI[sha256sum] = "51f861891e98c4044eb455163a737e5d2328d7aa74890b182db2d80fee22a497" + +do_compile:prepend() { + export PYTHONPATH=src +} + +BBCLASSEXTEND = "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 @@ +#!/bin/sh + +# Upstream "fast" tests take about 5 minutes and currently do not run cleanly +# (tests/cover and tests/pytest) +# https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python/tests +# https://github.com/HypothesisWorks/hypothesis/blob/master/hypothesis-python/scripts/basic-test.sh#L18 +# +# Instead we run two test suites imported from examples/ + +pytest --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 @@ +# This file is part of Hypothesis, which may be found at +# https://github.com/HypothesisWorks/hypothesis/ +# +# Most of this work is copyright (C) 2013-2021 David R. MacIver +# (david@drmaciver.com), but it contains contributions by others. See +# CONTRIBUTING.rst for a full list of people who may hold copyright, and +# consult the git log if you need to determine who owns an individual +# contribution. +# +# This Source Code Form is subject to the terms of the Mozilla Public License, +# v. 2.0. If a copy of the MPL was not distributed with this file, You can +# obtain one at https://mozilla.org/MPL/2.0/. +# +# END HEADER +# +# SPDX-License-Identifier: MPL-2.0 + +"""This file demonstrates testing a binary search. + +It's a useful example because the result of the binary search is so clearly +determined by the invariants it must satisfy, so we can simply test for those +invariants. + +It also demonstrates the useful testing technique of testing how the answer +should change (or not) in response to movements in the underlying data. +""" + +from hypothesis import given, strategies as st + + +def binary_search(ls, v): + """Take a list ls and a value v such that ls is sorted and v is comparable + with the elements of ls. + + Return an index i such that 0 <= i <= len(v) with the properties: + + 1. ls.insert(i, v) is sorted + 2. ls.insert(j, v) is not sorted for j < i + """ + # Without this check we will get an index error on the next line when the + # list is empty. + if not ls: + return 0 + + # Without this check we will miss the case where the insertion point should + # be zero: The invariant we maintain in the next section is that lo is + # always strictly lower than the insertion point. + if v <= ls[0]: + return 0 + + # Invariant: There is no insertion point i with i <= lo + lo = 0 + + # Invariant: There is an insertion point i with i <= hi + hi = len(ls) + while lo + 1 < hi: + mid = (lo + hi) // 2 + if v > ls[mid]: + # Inserting v anywhere below mid would result in an unsorted list + # because it's > the value at mid. Therefore mid is a valid new lo + lo = mid + # Uncommenting the following lines will cause this to return a valid + # insertion point which is not always minimal. + # elif v == ls[mid]: + # return mid + else: + # Either v == ls[mid] in which case mid is a valid insertion point + # or v < ls[mid], in which case all valid insertion points must be + # < hi. Either way, mid is a valid new hi. + hi = mid + assert lo + 1 == hi + # We now know that there is a valid insertion point <= hi and there is no + # valid insertion point < hi because hi - 1 is lo. Therefore hi is the + # answer we were seeking + return hi + + +def is_sorted(ls): + """Is this list sorted?""" + for i in range(len(ls) - 1): + if ls[i] > ls[i + 1]: + return False + return True + + +Values = st.integers() + +# We generate arbitrary lists and turn this into generating sorting lists +# by just sorting them. +SortedLists = st.lists(Values).map(sorted) + +# We could also do it this way, but that would be a bad idea: +# SortedLists = st.lists(Values).filter(is_sorted) +# The problem is that Hypothesis will only generate long sorted lists with very +# low probability, so we are much better off post-processing values into the +# form we want than filtering them out. + + +@given(ls=SortedLists, v=Values) +def test_insert_is_sorted(ls, v): + """We test the first invariant: binary_search should return an index such + that inserting the value provided at that index would result in a sorted + set.""" + ls.insert(binary_search(ls, v), v) + assert is_sorted(ls) + + +@given(ls=SortedLists, v=Values) +def test_is_minimal(ls, v): + """We test the second invariant: binary_search should return an index such + that no smaller index is a valid insertion point for v.""" + for i in range(binary_search(ls, v)): + ls2 = list(ls) + ls2.insert(i, v) + assert not is_sorted(ls2) + + +@given(ls=SortedLists, v=Values) +def test_inserts_into_same_place_twice(ls, v): + """In this we test a *consequence* of the second invariant: When we insert + a value into a list twice, the insertion point should be the same both + times. This is because we know that v is > the previous element and == the + next element. + + In theory if the former passes, this should always pass. In practice, + failures are detected by this test with much higher probability because it + deliberately puts the data into a shape that is likely to trigger a + failure. + + This is an instance of a good general category of test: Testing how the + function moves in responses to changes in the underlying data. + """ + i = binary_search(ls, v) + ls.insert(i, v) + 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 @@ +# This file is part of Hypothesis, which may be found at +# https://github.com/HypothesisWorks/hypothesis/ +# +# Most of this work is copyright (C) 2013-2021 David R. MacIver +# (david@drmaciver.com), but it contains contributions by others. See +# CONTRIBUTING.rst for a full list of people who may hold copyright, and +# consult the git log if you need to determine who owns an individual +# contribution. +# +# This Source Code Form is subject to the terms of the Mozilla Public License, +# v. 2.0. If a copy of the MPL was not distributed with this file, You can +# obtain one at https://mozilla.org/MPL/2.0/. +# +# END HEADER +# +# SPDX-License-Identifier: MPL-2.0 + +"""This example demonstrates testing a run length encoding scheme. That is, we +take a sequence and represent it by a shorter sequence where each 'run' of +consecutive equal elements is represented as a single element plus a count. So +e.g. + +[1, 1, 1, 1, 2, 1] is represented as [[1, 4], [2, 1], [1, 1]] + +This demonstrates the useful decode(encode(x)) == x invariant that is often +a fruitful source of testing with Hypothesis. + +It also has an example of testing invariants in response to changes in the +underlying data. +""" + +from hypothesis import assume, given, strategies as st + + +def run_length_encode(seq): + """Encode a sequence as a new run-length encoded sequence.""" + if not seq: + return [] + # By starting off the count at zero we simplify the iteration logic + # slightly. + result = [[seq[0], 0]] + for s in seq: + if ( + # If you uncomment this line this branch will be skipped and we'll + # always append a new run of length 1. Note which tests fail. + # False and + s + == result[-1][0] + # Try uncommenting this line and see what problems occur: + # and result[-1][-1] < 2 + ): + result[-1][1] += 1 + else: + result.append([s, 1]) + return result + + +def run_length_decode(seq): + """Take a previously encoded sequence and reconstruct the original from + it.""" + result = [] + for s, i in seq: + for _ in range(i): + result.append(s) + return result + + +# We use lists of a type that should have a relatively high duplication rate, +# otherwise we'd almost never get any runs. +Lists = st.lists(st.integers(0, 10)) + + +@given(Lists) +def test_decodes_to_starting_sequence(ls): + """If we encode a sequence and then decode the result, we should get the + original sequence back. + + Otherwise we've done something very wrong. + """ + assert run_length_decode(run_length_encode(ls)) == ls + + +@given(Lists, st.data()) +def test_duplicating_an_element_does_not_increase_length(ls, data): + """The previous test could be passed by simply returning the input sequence + so we need something that tests the compression property of our encoding. + + In this test we deliberately introduce or extend a run and assert + that this does not increase the length of our encoding, because they + should be part of the same run in the final result. + """ + # We use assume to get a valid index into the list. We could also have used + # e.g. flatmap, but this is relatively straightforward and will tend to + # perform better. + assume(ls) + i = data.draw(st.integers(0, len(ls) - 1)) + ls2 = list(ls) + # duplicating the value at i right next to it guarantees they are part of + # the same run in the resulting compression. + ls2.insert(i, ls2[i]) + 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 @@ +SUMMARY = "A library for property-based testing" +HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c" + +PYPI_PACKAGE = "hypothesis" + +inherit pypi setuptools3 ptest + +SRC_URI += " \ + file://run-ptest \ + file://test_binary_search.py \ + file://test_rle.py \ + " + +SRC_URI[sha256sum] = "ebff09d7fa4f1fb6a855a812baf17e578b4481b7b70ec6d96496210d1a4c6c35" + +RDEPENDS:${PN} += " \ + python3-attrs \ + python3-compression \ + python3-core \ + python3-json \ + python3-pytest \ + python3-sortedcontainers \ + python3-statistics \ + python3-unittest \ + " + +RDEPENDS:${PN}-ptest += " \ + python3-unittest-automake-output \ + " + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/examples + install -m 0755 ${WORKDIR}/test_binary_search.py ${D}${PTEST_PATH}/examples/ + install -m 0755 ${WORKDIR}/test_rle.py ${D}${PTEST_PATH}/examples/ +} + +BBCLASSEXTEND = "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 @@ -SUMMARY = "A library for property-based testing" -HOMEPAGE = "https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python" -LICENSE = "MPL-2.0" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4ee62c16ebd0f4f99d906f36b7de8c3c" - -PYPI_PACKAGE = "hypothesis" - -inherit pypi setuptools3 - -SRC_URI[sha256sum] = "c16fbde26b65c98a2464c48209b066c2f6dab5e8e38acd9d959021eb8d58b6c0" - -RDEPENDS_${PN} += "python3-attrs python3-core python3-sortedcontainers" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Internationalised Domain Names in Applications" +HOMEPAGE = "https://github.com/kjd/idna" +LICENSE = "BSD-3-Clause & Python-2.0 & Unicode-TOU" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=204c0612e40a4dd46012a78d02c80fb1" + +SRC_URI[sha256sum] = "028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc" + +inherit pypi python_flit_core + +RDEPENDS:${PN}:class-target = "\ + python3-codecs \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Parses image files’ header and return image size." +HOMEPAGE = "https://github.com/shibukawa/imagesize_py" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=0c128f0f7e8a02e1b83884c0b5a41cda" + +SRC_URI[sha256sum] = "69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a" + +inherit setuptools3 pypi + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${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 @@ -DESCRIPTION = "Read metadata from Python packages" -HOMEPAGE = "https://pypi.org/project/importlib-metadata/" -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=e88ae122f3925d8bde8319060f2ddb8e" - -inherit pypi setuptools3 - -PYPI_PACKAGE = "importlib_metadata" -UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/" - -SRC_URI[sha256sum] = "fa5daa4477a7414ae34e95942e4dd07f62adf589143c875c133c1e53c4eff38d" - -S = "${WORKDIR}/importlib_metadata-${PV}" - -DEPENDS += "${PYTHON_PN}-setuptools-scm-native ${PYTHON_PN}-toml-native" -RDEPENDS_${PN} += "${PYTHON_PN}-zipp ${PYTHON_PN}-pathlib2" -RDEPENDS_${PN}_append_class-target = " python3-misc" -RDEPENDS_${PN}_append_class-nativesdk = " python3-misc" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Read metadata from Python packages" +HOMEPAGE = "https://pypi.org/project/importlib-metadata/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +inherit pypi python_setuptools_build_meta + +PYPI_PACKAGE = "importlib_metadata" +UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/" + +SRC_URI[sha256sum] = "b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2" + +S = "${WORKDIR}/importlib_metadata-${PV}" + +DEPENDS += "python3-setuptools-scm-native python3-toml-native" +RDEPENDS:${PN} += "python3-zipp python3-pathlib2" +RDEPENDS:${PN}:append:class-target = " python3-misc" +RDEPENDS:${PN}:append:class-nativesdk = " python3-misc" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb b/meta/recipes-devtools/python/python3-iniconfig_2.0.0.bb index 6b3359712f..2abeec62f4 100644 --- a/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb +++ b/meta/recipes-devtools/python/python3-iniconfig_2.0.0.bb @@ -4,7 +4,10 @@ HOMEPAGE = "https://pypi.org/project/iniconfig/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9" -SRC_URI[md5sum] = "0b7f3be87481211c183eae095bcea6f1" -SRC_URI[sha256sum] = "bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" +SRC_URI[sha256sum] = "2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3" -inherit pypi setuptools3 +DEPENDS += "python3-hatch-vcs-native" + +inherit pypi python_hatchling + +BBCLASSEXTEND = "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 @@ -From 8a98e4d44a5e59439a4b6bd95368cc362412c995 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 24 Mar 2017 18:06:08 +0200 -Subject: [PATCH] Add python 3 compatibility. - -Taken from -http://pkgs.fedoraproject.org/cgit/rpms/python-iniparse.git/tree/python-iniparse-python3-compat.patch - -Upstream-Status: Inappropriate [upstream is defunct] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - iniparse/__init__.py | 20 ++++++++++---------- - iniparse/compat.py | 30 ++++++++++++++++-------------- - iniparse/config.py | 16 ++++++++-------- - iniparse/configparser.py | 7 +++++++ - iniparse/ini.py | 20 ++++++++++++-------- - iniparse/utils.py | 4 ++-- - tests/__init__.py | 14 +++++++------- - tests/test_compat.py | 23 +++++++++++++++-------- - tests/test_fuzz.py | 18 +++++++++--------- - tests/test_ini.py | 8 ++++---- - tests/test_misc.py | 4 ++-- - tests/test_tidy.py | 2 +- - tests/test_unicode.py | 10 +++++----- - 13 files changed, 98 insertions(+), 78 deletions(-) - create mode 100644 iniparse/configparser.py - -diff --git a/iniparse/__init__.py b/iniparse/__init__.py -index 8de756f..7193f92 100644 ---- a/iniparse/__init__.py -+++ b/iniparse/__init__.py -@@ -3,17 +3,17 @@ - # Copyright (c) 2007 Tim Lauridsen <tla@rasmil.dk> - # All Rights Reserved. See LICENSE-PSF & LICENSE for details. - --from ini import INIConfig, change_comment_syntax --from config import BasicConfig, ConfigNamespace --from compat import RawConfigParser, ConfigParser, SafeConfigParser --from utils import tidy -+from .ini import INIConfig, change_comment_syntax -+from .config import BasicConfig, ConfigNamespace -+from .compat import RawConfigParser, ConfigParser, SafeConfigParser -+from .utils import tidy - --from ConfigParser import DuplicateSectionError, \ -- NoSectionError, NoOptionError, \ -- InterpolationMissingOptionError, \ -- InterpolationDepthError, \ -- InterpolationSyntaxError, \ -- DEFAULTSECT, MAX_INTERPOLATION_DEPTH -+from .configparser import DuplicateSectionError, \ -+ NoSectionError, NoOptionError, \ -+ InterpolationMissingOptionError, \ -+ InterpolationDepthError, \ -+ InterpolationSyntaxError, \ -+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH - - __all__ = [ - 'BasicConfig', 'ConfigNamespace', -diff --git a/iniparse/compat.py b/iniparse/compat.py -index db89ed8..f95c25c 100644 ---- a/iniparse/compat.py -+++ b/iniparse/compat.py -@@ -12,19 +12,21 @@ The underlying INIConfig object can be accessed as cfg.data - """ - - import re --from ConfigParser import DuplicateSectionError, \ -- NoSectionError, NoOptionError, \ -- InterpolationMissingOptionError, \ -- InterpolationDepthError, \ -- InterpolationSyntaxError, \ -- DEFAULTSECT, MAX_INTERPOLATION_DEPTH -+from .configparser import DuplicateSectionError, \ -+ NoSectionError, NoOptionError, \ -+ InterpolationMissingOptionError, \ -+ InterpolationDepthError, \ -+ InterpolationSyntaxError, \ -+ DEFAULTSECT, MAX_INTERPOLATION_DEPTH - - # These are imported only for compatiability. - # The code below does not reference them directly. --from ConfigParser import Error, InterpolationError, \ -- MissingSectionHeaderError, ParsingError -+from .configparser import Error, InterpolationError, \ -+ MissingSectionHeaderError, ParsingError - --import ini -+import six -+ -+from . import ini - - class RawConfigParser(object): - def __init__(self, defaults=None, dict_type=dict): -@@ -56,7 +58,7 @@ class RawConfigParser(object): - # The default section is the only one that gets the case-insensitive - # treatment - so it is special-cased here. - if section.lower() == "default": -- raise ValueError, 'Invalid section name: %s' % section -+ raise ValueError('Invalid section name: %s' % section) - - if self.has_section(section): - raise DuplicateSectionError(section) -@@ -88,7 +90,7 @@ class RawConfigParser(object): - filename may also be given. - """ - files_read = [] -- if isinstance(filenames, basestring): -+ if isinstance(filenames, six.string_types): - filenames = [filenames] - for filename in filenames: - try: -@@ -143,7 +145,7 @@ class RawConfigParser(object): - def getboolean(self, section, option): - v = self.get(section, option) - if v.lower() not in self._boolean_states: -- raise ValueError, 'Not a boolean: %s' % v -+ raise ValueError('Not a boolean: %s' % v) - return self._boolean_states[v.lower()] - - def has_option(self, section, option): -@@ -234,7 +236,7 @@ class ConfigParser(RawConfigParser): - if "%(" in value: - try: - value = value % vars -- except KeyError, e: -+ except KeyError as e: - raise InterpolationMissingOptionError( - option, section, rawval, e.args[0]) - else: -@@ -283,7 +285,7 @@ class SafeConfigParser(ConfigParser): - _badpercent_re = re.compile(r"%[^%]|%$") - - def set(self, section, option, value): -- if not isinstance(value, basestring): -+ if not isinstance(value, six.string_types): - raise TypeError("option values must be strings") - # check for bad percent signs: - # first, replace all "good" interpolations -diff --git a/iniparse/config.py b/iniparse/config.py -index 5cfa2ea..3b28549 100644 ---- a/iniparse/config.py -+++ b/iniparse/config.py -@@ -143,7 +143,7 @@ class BasicConfig(ConfigNamespace): - - >>> n.aaa = 42 - >>> del n.x -- >>> print n -+ >>> print(n) - aaa = 42 - name.first = paramjit - name.last = oberoi -@@ -152,7 +152,7 @@ class BasicConfig(ConfigNamespace): - - >>> isinstance(n.name, ConfigNamespace) - True -- >>> print n.name -+ >>> print(n.name) - first = paramjit - last = oberoi - >>> sorted(list(n.name)) -@@ -160,7 +160,7 @@ class BasicConfig(ConfigNamespace): - - Finally, values can be read from a file as follows: - -- >>> from StringIO import StringIO -+ >>> from six import StringIO - >>> sio = StringIO(''' - ... # comment - ... ui.height = 100 -@@ -171,7 +171,7 @@ class BasicConfig(ConfigNamespace): - ... ''') - >>> n = BasicConfig() - >>> n._readfp(sio) -- >>> print n -+ >>> print(n) - complexity = medium - data.secret.password = goodness=gracious me - have_python -@@ -199,7 +199,7 @@ class BasicConfig(ConfigNamespace): - - def __str__(self, prefix=''): - lines = [] -- keys = self._data.keys() -+ keys = list(self._data.keys()) - keys.sort() - for name in keys: - value = self._data[name] -@@ -258,7 +258,7 @@ def update_config(target, source): - >>> n.ui.display_clock = True - >>> n.ui.display_qlength = True - >>> n.ui.width = 150 -- >>> print n -+ >>> print(n) - playlist.expand_playlist = True - ui.display_clock = True - ui.display_qlength = True -@@ -267,7 +267,7 @@ def update_config(target, source): - >>> from iniparse import ini - >>> i = ini.INIConfig() - >>> update_config(i, n) -- >>> print i -+ >>> print(i) - [playlist] - expand_playlist = True - <BLANKLINE> -@@ -277,7 +277,7 @@ def update_config(target, source): - width = 150 - - """ -- for name in source: -+ for name in sorted(source): - value = source[name] - if isinstance(value, ConfigNamespace): - if name in target: -diff --git a/iniparse/configparser.py b/iniparse/configparser.py -new file mode 100644 -index 0000000..c543d50 ---- /dev/null -+++ b/iniparse/configparser.py -@@ -0,0 +1,7 @@ -+try: -+ from ConfigParser import * -+ # not all objects get imported with __all__ -+ from ConfigParser import Error, InterpolationMissingOptionError -+except ImportError: -+ from configparser import * -+ from configparser import Error, InterpolationMissingOptionError -diff --git a/iniparse/ini.py b/iniparse/ini.py -index 408354d..052d9e9 100644 ---- a/iniparse/ini.py -+++ b/iniparse/ini.py -@@ -7,7 +7,7 @@ - - Example: - -- >>> from StringIO import StringIO -+ >>> from six import StringIO - >>> sio = StringIO('''# configure foo-application - ... [foo] - ... bar1 = qualia -@@ -16,14 +16,14 @@ Example: - ... special = 1''') - - >>> cfg = INIConfig(sio) -- >>> print cfg.foo.bar1 -+ >>> print(cfg.foo.bar1) - qualia -- >>> print cfg['foo-ext'].special -+ >>> print(cfg['foo-ext'].special) - 1 - >>> cfg.foo.newopt = 'hi!' - >>> cfg.baz.enabled = 0 - -- >>> print cfg -+ >>> print(cfg) - # configure foo-application - [foo] - bar1 = qualia -@@ -42,9 +42,11 @@ Example: - # Backward-compatiable with ConfigParser - - import re --from ConfigParser import DEFAULTSECT, ParsingError, MissingSectionHeaderError -+from .configparser import DEFAULTSECT, ParsingError, MissingSectionHeaderError - --import config -+import six -+ -+from . import config - - class LineType(object): - line = None -@@ -278,6 +280,8 @@ class LineContainer(object): - value = property(get_value, set_value) - - def __str__(self): -+ for c in self.contents: -+ pass#print(c.__str__()) - s = [x.__str__() for x in self.contents] - return '\n'.join(s) - -@@ -465,7 +469,7 @@ class INIConfig(config.ConfigNamespace): - self._sections = {} - if defaults is None: defaults = {} - self._defaults = INISection(LineContainer(), optionxformsource=self) -- for name, value in defaults.iteritems(): -+ for name, value in defaults.items(): - self._defaults[name] = value - if fp is not None: - self._readfp(fp) -@@ -551,7 +555,7 @@ class INIConfig(config.ConfigNamespace): - - for line in readline_iterator(fp): - # Check for BOM on first line -- if linecount == 0 and isinstance(line, unicode): -+ if linecount == 0 and isinstance(line, six.text_type): - if line[0] == u'\ufeff': - line = line[1:] - self._bom = True -diff --git a/iniparse/utils.py b/iniparse/utils.py -index 829fc28..f8b773a 100644 ---- a/iniparse/utils.py -+++ b/iniparse/utils.py -@@ -1,5 +1,5 @@ --import compat --from ini import LineContainer, EmptyLine -+from . import compat -+from .ini import LineContainer, EmptyLine - - def tidy(cfg): - """Clean up blank lines. -diff --git a/tests/__init__.py b/tests/__init__.py -index f1fa321..88689fb 100644 ---- a/tests/__init__.py -+++ b/tests/__init__.py -@@ -1,12 +1,12 @@ - import unittest, doctest - --import test_ini --import test_misc --import test_fuzz --import test_compat --import test_unicode --import test_tidy --import test_multiprocessing -+from . import test_ini -+from . import test_misc -+from . import test_fuzz -+from . import test_compat -+from . import test_unicode -+from . import test_tidy -+from . import test_multiprocessing - from iniparse import config - from iniparse import ini - -diff --git a/tests/test_compat.py b/tests/test_compat.py -index b8da3d5..b6dfb5c 100644 ---- a/tests/test_compat.py -+++ b/tests/test_compat.py -@@ -1,9 +1,16 @@ - from iniparse import compat as ConfigParser --import StringIO -+from six import StringIO -+try: -+ import UserDict -+except ImportError: -+ import collections as UserDict - import unittest --import UserDict - --from test import test_support -+import sys -+if sys.version_info[0] < 3: -+ from test import test_support -+else: -+ from test import support as test_support - - class SortedDict(UserDict.UserDict): - def items(self): -@@ -35,7 +42,7 @@ class TestCaseBase(unittest.TestCase): - - def fromstring(self, string, defaults=None): - cf = self.newconfig(defaults) -- sio = StringIO.StringIO(string) -+ sio = StringIO(string) - cf.readfp(sio) - return cf - -@@ -161,7 +168,7 @@ class TestCaseBase(unittest.TestCase): - "No Section!\n") - - def parse_error(self, exc, src): -- sio = StringIO.StringIO(src) -+ sio = StringIO(src) - self.assertRaises(exc, self.cf.readfp, sio) - - def test_query_errors(self): -@@ -181,7 +188,7 @@ class TestCaseBase(unittest.TestCase): - def get_error(self, exc, section, option): - try: - self.cf.get(section, option) -- except exc, e: -+ except exc as e: - return e - else: - self.fail("expected exception type %s.%s" -@@ -227,7 +234,7 @@ class TestCaseBase(unittest.TestCase): - "foo: another very\n" - " long line" - ) -- output = StringIO.StringIO() -+ output = StringIO() - cf.write(output) - self.assertEqual( - output.getvalue(), -@@ -465,7 +472,7 @@ class SortedTestCase(RawConfigParserTestCase): - "o1=4\n" - "[a]\n" - "k=v\n") -- output = StringIO.StringIO() -+ output = StringIO() - self.cf.write(output) - self.assertEquals(output.getvalue(), - "[a]\n" -diff --git a/tests/test_fuzz.py b/tests/test_fuzz.py -index 5420dcc..b219500 100644 ---- a/tests/test_fuzz.py -+++ b/tests/test_fuzz.py -@@ -1,9 +1,10 @@ - import re - import os - import random -+import sys - import unittest --import ConfigParser --from StringIO import StringIO -+from six import StringIO -+from six.moves import configparser - from iniparse import compat, ini, tidy - - # TODO: -@@ -96,24 +97,25 @@ class test_fuzz(unittest.TestCase): - s = '\n'.join(good_lines) - cc = compat.RawConfigParser() - cc.readfp(StringIO(s)) -- cc_py = ConfigParser.RawConfigParser() -+ cc_py = configparser.RawConfigParser() - cc_py.readfp(StringIO(s)) - # compare the two configparsers - self.assertEqualConfig(cc_py, cc) - # check that tidy does not change semantics - tidy(cc) -- cc_tidy = ConfigParser.RawConfigParser() -+ cc_tidy = configparser.RawConfigParser() - cc_tidy.readfp(StringIO(str(cc.data))) - self.assertEqualConfig(cc_py, cc_tidy) - except AssertionError: - fname = 'fuzz-test-iter-%d.ini' % fuzz_iter -- print 'Fuzz test failed at iteration', fuzz_iter -- print 'Writing out failing INI file as', fname -+ print('Fuzz test failed at iteration', fuzz_iter) -+ print('Writing out failing INI file as', fname) - f = open(fname, 'w') - f.write(s) - f.close() - raise - -+ @unittest.skipIf(sys.version_info[0] > 2, 'http://code.google.com/p/iniparse/issues/detail?id=22#c9') - def assertEqualConfig(self, c1, c2): - self.assertEqualSorted(c1.sections(), c2.sections()) - self.assertEqualSorted(c1.defaults().items(), c2.defaults().items()) -@@ -123,9 +125,7 @@ class test_fuzz(unittest.TestCase): - self.assertEqual(c1.get(sec, opt), c2.get(sec, opt)) - - def assertEqualSorted(self, l1, l2): -- l1.sort() -- l2.sort() -- self.assertEqual(l1, l2) -+ self.assertEqual(sorted(l1), sorted(l2)) - - class suite(unittest.TestSuite): - def __init__(self): -diff --git a/tests/test_ini.py b/tests/test_ini.py -index 6a76edb..07d4f4e 100644 ---- a/tests/test_ini.py -+++ b/tests/test_ini.py -@@ -1,5 +1,5 @@ - import unittest --from StringIO import StringIO -+from six import StringIO - - from iniparse import ini - from iniparse import compat -@@ -196,13 +196,13 @@ but = also me - self.assertEqual(p._data.find('section2').find('just').value, 'kidding') - - itr = p._data.finditer('section1') -- v = itr.next() -+ v = next(itr) - self.assertEqual(v.find('help').value, 'yourself') - self.assertEqual(v.find('but').value, 'also me') -- v = itr.next() -+ v = next(itr) - self.assertEqual(v.find('help').value, 'me') - self.assertEqual(v.find('I\'m').value, 'desperate') -- self.assertRaises(StopIteration, itr.next) -+ self.assertRaises(StopIteration, next, itr) - - self.assertRaises(KeyError, p._data.find, 'section') - self.assertRaises(KeyError, p._data.find('section2').find, 'ahem') -diff --git a/tests/test_misc.py b/tests/test_misc.py -index 31cf4da..96ef035 100644 ---- a/tests/test_misc.py -+++ b/tests/test_misc.py -@@ -1,9 +1,9 @@ - import re - import unittest - import pickle --import ConfigParser -+from six.moves import configparser -+from six import StringIO - from textwrap import dedent --from StringIO import StringIO - from iniparse import compat, ini - - class CaseSensitiveConfigParser(compat.ConfigParser): -diff --git a/tests/test_tidy.py b/tests/test_tidy.py -index 7304747..26b6cde 100644 ---- a/tests/test_tidy.py -+++ b/tests/test_tidy.py -@@ -1,6 +1,6 @@ - import unittest - from textwrap import dedent --from StringIO import StringIO -+from six import StringIO - - from iniparse import tidy,INIConfig - from iniparse.ini import EmptyLine -diff --git a/tests/test_unicode.py b/tests/test_unicode.py -index a56fcab..14d4fbd 100644 ---- a/tests/test_unicode.py -+++ b/tests/test_unicode.py -@@ -1,5 +1,5 @@ - import unittest --from StringIO import StringIO -+import six - from iniparse import compat, ini - - class test_unicode(unittest.TestCase): -@@ -17,14 +17,14 @@ baz = Marc-Andr\202 - """ - - def basic_tests(self, s, strable): -- f = StringIO(s) -+ f = six.StringIO(s) - i = ini.INIConfig(f) -- self.assertEqual(unicode(i), s) -- self.assertEqual(type(i.foo.bar), unicode) -+ self.assertEqual(six.text_type(i), s) -+ self.assertEqual(type(i.foo.bar), six.text_type) - if strable: - self.assertEqual(str(i), str(s)) - else: -- self.assertRaises(UnicodeEncodeError, lambda: str(i)) -+ self.assertRaises(UnicodeEncodeError, lambda: six.text_type(i).encode('ascii')) - return i - - def test_ascii(self): --- -2.11.0 - 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 @@ SUMMARY = "Accessing and Modifying INI files" HOMEPAGE = "https://pypi.org/project/iniparse/" -LICENSE = "MIT & PSF" +LICENSE = "MIT & PSF-2.0" LIC_FILES_CHKSUM = "file://LICENSE-PSF;md5=1c78a5bb3584b353496d5f6f34edb4b2 \ file://LICENSE;md5=52f28065af11d69382693b45b5a8eb54" -SRC_URI = "file://0001-Add-python-3-compatibility.patch " +SRC_URI[sha256sum] = "932e5239d526e7acb504017bb707be67019ac428a6932368e6851691093aa842" -SRC_URI[md5sum] = "5e573e9e9733d97623881ce9bbe5eca6" -SRC_URI[sha256sum] = "abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054" +inherit pypi setuptools3 -inherit pypi distutils3 - -RDEPENDS_${PN} += "python3-core python3-six" +RDEPENDS:${PN} += "python3-core python3-six" DEPENDS += "python3-six" BBCLASSEXTEND = "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 @@ +From 74fe171fa4a25c120607e9f8450cbdfee675c959 Mon Sep 17 00:00:00 2001 +From: Ross Burton <ross.burton@arm.com> +Date: Mon, 14 Mar 2022 14:39:22 +0000 +Subject: [PATCH] python3-installer: add installer module + +Let us override the hashbang directly (possibly upstreamable), and don't +play games with hashbangs: for now assume that even hashbangs with spaces +are simple (assume the spaces are only used to separate arguments) and +we don't have long hashbangs. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton <ross.burton@arm.com> + +--- + src/installer/__main__.py | 9 ++++++++- + src/installer/scripts.py | 15 +-------------- + 2 files changed, 9 insertions(+), 15 deletions(-) + +diff --git a/src/installer/__main__.py b/src/installer/__main__.py +index 51014b9..38de286 100644 +--- a/src/installer/__main__.py ++++ b/src/installer/__main__.py +@@ -30,6 +30,13 @@ def _get_main_parser() -> argparse.ArgumentParser: + type=str, + help="override prefix to install packages to", + ) ++ parser.add_argument( ++ "--interpreter", ++ "-i", ++ type=str, ++ default=sys.executable, ++ help=f"interpreter (defaults to {sys.executable})", ++ ) + parser.add_argument( + "--compile-bytecode", + action="append", +@@ -86,7 +93,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None: + with WheelFile.open(args.wheel) as source: + destination = SchemeDictionaryDestination( + scheme_dict=_get_scheme_dict(source.distribution, prefix=args.prefix), +- interpreter=sys.executable, ++ interpreter=args.interpreter, + script_kind=get_launcher_kind(), + bytecode_optimization_levels=bytecode_levels, + destdir=args.destdir, +diff --git a/src/installer/scripts.py b/src/installer/scripts.py +index 7e3c8fc..ba6ed5a 100644 +--- a/src/installer/scripts.py ++++ b/src/installer/scripts.py +@@ -59,20 +59,7 @@ def _build_shebang(executable: str, forlauncher: bool) -> bytes: + https://bitbucket.org/pypa/distlib/src/58cd5c6/distlib/scripts.py#lines-124 + """ + executable_bytes = executable.encode("utf-8") +- if forlauncher: # The launcher can just use the command as-is. +- return b"#!" + executable_bytes +- if _is_executable_simple(executable_bytes): +- return b"#!" + executable_bytes +- +- # Shebang support for an executable with a space in it is under-specified +- # and platform-dependent, so we use a clever hack to generate a script to +- # run in ``/bin/sh`` that should work on all reasonably modern platforms. +- # Read the following message to understand how the hack works: +- # https://github.com/pradyunsg/installer/pull/4#issuecomment-623668717 +- +- quoted = shlex.quote(executable).encode("utf-8") +- # I don't understand a lick what this is trying to do. +- return b"#!/bin/sh\n'''exec' " + quoted + b' "$0" "$@"\n' + b"' '''" ++ return b"#!" + executable_bytes + + + 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 @@ +SUMMARY = "Library and tool for installing Python wheels" +DESCRIPTION = "A low-level library for installing a Python package from a wheel distribution." +HOMEPAGE = "https://installer.readthedocs.io/" +BUGTRACKER = "https://github.com/pypa/installer/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5038641aec7a77451e31da828ebfae00" + +SRC_URI += "file://interpreter.patch" + +SRC_URI[sha256sum] = "a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631" + +inherit pypi python_flit_core + +# Bootstrap the native build +DEPENDS:remove:class-native = "python3-build-native python3-installer-native" + +RDEPENDS:${PN} += " \ + python3-compile \ + python3-compression \ + python3-netclient \ +" + +INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode" + +do_compile:class-native () { + python_flit_core_do_manual_build +} + +do_install:prepend:class-native() { + export PYTHONPATH="${S}/src" +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Simple module to parse ISO 8601 dates" +HOMEPAGE = "http://pyiso8601.readthedocs.org/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=aab31f2ef7ba214a5a341eaa47a7f367" + +SRC_URI[sha256sum] = "6b1d3829ee8921c4301998c909f7829fa9ed3cbdac0d3b16af2d743aed1ba8df" + +inherit pypi python_poetry_core + +RDEPENDS:${PN} += "\ + python3-datetime \ + python3-numbers \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "ISO 8601 date/time parser" +HOMEPAGE = "https://github.com/gweis/isodate/" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709" + +SRC_URI[sha256sum] = "48c5881de7e8b0a0d648cb024c8062dc84e7b840ed81e864c7614fd3c127bde9" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + python3-numbers \ + python3-six \ +" + +BBCLASSEXTEND = "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 @@ #!/bin/sh -pytest +pytest --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 dbdf563f87..0000000000 --- a/meta/recipes-devtools/python/python3-jinja2_2.11.3.bb +++ /dev/null @@ -1,48 +0,0 @@ -DESCRIPTION = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python." -HOMEPAGE = "https://pypi.org/project/Jinja/" - -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462" - -SRC_URI[sha256sum] = "a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6" - -PYPI_PACKAGE = "Jinja2" - -CVE_PRODUCT = "jinja2 jinja" - -CLEANBROKEN = "1" - -inherit pypi setuptools3 -# ptest disabled in OE-Core for now due to missing dependencies - - -SRC_URI += " \ - file://run-ptest \ -" - -do_install_ptest() { - install -d ${D}${PTEST_PATH}/tests - cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ -} - -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ - ${PYTHON_PN}-unixadmin \ -" - -RDEPENDS_${PN} += " \ - ${PYTHON_PN}-asyncio \ - ${PYTHON_PN}-crypt \ - ${PYTHON_PN}-io \ - ${PYTHON_PN}-json \ - ${PYTHON_PN}-markupsafe \ - ${PYTHON_PN}-math \ - ${PYTHON_PN}-netclient \ - ${PYTHON_PN}-numbers\ - ${PYTHON_PN}-pickle \ - ${PYTHON_PN}-pprint \ - ${PYTHON_PN}-shell \ - ${PYTHON_PN}-threading \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Python Jinja2: A small but fast and easy to use stand-alone template engine written in pure python." +HOMEPAGE = "https://pypi.org/project/Jinja2/" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=5dc88300786f1c214c1e9827a5229462" + +SRC_URI[sha256sum] = "ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90" + +PYPI_PACKAGE = "Jinja2" + +CVE_PRODUCT = "jinja2 jinja" + +CLEANBROKEN = "1" + +inherit pypi setuptools3 ptest + +SRC_URI += " \ + file://run-ptest \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ + python3-toml \ + python3-unixadmin \ +" + +RDEPENDS:${PN} += " \ + python3-asyncio \ + python3-crypt \ + python3-io \ + python3-json \ + python3-markupsafe \ + python3-math \ + python3-netclient \ + python3-numbers\ + python3-pickle \ + python3-pprint \ + python3-shell \ + python3-threading \ +" + +BBCLASSEXTEND = "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 @@ +#!/bin/sh + +python3 -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 @@ +SUMMARY = "Resolve JSON Pointers in Python" +HOMEPAGE = "https://github.com/stefankoegl/python-json-pointer" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=32b15c843b7a329130f4e266a281ebb3" + +inherit pypi ptest setuptools3 + +SRC_URI[sha256sum] = "585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88" + +RDEPENDS:${PN} += " \ + python3-json \ +" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-doctest \ + python3-unittest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + cp -f ${S}/tests.py ${D}${PTEST_PATH}/ +} 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 @@ +SUMMARY = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +DESCRIPTION = "JSON support files from the JSON Schema Specifications (metaschemas, \ +vocabularies, etc.), packaged for runtime access from Python as a referencing-based Schema Registry." +HOMEPAGE = "https://pypi.org/project/jsonschema-specifications/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=93eb9740964b59e9ba30281255b044e2" + +SRC_URI[sha256sum] = "48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc" + +inherit pypi python_hatchling + +PYPI_PACKAGE = "jsonschema_specifications" + +DEPENDS += "python3-hatch-vcs-native" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "An implementation of JSON Schema validation for Python" +HOMEPAGE = "https://github.com/python-jsonschema/jsonschema" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \ + file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af" + +SRC_URI[sha256sum] = "85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5" + +inherit pypi python_hatchling + +PACKAGES =+ "${PN}-tests" +FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/jsonschema/tests" + +DEPENDS += "python3-hatch-fancy-pypi-readme-native python3-hatch-vcs-native " + +PACKAGECONFIG ??= "format" +PACKAGECONFIG[format] = ",,,\ + python3-idna \ + python3-jsonpointer \ + python3-webcolors \ + python3-rfc3987 \ + python3-rfc3339-validator \ +" +PACKAGECONFIG[nongpl] = ",,,\ + python3-idna \ + python3-jsonpointer \ + python3-webcolors \ + python3-rfc3986-validator \ + python3-rfc3339-validator \ +" + +RDEPENDS:${PN} += " \ + python3-attrs \ + python3-core \ + python3-datetime \ + python3-importlib-metadata \ + python3-io \ + python3-json \ + python3-jsonschema-specifications \ + python3-netclient \ + python3-numbers \ + python3-pprint \ + python3-pyrsistent \ + python3-referencing \ + python3-zipp \ +" + +RDEPENDS:${PN}-tests = "${PN}" + +BBCLASSEXTEND = "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" inherit pypi setuptools3 -SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532" -SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60" +SRC_URI[sha256sum] = "7bcce24ea6c0fa3bc62468476c6d2f6264156db2f04878a372027c10615a2721" -RDEPENDS_${PN} += "\ +RDEPENDS:${PN} += "\ libarchive \ - ${PYTHON_PN}-ctypes \ - ${PYTHON_PN}-mmap \ + python3-ctypes \ + python3-mmap \ + python3-logging \ " BBCLASSEXTEND = "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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Utility library to parse, compare, simplify and normalize license expressions" +HOMEPAGE = "https://github.com/nexB/license-expression" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://apache-2.0.LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI[sha256sum] = "1295406f736b4f395ff069aec1cebfad53c0fcb3cf57df0f5ec58fc7b905aea5" + +inherit pypi ptest python_setuptools_build_meta + +DEPENDS += "python3-setuptools-scm-native" + +RDEPENDS:${PN} += "\ + python3-booleanpy \ + python3-core \ + python3-json \ + python3-stringold \ + python3-logging \ +" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + install -d ${D}${PTEST_PATH}/src + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + cp -rf ${S}/src/* ${D}${PTEST_PATH}/src/ + cp -rf ${S}/setup.cfg ${D}${PTEST_PATH}/ +} 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 @@ +SUMMARY = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +DESCRIPTION = "lxml is a Pythonic, mature binding for the libxml2 and \ +libxslt libraries. It provides safe and convenient access to these \ +libraries using the ElementTree API. It extends the ElementTree API \ +significantly to offer support for XPath, RelaxNG, XML Schema, XSLT, \ +C14N and much more." +HOMEPAGE = "https://lxml.de/" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause & GPL-2.0-only & MIT & PSF-2.0" +LIC_FILES_CHKSUM = "file://LICENSES.txt;md5=e4c045ebad958ead4b48008f70838403 \ + file://doc/licenses/elementtree.txt;md5=eb34d036a6e3d56314ee49a6852ac891 \ + file://doc/licenses/BSD.txt;md5=700a1fc17f4797d4f2d34970c8ee694b \ + file://doc/licenses/GPL.txt;md5=94d55d512a9ba36caa9b7df079bae19f \ + file://src/lxml/isoschematron/resources/rng/iso-schematron.rng;beginline=2;endline=7;md5=fc85684a8dd5fa272c086bceb0d99e10 \ + file://src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl;beginline=2;endline=24;md5=cc86b7b2bbc678e13f58ea403eb9929b \ + file://src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl;beginline=2;endline=7;md5=5b03236d293dc3784205542b409d2f53 \ + " + +DEPENDS += "libxml2 libxslt" + +SRC_URI[sha256sum] = "3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306" + +SRC_URI += "${PYPI_SRC_URI}" +inherit pkgconfig pypi setuptools3 + +# {standard input}: Assembler messages: +# {standard input}:1488805: Error: branch out of range +DEBUG_OPTIMIZATION:remove:mips = " -Og" +DEBUG_OPTIMIZATION:append:mips = " -O" +BUILD_OPTIMIZATION:remove:mips = " -Og" +BUILD_OPTIMIZATION:append:mips = " -O" + +DEBUG_OPTIMIZATION:remove:mipsel = " -Og" +DEBUG_OPTIMIZATION:append:mipsel = " -O" +BUILD_OPTIMIZATION:remove:mipsel = " -Og" +BUILD_OPTIMIZATION:append:mipsel = " -O" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += "libxml2 libxslt python3-compression" + +CLEANBROKEN = "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" inherit pypi setuptools3 -SRC_URI[sha256sum] = "ca884349f2c92ce830e3f498c5b7c7051fe2942c3ee4332f65213b8ebff15a62" +SRC_URI[sha256sum] = "c1ba14b08e4a5f5c31a302b7721239695b2f0f058d125bd5ce1ee36b9d9d3c3b" -RDEPENDS_${PN} += "file \ - ${PYTHON_PN}-ctypes \ - ${PYTHON_PN}-io \ - ${PYTHON_PN}-logging \ - ${PYTHON_PN}-shell" +RDEPENDS:${PN} += "file \ + python3-ctypes \ + python3-io \ + python3-logging \ + python3-shell" BBCLASSEXTEND = "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 @@ -SUMMARY = "Templating library for Python" -HOMEPAGE = "http://www.makotemplates.org/" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=943eb67718222db21d44a4ef1836675f" - -PYPI_PACKAGE = "Mako" - -inherit pypi setuptools3 - -SRC_URI[sha256sum] = "17831f0b7087c313c0ffae2bcbbd3c1d5ba9eeac9c38f2eb7b50e8c99fe9d5ab" - -RDEPENDS_${PN} = "${PYTHON_PN}-html \ - ${PYTHON_PN}-netclient \ - ${PYTHON_PN}-threading \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Templating library for Python" +HOMEPAGE = "http://www.makotemplates.org/" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d0995d6f7ba3f186a03118f244e88f57" + +PYPI_PACKAGE = "Mako" + +inherit pypi python_setuptools_build_meta + +SRC_URI[sha256sum] = "e16c01d9ab9c11f7290eef1cfefc093fb5a45ee4a3da09e2fec2e4d1bae54e73" + +RDEPENDS:${PN} = "python3-html \ + python3-markupsafe \ + python3-netclient \ + python3-pygments \ + python3-threading \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A Python implementation of John Gruber's Markdown." +HOMEPAGE = "https://python-markdown.github.io/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.md;md5=ec58cdf7cfed06a21f7a9362627a5480" + +inherit pypi python_setuptools_build_meta + +PYPI_PACKAGE = "Markdown" +SRC_URI[sha256sum] = "ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${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 @@ #!/bin/sh -pytest +pytest --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 @@ -DESCRIPTION = "Implements a XML/HTML/XHTML Markup safe string for Python" -HOMEPAGE = "http://github.com/mitsuhiko/markupsafe" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" - -SRC_URI[md5sum] = "43fd756864fe42063068e092e220c57b" -SRC_URI[sha256sum] = "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b" - -PYPI_PACKAGE = "MarkupSafe" -inherit pypi setuptools3 -# ptest disabled in OE-Core for now due to missing dependencies - -RDEPENDS_${PN} += "${PYTHON_PN}-stringold" - -BBCLASSEXTEND = "native nativesdk" - -SRC_URI += " \ - file://run-ptest \ -" - -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ -" - -do_install_ptest() { - install -d ${D}${PTEST_PATH}/tests - cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/ -} 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 @@ +SUMMARY = "Implements a XML/HTML/XHTML Markup safe string for Python" +HOMEPAGE = "http://github.com/mitsuhiko/markupsafe" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75" + +SRC_URI[sha256sum] = "d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b" + +PYPI_PACKAGE = "MarkupSafe" +inherit pypi python_setuptools_build_meta ptest + +RDEPENDS:${PN} += "python3-stringold" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -f ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} 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 @@ +# Autogenerated with 'bitbake -c update_crates python3-maturin' + +# from Cargo.lock +SRC_URI += " \ + crate://crates.io/adler/1.0.2 \ + crate://crates.io/ahash/0.8.6 \ + crate://crates.io/aho-corasick/1.1.2 \ + crate://crates.io/allocator-api2/0.2.16 \ + crate://crates.io/anstream/0.3.2 \ + crate://crates.io/anstream/0.6.4 \ + crate://crates.io/anstyle/1.0.2 \ + crate://crates.io/anstyle-parse/0.2.1 \ + crate://crates.io/anstyle-query/1.0.0 \ + crate://crates.io/anstyle-wincon/1.0.2 \ + crate://crates.io/anstyle-wincon/3.0.1 \ + crate://crates.io/anyhow/1.0.75 \ + crate://crates.io/autocfg/1.1.0 \ + crate://crates.io/base64/0.13.1 \ + crate://crates.io/base64/0.21.5 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/bitflags/2.4.1 \ + crate://crates.io/block-buffer/0.10.4 \ + crate://crates.io/bstr/1.8.0 \ + crate://crates.io/byteorder/1.5.0 \ + crate://crates.io/bytes/1.5.0 \ + crate://crates.io/bytesize/1.3.0 \ + crate://crates.io/bzip2/0.4.4 \ + crate://crates.io/bzip2-sys/0.1.11+1.0.8 \ + crate://crates.io/cab/0.4.1 \ + crate://crates.io/camino/1.1.6 \ + crate://crates.io/cargo-config2/0.1.16 \ + crate://crates.io/cargo-options/0.7.2 \ + crate://crates.io/cargo-platform/0.1.5 \ + crate://crates.io/cargo-xwin/0.16.2 \ + crate://crates.io/cargo-zigbuild/0.18.0 \ + crate://crates.io/cargo_metadata/0.18.1 \ + crate://crates.io/cbindgen/0.26.0 \ + crate://crates.io/cc/1.0.83 \ + crate://crates.io/cfb/0.9.0 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/charset/0.1.3 \ + crate://crates.io/chumsky/0.9.3 \ + crate://crates.io/clap/4.3.24 \ + crate://crates.io/clap_builder/4.3.24 \ + crate://crates.io/clap_complete/4.3.2 \ + crate://crates.io/clap_complete_command/0.5.1 \ + crate://crates.io/clap_complete_fig/4.3.1 \ + crate://crates.io/clap_complete_nushell/0.1.11 \ + crate://crates.io/clap_derive/4.3.12 \ + crate://crates.io/clap_lex/0.5.0 \ + crate://crates.io/cli-table/0.4.7 \ + crate://crates.io/colorchoice/1.0.0 \ + crate://crates.io/configparser/3.0.3 \ + crate://crates.io/console/0.15.7 \ + crate://crates.io/content_inspector/0.2.4 \ + crate://crates.io/core-foundation/0.9.3 \ + crate://crates.io/core-foundation-sys/0.8.4 \ + crate://crates.io/cpufeatures/0.2.11 \ + crate://crates.io/crc32fast/1.3.2 \ + crate://crates.io/crossbeam-channel/0.5.8 \ + crate://crates.io/crossbeam-deque/0.8.3 \ + crate://crates.io/crossbeam-epoch/0.9.15 \ + crate://crates.io/crossbeam-utils/0.8.16 \ + crate://crates.io/crypto-common/0.1.6 \ + crate://crates.io/data-encoding/2.5.0 \ + crate://crates.io/deranged/0.3.9 \ + crate://crates.io/dialoguer/0.11.0 \ + crate://crates.io/diff/0.1.13 \ + crate://crates.io/digest/0.10.7 \ + crate://crates.io/dirs/5.0.1 \ + crate://crates.io/dirs-sys/0.4.1 \ + crate://crates.io/dissimilar/1.0.7 \ + crate://crates.io/dunce/1.0.4 \ + crate://crates.io/either/1.9.0 \ + crate://crates.io/encode_unicode/0.3.6 \ + crate://crates.io/encoding_rs/0.8.33 \ + crate://crates.io/equivalent/1.0.1 \ + crate://crates.io/errno/0.3.8 \ + crate://crates.io/expect-test/1.4.1 \ + crate://crates.io/fastrand/2.0.1 \ + crate://crates.io/fat-macho/0.4.7 \ + crate://crates.io/filetime/0.2.22 \ + crate://crates.io/flate2/1.0.28 \ + crate://crates.io/fnv/1.0.7 \ + crate://crates.io/foreign-types/0.3.2 \ + crate://crates.io/foreign-types-shared/0.1.1 \ + crate://crates.io/form_urlencoded/1.2.1 \ + crate://crates.io/fs-err/2.11.0 \ + crate://crates.io/generic-array/0.14.7 \ + crate://crates.io/getrandom/0.2.11 \ + crate://crates.io/glob/0.3.1 \ + crate://crates.io/globset/0.4.14 \ + crate://crates.io/goblin/0.7.1 \ + crate://crates.io/hashbrown/0.12.3 \ + crate://crates.io/hashbrown/0.14.3 \ + crate://crates.io/heck/0.4.1 \ + crate://crates.io/hermit-abi/0.3.3 \ + crate://crates.io/home/0.5.5 \ + crate://crates.io/humantime/2.1.0 \ + crate://crates.io/humantime-serde/1.1.1 \ + crate://crates.io/idna/0.5.0 \ + crate://crates.io/ignore/0.4.20 \ + crate://crates.io/indexmap/1.9.3 \ + crate://crates.io/indexmap/2.1.0 \ + crate://crates.io/indicatif/0.17.7 \ + crate://crates.io/indoc/2.0.4 \ + crate://crates.io/instant/0.1.12 \ + crate://crates.io/io-lifetimes/1.0.11 \ + crate://crates.io/is-terminal/0.4.9 \ + crate://crates.io/itertools/0.11.0 \ + crate://crates.io/itertools/0.12.0 \ + crate://crates.io/itoa/1.0.9 \ + crate://crates.io/keyring/2.0.5 \ + crate://crates.io/lazy_static/1.4.0 \ + crate://crates.io/lddtree/0.3.3 \ + crate://crates.io/libc/0.2.150 \ + crate://crates.io/libredox/0.0.1 \ + crate://crates.io/linux-keyutils/0.2.3 \ + crate://crates.io/linux-raw-sys/0.3.8 \ + crate://crates.io/linux-raw-sys/0.4.11 \ + crate://crates.io/lock_api/0.4.11 \ + crate://crates.io/log/0.4.20 \ + crate://crates.io/lzxd/0.1.4 \ + crate://crates.io/mailparse/0.14.0 \ + crate://crates.io/matchers/0.1.0 \ + crate://crates.io/memchr/2.6.4 \ + crate://crates.io/memoffset/0.9.0 \ + crate://crates.io/mime/0.3.17 \ + crate://crates.io/mime_guess/2.0.4 \ + crate://crates.io/minijinja/1.0.10 \ + crate://crates.io/minimal-lexical/0.2.1 \ + crate://crates.io/miniz_oxide/0.7.1 \ + crate://crates.io/msi/0.7.0 \ + crate://crates.io/multipart/0.18.0 \ + crate://crates.io/native-tls/0.2.11 \ + crate://crates.io/nom/7.1.3 \ + crate://crates.io/normalize-line-endings/0.3.0 \ + crate://crates.io/normpath/1.1.1 \ + crate://crates.io/nu-ansi-term/0.46.0 \ + crate://crates.io/number_prefix/0.4.0 \ + crate://crates.io/once_cell/1.18.0 \ + crate://crates.io/openssl/0.10.60 \ + crate://crates.io/openssl-macros/0.1.1 \ + crate://crates.io/openssl-probe/0.1.5 \ + crate://crates.io/openssl-sys/0.9.96 \ + crate://crates.io/option-ext/0.2.0 \ + crate://crates.io/os_pipe/1.1.4 \ + crate://crates.io/overload/0.1.1 \ + crate://crates.io/parking_lot/0.12.1 \ + crate://crates.io/parking_lot_core/0.9.9 \ + crate://crates.io/paste/1.0.14 \ + crate://crates.io/path-slash/0.2.1 \ + crate://crates.io/pep440_rs/0.3.12 \ + crate://crates.io/pep508_rs/0.2.3 \ + crate://crates.io/percent-encoding/2.3.1 \ + crate://crates.io/pin-project-lite/0.2.13 \ + crate://crates.io/pkg-config/0.3.27 \ + crate://crates.io/plain/0.2.3 \ + crate://crates.io/platform-info/2.0.2 \ + crate://crates.io/portable-atomic/1.5.1 \ + crate://crates.io/powerfmt/0.2.0 \ + crate://crates.io/ppv-lite86/0.2.17 \ + crate://crates.io/pretty_assertions/1.4.0 \ + crate://crates.io/proc-macro2/1.0.70 \ + crate://crates.io/psm/0.1.21 \ + crate://crates.io/pyproject-toml/0.8.1 \ + crate://crates.io/python-pkginfo/0.6.0 \ + crate://crates.io/quote/1.0.33 \ + crate://crates.io/quoted_printable/0.4.8 \ + crate://crates.io/rand/0.8.5 \ + crate://crates.io/rand_chacha/0.3.1 \ + crate://crates.io/rand_core/0.6.4 \ + crate://crates.io/rayon/1.8.0 \ + crate://crates.io/rayon-core/1.12.0 \ + crate://crates.io/redox_syscall/0.3.5 \ + crate://crates.io/redox_syscall/0.4.1 \ + crate://crates.io/redox_users/0.4.4 \ + crate://crates.io/regex/1.10.2 \ + crate://crates.io/regex-automata/0.1.10 \ + crate://crates.io/regex-automata/0.4.3 \ + crate://crates.io/regex-syntax/0.6.29 \ + crate://crates.io/regex-syntax/0.8.2 \ + crate://crates.io/rfc2047-decoder/0.2.2 \ + crate://crates.io/ring/0.17.6 \ + crate://crates.io/rustc_version/0.4.0 \ + crate://crates.io/rustix/0.37.27 \ + crate://crates.io/rustix/0.38.21 \ + crate://crates.io/rustls/0.21.9 \ + crate://crates.io/rustls-pemfile/2.0.0 \ + crate://crates.io/rustls-pki-types/1.0.0 \ + crate://crates.io/rustls-webpki/0.101.7 \ + crate://crates.io/rustversion/1.0.14 \ + crate://crates.io/ryu/1.0.15 \ + crate://crates.io/same-file/1.0.6 \ + crate://crates.io/schannel/0.1.22 \ + crate://crates.io/scopeguard/1.2.0 \ + crate://crates.io/scroll/0.11.0 \ + crate://crates.io/scroll_derive/0.11.1 \ + crate://crates.io/sct/0.7.1 \ + crate://crates.io/security-framework/2.9.2 \ + crate://crates.io/security-framework-sys/2.9.1 \ + crate://crates.io/semver/1.0.20 \ + crate://crates.io/serde/1.0.193 \ + crate://crates.io/serde_derive/1.0.193 \ + crate://crates.io/serde_json/1.0.108 \ + crate://crates.io/serde_spanned/0.6.4 \ + crate://crates.io/sha2/0.10.8 \ + crate://crates.io/sharded-slab/0.1.7 \ + crate://crates.io/shell-words/1.1.0 \ + crate://crates.io/shlex/1.2.0 \ + crate://crates.io/similar/2.3.0 \ + crate://crates.io/smallvec/1.11.2 \ + crate://crates.io/smawk/0.3.2 \ + crate://crates.io/snapbox/0.4.14 \ + crate://crates.io/snapbox-macros/0.3.6 \ + crate://crates.io/socks/0.3.4 \ + crate://crates.io/spin/0.9.8 \ + crate://crates.io/stacker/0.1.15 \ + crate://crates.io/static_assertions/1.1.0 \ + crate://crates.io/strsim/0.10.0 \ + crate://crates.io/syn/1.0.109 \ + crate://crates.io/syn/2.0.39 \ + crate://crates.io/tar/0.4.40 \ + crate://crates.io/target-lexicon/0.12.12 \ + crate://crates.io/tempfile/3.8.1 \ + crate://crates.io/termcolor/1.4.0 \ + crate://crates.io/terminal_size/0.2.6 \ + crate://crates.io/textwrap/0.16.0 \ + crate://crates.io/thiserror/1.0.50 \ + crate://crates.io/thiserror-impl/1.0.50 \ + crate://crates.io/thread_local/1.1.7 \ + crate://crates.io/time/0.3.30 \ + crate://crates.io/time-core/0.1.2 \ + crate://crates.io/time-macros/0.2.15 \ + crate://crates.io/tinyvec/1.6.0 \ + crate://crates.io/tinyvec_macros/0.1.1 \ + crate://crates.io/toml/0.5.11 \ + crate://crates.io/toml/0.8.8 \ + crate://crates.io/toml_datetime/0.6.5 \ + crate://crates.io/toml_edit/0.20.7 \ + crate://crates.io/toml_edit/0.21.0 \ + crate://crates.io/tracing/0.1.40 \ + crate://crates.io/tracing-attributes/0.1.27 \ + crate://crates.io/tracing-core/0.1.32 \ + crate://crates.io/tracing-log/0.2.0 \ + crate://crates.io/tracing-serde/0.1.3 \ + crate://crates.io/tracing-subscriber/0.3.18 \ + crate://crates.io/trycmd/0.14.19 \ + crate://crates.io/twox-hash/1.6.3 \ + crate://crates.io/typenum/1.17.0 \ + crate://crates.io/unicase/2.7.0 \ + crate://crates.io/unicode-bidi/0.3.13 \ + crate://crates.io/unicode-ident/1.0.12 \ + crate://crates.io/unicode-linebreak/0.1.5 \ + crate://crates.io/unicode-normalization/0.1.22 \ + crate://crates.io/unicode-width/0.1.11 \ + crate://crates.io/untrusted/0.9.0 \ + crate://crates.io/ureq/2.9.1 \ + crate://crates.io/url/2.5.0 \ + crate://crates.io/utf8parse/0.2.1 \ + crate://crates.io/uuid/1.6.1 \ + crate://crates.io/valuable/0.1.0 \ + crate://crates.io/vcpkg/0.2.15 \ + crate://crates.io/version_check/0.9.4 \ + crate://crates.io/versions/5.0.1 \ + crate://crates.io/wait-timeout/0.2.0 \ + crate://crates.io/walkdir/2.4.0 \ + crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \ + crate://crates.io/webpki-roots/0.25.3 \ + crate://crates.io/which/5.0.0 \ + crate://crates.io/wild/2.2.0 \ + crate://crates.io/winapi/0.3.9 \ + crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \ + crate://crates.io/winapi-util/0.1.6 \ + crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \ + crate://crates.io/windows-sys/0.45.0 \ + crate://crates.io/windows-sys/0.48.0 \ + crate://crates.io/windows-sys/0.52.0 \ + crate://crates.io/windows-targets/0.42.2 \ + crate://crates.io/windows-targets/0.48.5 \ + crate://crates.io/windows-targets/0.52.0 \ + crate://crates.io/windows_aarch64_gnullvm/0.42.2 \ + crate://crates.io/windows_aarch64_gnullvm/0.48.5 \ + crate://crates.io/windows_aarch64_gnullvm/0.52.0 \ + crate://crates.io/windows_aarch64_msvc/0.42.2 \ + crate://crates.io/windows_aarch64_msvc/0.48.5 \ + crate://crates.io/windows_aarch64_msvc/0.52.0 \ + crate://crates.io/windows_i686_gnu/0.42.2 \ + crate://crates.io/windows_i686_gnu/0.48.5 \ + crate://crates.io/windows_i686_gnu/0.52.0 \ + crate://crates.io/windows_i686_msvc/0.42.2 \ + crate://crates.io/windows_i686_msvc/0.48.5 \ + crate://crates.io/windows_i686_msvc/0.52.0 \ + crate://crates.io/windows_x86_64_gnu/0.42.2 \ + crate://crates.io/windows_x86_64_gnu/0.48.5 \ + crate://crates.io/windows_x86_64_gnu/0.52.0 \ + crate://crates.io/windows_x86_64_gnullvm/0.42.2 \ + crate://crates.io/windows_x86_64_gnullvm/0.48.5 \ + crate://crates.io/windows_x86_64_gnullvm/0.52.0 \ + crate://crates.io/windows_x86_64_msvc/0.42.2 \ + crate://crates.io/windows_x86_64_msvc/0.48.5 \ + crate://crates.io/windows_x86_64_msvc/0.52.0 \ + crate://crates.io/winnow/0.5.19 \ + crate://crates.io/xattr/1.0.1 \ + crate://crates.io/xwin/0.5.0 \ + crate://crates.io/yansi/0.5.1 \ + crate://crates.io/zerocopy/0.7.28 \ + crate://crates.io/zerocopy-derive/0.7.28 \ + crate://crates.io/zeroize/1.7.0 \ + crate://crates.io/zip/0.6.6 \ +" + +SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +SRC_URI[ahash-0.8.6.sha256sum] = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +SRC_URI[allocator-api2-0.2.16.sha256sum] = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +SRC_URI[anstream-0.6.4.sha256sum] = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +SRC_URI[anstyle-1.0.2.sha256sum] = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" +SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +SRC_URI[anstyle-wincon-1.0.2.sha256sum] = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +SRC_URI[anstyle-wincon-3.0.1.sha256sum] = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +SRC_URI[bstr-1.8.0.sha256sum] = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +SRC_URI[bytes-1.5.0.sha256sum] = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +SRC_URI[bytesize-1.3.0.sha256sum] = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" +SRC_URI[bzip2-0.4.4.sha256sum] = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +SRC_URI[bzip2-sys-0.1.11+1.0.8.sha256sum] = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +SRC_URI[cab-0.4.1.sha256sum] = "ae6b4de23c7d39c0631fd3cc952d87951c86c75a13812d7247cb7a896e7b3551" +SRC_URI[camino-1.1.6.sha256sum] = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +SRC_URI[cargo-config2-0.1.16.sha256sum] = "7f387366785e82c7ec7ef5b845a7f61324fbf5d467d6a878469eac30c1c44b1b" +SRC_URI[cargo-options-0.7.2.sha256sum] = "cad71bf996c8e5b9d28ef3472d7ee41f277edf4e38cd597f51ad0438d05d76ea" +SRC_URI[cargo-platform-0.1.5.sha256sum] = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" +SRC_URI[cargo-xwin-0.16.2.sha256sum] = "02bb6bf59526935e47445f959a19c2168f151284dbf7e57f5577934334e9a61d" +SRC_URI[cargo-zigbuild-0.18.0.sha256sum] = "edc9c2fe646a29983b5f7263bd789175f2aaad7ea42525affa40e2172be93286" +SRC_URI[cargo_metadata-0.18.1.sha256sum] = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +SRC_URI[cbindgen-0.26.0.sha256sum] = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" +SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +SRC_URI[cfb-0.9.0.sha256sum] = "b390793e912300f1aa713429f7fd0c391024e6c18b988962558bc4f96a349b1f" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[charset-0.1.3.sha256sum] = "18e9079d1a12a2cc2bffb5db039c43661836ead4082120d5844f02555aca2d46" +SRC_URI[chumsky-0.9.3.sha256sum] = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9" +SRC_URI[clap-4.3.24.sha256sum] = "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487" +SRC_URI[clap_builder-4.3.24.sha256sum] = "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e" +SRC_URI[clap_complete-4.3.2.sha256sum] = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce" +SRC_URI[clap_complete_command-0.5.1.sha256sum] = "183495371ea78d4c9ff638bfc6497d46fed2396e4f9c50aebc1278a4a9919a3d" +SRC_URI[clap_complete_fig-4.3.1.sha256sum] = "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f" +SRC_URI[clap_complete_nushell-0.1.11.sha256sum] = "5d02bc8b1a18ee47c4d2eec3fb5ac034dc68ebea6125b1509e9ccdffcddce66e" +SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +SRC_URI[cli-table-0.4.7.sha256sum] = "adfbb116d9e2c4be7011360d0c0bee565712c11e969c9609b25b619366dc379d" +SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +SRC_URI[configparser-3.0.3.sha256sum] = "e0e56e414a2a52ab2a104f85cd40933c2fbc278b83637facf646ecf451b49237" +SRC_URI[console-0.15.7.sha256sum] = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +SRC_URI[content_inspector-0.2.4.sha256sum] = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38" +SRC_URI[core-foundation-0.9.3.sha256sum] = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +SRC_URI[cpufeatures-0.2.11.sha256sum] = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +SRC_URI[crc32fast-1.3.2.sha256sum] = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +SRC_URI[crossbeam-channel-0.5.8.sha256sum] = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +SRC_URI[crossbeam-deque-0.8.3.sha256sum] = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +SRC_URI[crossbeam-epoch-0.9.15.sha256sum] = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +SRC_URI[data-encoding-2.5.0.sha256sum] = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +SRC_URI[deranged-0.3.9.sha256sum] = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +SRC_URI[dialoguer-0.11.0.sha256sum] = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" +SRC_URI[diff-0.1.13.sha256sum] = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" +SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +SRC_URI[dirs-5.0.1.sha256sum] = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +SRC_URI[dirs-sys-0.4.1.sha256sum] = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +SRC_URI[dissimilar-1.0.7.sha256sum] = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632" +SRC_URI[dunce-1.0.4.sha256sum] = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +SRC_URI[encode_unicode-0.3.6.sha256sum] = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +SRC_URI[encoding_rs-0.8.33.sha256sum] = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +SRC_URI[expect-test-1.4.1.sha256sum] = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3" +SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +SRC_URI[fat-macho-0.4.7.sha256sum] = "63fa117c7dcabeb8c83d5c229764cfa46518545d2dba5a9a08912014711f997b" +SRC_URI[filetime-0.2.22.sha256sum] = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" +SRC_URI[flate2-1.0.28.sha256sum] = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +SRC_URI[foreign-types-shared-0.1.1.sha256sum] = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +SRC_URI[fs-err-2.11.0.sha256sum] = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +SRC_URI[globset-0.4.14.sha256sum] = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +SRC_URI[goblin-0.7.1.sha256sum] = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134" +SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +SRC_URI[hashbrown-0.14.3.sha256sum] = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +SRC_URI[hermit-abi-0.3.3.sha256sum] = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +SRC_URI[humantime-serde-1.1.1.sha256sum] = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +SRC_URI[idna-0.5.0.sha256sum] = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +SRC_URI[ignore-0.4.20.sha256sum] = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +SRC_URI[indexmap-2.1.0.sha256sum] = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +SRC_URI[indicatif-0.17.7.sha256sum] = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +SRC_URI[itertools-0.11.0.sha256sum] = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +SRC_URI[itertools-0.12.0.sha256sum] = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +SRC_URI[keyring-2.0.5.sha256sum] = "9549a129bd08149e0a71b2d1ce2729780d47127991bfd0a78cc1df697ec72492" +SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +SRC_URI[lddtree-0.3.3.sha256sum] = "2f5bfec46830ad3a95199ae6804dfe9f51fdad43d7a95fbb6c185efa9824c295" +SRC_URI[libc-0.2.150.sha256sum] = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +SRC_URI[libredox-0.0.1.sha256sum] = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +SRC_URI[linux-keyutils-0.2.3.sha256sum] = "3f27bb67f6dd1d0bb5ab582868e4f65052e58da6401188a08f0da09cf512b84b" +SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +SRC_URI[linux-raw-sys-0.4.11.sha256sum] = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +SRC_URI[lock_api-0.4.11.sha256sum] = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +SRC_URI[lzxd-0.1.4.sha256sum] = "784462f20dddd9dfdb45de963fa4ad4a288cb10a7889ac5d2c34fb6481c6b213" +SRC_URI[mailparse-0.14.0.sha256sum] = "6b56570f5f8c0047260d1c8b5b331f62eb9c660b9dd4071a8c46f8c7d3f280aa" +SRC_URI[matchers-0.1.0.sha256sum] = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +SRC_URI[mime_guess-2.0.4.sha256sum] = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +SRC_URI[minijinja-1.0.10.sha256sum] = "208758577ef2c86cf5dd3e85730d161413ec3284e2d73b2ef65d9a24d9971bcb" +SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +SRC_URI[msi-0.7.0.sha256sum] = "226b2404f03d2cf47375b9715c8adfae4e388bb2377cff908e8a40f31e421514" +SRC_URI[multipart-0.18.0.sha256sum] = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +SRC_URI[native-tls-0.2.11.sha256sum] = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +SRC_URI[normalize-line-endings-0.3.0.sha256sum] = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +SRC_URI[normpath-1.1.1.sha256sum] = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5" +SRC_URI[nu-ansi-term-0.46.0.sha256sum] = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +SRC_URI[number_prefix-0.4.0.sha256sum] = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +SRC_URI[openssl-0.10.60.sha256sum] = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" +SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +SRC_URI[openssl-probe-0.1.5.sha256sum] = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +SRC_URI[openssl-sys-0.9.96.sha256sum] = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" +SRC_URI[option-ext-0.2.0.sha256sum] = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +SRC_URI[os_pipe-1.1.4.sha256sum] = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177" +SRC_URI[overload-0.1.1.sha256sum] = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +SRC_URI[parking_lot_core-0.9.9.sha256sum] = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +SRC_URI[paste-1.0.14.sha256sum] = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +SRC_URI[path-slash-0.2.1.sha256sum] = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" +SRC_URI[pep440_rs-0.3.12.sha256sum] = "887f66cc62717ea72caac4f1eb4e6f392224da3ffff3f40ec13ab427802746d6" +SRC_URI[pep508_rs-0.2.3.sha256sum] = "e4516b53d9ea6112ebb38b4af08d5707d30b994fb7f98ff133c5dcf7ed8fa854" +SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +SRC_URI[plain-0.2.3.sha256sum] = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +SRC_URI[platform-info-2.0.2.sha256sum] = "d6259c4860e53bf665016f1b2f46a8859cadfa717581dc9d597ae4069de6300f" +SRC_URI[portable-atomic-1.5.1.sha256sum] = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" +SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +SRC_URI[pretty_assertions-1.4.0.sha256sum] = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +SRC_URI[proc-macro2-1.0.70.sha256sum] = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +SRC_URI[psm-0.1.21.sha256sum] = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +SRC_URI[pyproject-toml-0.8.1.sha256sum] = "46d4a5e69187f23a29f8aa0ea57491d104ba541bc55f76552c2a74962aa20e04" +SRC_URI[python-pkginfo-0.6.0.sha256sum] = "037469c164f08c891bf6d69ca02f1d56210011451e229618669777df82124cfa" +SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +SRC_URI[quoted_printable-0.4.8.sha256sum] = "5a3866219251662ec3b26fc217e3e05bf9c4f84325234dfb96bf0bf840889e49" +SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +SRC_URI[rayon-1.8.0.sha256sum] = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +SRC_URI[rayon-core-1.12.0.sha256sum] = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +SRC_URI[redox_users-0.4.4.sha256sum] = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +SRC_URI[regex-automata-0.1.10.sha256sum] = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +SRC_URI[regex-syntax-0.6.29.sha256sum] = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +SRC_URI[rfc2047-decoder-0.2.2.sha256sum] = "61fc4b4e52897c3e30b12b7e9b04461215b647fbe66f6def60dd8edbce14ec2e" +SRC_URI[ring-0.17.6.sha256sum] = "684d5e6e18f669ccebf64a92236bb7db9a34f07be010e3627368182027180866" +SRC_URI[rustc_version-0.4.0.sha256sum] = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +SRC_URI[rustix-0.37.27.sha256sum] = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +SRC_URI[rustix-0.38.21.sha256sum] = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +SRC_URI[rustls-0.21.9.sha256sum] = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +SRC_URI[rustls-pemfile-2.0.0.sha256sum] = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" +SRC_URI[rustls-pki-types-1.0.0.sha256sum] = "eb0a1f9b9efec70d32e6d6aa3e58ebd88c3754ec98dfe9145c63cf54cc829b83" +SRC_URI[rustls-webpki-0.101.7.sha256sum] = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +SRC_URI[rustversion-1.0.14.sha256sum] = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +SRC_URI[schannel-0.1.22.sha256sum] = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +SRC_URI[scopeguard-1.2.0.sha256sum] = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +SRC_URI[scroll-0.11.0.sha256sum] = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +SRC_URI[scroll_derive-0.11.1.sha256sum] = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" +SRC_URI[sct-0.7.1.sha256sum] = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +SRC_URI[security-framework-2.9.2.sha256sum] = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +SRC_URI[security-framework-sys-2.9.1.sha256sum] = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +SRC_URI[semver-1.0.20.sha256sum] = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +SRC_URI[serde-1.0.193.sha256sum] = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +SRC_URI[serde_derive-1.0.193.sha256sum] = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +SRC_URI[serde_json-1.0.108.sha256sum] = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +SRC_URI[serde_spanned-0.6.4.sha256sum] = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +SRC_URI[sharded-slab-0.1.7.sha256sum] = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +SRC_URI[shell-words-1.1.0.sha256sum] = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +SRC_URI[shlex-1.2.0.sha256sum] = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +SRC_URI[similar-2.3.0.sha256sum] = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" +SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +SRC_URI[smawk-0.3.2.sha256sum] = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +SRC_URI[snapbox-0.4.14.sha256sum] = "4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed" +SRC_URI[snapbox-macros-0.3.6.sha256sum] = "ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e" +SRC_URI[socks-0.3.4.sha256sum] = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" +SRC_URI[spin-0.9.8.sha256sum] = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +SRC_URI[stacker-0.1.15.sha256sum] = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +SRC_URI[syn-2.0.39.sha256sum] = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +SRC_URI[tar-0.4.40.sha256sum] = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" +SRC_URI[target-lexicon-0.12.12.sha256sum] = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +SRC_URI[tempfile-3.8.1.sha256sum] = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +SRC_URI[termcolor-1.4.0.sha256sum] = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +SRC_URI[terminal_size-0.2.6.sha256sum] = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +SRC_URI[textwrap-0.16.0.sha256sum] = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +SRC_URI[thread_local-1.1.7.sha256sum] = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +SRC_URI[time-0.3.30.sha256sum] = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +SRC_URI[time-macros-0.2.15.sha256sum] = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +SRC_URI[toml-0.8.8.sha256sum] = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +SRC_URI[toml_datetime-0.6.5.sha256sum] = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +SRC_URI[toml_edit-0.20.7.sha256sum] = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +SRC_URI[toml_edit-0.21.0.sha256sum] = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +SRC_URI[tracing-log-0.2.0.sha256sum] = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +SRC_URI[tracing-serde-0.1.3.sha256sum] = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +SRC_URI[tracing-subscriber-0.3.18.sha256sum] = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +SRC_URI[trycmd-0.14.19.sha256sum] = "ed009372a42fb103e6f8767b9222925485e03cca032b700d203e2c5b67bee4fb" +SRC_URI[twox-hash-1.6.3.sha256sum] = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +SRC_URI[unicase-2.7.0.sha256sum] = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +SRC_URI[unicode-linebreak-0.1.5.sha256sum] = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +SRC_URI[unicode-width-0.1.11.sha256sum] = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +SRC_URI[untrusted-0.9.0.sha256sum] = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" +SRC_URI[ureq-2.9.1.sha256sum] = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97" +SRC_URI[url-2.5.0.sha256sum] = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +SRC_URI[uuid-1.6.1.sha256sum] = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +SRC_URI[valuable-0.1.0.sha256sum] = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +SRC_URI[vcpkg-0.2.15.sha256sum] = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +SRC_URI[versions-5.0.1.sha256sum] = "c73a36bc44e3039f51fbee93e39f41225f6b17b380eb70cc2aab942df06b34dd" +SRC_URI[wait-timeout-0.2.0.sha256sum] = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +SRC_URI[walkdir-2.4.0.sha256sum] = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +SRC_URI[webpki-roots-0.25.3.sha256sum] = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" +SRC_URI[which-5.0.0.sha256sum] = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" +SRC_URI[wild-2.2.0.sha256sum] = "10d01931a94d5a115a53f95292f51d316856b68a035618eb831bbba593a30b67" +SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +SRC_URI[windows-sys-0.45.0.sha256sum] = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +SRC_URI[windows-targets-0.42.2.sha256sum] = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +SRC_URI[windows_aarch64_gnullvm-0.42.2.sha256sum] = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" +SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +SRC_URI[windows_aarch64_msvc-0.42.2.sha256sum] = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +SRC_URI[windows_i686_gnu-0.42.2.sha256sum] = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +SRC_URI[windows_i686_msvc-0.42.2.sha256sum] = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +SRC_URI[windows_x86_64_gnu-0.42.2.sha256sum] = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +SRC_URI[windows_x86_64_gnullvm-0.42.2.sha256sum] = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +SRC_URI[windows_x86_64_msvc-0.42.2.sha256sum] = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +SRC_URI[winnow-0.5.19.sha256sum] = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +SRC_URI[xattr-1.0.1.sha256sum] = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" +SRC_URI[xwin-0.5.0.sha256sum] = "c43e0202f5457b48558096cb7b36d0e473f267551a89c82ed72d73b01dfd4007" +SRC_URI[yansi-0.5.1.sha256sum] = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +SRC_URI[zerocopy-0.7.28.sha256sum] = "7d6f15f7ade05d2a4935e34a457b936c23dc70a05cc1d97133dc99e7a3fe0f0e" +SRC_URI[zerocopy-derive-0.7.28.sha256sum] = "dbbad221e3f78500350ecbd7dfa4e63ef945c05f4c61cb7f4d3f84cd0bba649b" +SRC_URI[zeroize-1.7.0.sha256sum] = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +SRC_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 @@ +From a945706bd610c5400fc85a248d5e0c96ebd2e953 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 27 Feb 2024 10:38:49 -0800 +Subject: [PATCH] Add 32-bit RISC-V support + +Tested with qemuriscv32 and it builds fine with all tests passed on a +qemu machine. + +Upstream-Status: Submitted [https://github.com/PyO3/maturin/pull/1969] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/target.rs | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/target.rs b/src/target.rs +index fbb93531..33fa9273 100644 +--- a/src/target.rs ++++ b/src/target.rs +@@ -69,6 +69,7 @@ pub enum Arch { + X86_64, + S390X, + Wasm32, ++ Riscv32, + Riscv64, + Mips64el, + Mips64, +@@ -91,6 +92,7 @@ impl fmt::Display for Arch { + Arch::X86_64 => write!(f, "x86_64"), + Arch::S390X => write!(f, "s390x"), + Arch::Wasm32 => write!(f, "wasm32"), ++ Arch::Riscv32 => write!(f, "riscv32"), + Arch::Riscv64 => write!(f, "riscv64"), + Arch::Mips64el => write!(f, "mips64el"), + Arch::Mips64 => write!(f, "mips64"), +@@ -115,7 +117,7 @@ impl Arch { + Arch::Powerpc | Arch::Powerpc64Le | Arch::Powerpc64 => "powerpc", + Arch::X86 => "i386", + Arch::X86_64 => "amd64", +- Arch::Riscv64 => "riscv", ++ Arch::Riscv32 | Arch::Riscv64 => "riscv", + Arch::Mips64el | Arch::Mips64 | Arch::Mipsel | Arch::Mips => "mips", + // sparc64 is unsupported since FreeBSD 13.0 + Arch::Sparc64 => "sparc64", +@@ -139,6 +141,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> { + Arch::S390X, + Arch::X86, + Arch::X86_64, ++ Arch::Riscv32, + Arch::Riscv64, + Arch::Mips64el, + Arch::Mips64, +@@ -158,6 +161,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> { + Arch::Powerpc64Le, + Arch::X86, + Arch::X86_64, ++ Arch::Riscv32, + Arch::Riscv64, + Arch::Mips64el, + Arch::Mipsel, +@@ -171,6 +175,7 @@ fn get_supported_architectures(os: &Os) -> Vec<Arch> { + Arch::Powerpc, + Arch::Powerpc64, + Arch::Powerpc64Le, ++ Arch::Riscv32, + Arch::Riscv64, + Arch::Sparc64, + ], +@@ -255,6 +260,7 @@ impl Target { + Architecture::Powerpc64le => Arch::Powerpc64Le, + Architecture::S390x => Arch::S390X, + Architecture::Wasm32 => Arch::Wasm32, ++ Architecture::Riscv32(_) => Arch::Riscv32, + Architecture::Riscv64(_) => Arch::Riscv64, + Architecture::Mips64(mips64_arch) => match mips64_arch { + Mips64Architecture::Mips64el => Arch::Mips64el, +@@ -343,6 +349,7 @@ impl Target { + Arch::X86_64 => "x86_64", + Arch::S390X => "s390x", + Arch::Wasm32 => "wasm32", ++ Arch::Riscv32 => "riscv32", + Arch::Riscv64 => "riscv64", + // It's kinda surprising that Python doesn't include the `el` suffix + Arch::Mips64el | Arch::Mips64 => "mips64", +@@ -388,6 +395,7 @@ impl Target { + } + Arch::Armv6L + | Arch::Wasm32 ++ | Arch::Riscv32 + | Arch::Riscv64 + | Arch::Mips64el + | Arch::Mips64 +@@ -418,6 +426,7 @@ impl Target { + | Arch::Wasm32 + | Arch::Mipsel + | Arch::Mips ++ | Arch::Riscv32 + | Arch::Powerpc => 32, + } + } +-- +2.44.0 + 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 @@ +SUMMARY = "Build and publish crates with pyo3, rust-cpython, cffi bindings and rust binaries as python packages" +HOMEPAGE = "https://github.com/pyo3/maturin" +SECTION = "devel/python" +LICENSE = "MIT | Apache-2.0" +LIC_FILES_CHKSUM = "file://license-apache;md5=1836efb2eb779966696f473ee8540542 \ + file://license-mit;md5=85fd3b67069cff784d98ebfc7d5c0797" + +SRC_URI += "file://0001-Add-32-bit-RISC-V-support.patch" +SRC_URI[sha256sum] = "ed12e1768094a7adeafc3a74ebdb8dc2201fa64c4e7e31f14cfc70378bf93790" + +S = "${WORKDIR}/maturin-${PV}" + +CFLAGS:append = " -fdebug-prefix-map=${CARGO_HOME}=${TARGET_DBGSRC_DIR}/cargo_home" + +DEPENDS += "\ + python3-setuptools-rust-native \ + python3-semantic-version-native \ + python3-setuptools-rust \ +" + +require ${BPN}-crates.inc + +inherit pypi cargo-update-recipe-crates python_pyo3 python_setuptools_build_meta + +do_configure() { + python_pyo3_do_configure + cargo_common_do_configure + python_pep517_do_configure +} + +RDEPENDS:${PN} += "\ + cargo \ + python3-json \ + rust \ +" + +RRECOMMENDS:${PN} += "\ + python3-ensurepip \ + python3-pip \ + python3-venv \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Meson Python build backend (PEP 517)" +HOMEPAGE = "https://github.com/mesonbuild/meson-python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d580b27e67cc0892a5b005b0be114b60" + +DEPENDS = " \ + meson-native \ + ninja-native \ + patchelf-native \ + python3-pyproject-metadata-native \ +" + +PYPI_PACKAGE = "meson_python" + +inherit pypi python_mesonpy +SRC_URI[sha256sum] = "fddb73eecd49e89c1c41c87937cd89c2d0b65a1c63ba28238681d4bd9484d26f" + +DEPENDS:remove:class-native = "python3-meson-python-native" + +RDEPENDS:${PN} = " \ + meson \ + ninja \ + patchelf \ + python3-pyproject-metadata \ +" + +BBCLASSEXTEND = "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 @@ #!/bin/sh -pytest -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}}' +pytest --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 @@ +SUMMARY = "More routines for operating on iterables, beyond itertools" +HOMEPAGE = "https://github.com/erikrose/more-itertools" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5" + +SRC_URI[sha256sum] = "8fccb480c43d3e99a00087634c06dd02b0d50fbf088b380de5a41a015ec239e1" + +inherit pypi python_flit_core ptest + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN} += " \ + python3-asyncio \ + " + +RDEPENDS:${PN}-ptest += " \ + python3-statistics \ + python3-pytest \ + python3-unittest-automake-output \ + " + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +BBCLASSEXTEND = "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 @@ -DESCRIPTION = "More routines for operating on iterables, beyond itertools" -HOMEPAGE = "https://github.com/erikrose/more-itertools" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=3396ea30f9d21389d7857719816f83b5" - -SRC_URI[sha256sum] = "c5d6da9ca3ff65220c3bfd2a8db06d698f05d4d2b9be57e1deb2be5a45019713" - -inherit pypi setuptools3 ptest - -SRC_URI += " \ - file://run-ptest \ -" - -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ -" - -do_install_ptest() { - install -d ${D}${PTEST_PATH}/tests - cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ -} - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Provides enhanced HTTPS support for httplib and urllib2 using PyOpenSSL" +HOMEPAGE = "https://github.com/cedadev/ndg_httpsclient/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://MANIFEST.in;md5=ce22c0cd986d2de3f7073cd6b5523ae0" + +SRC_URI[md5sum] = "b0fc8ea38f87d2c1ab1ed79a95c078f9" +SRC_URI[sha256sum] = "d72faed0376ab039736c2ba12e30695e2788c4aa569c9c3e3d72131de2592210" + +inherit pypi setuptools3 update-alternatives + +PYPI_PACKAGE = "ndg_httpsclient" + +DEPENDS += " \ + python3-pyopenssl \ + python3-pyasn1 \ +" + +RDEPENDS:${PN} += " \ + python3-datetime \ + python3-logging \ + python3-pyopenssl \ + python3-pyasn1 \ +" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_CHECK_REGEX = "" + +ALTERNATIVE:${PN} = "ndg_httpclient" +ALTERNATIVE_LINK_NAME[ndg_httpclient] = "${bindir}/ndg_httpclient" +ALTERNATIVE_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 @@ -inherit setuptools3 -require 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 @@ +From 46eea664cf89d0602e7ff16d587c37c045b125b7 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex.kanavin@gmail.com> +Date: Thu, 10 Dec 2015 13:20:30 +0200 +Subject: [PATCH] Don't search /usr and so on for libraries by default to + + avoid host contamination. + +Upstream-Status: Inappropriate (As the code stands, this is a hack) +Signed-off-by: Ross Burton <ross.burton@intel.com> +Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + +--- + numpy/distutils/system_info.py | 42 +++++----------------------------- + 1 file changed, 6 insertions(+), 36 deletions(-) + +diff --git a/numpy/distutils/system_info.py b/numpy/distutils/system_info.py +index feb28f6..a48d6d1 100644 +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -327,44 +327,14 @@ def add_system_root(library_root): + add_system_root(os.path.join(conda_dir, 'Library')) + + else: +- default_lib_dirs = libpaths(['/usr/local/lib', '/opt/lib', '/usr/lib', +- '/opt/local/lib', '/sw/lib'], platform_bits) + default_runtime_dirs = [] +- default_include_dirs = ['/usr/local/include', +- '/opt/include', +- # path of umfpack under macports +- '/opt/local/include/ufsparse', +- '/opt/local/include', '/sw/include', +- '/usr/include/suitesparse'] +- default_src_dirs = ['.', '/usr/local/src', '/opt/src', '/sw/src'] +- +- default_x11_lib_dirs = libpaths(['/usr/X11R6/lib', '/usr/X11/lib', +- '/usr/lib'], platform_bits) +- default_x11_include_dirs = ['/usr/X11R6/include', '/usr/X11/include'] +- +- if os.path.exists('/usr/lib/X11'): +- globbed_x11_dir = glob('/usr/lib/*/libX11.so') +- if globbed_x11_dir: +- x11_so_dir = os.path.split(globbed_x11_dir[0])[0] +- default_x11_lib_dirs.extend([x11_so_dir, '/usr/lib/X11']) +- default_x11_include_dirs.extend(['/usr/lib/X11/include', +- '/usr/include/X11']) +- +- with open(os.devnull, 'w') as tmp: +- try: +- p = subprocess.Popen(["gcc", "-print-multiarch"], stdout=subprocess.PIPE, +- stderr=tmp) +- except (OSError, DistutilsError): +- # OSError if gcc is not installed, or SandboxViolation (DistutilsError +- # subclass) if an old setuptools bug is triggered (see gh-3160). +- pass +- else: +- triplet = str(p.communicate()[0].decode().strip()) +- if p.returncode == 0: +- # gcc supports the "-print-multiarch" option +- default_x11_lib_dirs += [os.path.join("/usr/lib/", triplet)] +- default_lib_dirs += [os.path.join("/usr/lib/", triplet)] + ++ default_lib_dirs = libpaths(['/deadir/lib'], platform_bits) ++ default_include_dirs = ['/deaddir/include'] ++ default_src_dirs = ['.', '/deaddir/src'] ++ ++ default_x11_lib_dirs = libpaths(['/deaddir/lib'], platform_bits) ++ default_x11_include_dirs = ['/deaddir/include'] + + if os.path.join(sys.prefix, 'lib') not in default_lib_dirs: + 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 @@ +From eb6d6579150bf4684603ce377c51e90ad3bb8109 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 15 Nov 2020 15:32:39 -0800 +Subject: [PATCH] numpy/core: Define RISCV-32 support + +Helps compile on riscv32 + +Upstream-Status: Submitted [https://github.com/numpy/numpy/pull/17780] +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + numpy/core/include/numpy/npy_cpu.h | 3 +++ + numpy/core/include/numpy/npy_endian.h | 1 + + 2 files changed, 4 insertions(+) + +diff --git a/numpy/core/include/numpy/npy_cpu.h b/numpy/core/include/numpy/npy_cpu.h +index 78d229e..04be511 100644 +--- a/numpy/core/include/numpy/npy_cpu.h ++++ b/numpy/core/include/numpy/npy_cpu.h +@@ -19,6 +19,7 @@ + * NPY_CPU_ARCEB + * NPY_CPU_RISCV64 + * NPY_CPU_LOONGARCH ++ * NPY_CPU_RISCV32 + * NPY_CPU_WASM + */ + #ifndef NUMPY_CORE_INCLUDE_NUMPY_NPY_CPU_H_ +@@ -104,6 +105,8 @@ + #define NPY_CPU_ARCEB + #elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64 + #define NPY_CPU_RISCV64 ++#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 32 ++ #define NPY_CPU_RISCV32 + #elif defined(__loongarch__) + #define NPY_CPU_LOONGARCH + #elif defined(__EMSCRIPTEN__) +diff --git a/numpy/core/include/numpy/npy_endian.h b/numpy/core/include/numpy/npy_endian.h +index 5e58a7f..0926212 100644 +--- a/numpy/core/include/numpy/npy_endian.h ++++ b/numpy/core/include/numpy/npy_endian.h +@@ -49,6 +49,7 @@ + || defined(NPY_CPU_PPC64LE) \ + || defined(NPY_CPU_ARCEL) \ + || defined(NPY_CPU_RISCV64) \ ++ || defined(NPY_CPU_RISCV32) \ + || defined(NPY_CPU_LOONGARCH) \ + || defined(NPY_CPU_WASM) + #define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN +-- +2.20.1 + 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 @@ +This regex decides whether to use O3 opimisation on numpy or not. + +It includes "od", which happens to be a substring of "reproducible" +but not "qemux86-world". + +The regex will run against all compiler options including things like: + +-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 + +i.e. including build paths. + +Reduce the regex to something deterministic for our builds, assuming +nobody builds in /home/debug:full/ + +The autobuilder race depended upon whether qemux86-world or the +reproducible target ran first and won the race to populate sstate. + +Upstream-Status: Inappropriate [upstream have dropped distutils and switched to meson] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Index: numpy-1.26.0/numpy/distutils/ccompiler_opt.py +=================================================================== +--- numpy-1.26.0.orig/numpy/distutils/ccompiler_opt.py ++++ numpy-1.26.0/numpy/distutils/ccompiler_opt.py +@@ -990,7 +990,7 @@ class _CCompiler: + ("cc_is_nocc", "", ""), + ) + detect_args = ( +- ("cc_has_debug", ".*(O0|Od|ggdb|coverage|debug:full).*", ""), ++ ("cc_has_debug", ".*debug:full.*", ""), + ("cc_has_native", + ".*(-march=native|-xHost|/QxHost|-mcpu=a64fx).*", ""), + # 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 @@ +#!/usr/bin/env python3 + +import numpy +numpy.test(label='full', verbose=2) + 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 @@ +SUMMARY = "A sophisticated Numeric Processing Package for Python" +HOMEPAGE = "https://numpy.org/" +DESCRIPTION = "NumPy is the fundamental package needed for scientific computing with Python." +SECTION = "devel/python" +LICENSE = "BSD-3-Clause & BSD-2-Clause & PSF-2.0 & Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=a752eb20459cf74a9d84ee4825e8317c" + +SRCNAME = "numpy" + +SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${SRCNAME}-${PV}.tar.gz \ + file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \ + file://0001-numpy-core-Define-RISCV-32-support.patch \ + file://fix_reproducibility.patch \ + file://run-ptest \ + " +SRC_URI[sha256sum] = "2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010" + +GITHUB_BASE_URI = "https://github.com/numpy/numpy/releases" +UPSTREAM_CHECK_REGEX = "releases/tag/v?(?P<pver>\d+(\.\d+)+)$" + +DEPENDS += "python3-cython-native" + +inherit ptest setuptools3 github-releases + +S = "${WORKDIR}/numpy-${PV}" + +CLEANBROKEN = "1" + +do_compile:prepend() { + export NPY_DISABLE_SVML=1 +} + +FILES:${PN}-staticdev += "${PYTHON_SITEPACKAGES_DIR}/numpy/core/lib/*.a ${PYTHON_SITEPACKAGES_DIR}/numpy/random/lib/*.a" + +# install what is needed for numpy.test() +RDEPENDS:${PN} = "python3-unittest \ + python3-difflib \ + python3-pprint \ + python3-pickle \ + python3-shell \ + python3-doctest \ + python3-datetime \ + python3-misc \ + python3-mmap \ + python3-netclient \ + python3-numbers \ + python3-pydoc \ + python3-pkgutil \ + python3-email \ + python3-compression \ + python3-ctypes \ + python3-threading \ + python3-multiprocessing \ + python3-json \ +" +RDEPENDS:${PN}-ptest += "python3-pytest \ + python3-hypothesis \ + python3-sortedcontainers \ + python3-resource \ + python3-typing-extensions \ + ldd \ +" + +BBCLASSEXTEND = "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 @@ -DESCRIPTION = "Core utilities for Python packages" -HOMEPAGE = "https://github.com/pypa/packaging" -LICENSE = "Apache-2.0 & BSD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91" - -SRC_URI[sha256sum] = "5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5" - -inherit pypi setuptools3 - -BBCLASSEXTEND = "native" - -DEPENDS += "${PYTHON_PN}-setuptools-scm-native" -RDEPENDS_${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 @@ +SUMMARY = "Core utilities for Python packages" +HOMEPAGE = "https://github.com/pypa/packaging" +LICENSE = "Apache-2.0 | BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=faadaedca9251a90b205c9167578ce91" + +SRC_URI[sha256sum] = "eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "native nativesdk" + +# Bootstrap the native build +DEPENDS:remove:class-native = "python3-build-native" +RDEPENDS:${PN} += "python3-profile" + +do_compile:class-native () { + python_flit_core_do_manual_build +} 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 @@ -DESCRIPTION = "Object-oriented filesystem paths" -HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=042856c23a3e903b33bf361ea1cbe29a" - -SRC_URI[md5sum] = "f2bd0a363eb0f8fa0556f35c1d9e66fb" -SRC_URI[sha256sum] = "6cd9a47b597b37cc57de1c05e56fb1a1c9cc9fab04fe78c29acd090418529868" - -inherit pypi setuptools3 - -RDEPENDS_${PN} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Object-oriented filesystem paths" +HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2dc08586cce3ab91bfa091b655c0e440" + +SRC_URI[sha256sum] = "7a4329d67beff9a712e1d3ae147e4e3e108b0bfd284ffdea03a635126c76b3c0" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += "python3-six python3-ctypes" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Utility library for gitignore style pattern matching of file paths." +HOMEPAGE = "https://github.com/cpburnz/python-path-specification" +SECTION = "devel/python" +LICENSE = "MPL-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=815ca599c9df247a0c7f619bab123dad" + +SRC_URI[sha256sum] = "a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${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 @@ -inherit setuptools3 -require python-pbr.inc - -SRC_URI[md5sum] = "65cdc32e1a1ff56d481fc15aa8caf988" -SRC_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 @@ +inherit setuptools3 +require python-pbr.inc + +SRC_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 @@ -From e7a00e9b5104ae2fbcea32a35c85760b77fae7e5 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Thu, 23 Apr 2020 09:42:10 +0000 -Subject: [PATCH] change shebang to python3 - -Upstream-Status: Pending - -pip will drop support of python2 from 21.0 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - src/pip/_internal/__init__.py | 2 +- - src/pip/_vendor/appdirs.py | 2 +- - src/pip/_vendor/chardet/cli/chardetect.py | 2 +- - src/pip/_vendor/requests/certs.py | 2 +- - 4 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/pip/_internal/__init__.py b/src/pip/_internal/__init__.py -index 3aa8a46..e1ad179 100755 ---- a/src/pip/_internal/__init__.py -+++ b/src/pip/_internal/__init__.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - import pip._internal.utils.inject_securetransport # noqa - from pip._internal.utils.typing import MYPY_CHECK_RUNNING - -diff --git a/src/pip/_vendor/appdirs.py b/src/pip/_vendor/appdirs.py -index 3a52b75..ad3f81d 100644 ---- a/src/pip/_vendor/appdirs.py -+++ b/src/pip/_vendor/appdirs.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - # -*- coding: utf-8 -*- - # Copyright (c) 2005-2010 ActiveState Software Inc. - # Copyright (c) 2013 Eddy Petrișor -diff --git a/src/pip/_vendor/chardet/cli/chardetect.py b/src/pip/_vendor/chardet/cli/chardetect.py -index c61136b..a497e98 100644 ---- a/src/pip/_vendor/chardet/cli/chardetect.py -+++ b/src/pip/_vendor/chardet/cli/chardetect.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - """ - Script which takes one or more file paths and reports on their detected - encodings -diff --git a/src/pip/_vendor/requests/certs.py b/src/pip/_vendor/requests/certs.py -index 06a594e..bfa7839 100644 ---- a/src/pip/_vendor/requests/certs.py -+++ b/src/pip/_vendor/requests/certs.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - # -*- coding: utf-8 -*- - - """ --- -2.24.1 - 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 @@ +From 2aa82aeb0783c5fa7777b32bfe1dd3da9ae8fc6e Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Wed, 23 Feb 2022 12:27:06 +0000 +Subject: [PATCH] python3-pip: Don't change shebang + +Patch pip to disable shebang mangling and also force the python executable +to be python3 from the environment when building anything for the target +(or nativesdk). This avoids incorrect interpreter paths in the target scripts. + +Upstream-Status: Inappropriate [OE specific config] +--- + src/pip/_vendor/distlib/scripts.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/pip/_vendor/distlib/scripts.py b/src/pip/_vendor/distlib/scripts.py +index cfa45d2..313f499 100644 +--- a/src/pip/_vendor/distlib/scripts.py ++++ b/src/pip/_vendor/distlib/scripts.py +@@ -144,6 +144,8 @@ class ScriptMaker(object): + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ ++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ: ++ return b'#!/usr/bin/env python3' + if os.name != 'posix': + simple_shebang = True + else: +@@ -362,7 +364,7 @@ class ScriptMaker(object): + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) +- if match: ++ if False: + adjust = True + post_interp = match.group(1) or b'' + 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 @@ -SUMMARY = "The PyPA recommended tool for installing Python packages" -HOMEPAGE = "https://pypi.org/project/pip" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=8ba06d529c955048e5ddd7c45459eb2e" - -DEPENDS += "python3 python3-setuptools-native" - -SRC_URI += "file://0001-change-shebang-to-python3.patch" - -SRC_URI[md5sum] = "7d42ba49b809604f0df3d55df1c3fd86" -SRC_URI[sha256sum] = "7db0c8ea4c7ea51c8049640e8e6e7fde949de672bfa4949920675563a5a6967f" - -inherit pypi distutils3 - -do_install_append() { - # Install as pip3 and leave pip2 as default - rm ${D}/${bindir}/pip -} - -RDEPENDS_${PN} = "\ - python3-compile \ - python3-io \ - python3-html \ - python3-json \ - python3-netserver \ - python3-setuptools \ - python3-unixadmin \ - python3-xmlrpc \ - python3-pickle \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "The PyPA recommended tool for installing Python packages" +HOMEPAGE = "https://pypi.org/project/pip" +SECTION = "devel/python" +LICENSE = "MIT & Apache-2.0 & MPL-2.0 & LGPL-2.1-only & BSD-3-Clause & PSF-2.0 & BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=63ec52baf95163b597008bb46db68030 \ + file://src/pip/_vendor/cachecontrol/LICENSE.txt;md5=6572692148079ebbbd800be4b9f36c6d \ + file://src/pip/_vendor/certifi/LICENSE;md5=3c2b7404369c587c3559afb604fce2f2 \ + file://src/pip/_vendor/chardet/LICENSE;md5=4fbd65380cdd255951079008b364516c \ + file://src/pip/_vendor/colorama/LICENSE.txt;md5=b4936429a56a652b84c5c01280dcaa26 \ + file://src/pip/_vendor/distlib/LICENSE.txt;md5=f6a11430d5cd6e2cd3832ee94f22ddfc \ + file://src/pip/_vendor/distro/LICENSE;md5=d2794c0df5b907fdace235a619d80314 \ + file://src/pip/_vendor/idna/LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1 \ + file://src/pip/_vendor/msgpack/COPYING;md5=cd9523181d9d4fbf7ffca52eaa2a5751 \ + file://src/pip/_vendor/packaging/LICENSE;md5=faadaedca9251a90b205c9167578ce91 \ + file://src/pip/_vendor/packaging/LICENSE.APACHE;md5=2ee41112a44fe7014dce33e26468ba93 \ + file://src/pip/_vendor/pkg_resources/LICENSE;md5=141643e11c48898150daa83802dbc65f \ + file://src/pip/_vendor/platformdirs/LICENSE;md5=ea4f5a41454746a9ed111e3d8723d17a \ + file://src/pip/_vendor/pygments/LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592 \ + file://src/pip/_vendor/pyparsing/LICENSE;md5=657a566233888513e1f07ba13e2f47f1 \ + file://src/pip/_vendor/pyproject_hooks/LICENSE;md5=aad69c93f605003e3342b174d9b0708c \ + file://src/pip/_vendor/requests/LICENSE;md5=34400b68072d710fecd0a2940a0d1658 \ + file://src/pip/_vendor/resolvelib/LICENSE;md5=78e1c0248051c32a38a7f820c30bd7a5 \ + file://src/pip/_vendor/rich/LICENSE;md5=b5f0b94fbc94f5ad9ae4efcf8a778303 \ + file://src/pip/_vendor/six.LICENSE;md5=43cfc9e4ac0e377acfb9b76f56b8415d \ + file://src/pip/_vendor/tenacity/LICENSE;md5=175792518e4ac015ab6696d16c4f607e \ + file://src/pip/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \ + file://src/pip/_vendor/typing_extensions.LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2 \ + file://src/pip/_vendor/urllib3/LICENSE.txt;md5=c2823cb995439c984fd62a973d79815c \ + file://src/pip/_vendor/webencodings/LICENSE;md5=81fb24cd7823cce23b69f721993dce4d \ + " + +inherit pypi python_setuptools_build_meta + +SRC_URI += "file://no_shebang_mangling.patch" + +SRC_URI[sha256sum] = "ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2" + +do_install:append() { + rm -f ${D}/${bindir}/pip +} + +RDEPENDS:${PN} = "\ + python3-compile \ + python3-io \ + python3-html \ + python3-json \ + python3-multiprocessing \ + python3-netserver \ + python3-setuptools \ + python3-unixadmin \ + python3-xmlrpc \ + python3-pickle \ + python3-image \ +" + +BBCLASSEXTEND = "native nativesdk" + +# This used to use the bootstrap install which didn't compile. Until we bump the +# tmpdir version we can't compile the native otherwise the sysroot unpack fails +INSTALL_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 @@ #!/bin/sh -pytest -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}}' +pytest --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 @@ -SUMMARY = "Plugin and hook calling mechanisms for python" -HOMEPAGE = "https://github.com/pytest-dev/pluggy" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2" - -SRC_URI[md5sum] = "7f610e28b8b34487336b585a3dfb803d" -SRC_URI[sha256sum] = "15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0" - -DEPENDS += "${PYTHON_PN}-setuptools-scm-native" -RDEPENDS_${PN} += "${PYTHON_PN}-importlib-metadata \ - ${PYTHON_PN}-more-itertools \ -" - -inherit pypi ptest setuptools3 - -SRC_URI += " \ - file://run-ptest \ -" - -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ -" - -do_install_ptest() { - install -d ${D}${PTEST_PATH}/testing - cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/ -} 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 @@ +SUMMARY = "Plugin and hook calling mechanisms for python" +HOMEPAGE = "https://github.com/pytest-dev/pluggy" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1c8206d16fd5cc02fa9b0bb98955e5c2" + +SRC_URI[sha256sum] = "2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1" + +DEPENDS += "python3-setuptools-scm-native" +RDEPENDS:${PN} += "python3-importlib-metadata \ + python3-more-itertools \ +" + +inherit pypi ptest python_setuptools_build_meta + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/testing + cp -rf ${S}/testing/* ${D}${PTEST_PATH}/testing/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python Lex and Yacc" +DESCRIPTION = "Python ply: PLY is yet another implementation of lex and yacc for Python" +HOMEPAGE = "https://pypi.python.org/pypi/ply" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://README.md;beginline=5;endline=32;md5=f5ee5c355c0e6719c787a71b8f0fa96c" + +SRC_URI[md5sum] = "6465f602e656455affcd7c5734c638f8" +SRC_URI[sha256sum] = "00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target += "\ + python3-netclient \ + python3-shell \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Poetry PEP 517 Build Backend" +DESCRIPTION = "Poetry PEP 517 Build Backend" +HOMEPAGE = "https://github.com/python-poetry/poetry-core" +BUGTRACKER = "https://github.com/python-poetry/poetry-core" +CHANGELOG = "https://github.com/python-poetry/poetry-core/blob/master/CHANGELOG.md" + +LICENSE = "Apache-2.0 & BSD-2-Clause & BSD-3-Clause & MIT" +LIC_FILES_CHKSUM = "\ + file://LICENSE;md5=78c39cfd009863ae44237a7ab1f9cedc \ + file://src/poetry/core/_vendor/fastjsonschema/LICENSE;md5=18950e8362b69c0c617b42b8bd8e7532 \ + file://src/poetry/core/_vendor/lark/LICENSE;md5=fcfbf1e2ecc0f37acbb5871aa0267500 \ + file://src/poetry/core/_vendor/packaging/LICENSE;md5=faadaedca9251a90b205c9167578ce91 \ + file://src/poetry/core/_vendor/packaging/LICENSE.APACHE;md5=2ee41112a44fe7014dce33e26468ba93 \ + file://src/poetry/core/_vendor/packaging/LICENSE.BSD;md5=7bef9bf4a8e4263634d0597e7ba100b8 \ + file://src/poetry/core/_vendor/tomli/LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5 \ +" + +SRC_URI[sha256sum] = "fa7a4001eae8aa572ee84f35feb510b321bd652e5cf9293249d62853e1f935a2" + +inherit python_poetry_core pypi + +PYPI_PACKAGE = "poetry_core" + +RDEPENDS:${PN}:append:class-target = "\ + python3-compression \ + python3-core \ + python3-crypt \ + python3-io \ + python3-json \ + python3-logging \ + python3-netclient \ + python3-pathlib2 \ + python3-pprint \ + python3-shell \ +" + +RDEPENDS:${PN} += "\ + python3-pip \ + python3-six \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A library for stubbing in Python" +HOMEPAGE = "https://github.com/alex/pretend" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=411780c0b7fa756753e94affeee5bc99" + +SRC_URI[md5sum] = "ad53883ede48aeac7ae584f0de0240e8" +SRC_URI[sha256sum] = "c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A cross-platform process and system utilities module for Python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a9c72113a843d0d732a0ac1c200d81b1" +HOMEPAGE = "https://pypi.org/project/psutil/" + +SRC_URI[sha256sum] = "6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c" + +inherit pypi setuptools3 + +PACKAGES =+ "${PN}-tests" + +FILES:${PN}-tests += " \ + ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \ + ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \ +" + + +RDEPENDS:${PN} += " \ + python3-shell \ + python3-threading \ + python3-xml \ + python3-netclient \ + python3-ctypes \ + python3-resource \ +" + +RDEPENDS:${PN}-tests += " \ + ${PN} \ + python3 \ + coreutils \ + procps \ + binutils \ + gcc \ + gcc-symlinks \ + libstdc++ \ + libstdc++-dev \ +" + +INSANE_SKIP:${PN}-tests += "dev-deps" + +BBCLASSEXTEND = "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/" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9" -SRC_URI[sha256sum] = "21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3" +SRC_URI[sha256sum] = "51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719" -DEPENDS += "${PYTHON_PN}-setuptools-scm-native" +DEPENDS += "python3-setuptools-scm-native" -inherit pypi setuptools3 +inherit pypi python_setuptools_build_meta BBCLASSEXTEND = "native nativesdk" -RDEPENDS_${PN} += "${PYTHON_PN}-netclient" +RDEPENDS:${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 @@ +#!/bin/sh + +pytest --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 @@ +inherit pypi setuptools3 +require python-pyasn1.inc + 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" HOMEPAGE = "http://cairographics.org/pycairo" BUGTRACKER = "http://bugs.freedesktop.org" SECTION = "python-devel" -LICENSE = "LGPLv2.1 & MPLv1.1" +LICENSE = "LGPL-2.1-only & MPL-1.1" LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \ file://COPYING-LGPL-2.1;md5=fad9b3332be894bab9bc501572864b29 \ file://COPYING-MPL-1.1;md5=bfe1f75d606912a4111c90743d6c7325" @@ -10,18 +10,17 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=f3713ca2c28d9312ad718520b6dc3eee \ # cairo >= 1.14 DEPENDS = "cairo python3" -SRC_URI = "https://github.com/pygobject/pycairo/releases/download/v${PV}/pycairo-${PV}.tar.gz" -UPSTREAM_CHECK_URI = "https://github.com/pygobject/pycairo/releases/" +SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/pycairo-${PV}.tar.gz" +GITHUB_BASE_URI = "https://github.com/pygobject/pycairo/releases/" -SRC_URI[md5sum] = "a1f9b661a0000c2f42281db933284451" -SRC_URI[sha256sum] = "5695a10cb7f9ae0d01f665b56602a845b0a8cb17e2123bfece10c2e58552468c" +SRC_URI[sha256sum] = "2dddd0a874fbddb21e14acd9b955881ee1dc6e63b9c549a192d613a907f9cbeb" S = "${WORKDIR}/pycairo-${PV}" -inherit meson pkgconfig python3targetconfig +inherit meson pkgconfig python3targetconfig github-releases CFLAGS += "-fPIC" BBCLASSEXTEND = "native" -FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*" +FILES:${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 @@ +SUMMARY = "Parser of the C language, written in pure Python" +HOMEPAGE = "https://github.com/eliben/pycparser" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=9761c3ffee7ba99c60dca0408fd3262b" + +SRC_URI[sha256sum] = "491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN}:class-target += "\ + python3-netclient \ + python3-ply \ + python3-pprint \ + " + +RSUGGESTS:${PN}:class-target += "\ + cpp \ + cpp-symlinks \ + " 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 @@ -require python-pycryptodome.inc -inherit setuptools3 - -SRC_URI[sha256sum] = "3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673" - 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 @@ +require python-pycryptodome.inc +inherit setuptools3 + +SRC_URI[sha256sum] = "09609209ed7de61c2b560cc5c8c4fbf892f8b15b1faf7e4cbffac97db1fffda7" + 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 @@ require python-pycryptodome.inc inherit setuptools3 -SRC_URI[sha256sum] = "541cd3e3e252fb19a7b48f420b798b53483302b7fe4d9954c947605d0a263d62" +SRC_URI[sha256sum] = "7a710b79baddd65b806402e14766c721aee8fb83381769c27920f26476276c1e" -FILES_${PN}-tests = " \ +FILES:${PN}-tests = " \ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/ \ ${PYTHON_SITEPACKAGES_DIR}/Cryptodome/SelfTest/__pycache__/ \ " 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 @@ -DESCRIPTION = "pyelftools is a pure-Python library for parsing and analyzing ELF files and DWARF debugging information" -HOMEPAGE = "https://github.com/eliben/pyelftools" -SECTION = "devel/python" -LICENSE = "PD" -LIC_FILES_CHKSUM = "file://LICENSE;md5=5ce2a2b07fca326bc7c146d10105ccfc" - -SRC_URI[sha256sum] = "cde854e662774c5457d688ca41615f6594187ba7067af101232df889a6b7a66b" - -PYPI_PACKAGE = "pyelftools" - -inherit pypi setuptools3 - -BBCLASSEXTEND = "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 @@ +SUMMARY = "pyelftools is a pure-Python library for parsing and analyzing ELF files and DWARF debugging information" +HOMEPAGE = "https://github.com/eliben/pyelftools" +SECTION = "devel/python" +LICENSE = "PD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5ce2a2b07fca326bc7c146d10105ccfc" + +SRC_URI[sha256sum] = "c774416b10310156879443b81187d182d8d9ee499660380e645918b50bc88f99" + +PYPI_PACKAGE = "pyelftools" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native" + +RDEPENDS:${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 @@ +SUMMARY = "Pygments is a syntax highlighting package written in Python." +DESCRIPTION = "Pygments is a syntax highlighting package written in Python." +HOMEPAGE = "http://pygments.org/" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=36a13c90514e2899f1eba7f41c3ee592" + +inherit python_hatchling +SRC_URI[sha256sum] = "da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367" + +UPSTREAM_CHECK_PYPI_PACKAGE = "Pygments" +inherit pypi + +BBCLASSEXTEND = "native nativesdk" + diff --git a/meta/recipes-devtools/python/python3-pygments_2.8.1.bb b/meta/recipes-devtools/python/python3-pygments_2.8.1.bb deleted file mode 100644 index a2e0083483..0000000000 --- a/meta/recipes-devtools/python/python3-pygments_2.8.1.bb +++ /dev/null @@ -1,19 +0,0 @@ -SUMMARY = "Pygments is a syntax highlighting package written in Python." -DESCRIPTION = "Pygments is a syntax highlighting package written in Python." -HOMEPAGE = "http://pygments.org/" -LICENSE = "BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc" - -inherit setuptools3 -SRC_URI[sha256sum] = "2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94" - -DEPENDS += "\ - ${PYTHON_PN} \ - " - -PYPI_PACKAGE = "Pygments" - -inherit pypi - -BBCLASSEXTEND = "native nativesdk" - 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 @@ -From c125a806de951359ab7e302b0584f7c92fa451ad Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 12 Apr 2019 16:25:58 +0200 -Subject: [PATCH] Do not build tests - -They require installing tests from g-i, which we do not do. - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - meson.build | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 278fa16f..aacbd4a2 100644 ---- a/meson.build -+++ b/meson.build -@@ -175,6 +175,6 @@ configure_file(input : 'PKG-INFO.in', - subdir('gi') - subdir('pygtkcompat') - with_tests = get_option('tests') --if with_tests --subdir('tests') --endif -+#if with_tests -+#subdir('tests') -+#endif --- -2.17.1 - diff --git a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb b/meta/recipes-devtools/python/python3-pygobject_3.48.2.bb index 8df3150e37..3d83a8a1c2 100644 --- a/meta/recipes-devtools/python/python3-pygobject_3.38.0.bb +++ b/meta/recipes-devtools/python/python3-pygobject_3.48.2.bb @@ -2,33 +2,38 @@ SUMMARY = "Python GObject bindings" HOMEPAGE = "https://gitlab.gnome.org/GNOME/pygobject" DESCRIPTION = "PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more." SECTION = "devel/python" -LICENSE = "LGPLv2.1" +LICENSE = "LGPL-2.1-only" LIC_FILES_CHKSUM = "file://COPYING;md5=a916467b91076e631dd8edb7424769c7" -GNOMEBASEBUILDCLASS = "meson" -inherit gnomebase distutils3-base gobject-introspection upstream-version-is-even +GIR_MESON_OPTION = "" + +inherit gnomebase setuptools3-base gobject-introspection upstream-version-is-even + +python() { + if d.getVar('CLASSOVERRIDE') == "class-target" and not bb.utils.to_boolean(d.getVar("GI_DATA_ENABLED")): + raise bb.parse.SkipRecipe("GI not available") +} DEPENDS += "python3 glib-2.0" SRCNAME="pygobject" -SRC_URI = " \ - http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz \ - file://0001-Do-not-build-tests.patch \ -" -SRC_URI[sha256sum] = "0372d1bb9122fc19f500a249b1f38c2bb67485000f5887497b4b205b3e7084d5" - -UNKNOWN_CONFIGURE_WHITELIST = "introspection" +SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/${SRCNAME}/${@gnome_verdir("${PV}")}/${SRCNAME}-${PV}.tar.xz" +SRC_URI[sha256sum] = "0794aeb4a9be31a092ac20621b5f54ec280f9185943d328b105cdae6298ad1a7" S = "${WORKDIR}/${SRCNAME}-${PV}" PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}" -RDEPENDS_${PN} += "python3-pkgutil" +RDEPENDS:${PN} += " \ + python3-io \ + python3-pkgutil \ +" # python3-pycairo is checked on configuration -> DEPENDS # we don't link against python3-pycairo -> RDEPENDS PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo" +PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false," BBCLASSEXTEND = "native" -PACKAGECONFIG_class-native = "" +PACKAGECONFIG: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 @@ +SUMMARY = "Simple Python wrapper around the OpenSSL library" +HOMEPAGE = "https://pyopenssl.org/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" + +DEPENDS += "openssl python3-cryptography" + +SRC_URI[sha256sum] = "cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f" + +PYPI_PACKAGE = "pyOpenSSL" +inherit pypi setuptools3 + +PACKAGES =+ "${PN}-tests" +FILES:${PN}-tests = "${libdir}/${PYTHON_DIR}/site-packages/OpenSSL/test" + +RDEPENDS:${PN}:class-target = " \ + python3-cryptography \ + python3-six \ + python3-threading \ +" +RDEPENDS:${PN}-tests = "${PN}" + +BBCLASSEXTEND = "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 @@ -inherit setuptools3 -require python-pyparsing.inc - 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 @@ +SUMMARY = "Python parsing module" +DESCRIPTION = "The pyparsing module is an alternative approach to creating \ +and executing simple grammars, vs. the traditional lex/yacc approach, or \ +the use of regular expressions. The pyparsing module provides a library of \ +classes that client code uses to construct the grammar directly in Python \ +code." +HOMEPAGE = "https://github.com/pyparsing/pyparsing/" +BUGTRACKER = "https://github.com/pyparsing/pyparsing/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=657a566233888513e1f07ba13e2f47f1" + +SRC_URI[sha256sum] = "a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad" + +UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar" + +inherit pypi python_flit_core + +RDEPENDS:${PN} += " \ + python3-datetime \ + python3-debugger \ + python3-html \ + python3-json \ + python3-netclient \ + python3-pprint \ + python3-stringold \ + python3-threading \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A low-level library for calling build-backends in pyproject.toml-based projects" +HOMEPAGE = "https://github.com/pypa/pyproject-hooks" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=aad69c93f605003e3342b174d9b0708c" + +SRC_URI[sha256sum] = "f271b298b97f5955d53fb12b72c1fb1948c22c1a6b70b315c54cedaca0264ef5" + +inherit pypi python_flit_core + +PYPI_PACKAGE = "pyproject_hooks" + +BBCLASSEXTEND = "native nativesdk" + +# Bootstrap the native build +DEPENDS:remove:class-native = "python3-build-native" + +RDEPENDS:${PN} += " \ + python3-io \ + python3-json \ +" + +do_compile:class-native () { + python_flit_core_do_manual_build +} + +UPSTREAM_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 @@ +SUMMARY = "PEP 621 metadata parsing" +DESCRIPTION = "Dataclass for PEP 621 metadata with support for core \ +metadata generation \ +\ +This project does not implement the parsing of pyproject.toml containing \ +PEP 621 metadata.\ +\ +Instead, given a Python data structure representing PEP 621 metadata \ +(already parsed), it will validate this input and generate a \ +PEP 643-compliant metadata file (e.g. PKG-INFO)." +HOMEPAGE = "https://github.com/FFY00/python-pyproject-metadata" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=310439af287b0fb4780b2ad6907c256c" + +PYPI_PACKAGE = "pyproject-metadata" + +inherit pypi python_setuptools_build_meta + +SRC_URI[sha256sum] = "0a94f18b108b9b21f3a26a3d541f056c34edcb17dc872a144a15618fed7aef67" + +RDEPENDS:${PN} += " \ + python3-logging \ + python3-packaging \ + python3-profile \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Persistent/Immutable/Functional data structures for Python" +HOMEPAGE = "https://github.com/tobgu/pyrsistent" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.mit;md5=f798dc4222a29fea881fa998cdf4a8c8" + +SRC_URI[sha256sum] = "4c48f78f62ab596c679086084d0dd13254ae4f3d6c72a83ffdf5ebdef8f265a4" + +inherit pypi python_setuptools_build_meta + +RDEPENDS:${PN} += " \ + python3-numbers \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A Python SOCKS client module" +HOMEPAGE = "http://python-requests.org" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1d457bcffb9661b45f799d4efee72f16" + +SRC_URI[md5sum] = "89b1a6865c61bae67a32417517612ee6" +SRC_URI[sha256sum] = "3f8804571ebe159c380ac6de37643bb4685970655d3bba243530d6558b799aa0" + +PYPI_PACKAGE = "PySocks" +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target += "\ + python3-email \ + python3-io \ + python3-logging \ + python3-netclient \ + python3-shell \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Invoke py.test as distutils command with dependency resolution" +HOMEPAGE = "https://pypi.org/project/pytest-runner/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6" + +SRC_URI[sha256sum] = "70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b" + +inherit pypi python_setuptools_build_meta + +DEPENDS += " \ + python3-setuptools-scm-native" + +RDEPENDS:${PN} = "python3-py python3-setuptools python3-debugger python3-json \ + python3-io" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "unittest subTest() support and subtests fixture." +DESCRIPTION = "Adds support for TestCase.subTest.\ +New subtests fixture, providing similar functionality for pure pytest tests." +HOMEPAGE = "https://github.com/pytest-dev/pytest-subtests" +BUGTRACKER = "https://github.com/pytest-dev/pytest-subtests/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=242b4e17fa287dcf7aef372f6bc3dcb1" + +SRC_URI[sha256sum] = "d6605dcb88647e0b7c1889d027f8ef1c17d7a2c60927ebfdc09c7b0d8120476d" + +inherit pypi python_setuptools_build_meta + +DEPENDS += "python3-setuptools-scm-native" + +RDEPENDS:${PN} += " \ + python3-pytest \ +" + +BBCLASSEXTEND = "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 @@ -From ead04f2da75efeca3369feff6161ea4a8baecbc9 Mon Sep 17 00:00:00 2001 -From: Yuan Chao <yuanc.fnst@cn.fujitsu.com> -Date: Wed, 28 Aug 2019 16:12:27 +0900 -Subject: [PATCH] setup.py: remove the setup_requires for setuptools-scm - -The setup_requires argument forces the download of the egg file for setuptools-scm -during the do_compile phase. This download is incompatible with the typical fetch -and mirror structure. The only usage of scm is the generation of the _version.py -file and in the release tarball it is already correctly created - -Upstream-Status: Inappropriate [oe specific] - -Signed-off-by: Derek Straka <derek@asterius.io> - -Signed-off-by: Yuan Chao <yuanc.fnst@cn.fujitsu.com> - -Rebase for pytest 6.1.0. - -Signed-off-by: Kai Kang <kai.kang@windriver.com> - ---- - setup.cfg | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/setup.cfg b/setup.cfg -index 6ed0792..0137090 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -53,7 +53,6 @@ package_dir = - =src - setup_requires = - setuptools>=>=42.0 -- setuptools-scm>=3.4 - zip_safe = no - - [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 d221cbcd7f..0000000000 --- a/meta/recipes-devtools/python/python3-pytest_6.2.2.bb +++ /dev/null @@ -1,41 +0,0 @@ -SUMMARY = "Simple powerful testing with python" -HOMEPAGE = "https://pypi.org/project/pytest/" -DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries." - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=81eb9f71d006c6b268cf4388e3c98f7b" - -SRC_URI_append = " file://0001-setup.py-remove-the-setup_requires-for-setuptools-scm.patch " - -SRC_URI[sha256sum] = "9d1edf9e7d0b84d72ea3dbcdfd22b35fb543a5e8f2a60092dd578936bf63d7f9" - -inherit update-alternatives pypi setuptools3 - -RDEPENDS_${PN}_class-target += " \ - ${PYTHON_PN}-atomicwrites \ - ${PYTHON_PN}-attrs \ - ${PYTHON_PN}-debugger \ - ${PYTHON_PN}-doctest \ - ${PYTHON_PN}-importlib-metadata \ - ${PYTHON_PN}-iniconfig \ - ${PYTHON_PN}-json \ - ${PYTHON_PN}-more-itertools \ - ${PYTHON_PN}-packaging \ - ${PYTHON_PN}-pathlib2 \ - ${PYTHON_PN}-pluggy \ - ${PYTHON_PN}-py \ - ${PYTHON_PN}-setuptools \ - ${PYTHON_PN}-six \ - ${PYTHON_PN}-toml \ - ${PYTHON_PN}-wcwidth \ -" - -ALTERNATIVE_${PN} += "py.test pytest" - -NATIVE_LINK_NAME[pytest] = "${bindir}/pytest" -ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest" - -ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test" -ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "Simple powerful testing with python" +HOMEPAGE = "https://pypi.org/project/pytest/" +DESCRIPTION = "The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries." + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=bd27e41b6550fe0fc45356d1d81ee37c" + +SRC_URI[sha256sum] = "ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044" + +DEPENDS += "python3-setuptools-scm-native" + +inherit update-alternatives pypi python_setuptools_build_meta + +RDEPENDS:${PN} += " \ + python3-atomicwrites \ + python3-attrs \ + python3-debugger \ + python3-doctest \ + python3-importlib-metadata \ + python3-iniconfig \ + python3-json \ + python3-more-itertools \ + python3-packaging \ + python3-pathlib2 \ + python3-pluggy \ + python3-py \ + python3-setuptools \ + python3-six \ + python3-tomllib \ + python3-wcwidth \ +" + +ALTERNATIVE:${PN} += "py.test pytest" + +NATIVE_LINK_NAME[pytest] = "${bindir}/pytest" +ALTERNATIVE_TARGET[pytest] = "${bindir}/pytest" + +ALTERNATIVE_LINK_NAME[py.test] = "${bindir}/py.test" +ALTERNATIVE_TARGET[py.test] = "${bindir}/py.test" + +BBCLASSEXTEND = "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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "World timezone definitions, modern and historical" +HOMEPAGE = "http://pythonhosted.org/pytz" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=1a67fc46c1b596cce5d21209bbe75999" + +inherit pypi setuptools3 ptest + +SRC_URI[sha256sum] = "2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812" + +RDEPENDS:${PN}:class-target += "\ + python3-datetime \ + python3-doctest \ + python3-io \ + python3-pickle \ + python3-pprint \ + python3-threading \ +" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/pytz + install -d ${D}${PTEST_PATH}/pytz/tests + cp -rf ${S}/pytz/tests/* ${D}${PTEST_PATH}/pytz/tests/ + cp -f ${S}/README.rst ${D}${PTEST_PATH}/ + +} 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 @@ +From 9cc23db56add79357b8f8257fe6fc0d6879d4579 Mon Sep 17 00:00:00 2001 +From: "Andrew J. Hesford" <ajh@sideband.org> +Date: Fri, 21 Jul 2023 09:50:00 -0400 +Subject: [PATCH] Fix builds with Cython 3 + +This is a *de minimis* fix for building with Cython 3. Recent Cython<3 +releases provided `Cython.Distutils.build_ext` as an alias to +`Cython.Distutils.old_build_ext.old_build_ext`; Cython 3 drops this +alias and instead uses a wholly new `Cython.Distutils.build_ext` that +does not provide the `cython_sources` function used in `setup.py`. + +Explicitly importing `old_build_ext` preserves the existing behavior for +recent Cython<3 and uses the correct behavior for Cython 3. Should the +import fail (*e.g.*, because the version of Cython available predates +the availability of `old_build_ext`), the import falls back to just +`Cython.Distutils.build_ext`. + +Signed-off-by: Andrew J. Hesford <ajh@sideband.org> +Upstream-Status: Denied [https://github.com/yaml/pyyaml/pull/731] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + pyproject.toml | 2 +- + setup.py | 6 +++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 4bc04c0..2bf5ec8 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,3 +1,3 @@ + [build-system] +-requires = ["setuptools", "wheel", "Cython<3.0"] ++requires = ["setuptools", "wheel", "Cython"] + build-backend = "setuptools.build_meta" +diff --git a/setup.py b/setup.py +index 65b0ea0..4461580 100644 +--- a/setup.py ++++ b/setup.py +@@ -82,7 +82,11 @@ if 'sdist' in sys.argv or os.environ.get('PYYAML_FORCE_CYTHON') == '1': + with_cython = True + try: + from Cython.Distutils.extension import Extension as _Extension +- from Cython.Distutils import build_ext as _build_ext ++ try: ++ from Cython.Distutils.old_build_ext import old_build_ext as _build_ext ++ except ImportError: ++ from Cython.Distutils import build_ext as _build_ext ++ + with_cython = True + except ImportError: + if with_cython: +-- +2.39.2 + 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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Python support for YAML" +DEPENDS += "libyaml python3-cython-native" +HOMEPAGE = "https://pyyaml.org/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079" + +PYPI_PACKAGE = "PyYAML" + +inherit pypi python_setuptools_build_meta + +SRC_URI += "file://0001-Fix-builds-with-Cython-3.patch" +SRC_URI[sha256sum] = "bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43" + +PACKAGECONFIG ?= "libyaml" +PACKAGECONFIG[libyaml] = "--with-libyaml,--without-libyaml,libyaml" + +RDEPENDS:${PN} += "\ + python3-datetime \ + python3-netclient \ +" + +inherit ptest +SRC_URI += "\ + https://raw.githubusercontent.com/yaml/pyyaml/a98fd6088e81d7aca571220c966bbfe2ac43c335/tests/test_dump_load.py;name=test \ + file://run-ptest \ +" +SRC_URI[test.sha256sum] = "b6a8a2825d89fdc8aee226560f66b8196e872012a0ea7118cbef1a832359434a" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${WORKDIR}/test_dump_load.py ${D}${PTEST_PATH}/tests/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "RDFLib is a pure Python package for working with RDF" +HOMEPAGE = "https://github.com/RDFLib/rdflib" +SECTION = "devel/python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=37d489c0cefe52a17e1d5007e196464a" + +SRC_URI[sha256sum] = "9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae" + +inherit pypi python_poetry_core + +RDEPENDS:${PN} += " \ + python3-isodate \ + python3-pyparsing \ + python3-logging \ + python3-numbers \ + python3-xml \ + python3-compression \ + python3-core \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "An implementation-agnostic implementation of JSON reference resolution." +HOMEPAGE = "https://github.com/python-jsonschema/referencing" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=93eb9740964b59e9ba30281255b044e2" + +SRC_URI[sha256sum] = "5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844" + +inherit pypi python_hatchling + +DEPENDS += "python3-hatch-vcs-native" + +RDEPENDS:${PN} += "python3-rpds-py" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python HTTP for Humans." +HOMEPAGE = "http://python-requests.org" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658" + +SRC_URI[sha256sum] = "942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + python3-email \ + python3-json \ + python3-ndg-httpsclient \ + python3-netserver \ + python3-pyasn1 \ + python3-pyopenssl \ + python3-pysocks \ + python3-urllib3 \ + python3-chardet \ + python3-idna \ + python3-compression \ +" + +CVE_PRODUCT = "requests" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A pure python RFC3339 validator" +HOMEPAGE = "https://github.com/naimetti/rfc3339-validator" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6" + +FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3339-validator:" + +SRC_URI[sha256sum] = "138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b" + +PYPI_PACKAGE = "rfc3339_validator" +UPSTREAM_CHECK_REGEX = "/rfc3339-validator/(?P<pver>(\d+[\.\-_]*)+)/" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += "\ + python3-core \ + python3-datetime \ + python3-six \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Pure python rfc3986 validator" +HOMEPAGE = "https://github.com/naimetti/rfc3986-validator" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a21b13b5a996f08f7e0b088aa38ce9c6" + +FILESEXTRAPATHS:prepend := "${THISDIR}/python-rfc3986-validator:" + +SRC_URI[md5sum] = "47f7657b790aaf6011a1ab3d86c6be95" +SRC_URI[sha256sum] = "3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055" + +PYPI_PACKAGE = "rfc3986_validator" +UPSTREAM_CHECK_REGEX = "/rfc3986-validator/(?P<pver>(\d+[\.\-_]*)+)/" + +inherit pypi setuptools3 + +SRC_URI += "\ + file://0001-setup.py-move-pytest-runner-to-test_requirements.patch \ +" + +RDEPENDS:${PN} += "\ + python3-core \ +" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Parsing and validation of URIs (RFC 3986) and IRIs (RFC 3987)" +HOMEPAGE = "https://pypi.org/project/rfc3987/" +LICENSE = "GPL-3.0-or-later" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=9;md5=2b723edf67b2f3088bc5e339b1ceda2d" + +SRC_URI[md5sum] = "b6c4028acdc788a9ba697e1c1d6b896c" +SRC_URI[sha256sum] = "d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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 @@ +# Autogenerated with 'bitbake -c update_crates python3-rpds-py' + +# from Cargo.lock +SRC_URI += " \ + crate://crates.io/archery/1.1.0 \ + crate://crates.io/autocfg/1.1.0 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/heck/0.4.1 \ + crate://crates.io/indoc/2.0.4 \ + crate://crates.io/libc/0.2.147 \ + crate://crates.io/lock_api/0.4.10 \ + crate://crates.io/memoffset/0.9.0 \ + crate://crates.io/once_cell/1.18.0 \ + crate://crates.io/parking_lot/0.12.1 \ + crate://crates.io/parking_lot_core/0.9.8 \ + crate://crates.io/proc-macro2/1.0.66 \ + crate://crates.io/pyo3/0.20.2 \ + crate://crates.io/pyo3-build-config/0.20.2 \ + crate://crates.io/pyo3-ffi/0.20.2 \ + crate://crates.io/pyo3-macros/0.20.2 \ + crate://crates.io/pyo3-macros-backend/0.20.2 \ + crate://crates.io/quote/1.0.31 \ + crate://crates.io/redox_syscall/0.3.5 \ + crate://crates.io/rpds/1.1.0 \ + crate://crates.io/scopeguard/1.1.0 \ + crate://crates.io/smallvec/1.11.0 \ + crate://crates.io/static_assertions/1.1.0 \ + crate://crates.io/syn/2.0.32 \ + crate://crates.io/target-lexicon/0.12.9 \ + crate://crates.io/triomphe/0.1.9 \ + crate://crates.io/unicode-ident/1.0.11 \ + crate://crates.io/unindent/0.2.3 \ + crate://crates.io/windows-targets/0.48.1 \ + crate://crates.io/windows_aarch64_gnullvm/0.48.0 \ + crate://crates.io/windows_aarch64_msvc/0.48.0 \ + crate://crates.io/windows_i686_gnu/0.48.0 \ + crate://crates.io/windows_i686_msvc/0.48.0 \ + crate://crates.io/windows_x86_64_gnu/0.48.0 \ + crate://crates.io/windows_x86_64_gnullvm/0.48.0 \ + crate://crates.io/windows_x86_64_msvc/0.48.0 \ +" + +SRC_URI[archery-1.1.0.sha256sum] = "487955f60962765486ce000015a3492ca45c34a2ebbf12bc0aa2b5110ca6e7d2" +SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +SRC_URI[indoc-2.0.4.sha256sum] = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +SRC_URI[lock_api-0.4.10.sha256sum] = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +SRC_URI[memoffset-0.9.0.sha256sum] = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +SRC_URI[parking_lot_core-0.9.8.sha256sum] = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +SRC_URI[proc-macro2-1.0.66.sha256sum] = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +SRC_URI[pyo3-0.20.2.sha256sum] = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" +SRC_URI[pyo3-build-config-0.20.2.sha256sum] = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" +SRC_URI[pyo3-ffi-0.20.2.sha256sum] = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" +SRC_URI[pyo3-macros-0.20.2.sha256sum] = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" +SRC_URI[pyo3-macros-backend-0.20.2.sha256sum] = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" +SRC_URI[quote-1.0.31.sha256sum] = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" +SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +SRC_URI[rpds-1.1.0.sha256sum] = "a0e15515d3ce3313324d842629ea4905c25a13f81953eadb88f85516f59290a4" +SRC_URI[scopeguard-1.1.0.sha256sum] = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +SRC_URI[smallvec-1.11.0.sha256sum] = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +SRC_URI[syn-2.0.32.sha256sum] = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +SRC_URI[target-lexicon-0.12.9.sha256sum] = "df8e77cb757a61f51b947ec4a7e3646efd825b73561db1c232a8ccb639e611a0" +SRC_URI[triomphe-0.1.9.sha256sum] = "0eee8098afad3fb0c54a9007aab6804558410503ad676d4633f9c2559a00ac0f" +SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +SRC_URI[unindent-0.2.3.sha256sum] = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" +SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +SRC_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 @@ +SUMMARY = "Python bindings to the Rust rpds crate for persistent data structures." +HOMEPAGE = "https://pypi.org/project/rpds-py/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7767fa537c4596c54141f32882c4a984" + +SRC_URI[sha256sum] = "42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d" + +require ${BPN}-crates.inc + +inherit pypi cargo-update-recipe-crates python_maturin + +PYPI_PACKAGE = "rpds_py" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order." +HOMEPAGE = "https://pypi.org/project/ruamel.yaml/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=30cbbccd94bf3a2b0285ec35671a1938" + +PYPI_PACKAGE = "ruamel.yaml" + +inherit pypi setuptools3 + +SRC_URI[sha256sum] = "8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b" + +RDEPENDS:${PN} += "\ + python3-shell \ + python3-datetime \ + python3-netclient \ +" + +do_install:prepend() { + export RUAMEL_NO_PIP_INSTALL_CHECK=1 +} + +BBCLASSEXTEND = "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 @@ -require python3-scons_${PV}.bb -inherit native python3native -DEPENDS = "python3-native python3-setuptools-native" - -do_install_append() { - create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1' -} 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 @@ +From 8b482e618047e94833545dce3a26924ef4f075db Mon Sep 17 00:00:00 2001 +From: Tim Orling <ticotimo@gmail.com> +Date: Sat, 22 May 2021 11:20:46 -0700 +Subject: [PATCH] Fix man page installation + +Fixes: + error: can't copy 'build/doc/man/scons.1': doesn't exist or not a regular file + +Upstream-Status: Inappropriate [oe specific] + +Signed-off-by: Tim Orling <ticotimo@gmail.com> + +--- + MANIFEST.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/MANIFEST.in b/MANIFEST.in +index 04ec000..937f6f3 100644 +--- a/MANIFEST.in ++++ b/MANIFEST.in +@@ -4,7 +4,7 @@ recursive-include SCons/Tool/docbook * + include LICENSE + + include scons.1 sconsign.1 scons-time.1 +-recursive-include build/doc/man *.1 ++#recursive-include build/doc/man *.1 + + + 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 12122131a5..0000000000 --- a/meta/recipes-devtools/python/python3-scons_3.1.2.bb +++ /dev/null @@ -1,34 +0,0 @@ -SUMMARY = "Software Construction tool (make/autotools replacement)" -HOMEPAGE = "https://github.com/SCons/scons" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE-python3-scons-${PV};md5=e14e1b33428df24a40a782ae142785d0" - -# pypi package does not have a valid license file -SRC_URI += "https://raw.githubusercontent.com/SCons/scons/${PV}/LICENSE;downloadfilename=LICENSE-python3-scons-${PV};name=license" - -SRC_URI[md5sum] = "f9c4ad06dcf1427be95472eaf380c81a" -SRC_URI[sha256sum] = "8aaa483c303efeb678e6f7c776c8444a482f8ddc3ad891f8b6cdd35264da9a1f" -SRC_URI[license.md5sum] = "e14e1b33428df24a40a782ae142785d0" -SRC_URI[license.sha256sum] = "72ed889165fb28378cadac14552be4a959f1ebab6b148abb5dd2b49712c3c6f6" - -S = "${WORKDIR}/scons-${PV}" - -UPSTREAM_CHECK_URI = "http://scons.org/pages/download.html" -UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" - -inherit pypi setuptools3 - -do_install_prepend() { - sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${S}/script/* -} - -RDEPENDS_${PN}_class-target = "\ - python3-core \ - python3-fcntl \ - python3-io \ - python3-json \ - python3-shell \ - python3-pickle \ - python3-pprint \ - " 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 @@ +SUMMARY = "Software Construction tool (make/autotools replacement)" +HOMEPAGE = "https://github.com/SCons/scons" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d903b0b8027f461402bac9b5169b36f7" + +SRC_URI += " file://0001-Fix-man-page-installation.patch" +SRC_URI[sha256sum] = "d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3" + +PYPI_PACKAGE = "SCons" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target = "\ + python3-core \ + python3-compression \ + python3-fcntl \ + python3-importlib-metadata \ + python3-io \ + python3-json \ + python3-shell \ + python3-pickle \ + python3-pkg-resources \ + python3-pprint \ + " + +do_install:append() { + install -d ${D}${mandir}/man1 + mv ${D}${prefix}/scons*.1 ${D}${mandir}/man1/ +} + +do_install:append:class-native() { + create_wrapper ${D}${bindir}/scons SCONS_LIB_DIR='${STAGING_DIR_HOST}/${PYTHON_SITEPACKAGES_DIR}' PYTHONNOUSERSITE='1' +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A library implementing the 'SemVer' scheme." +DESCRIPTION = "Semantic version comparison for Python (see http://semver.org/)" +HOMEPAGE = "https://github.com/rbarrois/python-semanticversion" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4fb31e3c1c7eeb8b5e8c07657cdd54e2" + +SRC_URI[sha256sum] = "bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c" + +PYPI_PACKAGE = "semantic_version" +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + python3-pkg-resources \ +" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_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 @@ +SUMMARY = "Setuptools Rust extension plugin" +DESCRIPTION = "setuptools-rust is a plugin for setuptools to build Rust \ +Python extensions implemented with PyO3 or rust-cpython.\ +\ +Compile and distribute Python extensions written in Rust as easily as if they were written in C." +HOMEPAGE = "https://github.com/PyO3/setuptools-rust" +BUGTRACKER = "https://github.com/PyO3/setuptools-rust/issues" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=011cd92e702dd9e6b1a26157b6fd53f5" + +SRC_URI = "${PYPI_SRC_URI} \ + https://files.pythonhosted.org/packages/67/08/e1aa2c582c62ac76e4d60f8e454bd3bba933781a06a88b4e38797445822a/setuptools-rust-${PV}.tar.gz \ + " +SRC_URI[sha256sum] = "704df0948f2e4cc60c2596ad6e840ea679f4f43e58ed4ad0c1857807240eab96" + +inherit cargo pypi python_setuptools_build_meta + +DEPENDS += "python3-setuptools-scm-native python3-wheel-native" +# remove when https://github.com/PyO3/setuptools-rust/commit/7ced8d2a8f36e1b4fc41b5544636defb7bd44bdf +# is included +DEPENDS += "python3-semantic-version-native" + +RDEPENDS:${PN} += " \ + python3-json \ + python3-semantic-version \ + python3-setuptools \ + python3-setuptools-scm \ + python3-shell \ + python3-toml \ + python3-typing-extensions \ + python3-wheel \ +" + +BBCLASSEXTEND = "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 ead80da7b4..0000000000 --- a/meta/recipes-devtools/python/python3-setuptools-scm_5.0.1.bb +++ /dev/null @@ -1,26 +0,0 @@ -SUMMARY = "the blessed package to manage your versions by scm tags" -HOMEPAGE = "https://pypi.org/project/setuptools-scm/" -DESCRIPTION = "setuptools_scm handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file." -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489" - -SRC_URI[sha256sum] = "c85b6b46d0edd40d2301038cdea96bb6adc14d62ef943e75afb08b3e7bcf142a" - -PYPI_PACKAGE = "setuptools_scm" -inherit pypi setuptools3 - -UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar" - -RDEPENDS_${PN} = "\ - ${PYTHON_PN}-debugger \ - ${PYTHON_PN}-json \ - ${PYTHON_PN}-py \ - ${PYTHON_PN}-setuptools \ - ${PYTHON_PN}-toml \ -" -RDEPENDS_${PN}_class-native = "\ - ${PYTHON_PN}-setuptools-native \ - ${PYTHON_PN}-toml-native \ -" - -BBCLASSEXTEND = "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 @@ +SUMMARY = "the blessed package to manage your versions by scm tags" +HOMEPAGE = "https://pypi.org/project/setuptools-scm/" +DESCRIPTION = "setuptools_scm handles managing your Python package \ +versions in SCM metadata instead of declaring them as the version \ +argument or in a SCM managed file." +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=838c366f69b72c5df05c96dff79b35f2" + +SRC_URI[sha256sum] = "b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7" + +inherit pypi python_setuptools_build_meta + +UPSTREAM_CHECK_REGEX = "scm-(?P<pver>.*)\.tar" + +DEPENDS += "python3-tomli-native python3-packaging-native python3-typing-extensions-native" + +RDEPENDS:${PN} = "\ + python3-packaging \ + python3-pip \ + python3-pyparsing \ + python3-setuptools \ + python3-tomli \ + python3-typing-extensions \ +" + +RDEPENDS:${PN}:append:class-target = " \ + python3-debugger \ + python3-json \ +" + +BBCLASSEXTEND = "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 @@ +From d393759315b189a738e4b6a2ce31dc18dbbfae29 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Wed, 11 May 2022 21:41:14 +0200 +Subject: [PATCH] _distutils/sysconfig.py: make it possible to substite the + prefix to target sysroot + +This is done by probing STAGING_INCDIR/STAGING_LIBDIRenv vars: +not the most elegant solution, but distutils/sysconfig has been +tweaked to do this for many, many year, and so it's easiest +to replicate here as well, the original is +meta/recipes-devtools/python/python3/12-distutils-prefix-is-inside-staging-area.patch + +I'm not sure exactly why setuptools now needs a copy, and what +would happen to this module in light of distutils deprecation. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> +--- + setuptools/_distutils/sysconfig.py | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py +index a40a723..14f35e7 100644 +--- a/setuptools/_distutils/sysconfig.py ++++ b/setuptools/_distutils/sysconfig.py +@@ -119,6 +119,8 @@ def get_python_inc(plat_specific=0, prefix=None): + sys.base_exec_prefix -- i.e., ignore 'plat_specific'. + """ + default_prefix = BASE_EXEC_PREFIX if plat_specific else BASE_PREFIX ++ if os.environ.get('STAGING_INCDIR', ""): ++ default_prefix = os.environ['STAGING_INCDIR'].rstrip('include') + resolved_prefix = prefix if prefix is not None else default_prefix + try: + getter = globals()[f'_get_python_inc_{os.name}'] +@@ -238,7 +240,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + + early_prefix = prefix + +- if prefix is None: ++ if os.environ.get('STAGING_LIBDIR', ""): ++ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] ++ else: ++ lib_basename = "lib" ++ if prefix is None and os.environ.get('STAGING_LIBDIR', ""): ++ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename) ++ elif prefix is None: + if standard_lib: + prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX + else: +@@ -253,7 +261,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): + # Pure Python + libdir = "lib" + implementation = 'pypy' if IS_PYPY else 'python' +- libpython = os.path.join(prefix, libdir, implementation + get_python_version()) ++ libpython = os.path.join(prefix, lib_basename, implementation + get_python_version()) + return _posix_lib(standard_lib, libpython, early_prefix, prefix) + elif os.name == "nt": + 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 @@ -From c39d0896930e25c224cc897660fc8511ccae30c8 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Thu, 23 Apr 2020 10:01:12 +0000 -Subject: [PATCH] change shebang to python3 - -Upstream-Status: Pending - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - pkg_resources/_vendor/appdirs.py | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/pkg_resources/_vendor/appdirs.py b/pkg_resources/_vendor/appdirs.py -index ae67001..933e398 100644 ---- a/pkg_resources/_vendor/appdirs.py -+++ b/pkg_resources/_vendor/appdirs.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - # -*- coding: utf-8 -*- - # Copyright (c) 2005-2010 ActiveState Software Inc. - # Copyright (c) 2013 Eddy Petrișor --- -2.24.1 - 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 @@ -From 6380cc63f79abe8b8404c9be5ed5f213a70c8c6a Mon Sep 17 00:00:00 2001 +From 80fe63816eb3bfd1f5b6d354e1f2442805cff4e0 Mon Sep 17 00:00:00 2001 From: Hongxu Jia <hongxu.jia@windriver.com> Date: Tue, 17 Jul 2018 10:13:38 +0800 Subject: [PATCH] conditionally do not fetch code by easy_install @@ -9,17 +9,16 @@ internet by easy_install. Upstream-Status: Inappropriate [oe specific] Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> - --- setuptools/command/easy_install.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py -index eeb21b5..eca1edd 100644 +index 858fb20..62bd853 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py -@@ -636,6 +636,11 @@ class easy_install(Command): - os.path.exists(tmpdir) and rmtree(tmpdir) +@@ -672,6 +672,11 @@ class easy_install(Command): + os.path.exists(tmpdir) and _rmtree(tmpdir) def easy_install(self, spec, deps=False): + if os.environ.get('NO_FETCH_BUILD', None): diff --git a/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb b/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb deleted file mode 100644 index 74264a3814..0000000000 --- a/meta/recipes-devtools/python/python3-setuptools_54.1.1.bb +++ /dev/null @@ -1,55 +0,0 @@ -SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" -HOMEPAGE = "https://pypi.org/project/setuptools" -SECTION = "devel/python" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;beginline=1;endline=19;md5=7a7126e068206290f3fe9f8d6c713ea6" - -inherit pypi setuptools3 - -SRC_URI_append_class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" - -SRC_URI += "file://0001-change-shebang-to-python3.patch" - -SRC_URI[sha256sum] = "1ce82798848a978696465866bb3aaab356003c42d6143e1111fcf069ac838274" - -DEPENDS += "${PYTHON_PN}" - -RDEPENDS_${PN} = "\ - ${PYTHON_PN}-2to3 \ - ${PYTHON_PN}-compile \ - ${PYTHON_PN}-compression \ - ${PYTHON_PN}-ctypes \ - ${PYTHON_PN}-distutils \ - ${PYTHON_PN}-email \ - ${PYTHON_PN}-html \ - ${PYTHON_PN}-json \ - ${PYTHON_PN}-netserver \ - ${PYTHON_PN}-numbers \ - ${PYTHON_PN}-pickle \ - ${PYTHON_PN}-pkg-resources \ - ${PYTHON_PN}-pkgutil \ - ${PYTHON_PN}-plistlib \ - ${PYTHON_PN}-shell \ - ${PYTHON_PN}-stringold \ - ${PYTHON_PN}-threading \ - ${PYTHON_PN}-unittest \ - ${PYTHON_PN}-xml \ -" - -do_install_prepend() { - install -d ${D}${PYTHON_SITEPACKAGES_DIR} -} - -BBCLASSEXTEND = "native nativesdk" - -# The pkg-resources module can be used by itself, without the package downloader -# and easy_install. Ship it in a separate package so that it can be used by -# minimal distributions. -PACKAGES =+ "${PYTHON_PN}-pkg-resources " -FILES_${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*" -RDEPENDS_${PYTHON_PN}-pkg-resources = "\ - ${PYTHON_PN}-compression \ - ${PYTHON_PN}-email \ - ${PYTHON_PN}-plistlib \ - ${PYTHON_PN}-pprint \ -" 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 @@ +SUMMARY = "Download, build, install, upgrade, and uninstall Python packages" +HOMEPAGE = "https://pypi.org/project/setuptools" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f" + +inherit pypi python_setuptools_build_meta + +SRC_URI:append:class-native = " file://0001-conditionally-do-not-fetch-code-by-easy_install.patch" + +SRC_URI += " \ + file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch" + +SRC_URI[sha256sum] = "6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987" + +DEPENDS += "python3" + +RDEPENDS:${PN} = "\ + python3-2to3 \ + python3-compile \ + python3-compression \ + python3-ctypes \ + python3-email \ + python3-html \ + python3-json \ + python3-netserver \ + python3-numbers \ + python3-pickle \ + python3-pkg-resources \ + python3-pkgutil \ + python3-plistlib \ + python3-shell \ + python3-stringold \ + python3-threading \ + python3-unittest \ + python3-xml \ +" + +BBCLASSEXTEND = "native nativesdk" + +# The pkg-resources module can be used by itself, without the package downloader +# and easy_install. Ship it in a separate package so that it can be used by +# minimal distributions. +PACKAGES =+ "python3-pkg-resources " +FILES:python3-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*" +RDEPENDS:python3-pkg-resources = "\ + python3-compression \ + python3-email \ + python3-plistlib \ + python3-pprint \ +" + +# This used to use the bootstrap install which didn't compile. Until we bump the +# tmpdir version we can't compile the native otherwise the sysroot unpack fails +INSTALL_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 @@ -inherit setuptools3 -require python-six.inc - -SRC_URI[md5sum] = "9f90a0eaa0ea7747fda01ca79d21ebcb" -SRC_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 @@ +inherit setuptools3 +require python-six.inc + +SRC_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 @@ +From e299bcb05405ff49450307bf3002c1fac14a866c Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Sun, 20 Feb 2022 18:55:50 -0800 +Subject: [PATCH] Change hash bang to python3 + +In setup.py, smartypants and smartypants.py set hash bang to python3. + +Upstream-Status: Inappropriate [oe-core specific] + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> + +--- + setup.py | 2 +- + smartypants | 2 +- + smartypants.py | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/setup.py b/setup.py +index ff1ea76..96a8b73 100755 +--- a/setup.py ++++ b/setup.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # Copyright (C) 2013, 2014 by Yu-Jie Lin + # For detail license information, See COPYING + +diff --git a/smartypants b/smartypants +index 189adf5..0cca568 100755 +--- a/smartypants ++++ b/smartypants +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # Copyright (c) 2013, 2014 Yu-Jie Lin + # Licensed under the BSD License, for detailed license information, see COPYING + +diff --git a/smartypants.py b/smartypants.py +index a70575b..e53bd87 100755 +--- a/smartypants.py ++++ b/smartypants.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + # Copyright (c) 2013, 2014, 2016 Yu-Jie Lin + # 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 @@ +SUMMARY = "Translator of plain ASCII punctuation characters into 'smart' typographic punctuation HTML entities" +HOMEPAGE = "https://pythonhosted.org/smartypants/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=977036977591ac666c728921ecc54c4f" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "smartypants" +SRC_URI += "file://0001-Change-hash-bang-to-python3.patch" +SRC_URI[sha256sum] = "7812353a32022699a1aa8cd5626e01c94a946dcaeedaee2d0b382bae4c4cbf36" + +BBCLASSEXTEND = "native nativesdk" + +UPSTREAM_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 @@ -inherit setuptools3 -require python-smmap.inc - 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" LICENSE = "BSD-3-Clause" LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=e910b35b0ef4e1f665b9a75d6afb7709" -inherit pypi +inherit pypi setuptools3 PYPI_PACKAGE = "smmap" -SRC_URI[sha256sum] = "7e65386bd122d45405ddf795637b7f7d2b532e7e401d46bbe3fb49b9986d5182" +SRC_URI[sha256sum] = "8d79028ea6cc131da5eab099a5d95a998d43c6779956fffe3b455040911076da" -RDEPENDS_${PN} += "${PYTHON_PN}-codecs \ - ${PYTHON_PN}-mmap \ +RDEPENDS:${PN} += "python3-codecs \ + python3-mmap \ " BBCLASSEXTEND = "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 @@ +SUMMARY = "Snowball compiler and stemming algorithms" +HOMEPAGE = "https://github.com/snowballstem/snowball" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;md5=19139aaf3c8c8fa1ca6edd59c072fb9f" + +SRC_URI[sha256sum] = "09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1" + +PYPI_PACKAGE = "snowballstemmer" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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" LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae" inherit pypi setuptools3 -SRC_URI[sha256sum] = "59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1" +SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88" BBCLASSEXTEND = "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 @@ +SUMMARY = "Python tool to parse, validate and convert spdx files" +HOMEPAGE = "https://github.com/spdx/tools-python" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=dc7f21ccff0f672f2a7cd6f412ae627d" + +SRC_URI[sha256sum] = "aea4ac9c2c375e7f439b1cef5ff32ef34914c083de0f61e08ed67cd3d9deb2a9" + +BBCLASSEXTEND = "native nativesdk" + +inherit setuptools3 pypi + +# Dependency required for pyspdxtools : python3-click +# Dependencies required for conversion to spdx3 : python3-semantic-version, python3-ply +RDEPENDS:${PN} += "\ + python3-core \ + python3-beartype \ + python3-click \ + python3-datetime \ + python3-json \ + python3-license-expression \ + python3-ply \ + python3-pyyaml \ + python3-rdflib \ + python3-semantic-version \ + python3-uritools \ + python3-xmltodict \ + " 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 @@ +SUMMARY = "Sphinx Theme reader" +HOMEPAGE = "https://github.com/readthedocs/sphinx_rtd_theme" +SECTION = "devel/python" +LICENSE = "MIT & OFL-1.1" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a1db7d4ef426c2935227264e1d4ae8f9 \ + file://OFL-License.txt;md5=4534c22e0147eadb6828bd9fe86d4868 \ + file://Apache-License-2.0.txt;md5=8a75796f0ef19c3f601d69857f5a9a5b" + +RDEPENDS:${PN} += " \ + python3-compile \ + python3-sphinx \ + python3-sphinxcontrib-jquery \ +" + +PYPI_PACKAGE = "sphinx_rtd_theme" + +SRC_URI[sha256sum] = "bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b" +UPSTREAM_CHECK_REGEX ?= "/sphinx-rtd-theme/(?P<pver>(\d+[\.\-_]*)+)/" + +inherit setuptools3 pypi + +#Fake out the setup scipt +export CI = "True" +export TOX_ENV_NAME = "True" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python documentation generator" +HOMEPAGE = "http://sphinx-doc.org/" +SECTION = "devel/python" +LICENSE = "BSD-2-Clause & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=5eb6ac1b115a1ed24a12d9f15b633993" + +SRC_URI[sha256sum] = "9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5" + +inherit python_flit_core pypi +UPSTREAM_CHECK_REGEX = "/Sphinx/(?P<pver>(\d+[\.\-_]*)+)/" + +do_install:append () { + # The cache format of "{None, 'en', 'ja'}" doesn't seem to be consistent (dict ordering?) + rm ${D}${libdir}/${PYTHON_DIR}/site-packages/sphinx/writers/__pycache__/*latex* +} + +RDEPENDS:${PN} = "\ + python3-alabaster \ + python3-babel \ + python3-docutils \ + python3-imagesize \ + python3-jinja2 \ + python3-packaging \ + python3-pygments \ + python3-requests \ + python3-snowballstemmer \ + python3-sphinxcontrib-applehelp \ + python3-sphinxcontrib-devhelp \ + python3-sphinxcontrib-htmlhelp \ + python3-sphinxcontrib-jsmath \ + python3-sphinxcontrib-qthelp \ + python3-sphinxcontrib-serializinghtml \ + " + +BBCLASSEXTEND = "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 @@ +SUMMARY = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +HOMEPAGE = "https://www.sphinx-doc.org" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=c7715857042d4c8c0105999ca0c072c5" + +SRC_URI[sha256sum] = "c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619" + +PYPI_PACKAGE = "sphinxcontrib_applehelp" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +HOMEPAGE = "https://www.sphinx-doc.org" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=fd30d9972a142c857a80c9f312e92b93" + +SRC_URI[sha256sum] = "9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3" + +PYPI_PACKAGE = "sphinxcontrib_devhelp" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +HOMEPAGE = "https://www.sphinx-doc.org" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=24dce5ef6a13563241c24bc366f48886" + +SRC_URI[sha256sum] = "0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015" + +PYPI_PACKAGE = "sphinxcontrib_htmlhelp" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Extension to include jQuery on newer Sphinx releases" +HOMEPAGE = "https://pypi.org/project/sphinxcontrib-jquery/" +LICENSE = "0BSD" +LIC_FILES_CHKSUM = "file://LICENCE;md5=926e8b7e89e3ebb2a2d1dfaf0873f241" + +SRC_URI[sha256sum] = "1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a" + +PYPI_PACKAGE = "sphinxcontrib-jquery" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = "A sphinx extension which renders display math in HTML via JavaScript" +HOMEPAGE = "https://www.sphinx-doc.org" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f0064c10bd544bcffccbc67a41c108d3" + +SRC_URI[sha256sum] = "a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8" + +PYPI_PACKAGE = "sphinxcontrib-jsmath" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Is a sphinx extension which outputs QtHelp document." +HOMEPAGE = "http://babel.edgewall.org/" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f7a83b72ea86d04827575ec0b63430eb" + +SRC_URI[sha256sum] = "053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6" + +PYPI_PACKAGE = "sphinxcontrib_qthelp" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = 'sphinxcontrib-serializinghtml is a sphinx extension which outputs "serialized" HTML files (json and pickle).' +HOMEPAGE = "https://www.sphinx-doc.org" +LICENSE = "BSD-2-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=32a84ac5cd3bbd10c4d479233ad588b6" + +SRC_URI[sha256sum] = "93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f" + +PYPI_PACKAGE = "sphinxcontrib_serializinghtml" + +inherit pypi python_flit_core + +BBCLASSEXTEND = "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 @@ -inherit setuptools3 -require python-subunit.inc - -RDEPENDS_${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 @@ +SUMMARY = "Python implementation of subunit test streaming protocol" +HOMEPAGE = "https://pypi.org/project/python-subunit/" +SECTION = "devel/python" +LICENSE = "Apache-2.0 | BSD-3-Clause" +LIC_FILES_CHKSUM = "file://COPYING;beginline=1;endline=20;md5=b1121e68d06c8d9ea544fcd895df0d39" + +PYPI_PACKAGE = "python-subunit" + +SRC_URI[sha256sum] = "1079363131aa1d3f45259237265bc2e61a77e35f20edfb6e3d1d2558a2cdea34" + +inherit pypi setuptools3 + +RDEPENDS:${PN} = " python3-testtools python3-iso8601" + +BBCLASSEXTEND = "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 @@ -traceback2 adds traceback for python2. Rather than depend on traceback2, we're -python3 only so just use traceback. -This caused breakage in oe-selftest -j which uses testtools on the autobuilder -using buildtools-tarball. - -Upstream-Status: Inappropriate [Our recipe is python3 specific] -(Once py2 is EOL upstream probably could/should take this) -Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> - -Index: testtools-2.3.0/testtools/content.py -=================================================================== ---- testtools-2.3.0.orig/testtools/content.py -+++ testtools-2.3.0/testtools/content.py -@@ -19,8 +19,7 @@ import os - import sys - - from extras import try_import --# To let setup.py work, make this a conditional import. --traceback = try_import('traceback2') -+import traceback - - from testtools.compat import ( - _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 @@ -inherit setuptools3 -require python-testtools.inc - -SRC_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 @@ +SUMMARY = "Extensions to the Python standard library unit testing framework" +HOMEPAGE = "https://pypi.org/project/testtools/" +SECTION = "devel/python" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a" + +DEPENDS += "python3-hatch-vcs-native" + +inherit pypi python_hatchling + +SRC_URI[sha256sum] = "df6de96010e29ee21f637a147eabf30d50b25e3841dd1d68f93ee89ce77e366c" + +RDEPENDS:${PN} += "\ + python3-doctest \ + python3-extras \ + python3-six \ + " + +BBCLASSEXTEND = "nativesdk" + 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 BBCLASSEXTEND = "native nativesdk" -RDEPENDS_${PN} += " \ - ${PYTHON_PN}-misc \ +RDEPENDS:${PN} += " \ + python3-misc \ " 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 @@ +SUMMARY = "A lil' TOML parser" +DESCRIPTION = "Tomli is a Python library for parsing TOML. Tomli is fully \ +compatible with TOML v1.0.0." +HOMEPAGE = "https://github.com/hukkin/tomli" +BUGTRACKER = "https://github.com/hukkin/tomli/issues" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=aaaaf0879d17df0110d1aa8c8c9f46f5" + +inherit pypi python_flit_core + +SRC_URI[sha256sum] = "de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += " \ + python3-datetime \ + python3-stringold \ +" 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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Canonical source for classifiers on PyPI (pypi.org)." +HOMEPAGE = "https://github.com/pypa/trove-classifiers" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI[sha256sum] = "49f40bb6a746b72a1cba4f8d55ee8252169cda0f70802e3fd24f04b7fb25a492" + +inherit pypi python_setuptools_build_meta ptest + +DEPENDS += " python3-calver-native" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Backported and Experimental Type Hints for Python 3.7+" +DESCRIPTION = "The typing_extensions module serves two related purposes:\ +\ +* Enable use of new type system features on older Python versions. For \ + example, typing.TypeGuard is new in Python 3.10, but typing_extensions \ + allows users on previous Python versions to use it too.\ +* Enable experimentation with new type system PEPs before they are accepted \ + and added to the typing module." +HOMEPAGE = "https://github.com/python/typing_extensions" +BUGTRACKER = "https://github.com/python/typing_extensions/issues" +SECTIONS = "libs" +LICENSE = "PSF-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2" + +# The name on PyPi is slightly different. +PYPI_PACKAGE = "typing_extensions" + +SRC_URI[sha256sum] = "83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0" + +inherit pypi python_flit_core + +UPSTREAM_CHECK_REGEX = "/typing-extensions/(?P<pver>(\d+[\.\-_]*)+)/" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Filters to enhance web typography, including support for Django & Jinja templates" +HOMEPAGE = "https://github.com/mintchaos/typogrify" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=12bc792d6f5415dbf421f3fd183c6dd2" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "typogrify" +SRC_URI[sha256sum] = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += "python3-smartypants" + 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 @@ +SUMMARY = "Modules to make unittest and pytest look like Automake output, for ptest" +HOMEPAGE = "https://gitlab.com/rossburton/python-unittest-automake-output" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=f6f16008d9fb7349f06609329f1ab93b" + +SRC_URI = "git://gitlab.com/rossburton/python-unittest-automake-output;protocol=https;branch=main" +SRCREV = "aebdfb188e368c690ea55cf6c9c9ffa1a52def65" + +S = "${WORKDIR}/git" + +inherit python_flit_core + +BBCLASSEXTEND = "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 @@ +SUMMARY = "URI parsing, classification and composition" +HOMEPAGE = "https://github.com/tkem/uritools/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1ec55353c80c662e4255f8889a0ca558" + +SRC_URI[sha256sum] = "04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573" + +inherit setuptools3 pypi + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python HTTP library with thread-safe connection pooling, file post support, sanity friendly, and more" +HOMEPAGE = "https://github.com/shazow/urllib3" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda" + +SRC_URI[sha256sum] = "d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19" + +inherit pypi python_hatchling + +RDEPENDS:${PN} += "\ + python3-certifi \ + python3-cryptography \ + python3-email \ + python3-idna \ + python3-json \ + python3-netclient \ + python3-pyopenssl \ + python3-threading \ + python3-logging \ +" + +CVE_PRODUCT = "urllib3" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Python vcversioner, automagically update the project's version" +HOMEPAGE = "https://github.com/habnabit/vcversioner" + +LICENSE = "ISC" +LIC_FILES_CHKSUM = "file://PKG-INFO;md5=827a7a91a8d20d3c666b665cd96db8e3" + +SRC_URI[md5sum] = "aab6ef5e0cf8614a1b1140ed5b7f107d" +SRC_URI[sha256sum] = "dae60c17a479781f44a4010701833f1829140b1eeccd258762a74974aa06e19b" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "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 @@ #!/bin/sh -pytest -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}}' +pytest --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" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb" -SRC_URI[md5sum] = "a07a75f99d316e14838ac760c831ea37" -SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" +SRC_URI[sha256sum] = "72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5" inherit pypi setuptools3 ptest @@ -13,13 +12,16 @@ SRC_URI += " \ file://run-ptest \ " -RDEPENDS_${PN}-ptest += " \ - ${PYTHON_PN}-pytest \ +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ " do_install_ptest() { - install -d ${D}${PTEST_PATH}/tests - cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ + install -d ${D}${PTEST_PATH}/bin + cp -rf ${S}/bin/* ${D}${PTEST_PATH}/bin/ } BBCLASSEXTEND = "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 @@ +#!/bin/sh + +pytest --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 @@ +SUMMARY = "Simple Python module for working with HTML/CSS color definitions." +HOMEPAGE = "https://pypi.org/project/webcolors/" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=702b1ef12cf66832a88f24c8f2ee9c19" + +SRC_URI[sha256sum] = "c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a" + +inherit pypi python_setuptools_build_meta ptest + +RDEPENDS:${PN}:class-target = "\ + python3-stringold \ +" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ + python3-unittest-automake-output \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +BBCLASSEXTEND = "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 @@ +SUMMARY = "An implementation of the WebSocket Protocol (RFC 6455)" +HOMEPAGE = "https://github.com/aaugustin/websockets" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=51924a6af4495b8cfaee1b1da869b6f4" + +inherit pypi setuptools3 + +SRC_URI[sha256sum] = "81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b" + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} = " \ + python3-asyncio \ + python3-profile \ +" 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 @@ +SUMMARY = "The official binary distribution format for Python " +HOMEPAGE = "https://github.com/pypa/wheel" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7ffb0db04527cfe380e4f2726bd05ebf" + +SRC_URI[sha256sum] = "465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85" + +inherit python_flit_core pypi + +BBCLASSEXTEND = "native nativesdk" + +# This used to use the bootstrap install which didn't compile. Until we bump the +# tmpdir version we can't compile the native otherwise the sysroot unpack fails +INSTALL_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 @@ +#!/bin/sh + +pytest -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 @@ +SUMMARY = "Makes working with XML feel like you are working with JSON" +HOMEPAGE = "https://github.com/martinblech/xmltodict" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=01441d50dc74476db58a41ac10cb9fa2" + +SRC_URI[sha256sum] = "341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56" + +PYPI_PACKAGE = "xmltodict" + +BBCLASSEXTEND = "native nativesdk" + +inherit pypi setuptools3 ptest + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN} += " \ + python3-core \ + python3-xml \ + python3-io \ +" + +RDEPENDS:${PN}-ptest += " \ + python3-pytest \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} 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 @@ +SUMMARY = "A linter for YAML files." +HOMEPAGE = "https://github.com/adrienverge/yamllint" +LICENSE = "GPL-3.0-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464" + +inherit pypi setuptools3 + +PYPI_PACKAGE = "yamllint" + +SRC_URI[sha256sum] = "7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd" + +DEPENDS += "python3-setuptools-scm-native" +RDEPENDS:${PN} += "python3-pathspec python3-pyyaml" + +BBCLASSEXTEND = "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 @@ +SUMMARY = "Backport of pathlib-compatible object wrapper for zip files" +HOMEPAGE = "https://github.com/jaraco/zipp" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=141643e11c48898150daa83802dbc65f" + +SRC_URI[sha256sum] = "2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715" + +DEPENDS += "python3-setuptools-scm-native" + +inherit pypi python_setuptools_build_meta + +DEPENDS += "python3-toml-native" + +RDEPENDS:${PN} += "python3-compression \ + python3-math \ + python3-more-itertools" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-zipp_3.4.1.bb b/meta/recipes-devtools/python/python3-zipp_3.4.1.bb deleted file mode 100644 index 191d3b38ad..0000000000 --- a/meta/recipes-devtools/python/python3-zipp_3.4.1.bb +++ /dev/null @@ -1,19 +0,0 @@ -DESCRIPTION = "Backport of pathlib-compatible object wrapper for zip files" -HOMEPAGE = "https://github.com/jaraco/zipp" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=7a7126e068206290f3fe9f8d6c713ea6" - -SRC_URI[md5sum] = "3d91c7ab73b62ac3674210df94df600a" -SRC_URI[sha256sum] = "3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76" - -DEPENDS += "${PYTHON_PN}-setuptools-scm-native" - -inherit pypi setuptools3 - -DEPENDS += "${PYTHON_PN}-toml-native" - -RDEPENDS_${PN} += "${PYTHON_PN}-compression \ - ${PYTHON_PN}-math \ - ${PYTHON_PN}-more-itertools" - -BBCLASSEXTEND = "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 @@ +From 365399f17d35719d828ddd49182dcb401fb7791c Mon Sep 17 00:00:00 2001 +From: Paulo Neves <ptsneves@gmail.com> +Date: Tue, 7 Jun 2022 16:16:41 +0200 +Subject: [PATCH] Avoid shebang overflow on python-config.py + +The whole native path may be too big, leading to shebang +overflow. Let's just use the env shebang. + +Denial reason: [1] + +Upstream-Status: Denied [distribution] + +[1] https://github.com/python/cpython/pull/93760#pullrequestreview-1005365737 +--- + Makefile.pre.in | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 77bf09a..6353c57 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2339,6 +2339,8 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh + @ # Substitution happens here, as the completely-expanded BINDIR + @ # is not available in configure + sed -e "s,@EXENAME@,$(EXENAME)," < $(srcdir)/Misc/python-config.in >python-config.py ++ @ # Otherwise we might get huge shebangs with native paths ++ sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' python-config.py + @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} + LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config + @ # 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 @@ -From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Fri, 25 Jan 2019 19:04:13 +0100 -Subject: [PATCH] Do not add /usr/lib/termcap to linker flags to avoid host - contamination - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - setup.py | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/setup.py b/setup.py -index 20d7f35..ab18ff0 100644 ---- a/setup.py -+++ b/setup.py -@@ -957,7 +957,6 @@ class PyBuildExt(build_ext): - 'termcap'): - readline_libs.append('termcap') - self.add(Extension('readline', ['readline.c'], -- library_dirs=['/usr/lib/termcap'], - extra_link_args=readline_extra_link_args, - libraries=readline_libs)) - 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 @@ -From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Tue, 29 Jan 2019 15:03:01 +0100 -Subject: [PATCH] Do not use the shell version of python-config that was - introduced in 3.4 - -Revert instead to the original python version: it has our tweaks and -outputs directories correctly. - -Upstream-Status: Inappropriate [oe-specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - Makefile.pre.in | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/Makefile.pre.in b/Makefile.pre.in -index 2d2e11f..cc19942 100644 ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh - sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py - @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} - LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config -- @ # On Darwin, always use the python version of the script, the shell -- @ # version doesn't use the compiler customizations that are provided -- @ # in python (_osx_support.py). -- @if test `uname -s` = Darwin; then \ -- cp python-config.py python-config; \ -- fi -+ @ # In OpenEmbedded, always use the python version of the script, the shell -+ @ # version is broken in multiple ways, and doesn't return correct directories -+ cp python-config.py python-config - - - # 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 @@ -From 9da913bf5f39c6fe737219af7419170574d6fbfb Mon Sep 17 00:00:00 2001 -From: Jeremy Puhlman <jpuhlman@mvista.com> -Date: Wed, 4 Mar 2020 00:06:42 +0000 -Subject: [PATCH] Don't search system for headers/libraries - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> - ---- - setup.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/setup.py b/setup.py -index a0bf9ea..da099bf 100644 ---- a/setup.py -+++ b/setup.py -@@ -674,8 +674,8 @@ class PyBuildExt(build_ext): - add_dir_to_list(self.compiler.include_dirs, - sysconfig.get_config_var("INCLUDEDIR")) - -- system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib'] -- system_include_dirs = ['/usr/include'] -+ system_lib_dirs = [] -+ system_include_dirs = [] - # lib_dirs and inc_dirs are used to search for files; - # if a file is found in one of those directories, it can - # 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 @@ +From f8a664cf1fc73e381d57d6927207286059744837 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Thu, 16 Sep 2021 16:35:37 +0200 +Subject: [PATCH] Lib/pty.py: handle stdin I/O errors same way as master I/O + errors + +reading stdin can throw the same I/O errors as reading from master fd does, +e.g. when running under Yocto's test harness: +====================================================================== +ERROR: test_spawn_doesnt_hang (test.test_pty.PtyTest) +---------------------------------------------------------------------- +Traceback (most recent call last): + File "/usr/lib/python3.10/test/test_pty.py", line 316, in test_spawn_doesnt_hang + pty.spawn([sys.executable, '-c', 'print("hi there")']) + File "/usr/lib/python3.10/pty.py", line 181, in spawn + _copy(master_fd, master_read, stdin_read) + File "/usr/lib/python3.10/pty.py", line 157, in _copy + data = stdin_read(STDIN_FILENO) + File "/usr/lib/python3.10/pty.py", line 132, in _read + return os.read(fd, 1024) +OSError: [Errno 5] Input/output error + +So let's treat both channels the same. + +Upstream-Status: Submitted [https://github.com/python/cpython/pull/28388] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> + +--- + Lib/pty.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/Lib/pty.py b/Lib/pty.py +index 1d97994..fa8821b 100644 +--- a/Lib/pty.py ++++ b/Lib/pty.py +@@ -178,7 +178,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read): + i_buf = i_buf[n:] + + if stdin_avail and STDIN_FILENO in rfds: +- data = stdin_read(STDIN_FILENO) ++ try: ++ data = stdin_read(STDIN_FILENO) ++ except OSError: ++ data = b"" + if not data: + stdin_avail = False + 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 @@ -From deeedd1b8799294ab276ab7dbbfdb59c1dacc9a2 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 22 Oct 2020 13:10:34 +0200 -Subject: [PATCH] Lib/sysconfig.py: use libdir values from configuration file - -This allows correctly substituting them for target installs using -native python. - -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - Lib/sysconfig.py | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py -index bf04ac5..ed0462b 100644 ---- a/Lib/sysconfig.py -+++ b/Lib/sysconfig.py -@@ -20,10 +20,10 @@ __all__ = [ - - _INSTALL_SCHEMES = { - 'posix_prefix': { -- 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}', -- 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', -- 'purelib': '{base}/lib/python{py_version_short}/site-packages', -- 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', -+ 'stdlib': '{LIBDEST}', -+ 'platstdlib': '{LIBDEST}', -+ 'purelib': '{LIBDEST}/site-packages', -+ 'platlib': '{LIBDEST}/site-packages', - 'include': - '{installed_base}/include/python{py_version_short}{abiflags}', - 'platinclude': --- -2.24.0 - 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 @@ +From 71c194077bb907bfe423d3f3275f33a6c8ca0e74 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Fri, 17 Nov 2023 14:26:32 +0100 +Subject: [PATCH] Lib/sysconfig.py: use prefix value from build configuration + file + +This allows correctly substituting them for target installs using +native python. + +Upstream-Status: Inappropriate [oe-core cross builds] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> + +--- + Lib/sysconfig.py | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 79c0510..91ebcb6 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -668,6 +668,11 @@ def _init_config_vars(): + _CONFIG_VARS['VPATH'] = sys._vpath + if os.name == 'posix': + _init_posix(_CONFIG_VARS) ++ _CONFIG_VARS['installed_base'] = _CONFIG_VARS['prefix'] ++ _CONFIG_VARS['base'] = _CONFIG_VARS['prefix'] ++ _CONFIG_VARS['installed_platbase'] = _CONFIG_VARS['prefix'] ++ _CONFIG_VARS['platbase'] = _CONFIG_VARS['prefix'] ++ _CONFIG_VARS['platlibdir'] = _CONFIG_VARS['PLATLIBDIR'] + if _HAS_USER_BASE: + # Setting 'userbase' is done below the call to the + # 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 @@ -From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 16 Jan 2020 12:34:20 +0100 -Subject: [PATCH] Makefile: do not compile .pyc in parallel - -This was found to break reproducibility, and produce strange file ownership -races. - -The upstream commit introducing the change was: -https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504 - -Upstream-Status: Pending -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - Makefile.pre.in | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/Makefile.pre.in b/Makefile.pre.in -index 1241112..5dfdf44 100644 ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c - fi - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST) -f \ -+ -d $(LIBDEST) -f \ - -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ - $(DESTDIR)$(LIBDEST) - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST) -f \ -+ -d $(LIBDEST) -f \ - -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ - $(DESTDIR)$(LIBDEST) - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST) -f \ -+ -d $(LIBDEST) -f \ - -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ - $(DESTDIR)$(LIBDEST) - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST)/site-packages -f \ -+ -d $(LIBDEST)/site-packages -f \ - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST)/site-packages -f \ -+ -d $(LIBDEST)/site-packages -f \ - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ -- -j0 -d $(LIBDEST)/site-packages -f \ -+ -d $(LIBDEST)/site-packages -f \ - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ - $(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 @@ -From 840fda32c82550259d02a7a56a78a9c05162b1a1 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Wed, 8 May 2019 16:10:29 +0800 -Subject: [PATCH] Makefile: fix Issue36464 (parallel build race problem) - -When using make -j with the 'install' target, it's possible for altbininstall -(which normally creates BINDIR) and libainstall (which doesn't, though it -installs python-config there) to race, resulting in a failure due to -attempting to install python-config into a nonexistent BINDIR. Ensure it also -exists in the libainstall target. - -Upstream-Status: Submitted [https://github.com/python/cpython/pull/13186] - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - Makefile.pre.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.pre.in b/Makefile.pre.in -index 15f3687..7e9f173 100644 ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -1456,7 +1456,7 @@ LIBPL= @LIBPL@ - LIBPC= $(LIBDIR)/pkgconfig - - libainstall: @DEF_MAKE_RULE@ python-config -- @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \ -+ @for i in $(LIBDIR) $(LIBPL) $(LIBPC) $(BINDIR); \ - do \ - if test ! -d $(DESTDIR)$$i; then \ - echo "Creating directory $$i"; \ --- -2.7.4 - 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 @@ -From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 +From 38278339832a57dbf5fa3ef21accaa03e2c814d7 Mon Sep 17 00:00:00 2001 From: Alexander Kanavin <alex.kanavin@gmail.com> Date: Wed, 30 Jan 2019 12:41:04 +0100 Subject: [PATCH] Makefile.pre: use qemu wrapper when gathering profile data @@ -10,16 +10,16 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index a3a02a7..d5503dd 100644 +index dd5e69f..381feb0 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -507,8 +507,7 @@ build_all_generate_profile: - $(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)" - - run_profile_task: +@@ -658,8 +658,7 @@ profile-run-stamp: + # enabled. + $(MAKE) profile-gen-stamp + # Next, run the profile task to generate the profile information. - @ # FIXME: can't run for a cross build - $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true + ./pgo-wrapper ./python -m test.regrtest --pgo test_grammar test_opcodes test_dict test_builtin test_exceptions test_types test_support || true - - build_all_merge_profile: $(LLVM_PROF_MERGER) + # Remove profile generation binary since we are done with it. + $(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 index a49d603d47..197daa71a5 100644 --- 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 @@ -1,9 +1,8 @@ -From 0b25b66d4f54bd74615c9ff10f3fae8f0d1c548d Mon Sep 17 00:00:00 2001 +From 3471e3478e0760c42e04f8046cee2367ab5706d2 Mon Sep 17 00:00:00 2001 From: Yi Fan Yu <yifan.yu@windriver.com> Date: Thu, 1 Apr 2021 13:08:37 -0700 Subject: [PATCH] Skip failing tests due to load variability on YP AB - Skip these tests until AB-INT is solved. [YOCTO #14296] @@ -11,43 +10,63 @@ Skip these tests until AB-INT is solved. Upstream-Status: Inappropriate [OE-Specific] Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> + +Skip two additional tests due to suspected load variability failures. + +[YOCTO #15131] +[YOCTO #15177] + +Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> --- - Lib/test/_test_multiprocessing.py | 2 ++ - Lib/test/test_time.py | 1 + - 2 files changed, 3 insertions(+) + Lib/test/_test_multiprocessing.py | 3 +++ + Lib/test/test_time.py | 2 ++ + 2 files changed, 5 insertions(+) diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py -index fd3b430..cda29f6 100644 +index e42c7ab..dff5227 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py -@@ -568,6 +568,7 @@ def test_close(self): - +@@ -682,6 +682,7 @@ class _TestProcess(BaseTestCase): close_queue(q) + @support.requires_resource('walltime') + @unittest.skip('timing related test, dependent on load') def test_many_processes(self): if self.TYPE == 'threads': self.skipTest('test not appropriate for {}'.format(self.TYPE)) -@@ -4715,6 +4716,7 @@ def signal_and_sleep(cls, sem, period): - sem.release() +@@ -2066,6 +2067,7 @@ class _TestBarrier(BaseTestCase): + except threading.BrokenBarrierError: + results.append(True) + ++ @unittest.skip('timing related test, dependent on load') + def test_timeout(self): + """ + Test wait(timeout) +@@ -5024,6 +5026,7 @@ class TestWait(unittest.TestCase): time.sleep(period) + @support.requires_resource('walltime') + @unittest.skip('timing related test, dependent on load') def test_wait_integer(self): from multiprocessing.connection import wait diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py -index 3258298..adcf407 100644 +index 02cc3f4..51a4548 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py -@@ -474,6 +474,7 @@ def test_monotonic(self): - def test_perf_counter(self): - time.perf_counter() - +@@ -492,6 +492,7 @@ class TimeTestCase(unittest.TestCase): + @unittest.skipIf( + support.is_wasi, "process_time not available on WASI" + ) + @unittest.skip('timing related test, dependent on load') def test_process_time(self): # process_time() should not include time spend during a sleep start = time.process_time() --- -2.17.1 - +@@ -505,6 +506,7 @@ class TimeTestCase(unittest.TestCase): + self.assertTrue(info.monotonic) + self.assertFalse(info.adjustable) + ++ @unittest.skip('timing related test, dependent on load') + def test_thread_time(self): + if not hasattr(time, 'thread_time'): + 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 @@ +From 37d058e841ba3bd89b5746cc5381afb014b11581 Mon Sep 17 00:00:00 2001 +From: Wentao Zhang <wentao.zhang@windriver.com> +Date: Mon, 20 Mar 2023 13:39:52 +0800 +Subject: [PATCH] Update test_sysconfig for posix_user purelib + +Steps to trigger the failed test: +Edit local.conf to add something as follows: + BASELIB = "lib64" + IMAGE_INSTALL:append = " python3-tests". +bitbake core-image-sato +runqemu qemux86-64 nographic slirp +Reproducer: + $python3 -m test test_sysconfig + +Update test_sysconfig.test_user_similar() for the posix_user scheme: +"purelib" doesn't use sys.platlibdir. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Wentao Zhang <wentao.zhang@windriver.com> + +--- + Lib/test/test_sysconfig.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py +index b6dbf3d..5672590 100644 +--- a/Lib/test/test_sysconfig.py ++++ b/Lib/test/test_sysconfig.py +@@ -372,7 +372,7 @@ class TestSysConfig(unittest.TestCase): + expected = os.path.normpath(global_path.replace(base, user, 1)) + # bpo-44860: platlib of posix_user doesn't use sys.platlibdir, + # whereas posix_prefix does. +- if name == 'platlib': ++ if name == 'platlib' or name == 'purelib': + # Replace "/lib64/python3.11/site-packages" suffix + # with "/lib/python3.11/site-packages". + 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 @@ -From 9f63e83b1cec872917647b11155edaffe399d103 Mon Sep 17 00:00:00 2001 -From: Inada Naoki <songofacandy@gmail.com> -Date: Sat, 14 Jul 2018 00:46:11 +0900 -Subject: [PATCH] Use FLAG_REF always for interned strings - -Upstream-Status: Submitted [https://github.com/python/cpython/pull/8226] -Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> - ---- - Python/marshal.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/Python/marshal.c b/Python/marshal.c -index c4538bd..2437160 100644 ---- a/Python/marshal.c -+++ b/Python/marshal.c -@@ -298,9 +298,14 @@ w_ref(PyObject *v, char *flag, WFILE *p) - if (p->version < 3 || p->hashtable == NULL) - return 0; /* not writing object references */ - -- /* if it has only one reference, it definitely isn't shared */ -- if (Py_REFCNT(v) == 1) -+ /* If it has only one reference, it definitely isn't shared. -+ * But we use TYPE_REF always for interned string, to PYC file stable -+ * as possible. -+ */ -+ if (Py_REFCNT(v) == 1 && -+ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) { - return 0; -+ } - - entry = _Py_hashtable_get_entry(p->hashtable, v); - 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 @@ -From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001 -From: Matthias Schoepfer <matthias.schoepfer@ithinx.io> -Date: Fri, 31 May 2019 15:34:34 +0200 -Subject: [PATCH] bpo-36852: proper detection of mips architecture for soft - float - -When (cross) compiling for softfloat mips, __mips_hard_float will not be -defined and detection of OS triplet in configure.ac / configure will fail. - -This also has to do with the custom detection of the build triplet. Trying -to do this in a more autoconf/autotools manner. - -Upstream-Status: Submitted [https://github.com/python/cpython/pull/13196] -Signed-off-by: Matthias Schoepfer <matthias.schoepfer@ithinx.io> - -%% original patch: 0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch ---- - configure.ac | 175 +++++++-------------------------------------------- - 1 file changed, 21 insertions(+), 154 deletions(-) - -diff --git a/configure.ac b/configure.ac -index ede710e..bc81b0b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -710,160 +710,27 @@ fi - MULTIARCH=$($CC --print-multiarch 2>/dev/null) - AC_SUBST(MULTIARCH) - --AC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) --cat >> conftest.c <<EOF --#undef bfin --#undef cris --#undef fr30 --#undef linux --#undef hppa --#undef hpux --#undef i386 --#undef mips --#undef powerpc --#undef sparc --#undef unix --#if defined(__ANDROID__) -- # Android is not a multiarch system. --#elif defined(__linux__) --# if defined(__x86_64__) && defined(__LP64__) -- x86_64-linux-gnu --# elif defined(__x86_64__) && defined(__ILP32__) -- x86_64-linux-gnux32 --# elif defined(__i386__) -- i386-linux-gnu --# elif defined(__aarch64__) && defined(__AARCH64EL__) --# if defined(__ILP32__) -- aarch64_ilp32-linux-gnu --# else -- aarch64-linux-gnu --# endif --# elif defined(__aarch64__) && defined(__AARCH64EB__) --# if defined(__ILP32__) -- aarch64_be_ilp32-linux-gnu --# else -- aarch64_be-linux-gnu --# endif --# elif defined(__alpha__) -- alpha-linux-gnu --# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP) --# if defined(__ARMEL__) -- arm-linux-gnueabihf --# else -- armeb-linux-gnueabihf --# endif --# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP) --# if defined(__ARMEL__) -- arm-linux-gnueabi --# else -- armeb-linux-gnueabi --# endif --# elif defined(__hppa__) -- hppa-linux-gnu --# elif defined(__ia64__) -- ia64-linux-gnu --# elif defined(__m68k__) && !defined(__mcoldfire__) -- m68k-linux-gnu --# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL) --# if _MIPS_SIM == _ABIO32 -- mipsisa32r6el-linux-gnu --# elif _MIPS_SIM == _ABIN32 -- mipsisa64r6el-linux-gnuabin32 --# elif _MIPS_SIM == _ABI64 -- mipsisa64r6el-linux-gnuabi64 --# else --# error unknown platform triplet --# endif --# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) --# if _MIPS_SIM == _ABIO32 -- mipsisa32r6-linux-gnu --# elif _MIPS_SIM == _ABIN32 -- mipsisa64r6-linux-gnuabin32 --# elif _MIPS_SIM == _ABI64 -- mipsisa64r6-linux-gnuabi64 --# else --# error unknown platform triplet --# endif --# elif defined(__mips_hard_float) && defined(_MIPSEL) --# if _MIPS_SIM == _ABIO32 -- mipsel-linux-gnu --# elif _MIPS_SIM == _ABIN32 -- mips64el-linux-gnuabin32 --# elif _MIPS_SIM == _ABI64 -- mips64el-linux-gnuabi64 --# else --# error unknown platform triplet --# endif --# elif defined(__mips_hard_float) --# if _MIPS_SIM == _ABIO32 -- mips-linux-gnu --# elif _MIPS_SIM == _ABIN32 -- mips64-linux-gnuabin32 --# elif _MIPS_SIM == _ABI64 -- mips64-linux-gnuabi64 --# else --# error unknown platform triplet --# endif --# elif defined(__or1k__) -- or1k-linux-gnu --# elif defined(__powerpc__) && defined(__SPE__) -- powerpc-linux-gnuspe --# elif defined(__powerpc64__) --# if defined(__LITTLE_ENDIAN__) -- powerpc64le-linux-gnu --# else -- powerpc64-linux-gnu --# endif --# elif defined(__powerpc__) -- powerpc-linux-gnu --# elif defined(__s390x__) -- s390x-linux-gnu --# elif defined(__s390__) -- s390-linux-gnu --# elif defined(__sh__) && defined(__LITTLE_ENDIAN__) -- sh4-linux-gnu --# elif defined(__sparc__) && defined(__arch64__) -- sparc64-linux-gnu --# elif defined(__sparc__) -- sparc-linux-gnu --# elif defined(__riscv) --# if __riscv_xlen == 32 -- riscv32-linux-gnu --# elif __riscv_xlen == 64 -- riscv64-linux-gnu --# else --# error unknown platform triplet --# endif --# else --# error unknown platform triplet --# endif --#elif defined(__FreeBSD_kernel__) --# if defined(__LP64__) -- x86_64-kfreebsd-gnu --# elif defined(__i386__) -- i386-kfreebsd-gnu --# else --# error unknown platform triplet --# endif --#elif defined(__gnu_hurd__) -- i386-gnu --#elif defined(__APPLE__) -- darwin --#elif defined(__VXWORKS__) -- vxworks --#else --# error unknown platform triplet --#endif -- --EOF -- --if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then -- PLATFORM_TRIPLET=`grep -v '^#' conftest.out | grep -v '^ *$' | tr -d ' '` -- AC_MSG_RESULT([$PLATFORM_TRIPLET]) --else -- AC_MSG_RESULT([none]) --fi --rm -f conftest.c conftest.out -+AC_CANONICAL_TARGET -+## Not using $target to filter out vendor -+## Need to handle macos, vxworks and hurd special (?) :-/ -+case ${target_os} in -+ darwin*) -+ PLATFORM_TRIPLET=darwin -+ ;; -+ hurd*) -+ PLATFORM_TRIPLET=i386-gnu -+ ;; -+ vxworks*) -+ PLATFORM_TRIPLET=vxworks -+ ;; -+ *) -+ if test "${target_cpu}" != "i686"; then -+ PLATFORM_TRIPLET=${target_cpu}-${target_os} -+ else -+ PLATFORM_TRIPLET=i386-${target_os} -+ fi -+ ;; -+esac - - if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then - if test x$PLATFORM_TRIPLET != x$MULTIARCH; then --- -2.24.1 - 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 @@ -From e65bfe22c858872b08366aff49119d4145a77f40 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 31 Jan 2019 16:46:30 +0100 -Subject: [PATCH] distutils/sysconfig: append - STAGING_LIBDIR/python-sysconfigdata to sys.path - -So that target configuration can be used when running native python - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - Lib/distutils/sysconfig.py | 2 ++ - Lib/sysconfig.py | 2 ++ - 2 files changed, 4 insertions(+) - -diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py -index b51629e..2df348c 100644 ---- a/Lib/distutils/sysconfig.py -+++ b/Lib/distutils/sysconfig.py -@@ -438,6 +438,8 @@ def _init_posix(): - platform=sys.platform, - multiarch=getattr(sys.implementation, '_multiarch', ''), - )) -+ if 'STAGING_LIBDIR' in os.environ: -+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata') - _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) - build_time_vars = _temp.build_time_vars - global _config_vars -diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py -index b2d790b..405273c 100644 ---- a/Lib/sysconfig.py -+++ b/Lib/sysconfig.py -@@ -419,6 +419,8 @@ def _init_posix(vars): - """Initialize the module as appropriate for POSIX systems.""" - # _sysconfigdata is generated at build time, see _generate_posix_vars() - name = _get_sysconfigdata_name() -+ if 'STAGING_LIBDIR' in os.environ: -+ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata') - _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) - build_time_vars = _temp.build_time_vars - 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 @@ +From 439aa02f42d6e6715c172076261757fcb89a936a Mon Sep 17 00:00:00 2001 +From: "Miss Islington (bot)" + <31488909+miss-islington@users.noreply.github.com> +Date: Tue, 23 Jan 2024 23:02:02 +0100 +Subject: [PATCH] gh-114492: Initialize struct termios before calling + tcgetattr() (GH-114495) (GH-114502) + +On Alpine Linux it could leave some field non-initialized. +(cherry picked from commit d22c066b802592932f9eb18434782299e80ca42e) + +Upstream-Status: Backport [https://github.com/python/cpython/commit/386c72d9928c51aa2c855ce592bd8022da3b407f] +Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + .../next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst | 2 ++ + 1 file changed, 2 insertions(+) + create mode 100644 Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst + +diff --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 +new file mode 100644 +index 0000000..8df8299 +--- /dev/null ++++ b/Misc/NEWS.d/next/Library/2024-01-23-21-20-40.gh-issue-114492.vKxl5o.rst +@@ -0,0 +1,2 @@ ++Make the result of :func:`termios.tcgetattr` reproducible on Alpine Linux. ++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 @@ -From 5f9eea2c4f8716830f6c8855a3e10872119fae32 Mon Sep 17 00:00:00 2001 +From ababc7b1db8c406910766e11cdd04cbef7a706c9 Mon Sep 17 00:00:00 2001 From: Changqing Li <changqing.li@windriver.com> Date: Mon, 22 Oct 2018 15:19:51 +0800 Subject: [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' Here use cc_basename to replace CC for checking compiler to avoid such kind of issue. -Upstream-Status: Pending +Upstream-Status: Submitted [https://github.com/python/cpython/pull/96399] Signed-off-by: Li Zhou <li.zhou@windriver.com> patch originally from Li Zhou, I just rework it to new version Signed-off-by: Changqing Li <changqing.li@windriver.com> - --- configure.ac | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac -index d60f052..e491e24 100644 +index 384718d..5a1d58b 100644 --- a/configure.ac +++ b/configure.ac -@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h) +@@ -137,6 +137,7 @@ AC_CONFIG_HEADERS([pyconfig.h]) AC_CANONICAL_HOST - AC_SUBST(build) - AC_SUBST(host) + AC_SUBST([build]) + AC_SUBST([host]) +LT_INIT - # pybuilddir.txt will be created by --generate-posix-vars in the Makefile - rm -f pybuilddir.txt -@@ -689,7 +690,7 @@ AC_MSG_RESULT($with_cxx_main) + AS_VAR_IF([cross_compiling], [maybe], + [AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])] +@@ -896,7 +897,7 @@ AC_SUBST([CXX]) preset_cxx="$CXX" if test -z "$CXX" then - case "$CC" in + case "$cc_basename" in - gcc) AC_PATH_TOOL(CXX, [g++], [g++], [notfound]) ;; - cc) AC_PATH_TOOL(CXX, [c++], [c++], [notfound]) ;; - clang|*/clang) AC_PATH_TOOL(CXX, [clang++], [clang++], [notfound]) ;; -@@ -975,7 +976,7 @@ rmdir CaseSensitiveTestDir + gcc) AC_PATH_TOOL([CXX], [g++], [g++], [notfound]) ;; + cc) AC_PATH_TOOL([CXX], [c++], [c++], [notfound]) ;; + clang|*/clang) AC_PATH_TOOL([CXX], [clang++], [clang++], [notfound]) ;; +@@ -1328,7 +1329,7 @@ rmdir CaseSensitiveTestDir case $ac_sys_system in hp*|HP*) @@ -56,16 +55,16 @@ index d60f052..e491e24 100644 cc|*/cc) CC="$CC -Ae";; esac;; esac -@@ -1366,7 +1367,7 @@ else - fi], - [AC_MSG_RESULT(no)]) +@@ -1854,7 +1855,7 @@ esac + ], + [AC_MSG_RESULT([no])]) if test "$Py_LTO" = 'true' ; then - case $CC in + case $cc_basename in *clang*) - AC_SUBST(LLVM_AR) - AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path}) -@@ -1456,7 +1457,7 @@ then + LDFLAGS_NOLTO="-fno-lto" + dnl Clang linker requires -flto in order to link objects with LTO information. +@@ -1983,7 +1984,7 @@ then fi fi LLVM_PROF_ERR=no @@ -74,7 +73,7 @@ index d60f052..e491e24 100644 *clang*) # Any changes made here should be reflected in the GCC+Darwin case below PGO_PROF_GEN_FLAG="-fprofile-instr-generate" -@@ -1517,7 +1518,7 @@ esac +@@ -2147,7 +2148,7 @@ AC_MSG_RESULT([$BOLT_APPLY_FLAGS]) # compiler and platform. BASECFLAGS tweaks need to be made even if the # user set OPT. @@ -83,25 +82,25 @@ index d60f052..e491e24 100644 *clang*) cc_is_clang=1 ;; -@@ -1653,7 +1654,7 @@ yes) +@@ -2419,7 +2420,7 @@ yes) # ICC doesn't recognize the option, but only emits a warning ## XXX does it emit an unused result warning and can it be disabled? -- case "$CC" in -+ case "$cc_basename" in - *icc*) - ac_cv_disable_unused_result_warning=no - ;; -@@ -1993,7 +1994,7 @@ yes) +- AS_CASE([$CC], ++ AS_CASE([$cc_basename], + [*icc*], [ac_cv_disable_unused_result_warning=no] + [PY_CHECK_CC_WARNING([disable], [unused-result])]) + AS_VAR_IF([ac_cv_disable_unused_result_warning], [yes], +@@ -2665,7 +2666,7 @@ yes) ;; esac -case "$CC" in +case "$cc_basename" in - *icc*) - # ICC needs -fp-model strict or floats behave badly - CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" -@@ -2765,7 +2766,7 @@ then + *mpicc*) + CFLAGS_NODIST="$CFLAGS_NODIST" + ;; +@@ -3482,7 +3483,7 @@ then then LINKFORSHARED="-Wl,--export-dynamic" fi;; @@ -110,12 +109,12 @@ index d60f052..e491e24 100644 *gcc*) if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null then -@@ -5507,7 +5508,7 @@ if test "$have_gcc_asm_for_x87" = yes; then +@@ -6803,7 +6804,7 @@ if test "$ac_cv_gcc_asm_for_x87" = yes; then # Some versions of gcc miscompile inline asm: # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46491 # http://gcc.gnu.org/ml/gcc/2010-11/msg00366.html - case $CC in + case $cc_basename in *gcc*) - AC_MSG_CHECKING(for gcc ipa-pure-const bug) + AC_MSG_CHECKING([for gcc ipa-pure-const bug]) 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 @@ -From 7019ba184b828ed7253750cf409fc5760ef90a54 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 9 Jan 2020 17:44:05 +0100 -Subject: [PATCH] setup.py: pass missing libraries to Extension for - multiprocessing module - -In the following commit: -... -commit e711cafab13efc9c1fe6c5cd75826401445eb585 -Author: Benjamin Peterson <benjamin@python.org> -Date: Wed Jun 11 16:44:04 2008 +0000 - - Merged revisions 64104,64117 via svnmerge from - svn+ssh://pythondev@svn.python.org/python/trunk -... -(see diff in setup.py) -It assigned libraries for multiprocessing module according -the host_platform, but not pass it to Extension. - -In glibc, the following commit caused two definition of -sem_getvalue are different. -https://sourceware.org/git/?p=glibc.git;a=commit;h=042e1521c794a945edc43b5bfa7e69ad70420524 -(see diff in nptl/sem_getvalue.c for detail) -`__new_sem_getvalue' is the latest sem_getvalue@@GLIBC_2.1 -and `__old_sem_getvalue' is to compat the old version -sem_getvalue@GLIBC_2.0. - -To build python for embedded Linux systems: -http://www.yoctoproject.org/docs/2.3.1/yocto-project-qs/yocto-project-qs.html -If not explicitly link to library pthread (-lpthread), it will -load glibc's sem_getvalue randomly at runtime. - -Such as build python on linux x86_64 host and run the python -on linux x86_32 target. If not link library pthread, it caused -multiprocessing bounded semaphore could not work correctly. -... ->>> import multiprocessing ->>> pool_sema = multiprocessing.BoundedSemaphore(value=1) ->>> pool_sema.acquire() -True ->>> pool_sema.release() -Traceback (most recent call last): - File "<stdin>", line 1, in <module> -ValueError: semaphore or lock released too many times -... - -And the semaphore issue also caused multiprocessing.Queue().put() hung. - -Upstream-Status: Pending - -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - setup.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/setup.py b/setup.py -index ec3f2a4..b0f1541 100644 ---- a/setup.py -+++ b/setup.py -@@ -1671,7 +1671,7 @@ class PyBuildExt(build_ext): - libraries=libs, - include_dirs=["Modules/_multiprocessing"])) - -- self.add(Extension('_multiprocessing', multiprocessing_srcs, -+ self.add(Extension('_multiprocessing', multiprocessing_srcs, libraries=['pthread'], - include_dirs=["Modules/_multiprocessing"])) - - 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 @@ +From 217cea231462e7703e8c9ea39c0a6833f799a420 Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <tgamblin@baylibre.com> +Date: Fri, 15 Sep 2023 08:48:33 -0400 +Subject: [PATCH] skip no_stdout_fileno test due to load variability + +Skip test_input_no_stdout_fileno so that it doesn't fail on systems +under heavy load. + +Upstream-Status: Inappropriate [OE-Specific] + +[YOCTO #15210] + +Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> +--- + Lib/test/test_builtin.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py +index 4d03c46..b329b7a 100644 +--- a/Lib/test/test_builtin.py ++++ b/Lib/test/test_builtin.py +@@ -2326,6 +2326,7 @@ class PtyTests(unittest.TestCase): + # Check stdin/stdout error handler is used when invoking PyOS_Readline() + self.check_input_tty("prompté", b"quux\xe9", "ascii") + ++ @unittest.skip("Test may fail under heavy load") + def test_input_no_stdout_fileno(self): + # Issue #24402: If stdin is the original terminal but stdout.fileno() + # 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 @@ +From a5d429a0e1a4809c1ded7be7e45dcabeb82c53d8 Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Sun, 12 Sep 2021 21:44:36 +0200 +Subject: [PATCH] sysconfig.py: use platlibdir also for purelib + +This is needed in multilib configurations where hardcoding 'lib' +is not correct. + +Upstream-Status: Inappropriate [oe-core specific] +Signed-off-by: Alexander Kanavin <alex@linutronix.de> + +--- + Lib/sysconfig.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py +index 122d441..79c0510 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -28,7 +28,7 @@ _INSTALL_SCHEMES = { + 'posix_prefix': { + 'stdlib': '{installed_base}/{platlibdir}/python{py_version_short}', + 'platstdlib': '{platbase}/{platlibdir}/python{py_version_short}', +- 'purelib': '{base}/lib/python{py_version_short}/site-packages', ++ 'purelib': '{base}/{platlibdir}/python{py_version_short}/site-packages', + 'platlib': '{platbase}/{platlibdir}/python{py_version_short}/site-packages', + 'include': + '{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 @@ +From b64c131a576a4b4f821514e711ab91b1394fb4ff Mon Sep 17 00:00:00 2001 +From: Tim Orling <timothy.t.orling@intel.com> +Date: Fri, 18 Jun 2021 11:56:50 -0700 +Subject: [PATCH] test_ctypes.test_find: skip without tools-sdk + +These tests need full packagegroup-core-buildessential, the +easiest way to dynamically check for that is looking for +'tools-sdk' in IMAGE_FEATURES. + +Upstream-Status: Inappropriate [oe-specific] + +Signed-off-by: Tim Orling <timothy.t.orling@intel.com> + +--- + Lib/test/test_ctypes/test_find.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/test/test_ctypes/test_find.py b/Lib/test/test_ctypes/test_find.py +index 1ff9d01..59def26 100644 +--- a/Lib/test/test_ctypes/test_find.py ++++ b/Lib/test/test_ctypes/test_find.py +@@ -113,10 +113,12 @@ class FindLibraryLinux(unittest.TestCase): + # LD_LIBRARY_PATH) + self.assertEqual(find_library(libname), 'lib%s.so' % libname) + ++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") + def test_find_library_with_gcc(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None): + self.assertNotEqual(find_library('c'), None) + ++ @unittest.skip("Needs IMAGE_FEATURE += \"tools-sdk\"") + def test_find_library_with_ld(self): + with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \ + 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 @@ -From b94995e0c694ec9561efec0d1a59b323340e6105 Mon Sep 17 00:00:00 2001 +From ef5728f0af14da5c9f80b0f038fe5bf6d44cb0e9 Mon Sep 17 00:00:00 2001 From: Mingli Yu <mingli.yu@windriver.com> Date: Mon, 5 Aug 2019 15:57:39 +0800 Subject: [PATCH] test_locale.py: correct the test output format @@ -23,24 +23,24 @@ Before this patch: Upstream-Status: Submitted [https://github.com/python/cpython/pull/15132] +Rebased for 3.9.4, still not accepted upstream Signed-off-by: Alejandro Hernandez <alejandro@enedino.org> + Signed-off-by: Mingli Yu <mingli.yu@windriver.com> + --- Lib/test/test_locale.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py -index e2c2178..558d63c 100644 +index b0d7998..cb12153 100644 --- a/Lib/test/test_locale.py +++ b/Lib/test/test_locale.py -@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): +@@ -557,7 +557,7 @@ class TestMiscellaneous(unittest.TestCase): self.skipTest('test needs Turkish locale') loc = locale.getlocale(locale.LC_CTYPE) if verbose: - print('testing with %a' % (loc,), end=' ', flush=True) + print('testing with %a...' % (loc,), end=' ', flush=True) - locale.setlocale(locale.LC_CTYPE, loc) - self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE)) - --- -2.7.4 - + try: + locale.setlocale(locale.LC_CTYPE, loc) + except locale.Error as exc: 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 @@ +From dc69a1afdb3ba619705ff71e14f19ed3142e422f Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <tgamblin@baylibre.com> +Date: Fri, 6 Oct 2023 10:59:44 -0400 +Subject: [PATCH] test_storlines: skip due to load variability + +This is yet another test that intermittently fails on the Yocto AB when +a worker is under heavy load, so skip it during testing. + +Upstream-Status: Inappropriate [OE-Specific] + +[YOCTO #14933] + +Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com> + +--- + Lib/test/test_ftplib.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py +index 2f191ea..dc29346 100644 +--- a/Lib/test/test_ftplib.py ++++ b/Lib/test/test_ftplib.py +@@ -626,6 +626,7 @@ class TestFTPClass(TestCase): + self.client.storbinary('stor', f, rest=r) + self.assertEqual(self.server.handler_instance.rest, str(r)) + ++ @unittest.skip('timing related test, dependent on load') + def test_storlines(self): + data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding) + 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 5823273af3..0000000000 --- a/meta/recipes-devtools/python/python3/0017-setup.py-do-not-report-missing-dependencies-for-disa.patch +++ /dev/null @@ -1,38 +0,0 @@ -From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Mon, 7 Oct 2019 13:22:14 +0200 -Subject: [PATCH] setup.py: do not report missing dependencies for disabled - modules - -Reporting those missing dependencies is misleading as the modules would not -have been built anyway. This particularly matters in oe-core's automated -build completeness checker which relies on the report. - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> -Signed-off-by: Alejandro Hernandez Samaniego <alejandro@enedino.org> - ---- - setup.py | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/setup.py b/setup.py -index 7691258..ec3f2a4 100644 ---- a/setup.py -+++ b/setup.py -@@ -408,6 +408,14 @@ class PyBuildExt(build_ext): - print("%-*s %-*s %-*s" % (longest, e, longest, f, - longest, g)) - -+ # There is no need to report missing module dependencies, -+ # if the modules have been disabled in the first place. -+ # cannot use mods_disabled here, because remove_configured_extensions adds -+ # only disabled extensions into it (doesn't cover _dbm, _gdbm, readline -+ # we support disabling through PACKAGECONFIG) -+ sysconf_dis = sysconfig.get_config_var('MODDISABLED_NAMES').split() -+ self.missing = list(set(self.missing) - set(sysconf_dis)) -+ - if self.missing: - print() - 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 @@ -From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Sun, 16 Feb 2020 17:50:25 +0100 -Subject: [PATCH] configure.ac, setup.py: do not add a curses include path from - the host +From d0205c60d08f51d84bd8ddc07a57e8c71710fdad Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Fri, 17 Nov 2023 14:16:40 +0100 +Subject: [PATCH] configure.ac: do not add a curses include path from the host This leads to host contamination, and particularly can cause curses modules to fail at runtime if the host curses is configured @@ -13,16 +12,15 @@ Upstream-Status: Inappropriate [oe-core specific] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> --- configure.ac | 6 ------ - setup.py | 2 -- - 2 files changed, 8 deletions(-) + 1 file changed, 6 deletions(-) diff --git a/configure.ac b/configure.ac -index 915f475..c911011 100644 +index c49cd4f..affdedf 100644 --- a/configure.ac +++ b/configure.ac -@@ -4828,12 +4828,6 @@ then - [Define if you have struct stat.st_mtimensec]) - fi +@@ -6508,12 +6508,6 @@ AS_VAR_IF([have_panel], [no], [ + AC_MSG_RESULT([$have_panel (CFLAGS: $PANEL_CFLAGS, LIBS: $PANEL_LIBS)]) + ]) -# first curses header check -ac_save_cppflags="$CPPFLAGS" @@ -30,19 +28,6 @@ index 915f475..c911011 100644 - CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" -fi - - AC_CHECK_HEADERS(curses.h ncurses.h) - # On Solaris, term.h requires curses.h -diff --git a/setup.py b/setup.py -index b0f1541..7208cd0 100644 ---- a/setup.py -+++ b/setup.py -@@ -973,8 +973,6 @@ class PyBuildExt(build_ext): - panel_library = 'panel' - if curses_library == 'ncursesw': - curses_defines.append(('HAVE_NCURSESW', '1')) -- if not CROSS_COMPILING: -- curses_includes.append('/usr/include/ncursesw') - # Bug 1464056: If _curses.so links with ncursesw, - # _curses_panel.so must link with panelw. - panel_library = 'panelw' + AC_CHECK_HEADERS([term.h], [], [], [ + #ifdef HAVE_CURSES_H 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 @@ -From c52fa7948ef109db1132fdc1aee0b68f8d767b4e Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Tue, 14 May 2013 15:00:26 -0700 -Subject: [PATCH 1/2] python3: Add target and native recipes - -Upstream-Status: Inappropriate [embedded specific] - -02/2015 Rebased for Python 3.4.2 - -The proper prefix is inside our staging area. -Signed-Off: Michael 'Mickey' Lauer <mickey@vanille-media.de> -Signed-off-by: Phil Blundell <philb@gnu.org> -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> ---- - Lib/distutils/sysconfig.py | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py -index 4774e12..ccf7d58 100644 ---- a/Lib/distutils/sysconfig.py -+++ b/Lib/distutils/sysconfig.py -@@ -95,7 +95,9 @@ def get_python_inc(plat_specific=0, prefix=None): - If 'prefix' is supplied, use it instead of sys.base_prefix or - sys.base_exec_prefix -- i.e., ignore 'plat_specific'. - """ -- if prefix is None: -+ if prefix is None and os.environ.get('STAGING_INCDIR', ""): -+ prefix = os.environ['STAGING_INCDIR'].rstrip('include') -+ elif prefix is None: - prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX - if os.name == "posix": - if python_build: -@@ -138,7 +140,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - If 'prefix' is supplied, use it instead of sys.base_prefix or - sys.base_exec_prefix -- i.e., ignore 'plat_specific'. - """ -- if prefix is None: -+ if os.environ.get('STAGING_LIBDIR', ""): -+ lib_basename = os.environ['STAGING_LIBDIR'].split('/')[-1] -+ else: -+ lib_basename = "lib" -+ if prefix is None and os.environ.get('STAGING_LIBDIR', ""): -+ prefix = os.environ['STAGING_LIBDIR'].rstrip(lib_basename) -+ elif prefix is None: - if standard_lib: - prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX - else: -@@ -152,7 +160,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - else: - # Pure Python - libdir = "lib" -- libpython = os.path.join(prefix, libdir, -+ libpython = os.path.join(prefix, lib_basename, - "python" + get_python_version()) - if standard_lib: - return libpython --- -2.24.0 - 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 @@ -From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001 -From: Andrei Gherzan <andrei@gherzan.ro> -Date: Mon, 28 Jan 2019 15:57:54 +0000 -Subject: [PATCH] _tkinter module needs tk module along with tcl. tk is not yet - integrated in yocto so we skip the check for this module. Avoid a warning by - not adding this module to missing variable. - -Upstream-Status: Inappropriate [distribution] - -Also simply disable the tk module since its not in DEPENDS. -Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> - ---- - setup.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/setup.py b/setup.py -index ab18ff0..7691258 100644 ---- a/setup.py -+++ b/setup.py -@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext): - self.detect_decimal() - self.detect_ctypes() - self.detect_multiprocessing() -- if not self.detect_tkinter(): -- self.missing.append('_tkinter') -+# if not self.detect_tkinter(): -+# self.missing.append('_tkinter') - self.detect_uuid() - - ## # 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 @@ -From 62336285cba38017b35cb761c03f0c7e80a671a3 Mon Sep 17 00:00:00 2001 +From a56778372fe8dc7c42f5ffd911d89498c22dd064 Mon Sep 17 00:00:00 2001 From: Mark Hatle <mark.hatle@windriver.com> Date: Wed, 21 Sep 2011 20:55:33 -0500 Subject: [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> 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Lib/cgi.py b/Lib/cgi.py -index 8cf6687..094c7b4 100755 +index 8787567..ebe8652 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -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 @@ # Tha method to handle cached files does not work when a module includes a folder which # itself contains the pycache folder, gladly this is almost never the case. # -# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29 at gmail dot com> +# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> import sys @@ -45,6 +45,11 @@ import json import os import collections +if '-d' in sys.argv: + debugFlag = '-d' +else: + debugFlag = '' + # Get python version from ${PYTHON_MAJMIN} pyversion = str(sys.argv[1]) @@ -84,6 +89,12 @@ def prepend_comments(comments, json_manifest): manifest.seek(0, 0) manifest.write(comments + json_contents) +def print_indent(msg, offset): + for l in msg.splitlines(): + msg = ' ' * offset + l + print(msg) + + # Read existing JSON manifest with open('python3-manifest.json') as manifest: # 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: # Not exactly the same so it should not be a function # -print ('Getting dependencies for package: core') +print_indent('Getting dependencies for package: core', 0) # This special call gets the core dependencies and @@ -109,7 +120,7 @@ print ('Getting dependencies for package: core') # on the new core package, they will still find them # even when checking the old_manifest -output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package']).decode('utf8') +output = subprocess.check_output([sys.executable, 'get_module_deps3.py', 'python-core-package', '%s' % debugFlag]).decode('utf8') for coredep in output.split(): coredep = coredep.replace(pyversion,'${PYTHON_MAJMIN}') if isCached(coredep): @@ -149,17 +160,16 @@ for filedep in old_manifest['core']['files']: # Get actual module name , shouldnt be affected by libdir/bindir, etc. pymodule = os.path.splitext(os.path.basename(os.path.normpath(filedep)))[0] - # We now know that were dealing with a python module, so we can import it # and check what its dependencies are. # We launch a separate task for each module for deterministic behavior. # Each module will only import what is necessary for it to work in specific. # The output of each task will contain each module's dependencies - print ('Getting dependencies for module: %s' % pymodule) - output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') - print ('The following dependencies were found for module %s:\n' % pymodule) - print (output) + print_indent('Getting dependencies for module: %s' % pymodule, 2) + output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') + print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) + print_indent(output, 6) for pymodule_dep in output.split(): @@ -178,12 +188,13 @@ for filedep in old_manifest['core']['files']: # all others will use this a base. +print('\n\nChecking for directories...\n') # To improve the script speed, we check which packages contain directories # since we will be looping through (only) those later. for pypkg in old_manifest: for filedep in old_manifest[pypkg]['files']: if isFolder(filedep): - print ('%s is a folder' % filedep) + print_indent('%s is a directory' % filedep, 2) if pypkg not in hasfolders: hasfolders.append(pypkg) if filedep not in allfolders: @@ -221,14 +232,14 @@ for pypkg in old_manifest: print('\n') print('--------------------------') - print ('Handling package %s' % pypkg) + print('Handling package %s' % pypkg) print('--------------------------') # Handle special cases, we assume that when they were manually added # to the manifest we knew what we were doing. special_packages = ['misc', 'modules', 'dev', 'tests'] if pypkg in special_packages or 'staticdev' in pypkg: - print('Passing %s package directly' % pypkg) + print_indent('Passing %s package directly' % pypkg, 2) new_manifest[pypkg] = old_manifest[pypkg] continue @@ -259,7 +270,7 @@ for pypkg in old_manifest: # Get actual module name , shouldnt be affected by libdir/bindir, etc. # We need to check if the imported module comes from another (e.g. sqlite3.dump) - path,pymodule = os.path.split(filedep) + path, pymodule = os.path.split(filedep) path = os.path.basename(path) pymodule = os.path.splitext(os.path.basename(pymodule))[0] @@ -279,10 +290,10 @@ for pypkg in old_manifest: # Each module will only import what is necessary for it to work in specific. # The output of each task will contain each module's dependencies - print ('\nGetting dependencies for module: %s' % pymodule) - output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule]).decode('utf8') - print ('The following dependencies were found for module %s:\n' % pymodule) - print (output) + print_indent('\nGetting dependencies for module: %s' % pymodule, 2) + output = subprocess.check_output([sys.executable, 'get_module_deps3.py', '%s' % pymodule, '%s' % debugFlag]).decode('utf8') + print_indent('The following dependencies were found for module %s:\n' % pymodule, 4) + print_indent(output, 6) reportFILES = [] reportRDEPS = [] @@ -325,7 +336,7 @@ for pypkg in old_manifest: # print('Checking folder %s on package %s' % (pymodule_dep,pypkg_with_folder)) for folder_dep in old_manifest[pypkg_with_folder]['files'] or folder_dep in old_manifest[pypkg_with_folder]['cached']: if folder_dep == folder: - print ('%s folder found in %s' % (folder, pypkg_with_folder)) + print ('%s directory found in %s' % (folder, pypkg_with_folder)) folderFound = True if pypkg_with_folder not in new_manifest[pypkg]['rdepends'] and pypkg_with_folder != pypkg: new_manifest[pypkg]['rdepends'].append(pypkg_with_folder) @@ -424,7 +435,7 @@ prepend_comments(comments,'python3-manifest.json.new') if (repeated): error_msg = '\n\nERROR:\n' - error_msg += 'The following files are repeated (contained in more than one package),\n' + error_msg += 'The following files were found in more than one package),\n' error_msg += 'this is likely to happen when new files are introduced after an upgrade,\n' error_msg += 'please check which package should get it,\n modify the manifest accordingly and re-run the create_manifest task:\n' 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 @@ -configure.ac: add CROSSPYTHONPATH into PYTHONPATH for PYTHON_FOR_BUILD +From 5b66463c10fec1440e977d5a21a0167862d6d79c Mon Sep 17 00:00:00 2001 +From: Ricardo Ribalda <ricardo@ribalda.com> +Date: Tue, 18 Nov 2014 03:35:33 -0500 +Subject: [PATCH] configure.ac: add CROSSPYTHONPATH into PYTHONPATH for + PYTHON_FOR_BUILD When building x86->x86 the system will try to execute .so and related items from the default PYTHONPATH. This will fail if the target CPU contains @@ -10,16 +14,21 @@ Upstream-Status: Inappropriate [OE-Core integration specific] Credits-to: Mark Hatle <mark.hatle@windriver.com> Credits-to: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Ricardo Ribalda <ricardo@ribalda.com> + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + diff --git a/configure.ac b/configure.ac -index 4ab19a6..7036a53 100644 +index cb9e198..d81c19a 100644 --- a/configure.ac +++ b/configure.ac -@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then - AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) - fi - AC_MSG_RESULT($interp) -- 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 -+ 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 - fi - elif test "$cross_compiling" = maybe; then - AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH]) +@@ -165,7 +165,7 @@ AC_ARG_WITH([build-python], + dnl Build Python interpreter is used for regeneration and freezing. + ac_cv_prog_PYTHON_FOR_REGEN=$with_build_python + PYTHON_FOR_FREEZE="$with_build_python" +- 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 ++ 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 + AC_MSG_RESULT([$with_build_python]) + ], [ + 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 @@ +From 039d5e652796b55f1132afa568c7432b6ed89afd Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Fri, 27 May 2022 17:05:44 +0100 +Subject: [PATCH] python3: Ensure stale empty python module directories don't + +There are two issues here. Firstly, the modules are accessed in on disk order. This +means behaviour seen on one system might not reproduce on another and is a real headache. + +Secondly, empty directories left behind by previous modules might be looked at. This +has caused a long string of different issues for us. + +As a result, patch this to a behaviour which works for us. + +Upstream-Status: Pending [need to talk to upstream to see if they'll take one or both fixes] +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +--- + Lib/importlib/metadata/__init__.py | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py +index 82e0ce1..969cac4 100644 +--- a/Lib/importlib/metadata/__init__.py ++++ b/Lib/importlib/metadata/__init__.py +@@ -710,7 +710,14 @@ class Lookup: + self.infos = FreezableDefaultDict(list) + self.eggs = FreezableDefaultDict(list) + +- for child in path.children(): ++ for child in sorted(path.children()): ++ childpath = pathlib.Path(path.root, child) ++ try: ++ if childpath.is_dir() and not any(childpath.iterdir()): ++ # Empty directories aren't interesting ++ continue ++ except PermissionError: ++ continue + low = child.lower() + if low.endswith((".dist-info", ".egg-info")): + # 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 @@ # them out, the output of this execution will have all dependencies # for a specific module, which will be parsed an dealt on create_manifest.py # -# Author: Alejandro Enedino Hernandez Samaniego "aehs29" <aehs29@gmail.com> +# Author: Alejandro Enedino Hernandez Samaniego <alejandro at enedino dot org> -# We can get a log per module, for all the dependencies that were found, but its messy. -debug=False import sys import os +# We can get a log per module, for all the dependencies that were found, but its messy. +if '-d' in sys.argv: + debug = True +else: + debug = False + # We can get a list of the modules which are currently required to run python # so we run python-core and get its modules, we then import what we need # and check what modules are currently running, if we substract them from the @@ -19,16 +23,16 @@ import os # We use importlib to achieve this, so we also need to know what modules importlib needs import importlib -core_deps=set(sys.modules) +core_deps = set(sys.modules) def fix_path(dep_path): import os # We DONT want the path on our HOST system - pivot='recipe-sysroot-native' - dep_path=dep_path[dep_path.find(pivot)+len(pivot):] + pivot = 'recipe-sysroot-native' + dep_path = dep_path[dep_path.find(pivot)+len(pivot):] if '/usr/bin' in dep_path: - dep_path = dep_path.replace('/usr/bin''${bindir}') + dep_path = dep_path.replace('/usr/bin','${bindir}') # Handle multilib, is there a better way? if '/usr/lib32' in dep_path: @@ -46,13 +50,13 @@ def fix_path(dep_path): # Module to import was passed as an argument current_module = str(sys.argv[1]).rstrip() -if(debug==True): - log = open('log_%s' % current_module,'w') +if debug == True: + log = open('temp/log_%s' % current_module.strip('.*'),'w') log.write('Module %s generated the following dependencies:\n' % current_module) try: m = importlib.import_module(current_module) # handle python packages which may not include all modules in the __init__ - if os.path.basename(m.__file__) == "__init__.py": + if hasattr(m, '__file__') and os.path.basename(m.__file__) == "__init__.py": modulepath = os.path.dirname(m.__file__) for i in os.listdir(modulepath): if i.startswith("_") or not(i.endswith(".py")): @@ -63,13 +67,13 @@ try: except: pass # ignore all import or other exceptions raised during import except ImportError as e: - if (debug==True): - log.write('Module was not found') + if debug == True: + log.write('Module was not found\n') pass # Get current module dependencies, dif will contain a list of specific deps for this module -module_deps=set(sys.modules) +module_deps = set(sys.modules) # We handle the core package (1st pass on create_manifest.py) as a special case if current_module == 'python-core-package': @@ -81,14 +85,18 @@ else: # Check where each dependency came from for item in dif: - dep_path='' + # Main module returns script filename, __main matches mp_main__ as well + if 'main__' in item: + continue + + dep_path = '' try: - if (debug==True): - log.write('Calling: sys.modules[' + '%s' % item + '].__file__\n') + if debug == True: + log.write('\nCalling: sys.modules[' + '%s' % item + '].__file__\n') dep_path = sys.modules['%s' % item].__file__ except AttributeError as e: # Deals with thread (builtin module) not having __file__ attribute - if debug==True: + if debug == True: log.write(item + ' ') log.write(str(e)) log.write('\n') @@ -96,11 +104,16 @@ for item in dif: except NameError as e: # Deals with NameError: name 'dep_path' is not defined # because module is not found (wasn't compiled?), e.g. bddsm - if (debug==True): + if debug == True: log.write(item+' ') log.write(str(e)) pass + if dep_path == '': + continue + if debug == True: + log.write('Dependency path found:\n%s\n' % dep_path) + # Site-customize is a special case since we (OpenEmbedded) put it there manually if 'sitecustomize' in dep_path: dep_path = '${libdir}/python${PYTHON_MAJMIN}/sitecustomize.py' @@ -111,52 +124,51 @@ for item in dif: dep_path = fix_path(dep_path) import sysconfig - soabi=sysconfig.get_config_var('SOABI') + soabi = sysconfig.get_config_var('SOABI') # Check if its a shared library and deconstruct it if soabi in dep_path: - if (debug==True): - log.write('Shared library found in %s' % dep_path) + if debug == True: + log.write('Shared library found in %s\n' % dep_path) dep_path = dep_path.replace(soabi,'*') print (dep_path) continue if "_sysconfigdata" in dep_path: dep_path = dep_path.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") - if (debug==True): + if debug == True: log.write(dep_path+'\n') # Prints out result, which is what will be used by create_manifest print (dep_path) - import imp - cpython_tag = imp.get_tag() - cached='' + cpython_tag = sys.implementation.cache_tag + cached = '' # Theres no naive way to find *.pyc files on python3 try: - if (debug==True): - log.write('Calling: sys.modules[' + '%s' % item + '].__cached__\n') + if debug == True: + log.write('\nCalling: sys.modules[' + '%s' % item + '].__cached__\n') cached = sys.modules['%s' % item].__cached__ except AttributeError as e: # Deals with thread (builtin module) not having __cached__ attribute - if debug==True: + if debug == True: log.write(item + ' ') log.write(str(e)) log.write('\n') pass except NameError as e: # Deals with NameError: name 'cached' is not defined - if (debug==True): + if debug == True: log.write(item+' ') log.write(str(e)) pass if cached is not None: - if (debug==True): - log.write(cached) + if debug == True: + log.write(cached + '\n') cached = fix_path(cached) cached = cached.replace(cpython_tag,'*') if "_sysconfigdata" in cached: cached = cached.replace(sysconfig._get_sysconfigdata_name(), "_sysconfigdata*") print (cached) -if debug==True: +if debug == True: 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 @@ +From 9f827c29adbe656af3c8fc963fdd8f47aec0c442 Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Tue, 13 Jul 2021 23:19:29 +0100 +Subject: [PATCH] python3: Fix make race + +libainstall installs python-config.py but the .pyc cache files are generated +by the libinstall target. This means some builds may not generate the pyc files +for python-config.py depending on the order things happen in. This means builds +are not always reproducible. + +Add a dependency to avoid the race. + +Upstream-Status: Pending +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> +--- + Makefile.pre.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 381feb0..77bf09a 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -2250,7 +2250,7 @@ COMPILEALL_OPTS=-j0 + TEST_MODULES=@TEST_MODULES@ + + .PHONY: libinstall +-libinstall: all $(srcdir)/Modules/xxmodule.c ++libinstall: all $(srcdir)/Modules/xxmodule.c libainstall + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ + 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 @@ -From 57d073c12e7bede29919117b0141df14015eb27f Mon Sep 17 00:00:00 2001 -From: Tyler Hall <tylerwhall@gmail.com> -Date: Sun, 4 May 2014 20:06:43 -0400 -Subject: [PATCH] python-config: Revert to using distutils.sysconfig - -The newer sysconfig module shares some code with distutils.sysconfig, but the same modifications as in - -12-distutils-prefix-is-inside-staging-area.patch makes distutils.sysconfig - -affect the native runtime as well as cross building. Use the old, patched -implementation which returns paths in the staging directory and for the target, -as appropriate. - -Upstream-Status: Inappropriate [Embedded Specific] - -Signed-off-by: Tyler Hall <tylerwhall@gmail.com> -: - ---- - Misc/python-config.in | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/Misc/python-config.in b/Misc/python-config.in -index ebd99da..13e57ae 100644 ---- a/Misc/python-config.in -+++ b/Misc/python-config.in -@@ -6,7 +6,7 @@ - import getopt - import os - import sys --import sysconfig -+from distutils import sysconfig - - valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', - 'ldflags', 'extension-suffix', 'help', 'abiflags', 'configdir', -@@ -35,14 +35,14 @@ if '--help' in opt_flags: - - for opt in opt_flags: - if opt == '--prefix': -- print(getvar('prefix')) -+ print(sysconfig.PREFIX) - - elif opt == '--exec-prefix': -- print(getvar('exec_prefix')) -+ print(sysconfig.EXEC_PREFIX) - - elif opt in ('--includes', '--cflags'): -- flags = ['-I' + sysconfig.get_path('include'), -- '-I' + sysconfig.get_path('platinclude')] -+ flags = ['-I' + sysconfig.get_python_inc(), -+ '-I' + sysconfig.get_python_inc(plat_specific=True)] - if opt == '--cflags': - flags.extend(getvar('CFLAGS').split()) - 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 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/wave.*.pyc" ] }, + "cgitb": { + "summary": "Special exception handler for Python scripts", + "rdepends": [ + "core", + "crypt", + "html", + "io", + "math", + "pydoc" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/cgitb.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cgitb.*.pyc" + ] + }, "codecs": { "summary": "Python codec", "rdepends": [ @@ -189,12 +206,12 @@ "files": [ "${libdir}/python${PYTHON_MAJMIN}/gzip.py", "${libdir}/python${PYTHON_MAJMIN}/tarfile.py", - "${libdir}/python${PYTHON_MAJMIN}/zipfile.py" + "${libdir}/python${PYTHON_MAJMIN}/zipfile", + "${libdir}/python${PYTHON_MAJMIN}/zipfile/_path" ], "cached": [ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/gzip.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipfile.*.pyc" + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tarfile.*.pyc" ] }, "core": { @@ -232,6 +249,7 @@ "${libdir}/python${PYTHON_MAJMIN}/copy.py", "${libdir}/python${PYTHON_MAJMIN}/copyreg.py", "${libdir}/python${PYTHON_MAJMIN}/csv.py", + "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py", "${libdir}/python${PYTHON_MAJMIN}/dis.py", "${libdir}/python${PYTHON_MAJMIN}/encodings", "${libdir}/python${PYTHON_MAJMIN}/encodings/aliases.py", @@ -246,6 +264,7 @@ "${libdir}/python${PYTHON_MAJMIN}/heapq.py", "${libdir}/python${PYTHON_MAJMIN}/imp.py", "${libdir}/python${PYTHON_MAJMIN}/importlib", + "${libdir}/python${PYTHON_MAJMIN}/importlib/_abc.py", "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap.py", "${libdir}/python${PYTHON_MAJMIN}/importlib/_bootstrap_external.py", "${libdir}/python${PYTHON_MAJMIN}/importlib/abc.py", @@ -253,6 +272,7 @@ "${libdir}/python${PYTHON_MAJMIN}/importlib/util.py", "${libdir}/python${PYTHON_MAJMIN}/inspect.py", "${libdir}/python${PYTHON_MAJMIN}/io.py", + "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py", "${libdir}/python${PYTHON_MAJMIN}/keyword.py", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/_struct.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/__pycache__/binascii.*.so", @@ -266,6 +286,7 @@ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_opcode.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixsubprocess.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_struct.*.so", + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_typing.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/array.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/binascii.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/grp.*.so", @@ -290,7 +311,11 @@ "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", "${libdir}/python${PYTHON_MAJMIN}/platform.py", "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", - "${libdir}/python${PYTHON_MAJMIN}/re.py", + "${libdir}/python${PYTHON_MAJMIN}/re", + "${libdir}/python${PYTHON_MAJMIN}/re/_casefix.py", + "${libdir}/python${PYTHON_MAJMIN}/re/_compiler.py", + "${libdir}/python${PYTHON_MAJMIN}/re/_constants.py", + "${libdir}/python${PYTHON_MAJMIN}/re/_parser.py", "${libdir}/python${PYTHON_MAJMIN}/reprlib.py", "${libdir}/python${PYTHON_MAJMIN}/rlcompleter.py", "${libdir}/python${PYTHON_MAJMIN}/runpy.py", @@ -319,6 +344,7 @@ "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", "${libdir}/python${PYTHON_MAJMIN}/warnings.py", "${libdir}/python${PYTHON_MAJMIN}/weakref.py", + "${libdir}/python${PYTHON_MAJMIN}/zipimport.py", "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" ], "cached": [ @@ -343,6 +369,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copy.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/copyreg.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/csv.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dis.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/enum.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/fnmatch.*.pyc", @@ -354,6 +381,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imp.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/inspect.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/io.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/keyword.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/linecache.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/locale.*.pyc", @@ -400,9 +428,15 @@ "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/latin_1.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/encodings/__pycache__/utf_8.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", + "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/_abc.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/abc.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/machinery.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__/util.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__", + "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_casefix.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_compiler.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_constants.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/re/__pycache__/_parser.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" ] @@ -422,9 +456,8 @@ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_hashlib.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_md5.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha1.*.so", - "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha256.*.so", - "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so", - "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha512.*.so" + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha2.*.so", + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_sha3.*.so" ], "cached": [ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/crypt.*.pyc", @@ -519,8 +552,7 @@ "${libdir}/pkgconfig" ], "rdepends": [ - "core", - "distutils" + "core" ], "summary": "Python development package" }, @@ -536,27 +568,6 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/difflib.*.pyc" ] }, - "distutils-windows": { - "summary": "Python distribution utilities (Windows installer stubs)", - "rdepends": [ - "core" - ], - "files": [], - "cached": [] - }, - "distutils": { - "summary": "Python Distribution Utilities", - "rdepends": [ - "compression", - "core", - "email", - "stringold" - ], - "files": [ - "${libdir}/python${PYTHON_MAJMIN}/distutils" - ], - "cached": [] - }, "doctest": { "summary": "Python framework for running examples in docstrings", "rdepends": [ @@ -595,6 +606,16 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/imaplib.*.pyc" ] }, + "ensurepip": { + "summary": "Support for bootstrapping the pip installer", + "rdepends": [ + "core" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/ensurepip/" + ], + "cached": [] + }, "fcntl": { "summary": "Python's fcntl interface", "rdepends": [ @@ -621,12 +642,9 @@ "core" ], "files": [ - "${libdir}/python${PYTHON_MAJMIN}/formatter.py", "${libdir}/python${PYTHON_MAJMIN}/html" ], - "cached": [ - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/formatter.*.pyc" - ] + "cached": [] }, "idle": { "summary": "Python Integrated Development Environment", @@ -664,7 +682,6 @@ ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/_pyio.py", - "${libdir}/python${PYTHON_MAJMIN}/ipaddress.py", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_socket.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_ssl.*.so", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/termios.*.so", @@ -675,7 +692,6 @@ ], "cached": [ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_pyio.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ipaddress.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pipes.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/socket.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/ssl.*.pyc", @@ -715,7 +731,6 @@ "crypt", "datetime", "email", - "fcntl", "io", "math", "mime", @@ -786,9 +801,9 @@ "db", "debugger", "difflib", - "distutils", "doctest", "email", + "ensurepip", "fcntl", "html", "idle", @@ -812,21 +827,20 @@ "pydoc", "resource", "shell", - "smtpd", "sqlite3", + "statistics", "stringold", "syslog", "terminal", "threading", "tkinter", + "tomllib", "unittest", "unixadmin", "venv", "xml", - "xmlrpc" - ], - "rrecommends": [ - "distutils-windows" + "xmlrpc", + "zoneinfo" ], "summary": "All Python modules" }, @@ -875,6 +889,7 @@ "${libdir}/python${PYTHON_MAJMIN}/secrets.py", "${libdir}/python${PYTHON_MAJMIN}/smtplib.py", "${libdir}/python${PYTHON_MAJMIN}/telnetlib.py", + "${libdir}/python${PYTHON_MAJMIN}/urllib", "${libdir}/python${PYTHON_MAJMIN}/uuid.py" ], "cached": [ @@ -995,14 +1010,12 @@ ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/cProfile.py", - "${libdir}/python${PYTHON_MAJMIN}/dataclasses.py", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_lsprof.*.so", "${libdir}/python${PYTHON_MAJMIN}/profile.py", "${libdir}/python${PYTHON_MAJMIN}/pstats.py" ], "cached": [ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/cProfile.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/dataclasses.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/profile.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pstats.*.pyc" ] @@ -1048,31 +1061,6 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/shlex.*.pyc" ] }, - "smtpd": { - "summary": "Python Simple Mail Transport Daemon", - "rdepends": [ - "core", - "crypt", - "datetime", - "email", - "io", - "math", - "mime", - "netclient", - "stringold" - ], - "files": [ - "${bindir}/smtpd.py", - "${libdir}/python${PYTHON_MAJMIN}/asynchat.py", - "${libdir}/python${PYTHON_MAJMIN}/asyncore.py", - "${libdir}/python${PYTHON_MAJMIN}/smtpd.py" - ], - "cached": [ - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asynchat.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/asyncore.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtpd.*.pyc" - ] - }, "sqlite3": { "summary": "Python Sqlite3 database support", "rdepends": [ @@ -1085,6 +1073,22 @@ ], "cached": [] }, + "statistics": { + "summary": "Basic statistics module", + "rdepends": [ + "core", + "crypt", + "math", + "numbers" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_statistics.*.so", + "${libdir}/python${PYTHON_MAJMIN}/statistics.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc" + ] + }, "stringold": { "summary": "Python string APIs [deprecated]", "rdepends": [ @@ -1143,11 +1147,33 @@ "core" ], "files": [ - "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", "${libdir}/python${PYTHON_MAJMIN}/tkinter" ], "cached": [] }, + "tomllib": { + "summary": "Provides an interface for parsing TOML", + "rdepends": [ + "core" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/tomllib/" + ], + "cached": [] + }, + "turtle": { + "summary": "Turtle graphics is a popular way for introducing programming to kids.", + "rdepends": [ + "tkinter" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/turtle.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/turtle.*.pyc" + ] + }, "unittest": { "summary": "Python unit testing framework", "rdepends": [ @@ -1215,7 +1241,6 @@ "crypt", "datetime", "email", - "fcntl", "html", "io", "math", @@ -1232,5 +1257,30 @@ "${libdir}/python${PYTHON_MAJMIN}/xmlrpc/__pycache__" ], "cached": [] + }, + "zipapp": { + "summary": "Tools to manage the creation of zip files containing Python code", + "rdepends": [ + "compression", + "core" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/zipapp.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipapp.*.pyc" + ] + }, + "zoneinfo": { + "summary": "IANA time zone support", + "rdepends": [ + "core", + "datetime" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_zoneinfo.*.so", + "${libdir}/python${PYTHON_MAJMIN}/zoneinfo" + ], + "cached": [] } } 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: with open(sys.argv[1], 'w') as f: for k in sorted(l.keys()): f.write('%s = ' % k) - pprint.pprint(l[k], stream=f, width=sys.maxsize) + pprint.pprint(l[k], stream=f, width=1) f.write('\n') 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 @@ #!/bin/sh - -python3 -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' +SKIPPED_TESTS= +{ 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 @@ +SUMMARY = "The Python Programming Language" +HOMEPAGE = "http://www.python.org" +DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively." +LICENSE = "PSF-2.0" +SECTION = "devel/python" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=fcf6b249c2641540219a727f35d8d2c2" + +SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ + file://run-ptest \ + file://create_manifest3.py \ + file://get_module_deps3.py \ + file://python3-manifest.json \ + file://check_build_completeness.py \ + file://reformat_sysconfig.py \ + file://cgi_py.patch \ + file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \ + file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \ + file://crosspythonpath.patch \ + file://0001-test_locale.py-correct-the-test-output-format.patch \ + file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \ + file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \ + file://0001-test_ctypes.test_find-skip-without-tools-sdk.patch \ + file://makerace.patch \ + file://0001-sysconfig.py-use-platlibdir-also-for-purelib.patch \ + file://0001-Lib-pty.py-handle-stdin-I-O-errors-same-way-as-maste.patch \ + file://deterministic_imports.patch \ + file://0001-Avoid-shebang-overflow-on-python-config.py.patch \ + file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \ + file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \ + file://0001-test_storlines-skip-due-to-load-variability.patch \ + file://0001-gh-114492-Initialize-struct-termios-before-calling-t.patch \ + " + +SRC_URI:append:class-native = " \ + file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \ + " + +SRC_URI[sha256sum] = "56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1" + +# exclude pre-releases for both python 2.x and 3.x +UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" + +CVE_PRODUCT = "python cpython" + +CVE_STATUS[CVE-2007-4559] = "disputed: Upstream consider this expected behaviour" +CVE_STATUS[CVE-2019-18348] = "not-applicable-config: This is not exploitable when glibc has CVE-2016-10739 fixed" +CVE_STATUS[CVE-2020-15523] = "not-applicable-platform: Issue only applies on Windows" +CVE_STATUS[CVE-2022-26488] = "not-applicable-platform: Issue only applies on Windows" +# The module will be removed in the future and flaws documented. +CVE_STATUS[CVE-2015-20107] = "upstream-wontfix: The mailcap module is insecure by design, so this can't be fixed in a meaningful way" +CVE_STATUS[CVE-2023-36632] = "disputed: Not an issue, in fact expected behaviour" + +PYTHON_MAJMIN = "3.12" + +S = "${WORKDIR}/Python-${PV}" + +BBCLASSEXTEND = "native nativesdk" + +inherit autotools pkgconfig qemu ptest multilib_header update-alternatives + +MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}" + +ALTERNATIVE:${PN}-dev = "python3-config" +ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config" +ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}" + + +DEPENDS = "bzip2-replacement-native expat libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux-libuuid libtirpc libnsl2 autoconf-archive-native ncurses" +DEPENDS:append:class-target = " python3-native" +DEPENDS:append:class-nativesdk = " python3-native" + +EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib} --with-system-expat" +EXTRA_OECONF:append:class-native = " --bindir=${bindir}/${PN}" +EXTRA_OECONF:append:class-target = " --with-build-python=nativepython3" +EXTRA_OECONF:append:class-nativesdk = " --with-build-python=nativepython3" + +export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/" + +EXTRANATIVEPATH += "python3-native" + +# LTO will be enabled via packageconfig depending upong distro features +LTO:class-target = "" + +CACHED_CONFIGUREVARS = " \ + ac_cv_file__dev_ptmx=yes \ + ac_cv_file__dev_ptc=no \ + ac_cv_working_tzset=yes \ +" +# set thread stack size to 2MB on musl for interpreter and stdlib C extensions +# so it does not run into stack limits due to musl's small thread stack +# This is only needed to build interpreter and not the subsequent modules +# Thats why CFLAGS_NODIST is modified instead of CFLAGS +CACHED_CONFIGUREVARS:append:libc-musl = "\ + CFLAGS_NODIST='${CFLAGS} -DTHREAD_STACK_SIZE=0x200000' \ +" + +# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407 +PACKAGECONFIG ??= "editline gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}" +PACKAGECONFIG[readline] = "--with-readline=readline,,readline,,,editline" +PACKAGECONFIG[editline] = "--with-readline=editline,,libedit,,,readline" +# Use profile guided optimisation by running PyBench inside qemu-user +PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native" +PACKAGECONFIG[tk] = ",,tk" +PACKAGECONFIG[tcl] = ",,tcl" +PACKAGECONFIG[gdbm] = ",,gdbm" +PACKAGECONFIG[lto] = "--with-lto,--without-lto" + +do_configure:prepend () { + mkdir -p ${B}/Modules + cat > ${B}/Modules/Setup.local << EOF +*disabled* +${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)} +${@bb.utils.contains_any('PACKAGECONFIG', 'readline editline', '', 'readline', d)} +${@bb.utils.contains('PACKAGECONFIG', 'tk', '', '_tkinter', d)} +EOF +} + +CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid" + +# COMPILEALL_OPTS= ensures that .pyc are not compiled in parallel +# This was found to lock up builds, break reproducibility, and produce strange file ownership +# races. +# +# The upstream commit introducing the change was: +# https://github.com/python/cpython/commit/1a2dd82f56bd813aacc570e172cefe55a8a41504 +# +# The build lock up issue is reported here: +# https://bugs.python.org/issue45945 +# +# The repro failures are documented here: +# https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20211130-yr_o1a8d/packages/diff-html/ + +EXTRA_OEMAKE = '\ + STAGING_LIBDIR=${STAGING_LIBDIR} \ + STAGING_INCDIR=${STAGING_INCDIR} \ + LIB=${baselib} \ + COMPILEALL_OPTS= \ +' + +# Generate a Profile Guided Optimisation wrapper script that uses qemu-user for +# all cross builds. +write_pgo_wrapper:class-native = ":" +write_pgo_wrapper() { + if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then + cat >pgo-wrapper <<EOF +#!/bin/sh +cd ${B} +${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@" +EOF + chmod +x pgo-wrapper + fi +} + +do_compile:prepend() { + write_pgo_wrapper +} + +do_install:prepend() { + ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile +} + +do_install:append:class-target() { + oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h +} + +do_install:append:class-native() { + # Make sure we use /usr/bin/env python + for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT + done + # Add a symlink to the native Python so that scripts can just invoke + # "nativepython" and get the right one without needing absolute paths + # (these often end up too long for the #! parser in the kernel as the + # buffer is 128 bytes long). + ln -s python3-native/python3 ${D}${bindir}/nativepython3 + + # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 of them + # and the overhead in each recipe-sysroot-native isn't worth it, particularly + # when they're only used for python called with -O or -OO. + #find ${D} -name *opt-*.pyc -delete + # Remove all pyc files. There are a ton of them and it is probably faster to let + # python create the ones it wants at runtime rather than manage in the sstate + # tarballs and sysroot creation. + find ${D} -name *.pyc -delete + + # Nothing should be looking into ${B} for python3-native + sed -i -e 's:${B}:/build/path/unavailable/:g' \ + ${D}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile + + # disable the lookup in user's site-packages globally + sed -i 's#ENABLE_USER_SITE = None#ENABLE_USER_SITE = False#' ${D}${libdir}/python${PYTHON_MAJMIN}/site.py + + # python3-config needs to be in /usr/bin and not in a subdir of it to work properly + mv ${D}/${bindir}/${PN}/python*config ${D}/${bindir}/ +} + +do_install:append() { + for c in ${D}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do + python3 ${WORKDIR}/reformat_sysconfig.py $c + done + rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.cpython* + + mkdir -p ${D}${libdir}/python-sysconfigdata + sysconfigfile=`find ${D} -name _sysconfig*.py` + sed -i \ + -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \ + -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \ + -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \ + -e "s,^ 'INCLUDEPY'.*, 'INCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \ + -e "s,^ 'CONFINCLUDEPY'.*, 'CONFINCLUDEPY': '${STAGING_INCDIR}/python${PYTHON_MAJMIN}'\,,g" \ + -e "s,${B},/build/path/unavailable/,g" \ + $sysconfigfile + cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py + + + # Unfortunately the following pyc files are non-deterministc due to 'frozenset' + # being written without strict ordering, even with PYTHONHASHSEED = 0 + # Upstream is discussing ways to solve the issue properly, until then let's + # just not install the problematic files. + # More info: http://benno.id.au/blog/2013/01/15/python-determinism + rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython* + rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython* + + # Similar to the above, we're getting reproducibility issues with + # /usr/lib/python3.10/__pycache__/traceback.cpython-310.pyc + # so remove it too + rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/__pycache__/traceback.cpython* + + # Remove the opt-1.pyc and opt-2.pyc files. They effectively waste space on embedded + # style targets as they're only used when python is called with the -O or -OO options + # which is rare. + find ${D} -name *opt-*.pyc -delete +} + +do_install:append:class-nativesdk () { + # Make sure we use /usr/bin/env python + for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do + sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT + done + create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1' +} + +do_install_ptest:append:class-target:libc-musl () { + 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 +} + +SYSROOT_PREPROCESS_FUNCS:append:class-target = " provide_target_config_script" +SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " provide_target_config_script" + +# This is installed into /usr/python-target-config/ and not /usr/bin +# because adding target sysroot's /usr/bin/ to PATH has unwanted side effects +# in components erroneously picking up other target executables from it +provide_target_config_script() { + install -d ${SYSROOT_DESTDIR}${prefix}/python-target-config/ + install ${D}/${bindir}/python3-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/ + install ${D}/${bindir}/python${PYTHON_MAJMIN}-config ${SYSROOT_DESTDIR}/${prefix}/python-target-config/ +} +SYSROOT_DIRS += "${prefix}/python-target-config/" + +SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py" +SSTATE_HASHEQUIV_FILEMAP = " \ + populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${TMPDIR} \ + populate_sysroot:*/lib*/python3*/_sysconfigdata*.py:${COREBASE} \ + populate_sysroot:*/lib*/python3*/config-*/Makefile:${TMPDIR} \ + populate_sysroot:*/lib*/python3*/config-*/Makefile:${COREBASE} \ + populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${TMPDIR} \ + populate_sysroot:*/lib*/python-sysconfigdata/_sysconfigdata.py:${COREBASE} \ + " +PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" + +py_package_preprocess () { + # Remove references to buildmachine paths in target Makefile and _sysconfigdata + sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ + -e 's|${DEBUG_PREFIX_MAP}||g' \ + -e 's:${HOSTTOOLS_DIR}/::g' \ + -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ + -e 's:${RECIPE_SYSROOT}::g' \ + -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \ + ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config + + # Reformat _sysconfigdata after modifying it so that it remains + # reproducible + for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do + python3 ${WORKDIR}/reformat_sysconfig.py $c + done + + # Recompile _sysconfigdata after modifying it + cd ${PKGD} + sysconfigfile=`find . -name _sysconfigdata_*.py` + ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + -c "from py_compile import compile; compile('$sysconfigfile')" + ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)" + ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ + -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)" + cd - + + mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX} + + #Remove the unneeded copy of target sysconfig data + rm -rf ${PKGD}/${libdir}/python-sysconfigdata +} + +# We want bytecode precompiled .py files (.pyc's) by default +# but the user may set it on their own conf +INCLUDE_PYCS ?= "1" + +python(){ + import collections, json + + filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json') + # This python changes the datastore based on the contents of a file, so mark + # that dependency. + bb.parse.mark_dependency(d, filename) + + with open(filename) as manifest_file: + manifest_str = manifest_file.read() + json_start = manifest_str.find('# EOC') + 6 + manifest_file.seek(json_start) + manifest_str = manifest_file.read() + python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict) + + # First set RPROVIDES for -native case + # Hardcoded since it cant be python3-native-foo, should be python3-foo-native + pn = 'python3' + rprovides = (d.getVar('RPROVIDES') or "").split() + + # ${PN}-misc-native is not in the manifest + rprovides.append(pn + '-misc-native') + + for key in python_manifest: + pypackage = pn + '-' + key + '-native' + if pypackage not in rprovides: + rprovides.append(pypackage) + + d.setVar('RPROVIDES:class-native', ' '.join(rprovides)) + + # Then work on the target + include_pycs = d.getVar('INCLUDE_PYCS') + + packages = d.getVar('PACKAGES').split() + pn = d.getVar('PN') + + newpackages=[] + for key in python_manifest: + pypackage = pn + '-' + key + + if pypackage not in packages: + # We need to prepend, otherwise python-misc gets everything + # so we use a new variable + newpackages.append(pypackage) + + # "Build" python's manifest FILES, RDEPENDS and SUMMARY + d.setVar('FILES:' + pypackage, '') + for value in python_manifest[key]['files']: + d.appendVar('FILES:' + pypackage, ' ' + value) + + # Add cached files + if include_pycs == '1': + for value in python_manifest[key]['cached']: + d.appendVar('FILES:' + pypackage, ' ' + value) + + for value in python_manifest[key]['rdepends']: + # Make it work with or without $PN + if '${PN}' in value: + value=value.split('-', 1)[1] + d.appendVar('RDEPENDS:' + pypackage, ' ' + pn + '-' + value) + + for value in python_manifest[key].get('rrecommends', ()): + if '${PN}' in value: + value=value.split('-', 1)[1] + d.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value) + + d.setVar('SUMMARY:' + pypackage, python_manifest[key]['summary']) + + # Prepending so to avoid python-misc getting everything + packages = newpackages + packages + d.setVar('PACKAGES', ' '.join(packages)) + d.setVar('ALLOW_EMPTY:${PN}-modules', '1') + d.setVar('ALLOW_EMPTY:${PN}-pkgutil', '1') + + if "pgo" in d.getVar("PACKAGECONFIG").split() and not bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d): + bb.fatal("pgo cannot be enabled as there is no qemu-usermode support for this architecture/machine") +} + +# Files needed to create a new manifest + +do_create_manifest() { + # This task should be run with every new release of Python. + # We must ensure that PACKAGECONFIG enables everything when creating + # a new manifest, this is to base our new manifest on a complete + # native python build, containing all dependencies, otherwise the task + # wont be able to find the required files. + # e.g. BerkeleyDB is an optional build dependency so it may or may not + # be present, we must ensure it is. + + cd ${WORKDIR} + # This needs to be executed by python-native and NOT by HOST's python + nativepython3 create_manifest3.py ${PYTHON_MAJMIN} + cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json +} + +# bitbake python -c create_manifest +# Make sure we have native python ready when we create a new manifest +addtask do_create_manifest after do_patch do_prepare_recipe_sysroot + +# manual dependency additions +RRECOMMENDS:${PN}-core:append:class-nativesdk = " nativesdk-python3-modules" +RRECOMMENDS:${PN}-crypt:append:class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates" +RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates" + +# For historical reasons PN is empty and provided by python3-modules +FILES:${PN} = "" +RPROVIDES:${PN}-modules = "${PN}" + +FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3" +FILES:${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}" + +# provide python-pyvenv from python3-venv +RPROVIDES:${PN}-venv += "${MLPREFIX}python3-pyvenv" + +# package libpython3 +PACKAGES =+ "libpython3 libpython3-staticdev" +FILES:libpython3 = "${libdir}/libpython*.so.*" +FILES:libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a" +INSANE_SKIP:${PN}-dev += "dev-elf" +INSANE_SKIP:${PN}-ptest = "dev-deps" + +# catch all the rest (unsorted) +PACKAGES += "${PN}-misc" +RDEPENDS:${PN}-misc += "\ + ${PN}-audio \ + ${PN}-codecs \ + ${PN}-core \ + ${PN}-email \ + ${PN}-numbers \ + ${PN}-pickle \ + ${PN}-pydoc \ +" +RDEPENDS:${PN}-modules:append:class-target = " ${MLPREFIX}python3-misc" +RDEPENDS:${PN}-modules:append:class-nativesdk = " ${MLPREFIX}python3-misc" +RDEPENDS:${PN}-modules:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '${MLPREFIX}python3-gdbm', '', d)}" +FILES:${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload" + +# catch manpage +PACKAGES += "${PN}-man" +FILES:${PN}-man = "${datadir}/man" + +# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395 +RDEPENDS:libpython3:append:libc-glibc = " libgcc" +RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig" +RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev ${PN}-cgitb ${PN}-zipapp unzip bzip2 libgcc tzdata coreutils sed gcc g++ binutils \ + locale-base-fr-fr locale-base-en-us locale-base-de-de" +RDEPENDS:${PN}-ptest:append:libc-glibc = " locale-base-tr-tr" +RDEPENDS:${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}" +RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}tcl', '', d)}" +DEV_PKG_DEPENDENCY = "" +RDEPENDS:${PN}-pydoc += "${PN}-io" + +RDEPENDS:${PN}-tests:append:class-target = " ${MLPREFIX}bash" +RDEPENDS:${PN}-tests:append:class-nativesdk = " ${MLPREFIX}bash" + +# Python's tests contain large numbers of files we don't need in the recipe sysroots +SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup" +py3_sysroot_cleanup () { + rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test +} 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 fd1172335a..0000000000 --- a/meta/recipes-devtools/python/python3_3.9.2.bb +++ /dev/null @@ -1,384 +0,0 @@ -SUMMARY = "The Python Programming Language" -HOMEPAGE = "http://www.python.org" -DESCRIPTION = "Python is a programming language that lets you work more quickly and integrate your systems more effectively." -LICENSE = "PSFv2" -SECTION = "devel/python" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=c22d2438294c784731bf9dd224a467b7" - -SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ - file://run-ptest \ - file://create_manifest3.py \ - file://get_module_deps3.py \ - file://python3-manifest.json \ - file://check_build_completeness.py \ - file://reformat_sysconfig.py \ - file://cgi_py.patch \ - file://0001-Do-not-add-usr-lib-termcap-to-linker-flags-to-avoid-.patch \ - ${@bb.utils.contains('PACKAGECONFIG', 'tk', '', 'file://avoid_warning_about_tkinter.patch', d)} \ - file://0001-Do-not-use-the-shell-version-of-python-config-that-w.patch \ - file://python-config.patch \ - file://0001-Makefile.pre-use-qemu-wrapper-when-gathering-profile.patch \ - file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \ - file://0001-Makefile-fix-Issue36464-parallel-build-race-problem.patch \ - file://0001-bpo-36852-proper-detection-of-mips-architecture-for-.patch \ - file://crosspythonpath.patch \ - file://0001-Use-FLAG_REF-always-for-interned-strings.patch \ - file://0001-test_locale.py-correct-the-test-output-format.patch \ - file://0017-setup.py-do-not-report-missing-dependencies-for-disa.patch \ - file://0001-setup.py-pass-missing-libraries-to-Extension-for-mul.patch \ - file://0001-Makefile-do-not-compile-.pyc-in-parallel.patch \ - file://0020-configure.ac-setup.py-do-not-add-a-curses-include-pa.patch \ - file://0001-Lib-sysconfig.py-use-libdir-values-from-configuratio.patch \ - file://0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch \ - " - -SRC_URI_append_class-native = " \ - file://0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch \ - file://12-distutils-prefix-is-inside-staging-area.patch \ - file://0001-Don-t-search-system-for-headers-libraries.patch \ - " -SRC_URI[sha256sum] = "3c2034c54f811448f516668dce09d24008a0716c3a794dd8639b5388cbde247d" - -# exclude pre-releases for both python 2.x and 3.x -UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar" -UPSTREAM_CHECK_URI = "https://www.python.org/downloads/source/" - -CVE_PRODUCT = "python" - -# Upstream consider this expected behaviour -CVE_CHECK_WHITELIST += "CVE-2007-4559" -# This is not exploitable when glibc has CVE-2016-10739 fixed. -CVE_CHECK_WHITELIST += "CVE-2019-18348" - -# This is windows only issue. -CVE_CHECK_WHITELIST += "CVE-2020-15523" - -PYTHON_MAJMIN = "3.9" - -S = "${WORKDIR}/Python-${PV}" - -BBCLASSEXTEND = "native nativesdk" - -inherit autotools pkgconfig qemu ptest multilib_header update-alternatives - -MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}" - -ALTERNATIVE_${PN}-dev = "python3-config" -ALTERNATIVE_LINK_NAME[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config" -ALTERNATIVE_TARGET[python3-config] = "${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX}" - - -DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux libtirpc libnsl2" -DEPENDS_append_class-target = " python3-native" -DEPENDS_append_class-nativesdk = " python3-native" - -EXTRA_OECONF = " --without-ensurepip --enable-shared --with-platlibdir=${baselib}" -EXTRA_OECONF_append_class-native = " --bindir=${bindir}/${PN}" - -export CROSSPYTHONPATH="${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/" - -EXTRANATIVEPATH += "python3-native" - -# LTO will be enabled via packageconfig depending upong distro features -LTO_class-target = "" - -CACHED_CONFIGUREVARS = " \ - ac_cv_file__dev_ptmx=yes \ - ac_cv_file__dev_ptc=no \ - ac_cv_working_tzset=yes \ -" - -def possibly_include_pgo(d): - # PGO currently causes builds to not be reproducible, so disable it for - # now. See YOCTO #13407 - if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) and d.getVar('BUILD_REPRODUCIBLE_BINARIES') != '1': - return 'pgo' - - return '' - -PACKAGECONFIG_class-target ??= "readline ${@possibly_include_pgo(d)} gdbm ${@bb.utils.filter('DISTRO_FEATURES', 'lto', d)}" -PACKAGECONFIG_class-native ??= "readline gdbm" -PACKAGECONFIG_class-nativesdk ??= "readline gdbm" -PACKAGECONFIG[readline] = ",,readline" -# Use profile guided optimisation by running PyBench inside qemu-user -PACKAGECONFIG[pgo] = "--enable-optimizations,,qemu-native" -PACKAGECONFIG[tk] = ",,tk" -PACKAGECONFIG[gdbm] = ",,gdbm" -PACKAGECONFIG[lto] = "--with-lto,," - -do_configure_prepend () { - mkdir -p ${B}/Modules - cat > ${B}/Modules/Setup.local << EOF -*disabled* -${@bb.utils.contains('PACKAGECONFIG', 'gdbm', '', '_gdbm _dbm', d)} -${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)} -EOF -} - -CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid" - -EXTRA_OEMAKE = '\ - STAGING_LIBDIR=${STAGING_LIBDIR} \ - STAGING_INCDIR=${STAGING_INCDIR} \ - LIB=${baselib} \ -' - -do_compile_prepend_class-target() { - if ${@bb.utils.contains('PACKAGECONFIG', 'pgo', 'true', 'false', d)}; then - qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])}" - cat >pgo-wrapper <<EOF -#!/bin/sh -cd ${B} -$qemu_binary "\$@" -EOF - chmod +x pgo-wrapper - fi -} - -do_install_prepend() { - ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile -} - -do_install_append_class-target() { - oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h -} - -do_install_append_class-native() { - # Make sure we use /usr/bin/env python - for PYTHSCRIPT in `grep -rIl ${bindir}/${PN}/python ${D}${bindir}/${PN}`; do - sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT - done - # Add a symlink to the native Python so that scripts can just invoke - # "nativepython" and get the right one without needing absolute paths - # (these often end up too long for the #! parser in the kernel as the - # buffer is 128 bytes long). - ln -s python3-native/python3 ${D}${bindir}/nativepython3 -} - -do_install_append() { - mkdir -p ${D}${libdir}/python-sysconfigdata - sysconfigfile=`find ${D} -name _sysconfig*.py` - cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py - - sed -i \ - -e "s,^ 'LIBDIR'.*, 'LIBDIR': '${STAGING_LIBDIR}'\,,g" \ - -e "s,^ 'INCLUDEDIR'.*, 'INCLUDEDIR': '${STAGING_INCDIR}'\,,g" \ - -e "s,^ 'CONFINCLUDEDIR'.*, 'CONFINCLUDEDIR': '${STAGING_INCDIR}'\,,g" \ - -e "/^ 'INCLDIRSTOMAKE'/{N; s,/usr/include,${STAGING_INCDIR},g}" \ - -e "/^ 'INCLUDEPY'/s,/usr/include,${STAGING_INCDIR},g" \ - ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py - - # Unfortunately the following pyc files are non-deterministc due to 'frozenset' - # being written without strict ordering, even with PYTHONHASHSEED = 0 - # Upstream is discussing ways to solve the issue properly, until then let's - # just not install the problematic files. - # More info: http://benno.id.au/blog/2013/01/15/python-determinism - rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython* - rm ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.cpython* -} - -do_install_append_class-nativesdk () { - # Make sure we use /usr/bin/env python - for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do - sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT - done - create_wrapper ${D}${bindir}/python${PYTHON_MAJMIN} TERMINFO_DIRS='${sysconfdir}/terminfo:/etc/terminfo:/usr/share/terminfo:/usr/share/misc/terminfo:/lib/terminfo' PYTHONNOUSERSITE='1' -} - -SSTATE_SCAN_FILES += "Makefile _sysconfigdata.py" -PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" - -py_package_preprocess () { - # Remove references to buildmachine paths in target Makefile and _sysconfigdata - sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ - -e 's|${DEBUG_PREFIX_MAP}||g' \ - -e 's:${HOSTTOOLS_DIR}/::g' \ - -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ - -e 's:${RECIPE_SYSROOT}::g' \ - -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \ - ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \ - ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \ - ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config - - # Reformat _sysconfigdata after modifying it so that it remains - # reproducible - for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do - python3 ${WORKDIR}/reformat_sysconfig.py $c - done - - # Recompile _sysconfigdata after modifying it - cd ${PKGD} - sysconfigfile=`find . -name _sysconfigdata_*.py` - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile')" - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)" - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)" - cd - - - mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX} - - #Remove the unneeded copy of target sysconfig data - rm -rf ${PKGD}/${libdir}/python-sysconfigdata -} - -# We want bytecode precompiled .py files (.pyc's) by default -# but the user may set it on their own conf -INCLUDE_PYCS ?= "1" - -python(){ - import collections, json - - filename = os.path.join(d.getVar('THISDIR'), 'python3', 'python3-manifest.json') - # This python changes the datastore based on the contents of a file, so mark - # that dependency. - bb.parse.mark_dependency(d, filename) - - with open(filename) as manifest_file: - manifest_str = manifest_file.read() - json_start = manifest_str.find('# EOC') + 6 - manifest_file.seek(json_start) - manifest_str = manifest_file.read() - python_manifest = json.loads(manifest_str, object_pairs_hook=collections.OrderedDict) - - # First set RPROVIDES for -native case - # Hardcoded since it cant be python3-native-foo, should be python3-foo-native - pn = 'python3' - rprovides = (d.getVar('RPROVIDES') or "").split() - - # ${PN}-misc-native is not in the manifest - rprovides.append(pn + '-misc-native') - - for key in python_manifest: - pypackage = pn + '-' + key + '-native' - if pypackage not in rprovides: - rprovides.append(pypackage) - - d.setVar('RPROVIDES_class-native', ' '.join(rprovides)) - - # Then work on the target - include_pycs = d.getVar('INCLUDE_PYCS') - - packages = d.getVar('PACKAGES').split() - pn = d.getVar('PN') - - newpackages=[] - for key in python_manifest: - pypackage = pn + '-' + key - - if pypackage not in packages: - # We need to prepend, otherwise python-misc gets everything - # so we use a new variable - newpackages.append(pypackage) - - # "Build" python's manifest FILES, RDEPENDS and SUMMARY - d.setVar('FILES_' + pypackage, '') - for value in python_manifest[key]['files']: - d.appendVar('FILES_' + pypackage, ' ' + value) - - # Add cached files - if include_pycs == '1': - for value in python_manifest[key]['cached']: - d.appendVar('FILES_' + pypackage, ' ' + value) - - for value in python_manifest[key]['rdepends']: - # Make it work with or without $PN - if '${PN}' in value: - value=value.split('-', 1)[1] - d.appendVar('RDEPENDS_' + pypackage, ' ' + pn + '-' + value) - - for value in python_manifest[key].get('rrecommends', ()): - if '${PN}' in value: - value=value.split('-', 1)[1] - d.appendVar('RRECOMMENDS_' + pypackage, ' ' + pn + '-' + value) - - d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary']) - - # Prepending so to avoid python-misc getting everything - packages = newpackages + packages - d.setVar('PACKAGES', ' '.join(packages)) - d.setVar('ALLOW_EMPTY_${PN}-modules', '1') - d.setVar('ALLOW_EMPTY_${PN}-pkgutil', '1') -} - -# Files needed to create a new manifest - -do_create_manifest() { - # This task should be run with every new release of Python. - # We must ensure that PACKAGECONFIG enables everything when creating - # a new manifest, this is to base our new manifest on a complete - # native python build, containing all dependencies, otherwise the task - # wont be able to find the required files. - # e.g. BerkeleyDB is an optional build dependency so it may or may not - # be present, we must ensure it is. - - cd ${WORKDIR} - # This needs to be executed by python-native and NOT by HOST's python - nativepython3 create_manifest3.py ${PYTHON_MAJMIN} - cp python3-manifest.json.new ${THISDIR}/python3/python3-manifest.json -} - -# bitbake python -c create_manifest -# Make sure we have native python ready when we create a new manifest -addtask do_create_manifest after do_patch do_prepare_recipe_sysroot - -# manual dependency additions -RRECOMMENDS_${PN}-core_append_class-nativesdk = " nativesdk-python3-modules" -RRECOMMENDS_${PN}-crypt_append_class-target = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates" -RRECOMMENDS_${PN}-crypt_append_class-nativesdk = " ${MLPREFIX}openssl ${MLPREFIX}ca-certificates" - -# For historical reasons PN is empty and provided by python3-modules -FILES_${PN} = "" -RPROVIDES_${PN}-modules = "${PN}" - -FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3" -FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}" - -# provide python-pyvenv from python3-venv -RPROVIDES_${PN}-venv += "${MLPREFIX}python3-pyvenv" - -# package libpython3 -PACKAGES =+ "libpython3 libpython3-staticdev" -FILES_libpython3 = "${libdir}/libpython*.so.*" -FILES_libpython3-staticdev += "${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}-*/libpython${PYTHON_MAJMIN}.a" -INSANE_SKIP_${PN}-dev += "dev-elf" - -# catch all the rest (unsorted) -PACKAGES += "${PN}-misc" -RDEPENDS_${PN}-misc += "\ - ${PN}-core \ - ${PN}-email \ - ${PN}-codecs \ - ${PN}-pydoc \ - ${PN}-pickle \ - ${PN}-audio \ - ${PN}-numbers \ -" -RDEPENDS_${PN}-modules_append_class-target = " ${MLPREFIX}python3-misc" -RDEPENDS_${PN}-modules_append_class-nativesdk = " ${MLPREFIX}python3-misc" -FILES_${PN}-misc = "${libdir}/python${PYTHON_MAJMIN} ${libdir}/python${PYTHON_MAJMIN}/lib-dynload" - -# catch manpage -PACKAGES += "${PN}-man" -FILES_${PN}-man = "${datadir}/man" - -# See https://bugs.python.org/issue18748 and https://bugs.python.org/issue37395 -RDEPENDS_libpython3_append_libc-glibc = " libgcc" -RDEPENDS_${PN}-ctypes_append_libc-glibc = " ${MLPREFIX}ldconfig" -RDEPENDS_${PN}-ptest = "${PN}-modules ${PN}-tests unzip bzip2 libgcc tzdata-europe coreutils sed" -RDEPENDS_${PN}-ptest_append_libc-glibc = " locale-base-tr-tr.iso-8859-9" -RDEPENDS_${PN}-tkinter += "${@bb.utils.contains('PACKAGECONFIG', 'tk', 'tk tk-lib', '', d)}" -RDEPENDS_${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter tcl', '', d)}" -RDEPENDS_${PN}-dev = "" -RDEPENDS_${PN}-pydoc += "${PN}-io" - -RDEPENDS_${PN}-tests_append_class-target = " ${MLPREFIX}bash" -RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash" - -# Python's tests contain large numbers of files we don't need in the recipe sysroots -SYSROOT_PREPROCESS_FUNCS += " py3_sysroot_cleanup" -py3_sysroot_cleanup () { - rm -rf ${SYSROOT_DESTDIR}${libdir}/python${PYTHON_MAJMIN}/test -} |