diff options
Diffstat (limited to 'meta/recipes-devtools/python')
173 files changed, 3525 insertions, 1667 deletions
diff --git a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch index 201e3570d6..5e2ee454da 100644 --- a/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch +++ b/meta/recipes-devtools/python/files/0001-conditionally-do-not-fetch-code-by-easy_install.patch @@ -1,4 +1,4 @@ -From 234c3da52da09b28db5b2c4d33ebe9c800c461ac Mon Sep 17 00:00:00 2001 +From da88c57fe03e4474ba20325edacf519e80c1d7a8 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 @@ -15,11 +15,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> 1 file changed, 5 insertions(+) diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py -index 5a9576f..f5961cb 100644 +index fc848d0..c04a5de 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py -@@ -656,6 +656,11 @@ class easy_install(Command): - os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir)) +@@ -642,6 +642,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): @@ -27,6 +27,6 @@ index 5a9576f..f5961cb 100644 + "Please add its native recipe to DEPENDS." % spec) + return None + - if not self.editable: - self.install_site_py() - + with self._tmpdir() as tmpdir: + if not isinstance(spec, Requirement): + if URL_SCHEME(spec): diff --git a/meta/recipes-devtools/python/python-async.inc b/meta/recipes-devtools/python/python-async.inc index af887dc4e5..fde864601c 100644 --- a/meta/recipes-devtools/python/python-async.inc +++ b/meta/recipes-devtools/python/python-async.inc @@ -9,6 +9,6 @@ inherit pypi SRC_URI[md5sum] = "9b06b5997de2154f3bc0273f80bcef6b" SRC_URI[sha256sum] = "ac6894d876e45878faae493b0cf61d0e28ec417334448ac0a6ea2229d8343051" -RDEPENDS_${PN} += "${PYTHON_PN}-threading" +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 a0cd2a5fb4..5050dfd427 100644 --- a/meta/recipes-devtools/python/python-cython.inc +++ b/meta/recipes-devtools/python/python-cython.inc @@ -1,3 +1,5 @@ +SUMMARY = "The Cython language" +HOMEPAGE = "https://pypi.org/project/Cython/" DESCRIPTION = "Cython is a language specially designed for writing Python extension modules. \ It's designed to bridge the gap between the nice, high-level, easy-to-use world of Python \ and the messy, low-level world of C." @@ -7,12 +9,12 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" PYPI_PACKAGE = "Cython" BBCLASSEXTEND = "native nativesdk" -SRC_URI[sha256sum] = "22d91af5fc2253f717a1b80b8bb45acb655f643611983fd6f782b9423f8171c7" +SRC_URI[sha256sum] = "d6fac2342802c30e51426828fe084ff4deb1b3387367cf98976bb2e64b6f8e45" UPSTREAM_CHECK_REGEX = "Cython-(?P<pver>.*)\.tar" inherit pypi -RDEPENDS_${PN}_class-target += "\ +RDEPENDS:${PN}:class-target += "\ ${PYTHON_PN}-misc \ ${PYTHON_PN}-netserver \ ${PYTHON_PN}-pkgutil \ @@ -22,7 +24,7 @@ RDEPENDS_${PN}_class-target += "\ ${PYTHON_PN}-xml \ " -RDEPENDS_${PN}_class-nativesdk += "\ +RDEPENDS:${PN}:class-nativesdk += "\ nativesdk-${PYTHON_PN}-misc \ nativesdk-${PYTHON_PN}-netserver \ nativesdk-${PYTHON_PN}-pkgutil \ @@ -32,7 +34,7 @@ RDEPENDS_${PN}_class-nativesdk += "\ nativesdk-${PYTHON_PN}-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 diff --git a/meta/recipes-devtools/python/python-gitdb.inc b/meta/recipes-devtools/python/python-gitdb.inc index 618d85ff8d..9482964f30 100644 --- a/meta/recipes-devtools/python/python-gitdb.inc +++ b/meta/recipes-devtools/python/python-gitdb.inc @@ -8,11 +8,11 @@ inherit pypi PYPI_PACKAGE = "gitdb" -SRC_URI[sha256sum] = "c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9" +SRC_URI[sha256sum] = "bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa" DEPENDS = "${PYTHON_PN}-async ${PYTHON_PN}-setuptools-native ${PYTHON_PN}-smmap" -RDEPENDS_${PN} += "${PYTHON_PN}-async \ +RDEPENDS:${PN} += "${PYTHON_PN}-async \ ${PYTHON_PN}-compression \ ${PYTHON_PN}-crypt \ ${PYTHON_PN}-io \ 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..59fbc6dce4 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} += "${PYTHON_PN}-pip" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python-pycryptodome.inc b/meta/recipes-devtools/python/python-pycryptodome.inc index 68b084eb04..29fe80d224 100644 --- a/meta/recipes-devtools/python/python-pycryptodome.inc +++ b/meta/recipes-devtools/python/python-pycryptodome.inc @@ -3,22 +3,24 @@ DESCRIPTION = "PyCryptodome is a self-contained Python package of low-level\ cryptographic primitives." HOMEPAGE = "http://www.pycryptodome.org" LICENSE = "PD & BSD-2-Clause" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=6dc0e2a13d2f25d6f123c434b761faba" +LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=29242a70410a4eeff488a28164e7ab93" inherit pypi -RDEPENDS_${PN} += " \ +PYPI_PACKAGE_EXT = "tar.gz" + +RDEPENDS:${PN} += " \ ${PYTHON_PN}-io \ ${PYTHON_PN}-math \ " -RDEPENDS_${PN}-tests += " \ +RDEPENDS:${PN}-tests += " \ ${PYTHON_PN}-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-setuptools.inc b/meta/recipes-devtools/python/python-setuptools.inc deleted file mode 100644 index ecf1205752..0000000000 --- a/meta/recipes-devtools/python/python-setuptools.inc +++ /dev/null @@ -1,60 +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=9a33897f1bca1160d7aad3835152e158" - -PYPI_PACKAGE_EXT = "zip" - -inherit pypi - -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] = "843037738d1e34e8b326b5e061f474aca6ef9d7ece41329afbc8aac6195a3920" - -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}-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 \ -" -# Due to the way OE-Core implemented native recipes, the native class cannot -# have a dependency on something that is not a recipe name. Work around that by -# manually setting RPROVIDES. -RDEPENDS_${PN}_append = " ${PYTHON_PN}-pkg-resources" -RPROVIDES_append_class-native = " ${PYTHON_PN}-pkg-resources-native" diff --git a/meta/recipes-devtools/python/python-six.inc b/meta/recipes-devtools/python/python-six.inc index df97f845bc..aac6765149 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} = "${PYTHON_PN}-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 index e8d308b717..ef5e15cc3a 100644 --- a/meta/recipes-devtools/python/python-testtools.inc +++ b/meta/recipes-devtools/python/python-testtools.inc @@ -6,8 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a" inherit pypi -SRC_URI[md5sum] = "e8fc7185b47cfb908c641f8c4b2a6add" -SRC_URI[sha256sum] = "64c974a6cca4385d05f4bbfa2deca1c39ce88ede31c3448bee86a7259a9a61c8" +SRC_URI[sha256sum] = "57c13433d94f9ffde3be6534177d10fb0c1507cc499319128958ca91a65cb23f" DEPENDS += " \ ${PYTHON_PN}-pbr \ @@ -18,7 +17,7 @@ DEPENDS += " \ ${PYTHON_PN}-pbr-native \ " -RDEPENDS_${PN} += "\ +RDEPENDS:${PN} += "\ ${PYTHON_PN}-doctest \ ${PYTHON_PN}-extras \ ${PYTHON_PN}-pbr \ diff --git a/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb b/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb new file mode 100644 index 0000000000..c052cb8c82 --- /dev/null +++ b/meta/recipes-devtools/python/python3-asn1crypto_1.4.0.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "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=7439e38f5e04ff62fae436184786b7ca" + +PYPI_PACKAGE = "asn1crypto" + +SRC_URI[md5sum] = "00bf5b72d37778e62cc73b1d8909ae27" +SRC_URI[sha256sum] = "f4f6e119474e58e04a2b1af817eb585b4fd72bdd89b998624712b5c99be7641c" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target += " \ + ${PYTHON_PN}-codecs \ + ${PYTHON_PN}-crypt \ + ${PYTHON_PN}-ctypes \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-io \ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-numbers \ + ${PYTHON_PN}-shell \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-atomicwrites/run-ptest b/meta/recipes-devtools/python/python3-atomicwrites/run-ptest new file mode 100644 index 0000000000..b63c4de0d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-atomicwrites/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-atomicwrites_1.4.0.bb b/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb new file mode 100644 index 0000000000..065a2c7b4f --- /dev/null +++ b/meta/recipes-devtools/python/python3-atomicwrites_1.4.0.bb @@ -0,0 +1,25 @@ +DESCRIPTION = "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" + +inherit pypi setuptools3 ptest + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + ${PYTHON_PN}-pytest \ + ${PYTHON_PN}-unixadmin \ +" + +do_install_ptest() { + install -d ${D}${PTEST_PATH}/tests + cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/ +} + +RDEPENDS:${PN} = "${PYTHON_PN}-misc" diff --git a/meta/recipes-devtools/python/python3-attrs_21.4.0.bb b/meta/recipes-devtools/python/python3-attrs_21.4.0.bb new file mode 100644 index 0000000000..20e4541f81 --- /dev/null +++ b/meta/recipes-devtools/python/python3-attrs_21.4.0.bb @@ -0,0 +1,19 @@ +DESCRIPTION = "Classes Without Boilerplate" +HOMEPAGE = "http://www.attrs.org/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=d4ab25949a73fe7d4fdee93bcbdbf8ff" + +SRC_URI[sha256sum] = "626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" + +inherit pypi setuptools_build_meta + +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-bcrypt/run-ptest b/meta/recipes-devtools/python/python3-bcrypt/run-ptest new file mode 100644 index 0000000000..b63c4de0d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-bcrypt/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-bcrypt_3.2.0.bb b/meta/recipes-devtools/python/python3-bcrypt_3.2.0.bb new file mode 100644 index 0000000000..731aff299b --- /dev/null +++ b/meta/recipes-devtools/python/python3-bcrypt_3.2.0.bb @@ -0,0 +1,31 @@ +DESCRIPTION = "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 += "${PYTHON_PN}-cffi-native" + +SRC_URI[md5sum] = "fe31390dab603728f756cd3d6830c80a" +SRC_URI[sha256sum] = "5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29" + +inherit pypi setuptools_build_meta 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/ +} + +RDEPENDS:${PN}:class-target += "\ + ${PYTHON_PN}-cffi \ + ${PYTHON_PN}-ctypes \ + ${PYTHON_PN}-shell \ + ${PYTHON_PN}-six \ +" diff --git a/meta/recipes-devtools/python/python3-cffi_1.15.0.bb b/meta/recipes-devtools/python/python3-cffi_1.15.0.bb new file mode 100644 index 0000000000..c36f23b3dd --- /dev/null +++ b/meta/recipes-devtools/python/python3-cffi_1.15.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 ${PYTHON_PN}-pycparser" + +SRC_URI[sha256sum] = "920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954" + +inherit pypi setuptools3 + +RDEPENDS:${PN}:class-target = " \ + ${PYTHON_PN}-ctypes \ + ${PYTHON_PN}-io \ + ${PYTHON_PN}-pycparser \ + ${PYTHON_PN}-shell \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb b/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb new file mode 100644 index 0000000000..da6718fb90 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography-vectors_36.0.1.bb @@ -0,0 +1,29 @@ +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] = "fc8490afd5424342b868215435bd174dcd76ab396b4ea9435498be5721dcd598" + +PYPI_PACKAGE = "cryptography_vectors" + +inherit pypi setuptools3 + +DEPENDS += " \ + ${PYTHON_PN}-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 = "" diff --git a/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch b/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch new file mode 100644 index 0000000000..d7ab757bb5 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography/0001-Cargo.toml-specify-pem-version.patch @@ -0,0 +1,31 @@ +From ec8d3f3c61280c8140b34ed1479baef5e706f064 Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Fri, 14 Jan 2022 22:02:25 -0800 +Subject: [PATCH] Cargo.toml: specify pem version + +pem = "1.0" is not resolving, specify the current +pem = { version: "1.0.2"} + +Upstream-Status: Pending + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + src/rust/Cargo.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml +index 617167d0..174eaa80 100644 +--- a/src/rust/Cargo.toml ++++ b/src/rust/Cargo.toml +@@ -9,7 +9,7 @@ publish = false + lazy_static = "1" + pyo3 = { version = "0.15.1" } + asn1 = { version = "0.8.7", default-features = false, features = ["derive"] } +-pem = "1.0" ++pem = { version = "1.0.2" } + chrono = { version = "0.4", default-features = false, features = ["alloc", "clock"] } + ouroboros = "0.13" + +-- +2.30.2 + diff --git a/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch b/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch new file mode 100644 index 0000000000..366e3a4d39 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography/0002-Cargo.toml-edition-2018-2021.patch @@ -0,0 +1,28 @@ +From 4b73298b214a5b69ea6edf3c2e21dd82b2b29708 Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Fri, 14 Jan 2022 22:34:59 -0800 +Subject: [PATCH 2/2] Cargo.toml: edition 2018 -> 2021 + +Upstream-Status: Pending + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + src/rust/Cargo.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml +index 174eaa80..7ad053d9 100644 +--- a/src/rust/Cargo.toml ++++ b/src/rust/Cargo.toml +@@ -2,7 +2,7 @@ + name = "cryptography-rust" + version = "0.1.0" + authors = ["The cryptography developers <cryptography-dev@python.org>"] +-edition = "2018" ++edition = "2021" + publish = false + + [dependencies] +-- +2.30.2 + 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..c111a9074c --- /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.: + raise RuntimeError("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..3089df8781 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography/run-ptest @@ -0,0 +1,4 @@ +#!/bin/sh +if ./check-memfree.py; then + pytest -vvvv tests/ -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}}' +fi diff --git a/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch b/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch new file mode 100644 index 0000000000..64248d57bd --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography/skip-leaky-test.patch @@ -0,0 +1,19 @@ +Mark as test as expected-failure, OpenSSL is leaking memory. + +xfail not skip so we can remove this when OpenSSL doesn't leak anymore. + +Upstream-Status: Inappropriate +Signed-off-by: Ross Burton <ross.burton@arm.com> + +diff --git a/tests/hazmat/backends/test_openssl_memleak.py b/tests/hazmat/backends/test_openssl_memleak.py +index 835c9256..639f6ba2 100644 +--- a/tests/hazmat/backends/test_openssl_memleak.py ++++ b/tests/hazmat/backends/test_openssl_memleak.py +@@ -466,6 +466,7 @@ class TestOpenSSLMemoryLeaks: + ) + ) + ++ @pytest.mark.xfail(reason="has memory leaks") + def test_create_certificate_with_extensions(self): + assert_no_memory_leaks( + textwrap.dedent( diff --git a/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb b/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb new file mode 100644 index 0000000000..e33eaa5083 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cryptography_36.0.1.bb @@ -0,0 +1,123 @@ +SUMMARY = "Provides cryptographic recipes and primitives to python developers" +HOMEPAGE = "https://cryptography.io/" +SECTION = "devel/python" +LICENSE = "( Apache-2.0 | BSD-3-Clause ) & PSF-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=bf405a8056a6647e7d077b0e7bc36aba \ + file://LICENSE.APACHE;md5=4e168cce331e5c827d4c2b68a6200e1b \ + file://LICENSE.BSD;md5=5ae30ba4123bc4f2fa49aa0b0dce887b \ + file://LICENSE.PSF;md5=43c37d21e1dbad10cddcd150ba2c0595 \ + " +LDSHARED += "-pthread" + +SRC_URI[sha256sum] = "53e5c1dc3d7a953de055d77bef2ff607ceef7a2aac0353b5d630ab67f7423638" + +SRC_URI += " \ + file://run-ptest \ + file://check-memfree.py \ + file://0001-Cargo.toml-specify-pem-version.patch \ + file://0002-Cargo.toml-edition-2018-2021.patch \ + file://skip-leaky-test.patch \ +" + +inherit pypi python_setuptools3_rust + +DEPENDS += " \ + ${PYTHON_PN}-asn1crypto-native \ + ${PYTHON_PN}-cffi-native \ + ${PYTHON_PN}-setuptools-rust-native \ + ${PYTHON_PN}-six-native \ +" + +SRC_URI += " \ + crate://crates.io/Inflector/0.11.4 \ + crate://crates.io/aliasable/0.1.3 \ + crate://crates.io/asn1/0.8.7 \ + crate://crates.io/asn1_derive/0.8.7 \ + crate://crates.io/autocfg/1.0.1 \ + crate://crates.io/base64/0.13.0 \ + crate://crates.io/bitflags/1.3.2 \ + crate://crates.io/cfg-if/1.0.0 \ + crate://crates.io/chrono/0.4.19 \ + crate://crates.io/indoc-impl/0.3.6 \ + crate://crates.io/indoc/0.3.6 \ + crate://crates.io/instant/0.1.12 \ + crate://crates.io/lazy_static/1.4.0 \ + crate://crates.io/libc/0.2.112 \ + crate://crates.io/lock_api/0.4.5 \ + crate://crates.io/num-integer/0.1.44 \ + crate://crates.io/num-traits/0.2.14 \ + crate://crates.io/once_cell/1.9.0 \ + crate://crates.io/ouroboros/0.13.0 \ + crate://crates.io/ouroboros_macro/0.13.0 \ + crate://crates.io/parking_lot/0.11.2 \ + crate://crates.io/parking_lot_core/0.8.5 \ + crate://crates.io/paste-impl/0.1.18 \ + crate://crates.io/paste/0.1.18 \ + crate://crates.io/pem/1.0.2 \ + crate://crates.io/proc-macro-error-attr/1.0.4 \ + crate://crates.io/proc-macro-error/1.0.4 \ + crate://crates.io/proc-macro-hack/0.5.19 \ + crate://crates.io/proc-macro2/1.0.36 \ + crate://crates.io/pyo3-build-config/0.15.1 \ + crate://crates.io/pyo3-macros-backend/0.15.1 \ + crate://crates.io/pyo3-macros/0.15.1 \ + crate://crates.io/pyo3/0.15.1 \ + crate://crates.io/quote/1.0.14 \ + crate://crates.io/redox_syscall/0.2.10 \ + crate://crates.io/scopeguard/1.1.0 \ + crate://crates.io/smallvec/1.7.0 \ + crate://crates.io/stable_deref_trait/1.2.0 \ + crate://crates.io/syn/1.0.85 \ + crate://crates.io/unicode-xid/0.2.2 \ + crate://crates.io/unindent/0.1.7 \ + crate://crates.io/version_check/0.9.4 \ + crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \ + crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \ + crate://crates.io/winapi/0.3.9 \ +" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-asn1crypto \ + ${PYTHON_PN}-cffi \ + ${PYTHON_PN}-idna \ + ${PYTHON_PN}-setuptools \ + ${PYTHON_PN}-six \ +" + +RDEPENDS:${PN}:append:class-target = " \ + ${PYTHON_PN}-numbers \ + ${PYTHON_PN}-threading \ +" + +RDEPENDS:${PN}-ptest += " \ + ${PYTHON_PN}-bcrypt \ + ${PYTHON_PN}-cryptography-vectors \ + ${PYTHON_PN}-hypothesis \ + ${PYTHON_PN}-iso8601 \ + ${PYTHON_PN}-pretend \ + ${PYTHON_PN}-psutil \ + ${PYTHON_PN}-pytest \ + ${PYTHON_PN}-pytest-subtests \ + ${PYTHON_PN}-pytz \ + ${PYTHON_PN}-tomli \ +" + +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/ + 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}-ptest += " \ + ${PTEST_PATH}/check-memfree.py \ +" +FILES:${PN}-dbg += " \ + ${PYTHON_SITEPACKAGES_DIR}/${SRCNAME}/hazmat/bindings/.debug \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-cython_0.29.20.bb b/meta/recipes-devtools/python/python3-cython_0.29.20.bb deleted file mode 100644 index 2ce6bdbd68..0000000000 --- a/meta/recipes-devtools/python/python3-cython_0.29.20.bb +++ /dev/null @@ -1,18 +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 -} diff --git a/meta/recipes-devtools/python/python3-cython_0.29.28.bb b/meta/recipes-devtools/python/python3-cython_0.29.28.bb new file mode 100644 index 0000000000..26333cb271 --- /dev/null +++ b/meta/recipes-devtools/python/python3-cython_0.29.28.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 +} + +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-dbus_1.2.16.bb b/meta/recipes-devtools/python/python3-dbus_1.2.18.bb index e1700fa869..c4687de13c 100644 --- a/meta/recipes-devtools/python/python3-dbus_1.2.16.bb +++ b/meta/recipes-devtools/python/python3-dbus_1.2.18.bb @@ -7,20 +7,19 @@ 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" +SRC_URI[sha256sum] = "92bdd1e68b45596c833307a5ff4b217ee6929a1502f5341bae28fd120acf7260" S = "${WORKDIR}/dbus-python-${PV}" -inherit distutils3-base autotools pkgconfig +inherit setuptools3-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" +RDEPENDS:${PN} = "python3-io python3-logging python3-stringold python3-threading python3-xml" -FILES_${PN}-dev += "${libdir}/pkgconfig" +FILES:${PN}-dev += "${libdir}/pkgconfig" BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-dbusmock_0.19.bb b/meta/recipes-devtools/python/python3-dbusmock_0.26.1.bb index d297dbc1df..dc98810726 100644 --- a/meta/recipes-devtools/python/python3-dbusmock_0.19.bb +++ b/meta/recipes-devtools/python/python3-dbusmock_0.26.1.bb @@ -1,15 +1,16 @@ 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" +LICENSE = "GPL-3.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=e6a600fd5e1d9cbde2d983680233ad02" -SRC_URI[sha256sum] = "497f30eed2fcd5deaa2633b9622e4e99af4bdfba4e972b350ba630bac6fc86c2" +SRC_URI[sha256sum] = "0e95ef6ec1e6b58aeb0e08839a76972debea94184570f09e29e5f12551399e55" PYPI_PACKAGE = "python-dbusmock" inherit pypi setuptools3 -RDEPENDS_${PN} += "\ +RDEPENDS:${PN} += "\ ${PYTHON_PN}-dbus \ ${PYTHON_PN}-pygobject \ ${PYTHON_PN}-unittest \ 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.18.1.bb b/meta/recipes-devtools/python/python3-docutils_0.18.1.bb new file mode 100644 index 0000000000..e4ddd01978 --- /dev/null +++ b/meta/recipes-devtools/python/python3-docutils_0.18.1.bb @@ -0,0 +1,11 @@ +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=fecee07ad8df9116e1f739e2ed2ea513" + +SRC_URI[sha256sum] = "679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-dtschema_2022.1.bb b/meta/recipes-devtools/python/python3-dtschema_2022.1.bb new file mode 100644 index 0000000000..d73e5810b8 --- /dev/null +++ b/meta/recipes-devtools/python/python3-dtschema_2022.1.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "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 setuptools3 + +PYPI_PACKAGE = "dtschema" + +SRC_URI[sha256sum] = "1b92b3b9a31b6e4b8b2be70dbf3065775530bc4c52e991955b67be19741114c5" + +DEPENDS += "python3-setuptools-scm-native" +RDEPENDS:${PN} += "python3-ruamel-yaml python3-jsonschema python3-rfc3987" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb new file mode 100644 index 0000000000..8d107384a6 --- /dev/null +++ b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb @@ -0,0 +1,33 @@ +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] = "3c9bd9c140515bfe62dd938c6610d10d6efb9e35cc647fc614fe5fb3a5036682" + +inherit pypi python_flit_core + +# Need to install by hand as there's a dependency loop +DEPENDS:remove:class-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_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.3.bb b/meta/recipes-devtools/python/python3-git_3.1.27.bb index 064868d858..3e7aa883f2 100644 --- a/meta/recipes-devtools/python/python3-git_3.1.3.bb +++ b/meta/recipes-devtools/python/python3-git_3.1.27.bb @@ -10,13 +10,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=8b8d26c37c1d5a04f9b0186edbebc183" PYPI_PACKAGE = "GitPython" -inherit pypi setuptools3 +inherit pypi setuptools_build_meta -SRC_URI[sha256sum] = "e107af4d873daed64648b4f4beb89f89f0cfbe3ef558fc7821ed2331c2f8da1a" +SRC_URI[sha256sum] = "1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704" DEPENDS += " ${PYTHON_PN}-gitdb" -RDEPENDS_${PN} += " \ +RDEPENDS:${PN} += " \ ${PYTHON_PN}-datetime \ ${PYTHON_PN}-gitdb \ ${PYTHON_PN}-io \ 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-gitdb_4.0.9.bb b/meta/recipes-devtools/python/python3-gitdb_4.0.9.bb new file mode 100644 index 0000000000..2dcd9c8aff --- /dev/null +++ b/meta/recipes-devtools/python/python3-gitdb_4.0.9.bb @@ -0,0 +1,3 @@ +inherit setuptools3 +require python-gitdb.inc + 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..8d44d7c49a --- /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 -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-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.39.2.bb b/meta/recipes-devtools/python/python3-hypothesis_6.39.2.bb new file mode 100644 index 0000000000..01732d0087 --- /dev/null +++ b/meta/recipes-devtools/python/python3-hypothesis_6.39.2.bb @@ -0,0 +1,38 @@ +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] = "7a16ba804baeebdcc5dc4638c32c5fc3fc552c1be30ae21a84c5d9c802b06e31" + +RDEPENDS:${PN} += " \ + python3-attrs \ + python3-compression \ + python3-core \ + python3-json \ + python3-sortedcontainers \ + python3-statistics \ + python3-unittest \ + " + +RDEPENDS:${PN}-ptest += " \ + ${PYTHON_PN}-pytest \ + " + +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-idna_3.3.bb b/meta/recipes-devtools/python/python3-idna_3.3.bb new file mode 100644 index 0000000000..ee92f44fd5 --- /dev/null +++ b/meta/recipes-devtools/python/python3-idna_3.3.bb @@ -0,0 +1,19 @@ +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=239668a7c6066d9e0c5382e9c8c6c0e1" + +SRC_URI[sha256sum] = "9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d" + +inherit pypi setuptools3 + +# Remove bundled egg-info +do_compile:prepend() { + rm -rf ${S}/idna.egg-info +} + +RDEPENDS:${PN}:class-target = "\ + ${PYTHON_PN}-codecs \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.bb b/meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.bb new file mode 100644 index 0000000000..b2da69b055 --- /dev/null +++ b/meta/recipes-devtools/python/python3-importlib-metadata_4.11.3.bb @@ -0,0 +1,20 @@ +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 setuptools_build_meta + +PYPI_PACKAGE = "importlib_metadata" +UPSTREAM_CHECK_REGEX = "/importlib-metadata/(?P<pver>(\d+[\.\-_]*)+)/" + +SRC_URI[sha256sum] = "ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539" + +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-iniconfig_1.1.1.bb b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb new file mode 100644 index 0000000000..5338980e69 --- /dev/null +++ b/meta/recipes-devtools/python/python3-iniconfig_1.1.1.bb @@ -0,0 +1,12 @@ +SUMMARY = "A small and simple INI-file parser module" +HOMEPAGE = "https://pypi.org/project/iniconfig/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9" + +SRC_URI[md5sum] = "0b7f3be87481211c183eae095bcea6f1" +SRC_URI[sha256sum] = "bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" + +DEPENDS += "python3-setuptools-scm-native" + +inherit pypi setuptools_build_meta 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..ef10ef1b45 --- /dev/null +++ b/meta/recipes-devtools/python/python3-installer/interpreter.patch @@ -0,0 +1,61 @@ +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> + +diff --git a/src/installer/__main__.py b/src/installer/__main__.py +index 3357ec5..d2fd8d2 100644 +--- a/src/installer/__main__.py ++++ b/src/installer/__main__.py +@@ -23,6 +23,13 @@ def _get_main_parser() -> argparse.ArgumentParser: + type=str, + help="destination directory (prefix to prepend to each file)", + ) ++ parser.add_argument( ++ "--interpreter", ++ "-i", ++ type=str, ++ default=sys.executable, ++ help=f"interpreter (defaults to {sys.executable})", ++ ) + parser.add_argument( + "--compile-bytecode", + action="append", +@@ -73,7 +80,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), +- 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.5.1.bb b/meta/recipes-devtools/python/python3-installer_0.5.1.bb new file mode 100644 index 0000000000..f4f9e1bde6 --- /dev/null +++ b/meta/recipes-devtools/python/python3-installer_0.5.1.bb @@ -0,0 +1,22 @@ +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] = "f970995ec2bb815e2fdaf7977b26b2091e1e386f0f42eafd5ac811953dc5d445" + +inherit pypi python_flit_core + +DEPENDS:remove:class-native = "python3-installer-native" +DEPENDS:append:class-native = " unzip-native" + +do_install:class-native () { + python_pep517_do_bootstrap_install +} + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-iso8601_1.0.2.bb b/meta/recipes-devtools/python/python3-iso8601_1.0.2.bb new file mode 100644 index 0000000000..93af233d29 --- /dev/null +++ b/meta/recipes-devtools/python/python3-iso8601_1.0.2.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=b05625f2336fa024e8d57e65c6595844" + +SRC_URI[sha256sum] = "27f503220e6845d9db954fb212b95b0362d8b7e6c1b2326a87061c3de93594b1" + +inherit pypi python_poetry_core + +RDEPENDS:${PN} += "\ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-numbers \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-jinja2/run-ptest b/meta/recipes-devtools/python/python3-jinja2/run-ptest new file mode 100644 index 0000000000..5cec711696 --- /dev/null +++ b/meta/recipes-devtools/python/python3-jinja2/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh + +pytest diff --git a/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb b/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb new file mode 100644 index 0000000000..c416acbf92 --- /dev/null +++ b/meta/recipes-devtools/python/python3-jinja2_3.0.3.bb @@ -0,0 +1,48 @@ +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] = "611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7" + +PYPI_PACKAGE = "Jinja2" + +CVE_PRODUCT = "jinja2 jinja" + +CLEANBROKEN = "1" + +inherit pypi setuptools3 +inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)} + +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}-toml \ + ${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-jsonpointer/run-ptest b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest new file mode 100644 index 0000000000..51e609f4ba --- /dev/null +++ b/meta/recipes-devtools/python/python3-jsonpointer/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 tests.py diff --git a/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb b/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb new file mode 100644 index 0000000000..225fde7556 --- /dev/null +++ b/meta/recipes-devtools/python/python3-jsonpointer_2.2.bb @@ -0,0 +1,26 @@ +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] = "f09f8deecaaa5aea65b5eb4f67ca4e54e1a61f7a11c75085e360fe6feb6a48bf" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-json \ +" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + ${PYTHON_PN}-pytest \ +" + +do_install_ptest() { + cp -f ${S}/tests.py ${D}${PTEST_PATH}/ +} diff --git a/meta/recipes-devtools/python/python3-jsonschema_4.4.0.bb b/meta/recipes-devtools/python/python3-jsonschema_4.4.0.bb new file mode 100644 index 0000000000..4c14229641 --- /dev/null +++ b/meta/recipes-devtools/python/python3-jsonschema_4.4.0.bb @@ -0,0 +1,48 @@ +SUMMARY = "An implementation of JSON Schema validation for Python" +HOMEPAGE = "https://github.com/Julian/jsonschema" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://COPYING;md5=7a60a81c146ec25599a3e1dabb8610a8 \ + file://json/LICENSE;md5=9d4de43111d33570c8fe49b4cb0e01af" + +SRC_URI[sha256sum] = "636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83" + +inherit pypi setuptools_build_meta + +DEPENDS += "${PYTHON_PN}-vcversioner-native ${PYTHON_PN}-setuptools-scm-native" + +PACKAGECONFIG ??= "format" +PACKAGECONFIG[format] = ",,,\ + ${PYTHON_PN}-idna \ + ${PYTHON_PN}-jsonpointer \ + ${PYTHON_PN}-webcolors \ + ${PYTHON_PN}-rfc3987 \ + ${PYTHON_PN}-strict-rfc3339 \ +" +PACKAGECONFIG[nongpl] = ",,,\ + ${PYTHON_PN}-idna \ + ${PYTHON_PN}-jsonpointer \ + ${PYTHON_PN}-webcolors \ + ${PYTHON_PN}-rfc3986-validator \ + ${PYTHON_PN}-rfc3339-validator \ +" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-attrs \ + ${PYTHON_PN}-core \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-importlib-metadata \ + ${PYTHON_PN}-io \ + ${PYTHON_PN}-json \ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-numbers \ + ${PYTHON_PN}-pkgutil \ + ${PYTHON_PN}-pprint \ + ${PYTHON_PN}-pyrsistent \ + ${PYTHON_PN}-shell \ + ${PYTHON_PN}-six \ + ${PYTHON_PN}-unittest \ + ${PYTHON_PN}-setuptools-scm \ + ${PYTHON_PN}-zipp \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb b/meta/recipes-devtools/python/python3-libarchive-c_4.0.bb index 3a2d8733e9..3c6bc1e1ca 100644 --- a/meta/recipes-devtools/python/python3-libarchive-c_2.9.bb +++ b/meta/recipes-devtools/python/python3-libarchive-c_4.0.bb @@ -9,13 +9,13 @@ PYPI_PACKAGE = "libarchive-c" inherit pypi setuptools3 -SRC_URI[md5sum] = "083bd2cb0043c1e22a52cb9a05e31532" -SRC_URI[sha256sum] = "9919344cec203f5db6596a29b5bc26b07ba9662925a05e24980b84709232ef60" +SRC_URI[sha256sum] = "a5b41ade94ba58b198d778e68000f6b7de41da768de7140c984f71d7fa8416e5" -RDEPENDS_${PN} += "\ +RDEPENDS:${PN} += "\ libarchive \ ${PYTHON_PN}-ctypes \ ${PYTHON_PN}-mmap \ + ${PYTHON_PN}-logging \ " BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python3-magic_0.4.18.bb b/meta/recipes-devtools/python/python3-magic_0.4.25.bb index 101b96d31c..efc8b6daaa 100644 --- a/meta/recipes-devtools/python/python3-magic_0.4.18.bb +++ b/meta/recipes-devtools/python/python3-magic_0.4.25.bb @@ -5,18 +5,18 @@ DESCRIPTION = "This module uses ctypes to access the libmagic file type \ HOMEPAGE = "http://github.com/ahupp/python-magic" LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=16a934f165e8c3245f241e77d401bb88" +LIC_FILES_CHKSUM = "file://LICENSE;md5=61495c152d794e6be5799a9edca149e3" PYPI_PACKAGE = "python-magic" inherit pypi setuptools3 -SRC_URI[md5sum] = "5edc6caa39cc62641850f6b1b6f284ba" -SRC_URI[sha256sum] = "b757db2a5289ea3f1ced9e60f072965243ea43a2221430048fd8cacab17be0ce" +SRC_URI[sha256sum] = "21f5f542aa0330f5c8a64442528542f6215c8e18d2466b399b0d9d39356d83fc" -RDEPENDS_${PN} += "file \ +RDEPENDS:${PN} += "file \ ${PYTHON_PN}-ctypes \ ${PYTHON_PN}-io \ + ${PYTHON_PN}-logging \ ${PYTHON_PN}-shell" BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python3-mako_1.1.3.bb b/meta/recipes-devtools/python/python3-mako_1.1.6.bb index cda4e99220..23e13cff94 100644 --- a/meta/recipes-devtools/python/python3-mako_1.1.3.bb +++ b/meta/recipes-devtools/python/python3-mako_1.1.6.bb @@ -6,15 +6,13 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=943eb67718222db21d44a4ef1836675f" PYPI_PACKAGE = "Mako" -inherit pypi setuptools3 +inherit pypi setuptools_build_meta -SRC_URI[sha256sum] = "8195c8c1400ceb53496064314c6736719c6f25e7479cd24c77be3d9361cddc27" +SRC_URI[sha256sum] = "4e9e345a41924a954251b95b4b28e14a301145b544901332e658907a7464b6b2" -RDEPENDS_${PN} = "${PYTHON_PN}-html \ +RDEPENDS:${PN} = "${PYTHON_PN}-html \ ${PYTHON_PN}-netclient \ ${PYTHON_PN}-threading \ " -RDEPENDS_${PN}_class-native = "" - BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-markdown_3.3.6.bb b/meta/recipes-devtools/python/python3-markdown_3.3.6.bb new file mode 100644 index 0000000000..a46a9ae066 --- /dev/null +++ b/meta/recipes-devtools/python/python3-markdown_3.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=745aaad0c69c60039e638bff9ffc59ed" + +inherit pypi setuptools_build_meta + +PYPI_PACKAGE = "Markdown" +SRC_URI[sha256sum] = "76df8ae32294ec39dcf89340382882dfa12975f87f45c3ed1ecdb1e8cefc7006" + +BBCLASSEXTEND = "native" + +RDEPENDS:${PN} += "${PYTHON_PN}-logging ${PYTHON_PN}-setuptools" diff --git a/meta/recipes-devtools/python/python3-markupsafe/run-ptest b/meta/recipes-devtools/python/python3-markupsafe/run-ptest new file mode 100644 index 0000000000..5cec711696 --- /dev/null +++ b/meta/recipes-devtools/python/python3-markupsafe/run-ptest @@ -0,0 +1,3 @@ +#!/bin/sh + +pytest diff --git a/meta/recipes-devtools/python/python3-markupsafe_2.1.0.bb b/meta/recipes-devtools/python/python3-markupsafe_2.1.0.bb new file mode 100644 index 0000000000..953ea01cfe --- /dev/null +++ b/meta/recipes-devtools/python/python3-markupsafe_2.1.0.bb @@ -0,0 +1,27 @@ +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[sha256sum] = "80beaf63ddfbc64a0452b841d8036ca0611e049650e20afcb882f5d3c266d65f" + +PYPI_PACKAGE = "MarkupSafe" +inherit pypi setuptools3 +inherit ${@bb.utils.filter('DISTRO_FEATURES', 'ptest', d)} + +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-more-itertools/run-ptest b/meta/recipes-devtools/python/python3-more-itertools/run-ptest new file mode 100644 index 0000000000..3385d68939 --- /dev/null +++ b/meta/recipes-devtools/python/python3-more-itertools/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-more-itertools_8.12.0.bb b/meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb new file mode 100644 index 0000000000..c1e34b205d --- /dev/null +++ b/meta/recipes-devtools/python/python3-more-itertools_8.12.0.bb @@ -0,0 +1,27 @@ +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] = "7dc6ad46f05f545f900dd59e8dfb4e84a4827b97b3cfecb175ea0c7d247f6064" + +inherit pypi setuptools3 ptest + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-asyncio \ + " + +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-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..9f5f25f9b5 --- /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,72 @@ +From 27f6687e49bf555fc494d2f14bae6ecd0fa30f14 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 82e864a..135246d 100644 +--- a/numpy/distutils/system_info.py ++++ b/numpy/distutils/system_info.py +@@ -323,44 +323,14 @@ if sys.platform == 'win32': + 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')) +-- +2.25.1 + 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/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.22.3.bb b/meta/recipes-devtools/python/python3-numpy_1.22.3.bb new file mode 100644 index 0000000000..b5b1c4e714 --- /dev/null +++ b/meta/recipes-devtools/python/python3-numpy_1.22.3.bb @@ -0,0 +1,72 @@ +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=8026691468924fb6ec155dadfe2a1a7f" + +SRCNAME = "numpy" + +SRC_URI = "https://github.com/${SRCNAME}/${SRCNAME}/releases/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://run-ptest \ + " +SRC_URI[sha256sum] = "a906c0b4301a3d62ccf66d058fe779a65c1c34f6719ef2058f96e1856f48bca5" + +UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases" +UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar" + +DEPENDS += "python3-cython-native" + +inherit ptest setuptools3 + +S = "${WORKDIR}/numpy-${PV}" + +CLEANBROKEN = "1" + +do_compile:prepend() { + export NPY_DISABLE_SVML=1 +} + +# 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 +do_install:append() { + rm ${D}${PYTHON_SITEPACKAGES_DIR}/numpy/typing/tests/data/pass/__pycache__/literal.cpython* +} + +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} = "${PYTHON_PN}-unittest \ + ${PYTHON_PN}-difflib \ + ${PYTHON_PN}-pprint \ + ${PYTHON_PN}-pickle \ + ${PYTHON_PN}-shell \ + ${PYTHON_PN}-doctest \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-distutils \ + ${PYTHON_PN}-misc \ + ${PYTHON_PN}-mmap \ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-numbers \ + ${PYTHON_PN}-pydoc \ + ${PYTHON_PN}-pkgutil \ + ${PYTHON_PN}-email \ + ${PYTHON_PN}-compression \ + ${PYTHON_PN}-ctypes \ + ${PYTHON_PN}-threading \ + ${PYTHON_PN}-multiprocessing \ + ${PYTHON_PN}-json \ +" +RDEPENDS:${PN}-ptest += "${PYTHON_PN}-pytest \ + ${PYTHON_PN}-hypothesis \ + ${PYTHON_PN}-sortedcontainers \ + ${PYTHON_PN}-resource \ + ldd \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-packaging_21.3.bb b/meta/recipes-devtools/python/python3-packaging_21.3.bb new file mode 100644 index 0000000000..a81fd94d37 --- /dev/null +++ b/meta/recipes-devtools/python/python3-packaging_21.3.bb @@ -0,0 +1,12 @@ +DESCRIPTION = "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] = "dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb" + +inherit pypi setuptools_build_meta + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += "${PYTHON_PN}-pyparsing" 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..673b5c7ef0 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pathlib2_2.3.7.bb @@ -0,0 +1,12 @@ +DESCRIPTION = "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} += "${PYTHON_PN}-six ${PYTHON_PN}-ctypes" + +BBCLASSEXTEND = "native nativesdk" 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_5.8.1.bb b/meta/recipes-devtools/python/python3-pbr_5.8.1.bb new file mode 100644 index 0000000000..c8664018fa --- /dev/null +++ b/meta/recipes-devtools/python/python3-pbr_5.8.1.bb @@ -0,0 +1,4 @@ +inherit setuptools3 +require python-pbr.inc + +SRC_URI[sha256sum] = "66bc5a34912f408bb3925bf21231cb6f59206267b7f63f3503ef865c1a292e25" 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 index 00cffe169b..d6c27b8461 100644 --- 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 @@ -1,50 +1,108 @@ -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 +From dca973830d4eee3e0f79e61237c44a9dd8201641 Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <trevor.gamblin@windriver.com> +Date: Tue, 22 Jun 2021 12:31:46 -0400 Subject: [PATCH] change shebang to python3 -Upstream-Status: Pending +Upstream-Status: Inappropriate (OE-specific) -pip will drop support of python2 from 21.0 +Despite no longer supporting python2, some files in the pip source refer +to "python" instead of "python3", so patch them as needed to ensure that +they correctly reference the python3 binary. + +Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com> -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(-) + src/pip/_vendor/chardet/langbulgarianmodel.py | 2 +- + src/pip/_vendor/chardet/langgreekmodel.py | 2 +- + src/pip/_vendor/chardet/langhebrewmodel.py | 2 +- + src/pip/_vendor/chardet/langhungarianmodel.py | 2 +- + src/pip/_vendor/chardet/langrussianmodel.py | 2 +- + src/pip/_vendor/chardet/langthaimodel.py | 2 +- + src/pip/_vendor/chardet/langturkishmodel.py | 2 +- + src/pip/_vendor/chardet/metadata/languages.py | 2 +- + src/pip/_vendor/requests/certs.py | 2 +- + 9 files changed, 9 insertions(+), 9 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 +diff --git a/src/pip/_vendor/chardet/langbulgarianmodel.py b/src/pip/_vendor/chardet/langbulgarianmodel.py +index e963a50..97ea6ce 100644 +--- a/src/pip/_vendor/chardet/langbulgarianmodel.py ++++ b/src/pip/_vendor/chardet/langbulgarianmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langgreekmodel.py b/src/pip/_vendor/chardet/langgreekmodel.py +index d99528e..4a127ea 100644 +--- a/src/pip/_vendor/chardet/langgreekmodel.py ++++ b/src/pip/_vendor/chardet/langgreekmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langhebrewmodel.py b/src/pip/_vendor/chardet/langhebrewmodel.py +index 484c652..676c1a7 100644 +--- a/src/pip/_vendor/chardet/langhebrewmodel.py ++++ b/src/pip/_vendor/chardet/langhebrewmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langhungarianmodel.py b/src/pip/_vendor/chardet/langhungarianmodel.py +index bbc5cda..042eae7 100644 +--- a/src/pip/_vendor/chardet/langhungarianmodel.py ++++ b/src/pip/_vendor/chardet/langhungarianmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langrussianmodel.py b/src/pip/_vendor/chardet/langrussianmodel.py +index 5594452..564b02e 100644 +--- a/src/pip/_vendor/chardet/langrussianmodel.py ++++ b/src/pip/_vendor/chardet/langrussianmodel.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 + # -*- coding: utf-8 -*- -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 + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langthaimodel.py b/src/pip/_vendor/chardet/langthaimodel.py +index 9a37db5..c974879 100644 +--- a/src/pip/_vendor/chardet/langthaimodel.py ++++ b/src/pip/_vendor/chardet/langthaimodel.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 + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langturkishmodel.py b/src/pip/_vendor/chardet/langturkishmodel.py +index 43f4230..7e710c3 100644 +--- a/src/pip/_vendor/chardet/langturkishmodel.py ++++ b/src/pip/_vendor/chardet/langturkishmodel.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/metadata/languages.py b/src/pip/_vendor/chardet/metadata/languages.py +index 3237d5a..aa2ec7c 100644 +--- a/src/pip/_vendor/chardet/metadata/languages.py ++++ b/src/pip/_vendor/chardet/metadata/languages.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- """ - Script which takes one or more file paths and reports on their detected - encodings + Metadata about languages used by our model training code for our 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 @@ -55,6 +113,3 @@ index 06a594e..bfa7839 100644 # -*- 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..920e22bc02 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch @@ -0,0 +1,28 @@ +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] + +Index: pip-22.0.3/src/pip/_vendor/distlib/scripts.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_vendor/distlib/scripts.py ++++ pip-22.0.3/src/pip/_vendor/distlib/scripts.py +@@ -135,6 +135,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: +@@ -340,7 +342,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/reproducible.patch b/meta/recipes-devtools/python/python3-pip/reproducible.patch new file mode 100644 index 0000000000..538bb94f7a --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip/reproducible.patch @@ -0,0 +1,74 @@ +Pip installed wheels are not reproducible currently. The direct_url +files encode an installation path and the installed wheels compile +the python files at their location, not their final install location +which is incorrect. + +To fix this, simply disable the direct_urls and pass the "root" to +the python compile function to strip that path out of the compiled +files. + +A version of this patch, perhaps stripping root from the direct_urls +may be something that could be considered by upstream. + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Upstream-Status: Pending + +Index: pip-22.0.3/src/pip/_internal/req/req_install.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_internal/req/req_install.py ++++ pip-22.0.3/src/pip/_internal/req/req_install.py +@@ -758,7 +758,9 @@ class InstallRequirement: + if self.is_wheel: + assert self.local_file_path + direct_url = None +- if self.editable: ++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ: ++ direct_url = None ++ elif self.editable: + direct_url = direct_url_for_editable(self.unpacked_source_directory) + elif self.original_link: + direct_url = direct_url_from_link( +@@ -775,6 +777,7 @@ class InstallRequirement: + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=self.user_supplied, ++ root=root, + ) + self.install_succeeded = True + return +Index: pip-22.0.3/src/pip/_internal/operations/install/wheel.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_internal/operations/install/wheel.py ++++ pip-22.0.3/src/pip/_internal/operations/install/wheel.py +@@ -436,6 +436,7 @@ def _install_wheel( + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, ++ root: str = None, + ) -> None: + """Install a wheel. + +@@ -612,7 +613,7 @@ def _install_wheel( + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + for path in pyc_source_file_paths(): +- success = compileall.compile_file(path, force=True, quiet=True) ++ success = compileall.compile_file(path, force=True, quiet=True, stripdir=root) + if success: + pyc_path = pyc_output_path(path) + assert os.path.exists(pyc_path) +@@ -723,6 +724,7 @@ def install_wheel( + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, ++ root: str = None, + ) -> None: + with ZipFile(wheel_path, allowZip64=True) as z: + with req_error_context(req_description): +@@ -735,4 +737,5 @@ def install_wheel( + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=requested, ++ root=root, + ) 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_22.0.3.bb b/meta/recipes-devtools/python/python3-pip_22.0.3.bb new file mode 100644 index 0000000000..9ca8fbc1e5 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip_22.0.3.bb @@ -0,0 +1,36 @@ +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=63ec52baf95163b597008bb46db68030" + +inherit pypi setuptools_build_meta + +SRC_URI += "file://0001-change-shebang-to-python3.patch" +SRC_URI += "file://no_shebang_mangling.patch" +SRC_URI += "file://reproducible.patch" + +SRC_URI[sha256sum] = "f29d589df8c8ab99c060e68ad294c4a9ed896624f6368c5349d70aa581b333d0" + +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 \ +" + +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 new file mode 100644 index 0000000000..b63c4de0d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pluggy/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-pluggy_1.0.0.bb b/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb new file mode 100644 index 0000000000..73bbcb0269 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pluggy_1.0.0.bb @@ -0,0 +1,26 @@ +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] = "4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159" + +DEPENDS += "${PYTHON_PN}-setuptools-scm-native" +RDEPENDS:${PN} += "${PYTHON_PN}-importlib-metadata \ + ${PYTHON_PN}-more-itertools \ +" + +inherit pypi ptest setuptools_build_meta + +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-ply_3.11.bb b/meta/recipes-devtools/python/python3-ply_3.11.bb new file mode 100644 index 0000000000..99c037bb73 --- /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 += "\ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-shell \ +" + +BBCLASSEXTEND = "native" diff --git a/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb b/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb new file mode 100644 index 0000000000..f3e9b05521 --- /dev/null +++ b/meta/recipes-devtools/python/python3-poetry-core_1.0.8.bb @@ -0,0 +1,44 @@ +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 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=104d5c3c653aeededf4076773aa4c236 \ + file://poetry/core/_vendor/attrs.LICENSE;md5=75bb9823a2778b5a2bd9b793fac93ea2 \ + file://poetry/core/_vendor/jsonschema/COPYING;md5=6554d3a51d7cb0b611891317f3c69057 \ + file://poetry/core/_vendor/jsonschema/LICENSE;md5=2ecb81765361195731a6f72a89e449fd \ + file://poetry/core/_vendor/lark-parser.LICENSE;md5=b37b83a9cf129d92ee65aaa71c01ce72 \ + file://poetry/core/_vendor/packaging/LICENSE;md5=7a6e56c9d54ecd731ab31c52de7942f0 \ + file://poetry/core/_vendor/packaging/LICENSE.APACHE;md5=29256199be2a609aac596980ffc11996 \ + file://poetry/core/_vendor/packaging/LICENSE.BSD;md5=f405810d173a1618433827928768bcd2 \ + file://poetry/core/_vendor/pyparsing.LICENSE;md5=fb46329938e6bc829b256e37d5c1e31a \ + file://poetry/core/_vendor/pyrsistent/LICENSE.mit;md5=1211a1ac6eac40020d0f99c39b4e4270 \ + file://poetry/core/_vendor/six.LICENSE;md5=6a574656da93d9ef05431b45907e35b6 \ + file://poetry/core/_vendor/tomlkit/LICENSE;md5=be329e5ef9c9fe86738c9afe6ef3c11c \ + " + +SRC_URI[sha256sum] = "951fc7c1f8d710a94cb49019ee3742125039fc659675912ea614ac2aa405b118" + +inherit python_poetry_core pypi + +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/0001-fix-failure-test-cases.patch b/meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch new file mode 100644 index 0000000000..34ea03b27f --- /dev/null +++ b/meta/recipes-devtools/python/python3-psutil/0001-fix-failure-test-cases.patch @@ -0,0 +1,197 @@ +From 8b4e38958ff8bdbb3ece4796bfa2d3b6f7536f71 Mon Sep 17 00:00:00 2001 +From: Changqing Li <changqing.li@windriver.com> +Date: Wed, 23 Feb 2022 11:54:40 +0800 +Subject: [PATCH] fix failure test cases + +The test cases is not robust enough. skip some cases that is +not suitable for all conditions. + +* test_io_counters failed when kernel config CONFIG_TASKSTATS + and CONFIG_TASK_IO_ACCOUNTING are not enable in OE +* test_setup_script failed since oe don't install setup.py +* test_used failed since oe use git source for free, so the version + is 3.3.17-dirty +* test_weird_environ failed since gcc not installed +* test_debug failed since it is designed to run when PSUTIL_DEBUG is set +* test_against_findmnt/test_comparisons/test_disk_partitions_mocked/ + test_disk_partitions is not suitable for Linux nfs boot + +Upstream-Status: Pending + +Signed-off-by: Changqing Li <changqing.li@windriver.com> +--- + psutil/tests/test_contracts.py | 1 + + psutil/tests/test_linux.py | 8 ++++++-- + psutil/tests/test_misc.py | 4 ++++ + psutil/tests/test_process.py | 5 +++++ + psutil/tests/test_system.py | 1 + + psutil/tests/test_unicode.py | 4 +++- + 6 files changed, 20 insertions(+), 3 deletions(-) + +diff --git a/psutil/tests/test_contracts.py b/psutil/tests/test_contracts.py +index 7401cc1..bf0fca0 100755 +--- a/psutil/tests/test_contracts.py ++++ b/psutil/tests/test_contracts.py +@@ -172,6 +172,7 @@ class TestAvailProcessAPIs(PsutilTestCase): + def test_rlimit(self): + self.assertEqual(hasattr(psutil.Process, "rlimit"), LINUX or FREEBSD) + ++ @unittest.skip("broken on OE since kernel config maye not be enabled") + def test_io_counters(self): + hasit = hasattr(psutil.Process, "io_counters") + self.assertEqual(hasit, False if MACOS or SUNOS else True) +diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py +index 20e28d2..66b6dda 100755 +--- a/psutil/tests/test_linux.py ++++ b/psutil/tests/test_linux.py +@@ -196,8 +196,9 @@ def get_free_version_info(): + out = sh(["free", "-V"]).strip() + if 'UNKNOWN' in out: + raise unittest.SkipTest("can't determine free version") +- return tuple(map(int, out.split()[-1].split('.'))) +- ++ vlist = out.split()[-1].split('.') ++ vlist[:] = [n.split('-')[0] for n in vlist] ++ return tuple(map(int, vlist)) + + @contextlib.contextmanager + def mock_open_content(for_path, content): +@@ -1289,6 +1290,7 @@ class TestRootFsDeviceFinder(PsutilTestCase): + finder.ask_sys_class_block() + + @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS") ++ @unittest.skip("Broken for oe") + def test_comparisons(self): + finder = RootFsDeviceFinder() + self.assertIsNotNone(finder.find()) +@@ -1311,11 +1313,13 @@ class TestRootFsDeviceFinder(PsutilTestCase): + + @unittest.skipIf(not which("findmnt"), "findmnt utility not available") + @unittest.skipIf(GITHUB_ACTIONS, "unsupported on GITHUB_ACTIONS") ++ @unittest.skip("Broken for oe") + def test_against_findmnt(self): + psutil_value = RootFsDeviceFinder().find() + findmnt_value = sh("findmnt -o SOURCE -rn /") + self.assertEqual(psutil_value, findmnt_value) + ++ @unittest.skip("Broken for oe") + def test_disk_partitions_mocked(self): + with mock.patch( + 'psutil._pslinux.cext.disk_partitions', +diff --git a/psutil/tests/test_misc.py b/psutil/tests/test_misc.py +index d946eb6..121004a 100755 +--- a/psutil/tests/test_misc.py ++++ b/psutil/tests/test_misc.py +@@ -54,6 +54,8 @@ from psutil.tests import unittest + # =================================================================== + + ++PSUTIL_DEBUG = bool(os.getenv('PSUTIL_DEBUG', 0)) ++ + class TestMisc(PsutilTestCase): + + def test_process__repr__(self, func=repr): +@@ -368,6 +370,7 @@ class TestMisc(PsutilTestCase): + + # XXX: https://github.com/pypa/setuptools/pull/2896 + @unittest.skipIf(APPVEYOR, "temporarily disabled due to setuptools bug") ++ @unittest.skip("OE run this test outof source tree") + def test_setup_script(self): + setup_py = os.path.join(ROOT_DIR, 'setup.py') + if CI_TESTING and not os.path.exists(setup_py): +@@ -401,6 +404,7 @@ class TestMisc(PsutilTestCase): + reload_module(psutil) + self.assertIn("version conflict", str(cm.exception).lower()) + ++ @unittest.skipIf(not PSUTIL_DEBUG, "env PSUTIL_DEBUG not set") + def test_debug(self): + if PY3: + from io import StringIO +diff --git a/psutil/tests/test_process.py b/psutil/tests/test_process.py +index c9059e3..a34ba3d 100755 +--- a/psutil/tests/test_process.py ++++ b/psutil/tests/test_process.py +@@ -36,6 +36,7 @@ from psutil._compat import PY3 + from psutil._compat import FileNotFoundError + from psutil._compat import long + from psutil._compat import super ++from psutil._compat import which + from psutil.tests import APPVEYOR + from psutil.tests import CI_TESTING + from psutil.tests import GITHUB_ACTIONS +@@ -726,6 +727,7 @@ class TestProcess(PsutilTestCase): + self.assertEqual(' '.join(p.cmdline()), ' '.join(cmdline)) + + @unittest.skipIf(PYPY, "broken on PYPY") ++ @unittest.skipIf(not which("gcc"), "gcc not installed") + def test_long_cmdline(self): + testfn = self.get_testfn() + create_exe(testfn) +@@ -740,6 +742,7 @@ class TestProcess(PsutilTestCase): + assert pyexe.startswith(name), (pyexe, name) + + @unittest.skipIf(PYPY, "unreliable on PYPY") ++ @unittest.skipIf(not which("gcc"), "gcc not installed") + def test_long_name(self): + testfn = self.get_testfn(suffix="0123456789" * 2) + create_exe(testfn) +@@ -750,6 +753,7 @@ class TestProcess(PsutilTestCase): + @unittest.skipIf(SUNOS, "broken on SUNOS") + @unittest.skipIf(AIX, "broken on AIX") + @unittest.skipIf(PYPY, "broken on PYPY") ++ @unittest.skipIf(not which("gcc"), "gcc not installed") + def test_prog_w_funky_name(self): + # Test that name(), exe() and cmdline() correctly handle programs + # with funky chars such as spaces and ")", see: +@@ -1408,6 +1412,7 @@ class TestProcess(PsutilTestCase): + + @unittest.skipIf(not HAS_ENVIRON, "not supported") + @unittest.skipIf(not POSIX, "POSIX only") ++ @unittest.skipIf(not which("gcc"), "gcc not installed") + def test_weird_environ(self): + # environment variables can contain values without an equals sign + code = textwrap.dedent(""" +diff --git a/psutil/tests/test_system.py b/psutil/tests/test_system.py +index db2cb34..5ee519f 100755 +--- a/psutil/tests/test_system.py ++++ b/psutil/tests/test_system.py +@@ -580,6 +580,7 @@ class TestDiskAPIs(PsutilTestCase): + def test_disk_usage_bytes(self): + psutil.disk_usage(b'.') + ++ @unittest.skip("Broken for oe") + def test_disk_partitions(self): + def check_ntuple(nt): + self.assertIsInstance(nt.device, str) +diff --git a/psutil/tests/test_unicode.py b/psutil/tests/test_unicode.py +index e635726..7ba5b0f 100755 +--- a/psutil/tests/test_unicode.py ++++ b/psutil/tests/test_unicode.py +@@ -86,6 +86,7 @@ from psutil import POSIX + from psutil import WINDOWS + from psutil._compat import PY3 + from psutil._compat import u ++from psutil._compat import which + from psutil.tests import APPVEYOR + from psutil.tests import ASCII_FS + from psutil.tests import CI_TESTING +@@ -156,7 +157,7 @@ def try_unicode(suffix): + # FS APIs + # =================================================================== + +- ++@unittest.skipIf(not which("gcc"), "gcc not installed") + class BaseUnicodeTest(PsutilTestCase): + funky_suffix = None + +@@ -169,6 +170,7 @@ class BaseUnicodeTest(PsutilTestCase): + @serialrun + @unittest.skipIf(ASCII_FS, "ASCII fs") + @unittest.skipIf(PYPY and not PY3, "too much trouble on PYPY2") ++@unittest.skipIf(not which("gcc"), "gcc not installed") + class TestFSAPIs(BaseUnicodeTest): + """Test FS APIs with a funky, valid, UTF8 path name.""" + +-- +2.25.1 + diff --git a/meta/recipes-devtools/python/python3-psutil_5.9.0.bb b/meta/recipes-devtools/python/python3-psutil_5.9.0.bb new file mode 100644 index 0000000000..df304f01e6 --- /dev/null +++ b/meta/recipes-devtools/python/python3-psutil_5.9.0.bb @@ -0,0 +1,29 @@ +SUMMARY = "A cross-platform process and system utilities module for Python" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e35fd9f271d19d5f742f20a9d1f8bb8b" +HOMEPAGE = "https://pypi.org/project/psutil/" + +SRC_URI[sha256sum] = "869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25" + +inherit pypi setuptools3 + +SRC_URI += "file://0001-fix-failure-test-cases.patch" + +PACKAGES =+ "${PN}-tests" + +FILES:${PN}-tests += " \ + ${PYTHON_SITEPACKAGES_DIR}/psutil/test* \ + ${PYTHON_SITEPACKAGES_DIR}/psutil/__pycache__/test* \ +" + + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-shell \ + ${PYTHON_PN}-threading \ + ${PYTHON_PN}-xml \ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-ctypes \ + ${PYTHON_PN}-resource \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-py_1.11.0.bb b/meta/recipes-devtools/python/python3-py_1.11.0.bb new file mode 100644 index 0000000000..02027248f4 --- /dev/null +++ b/meta/recipes-devtools/python/python3-py_1.11.0.bb @@ -0,0 +1,14 @@ +SUMMARY = "Library with cross-python path, ini-parsing, io, code, log facilities" +HOMEPAGE = "http://py.readthedocs.io/" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=a6bb0320b04a0a503f12f69fea479de9" + +SRC_URI[sha256sum] = "51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719" + +DEPENDS += "${PYTHON_PN}-setuptools-scm-native" + +inherit pypi setuptools_build_meta + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += "${PYTHON_PN}-netclient" diff --git a/meta/recipes-devtools/python/python3-pycairo_1.19.1.bb b/meta/recipes-devtools/python/python3-pycairo_1.21.0.bb index 34c8543bce..29452c7660 100644 --- a/meta/recipes-devtools/python/python3-pycairo_1.19.1.bb +++ b/meta/recipes-devtools/python/python3-pycairo_1.21.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" @@ -13,15 +13,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[md5sum] = "59bc5c5d1debc3af0f6791af9d612551" -SRC_URI[sha256sum] = "2c143183280feb67f5beb4e543fd49990c28e7df427301ede04fc550d3562e84" +SRC_URI[sha256sum] = "251907f18a552df938aa3386657ff4b5a4937dde70e11aa042bc297957f4b74b" S = "${WORKDIR}/pycairo-${PV}" -inherit meson pkgconfig +inherit meson pkgconfig python3targetconfig CFLAGS += "-fPIC" BBCLASSEXTEND = "native" -FILES_${PN} = "${PYTHON_SITEPACKAGES_DIR}/*" +FILES:${PN} = "${PYTHON_SITEPACKAGES_DIR}/*" diff --git a/meta/recipes-devtools/python/python3-pycparser_2.21.bb b/meta/recipes-devtools/python/python3-pycparser_2.21.bb new file mode 100644 index 0000000000..53b7367903 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pycparser_2.21.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=2c28cdeabcb88f5843d934381b4b4fea" + +SRC_URI[sha256sum] = "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN}:class-target += "\ + ${PYTHON_PN}-netclient \ + ${PYTHON_PN}-ply \ + ${PYTHON_PN}-pprint \ + " + +RSUGGESTS:${PN}:class-target += "\ + cpp \ + cpp-symlinks \ + " diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb new file mode 100644 index 0000000000..c0324590c2 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pycryptodome_3.14.1.bb @@ -0,0 +1,5 @@ +require python-pycryptodome.inc +inherit setuptools3 + +SRC_URI[sha256sum] = "e04e40a7f8c1669195536a37979dd87da2c32dbdc73d6fe35f0077b0c17c803b" + diff --git a/meta/recipes-devtools/python/python3-pycryptodome_3.9.7.bb b/meta/recipes-devtools/python/python3-pycryptodome_3.9.7.bb deleted file mode 100644 index 8f19984bed..0000000000 --- a/meta/recipes-devtools/python/python3-pycryptodome_3.9.7.bb +++ /dev/null @@ -1,5 +0,0 @@ -require python-pycryptodome.inc -inherit setuptools3 - -SRC_URI[sha256sum] = "f1add21b6d179179b3c177c33d18a2186a09cc0d3af41ff5ed3f377360b869f2" - diff --git a/meta/recipes-devtools/python/python3-pycryptodomex_3.9.7.bb b/meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb index abb03b9909..79a3fee19c 100644 --- a/meta/recipes-devtools/python/python3-pycryptodomex_3.9.7.bb +++ b/meta/recipes-devtools/python/python3-pycryptodomex_3.14.1.bb @@ -1,9 +1,9 @@ require python-pycryptodome.inc inherit setuptools3 -SRC_URI[sha256sum] = "50163324834edd0c9ce3e4512ded3e221c969086e10fdd5d3fdcaadac5e24a78" +SRC_URI[sha256sum] = "2ce76ed0081fd6ac8c74edc75b9d14eca2064173af79843c24fa62573263c1f2" -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.26.bb b/meta/recipes-devtools/python/python3-pyelftools_0.28.bb index 575dfc4dc9..0ceddcb68a 100644 --- a/meta/recipes-devtools/python/python3-pyelftools_0.26.bb +++ b/meta/recipes-devtools/python/python3-pyelftools_0.28.bb @@ -4,11 +4,12 @@ SECTION = "devel/python" LICENSE = "PD" LIC_FILES_CHKSUM = "file://LICENSE;md5=5ce2a2b07fca326bc7c146d10105ccfc" -SRC_URI[md5sum] = "0ba0de4b47127249c4d632ae299cb0e8" -SRC_URI[sha256sum] = "86ac6cee19f6c945e8dedf78c6ee74f1112bd14da5a658d8c9d4103aed5756a2" +SRC_URI[sha256sum] = "53e5609cac016471d40bd88dc410cd90755942c25e58a61021cfdf7abdfeacff" PYPI_PACKAGE = "pyelftools" inherit pypi setuptools3 BBCLASSEXTEND = "native" + +RDEPENDS:${PN} += "${PYTHON_PN}-debugger ${PYTHON_PN}-pprint" diff --git a/meta/recipes-devtools/python/python3-pygments_2.6.1.bb b/meta/recipes-devtools/python/python3-pygments_2.11.2.bb index bffef59e69..35d288c89e 100644 --- a/meta/recipes-devtools/python/python3-pygments_2.6.1.bb +++ b/meta/recipes-devtools/python/python3-pygments_2.11.2.bb @@ -2,11 +2,10 @@ 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=e1d7b7bffbfeaa14083fd2bd3236aea8" +LIC_FILES_CHKSUM = "file://LICENSE;md5=98419e351433ac106a24e3ad435930bc" inherit setuptools3 -SRC_URI[md5sum] = "a48c5219de92f12c41acba814730b31a" -SRC_URI[sha256sum] = "647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44" +SRC_URI[sha256sum] = "4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a" DEPENDS += "\ ${PYTHON_PN} \ diff --git a/meta/recipes-devtools/python/python3-pygobject_3.36.1.bb b/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb index 0a34d4373f..360996dbb7 100644 --- a/meta/recipes-devtools/python/python3-pygobject_3.36.1.bb +++ b/meta/recipes-devtools/python/python3-pygobject_3.42.0.bb @@ -1,10 +1,14 @@ 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 DEPENDS += "python3 glib-2.0" @@ -14,20 +18,17 @@ 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[md5sum] = "ebfebc4533856572281add29f08412bf" -SRC_URI[sha256sum] = "d1bf42802d1cec113b5adaa0e7bf7f3745b44521dc2163588d276d5cd61d718f" - -UNKNOWN_CONFIGURE_WHITELIST = "introspection" +SRC_URI[sha256sum] = "9b12616e32cfc792f9dc841d9c472a41a35b85ba67d3a6eb427e307a6fe4367b" S = "${WORKDIR}/${SRCNAME}-${PV}" PACKAGECONFIG ??= "${@bb.utils.contains_any('DISTRO_FEATURES', [ 'directfb', 'wayland', 'x11' ], 'cairo', '', d)}" -RDEPENDS_${PN} += "python3-pkgutil" +RDEPENDS:${PN} += "python3-pkgutil" # python3-pycairo is checked on configuration -> DEPENDS # we don't link against python3-pycairo -> RDEPENDS -PACKAGECONFIG[cairo] = "-Dpycairo=true,-Dpycairo=false, cairo python3-pycairo, python3-pycairo" +PACKAGECONFIG[cairo] = "-Dpycairo=enabled,-Dpycairo=disabled, cairo python3-pycairo, python3-pycairo" BBCLASSEXTEND = "native" -PACKAGECONFIG_class-native = "" +PACKAGECONFIG:class-native = "" 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.0.7.bb b/meta/recipes-devtools/python/python3-pyparsing_3.0.7.bb new file mode 100644 index 0000000000..9c3896918f --- /dev/null +++ b/meta/recipes-devtools/python/python3-pyparsing_3.0.7.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] = "18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea" + +UPSTREAM_CHECK_REGEX = "pyparsing-(?P<pver>.*)\.tar" + +inherit pypi setuptools3 + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-debugger \ + ${PYTHON_PN}-html \ + ${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/python3-pyrsistent_0.18.1.bb b/meta/recipes-devtools/python/python3-pyrsistent_0.18.1.bb new file mode 100644 index 0000000000..ecd55672f5 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pyrsistent_0.18.1.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=b695eb9c6e7a6fb1b1bc2d193c42776e" + +SRC_URI[sha256sum] = "d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96" + +inherit pypi setuptools_build_meta + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-numbers \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb b/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.bb new file mode 100644 index 0000000000..5e4847b8d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pytest-subtests_0.6.0.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] = "3ebd306a8dcf75133f1742f288c82f36426ebcf8a132d4ee89782d20e84fc13a" + +inherit pypi setuptools3 + +DEPENDS += "${PYTHON_PN}-setuptools-scm-native" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-pytest \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-pytest_7.0.1.bb b/meta/recipes-devtools/python/python3-pytest_7.0.1.bb new file mode 100644 index 0000000000..ea6ba80300 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pytest_7.0.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] = "e30905a0c131d3d94b89624a1cc5afec3e0ba2fbdb151867d8e0ebd49850f171" + +DEPENDS += "python3-setuptools-scm-native" + +inherit update-alternatives pypi setuptools_build_meta + +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-pytz/run-ptest b/meta/recipes-devtools/python/python3-pytz/run-ptest new file mode 100644 index 0000000000..b63c4de0d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pytz/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-pytz_2021.3.bb b/meta/recipes-devtools/python/python3-pytz_2021.3.bb new file mode 100644 index 0000000000..119342a4bd --- /dev/null +++ b/meta/recipes-devtools/python/python3-pytz_2021.3.bb @@ -0,0 +1,35 @@ +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] = "acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" + +RDEPENDS:${PN}:class-target += "\ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-doctest \ + ${PYTHON_PN}-io \ + ${PYTHON_PN}-pickle \ + ${PYTHON_PN}-pprint \ + ${PYTHON_PN}-threading \ +" + +BBCLASSEXTEND = "native nativesdk" + +SRC_URI += " \ + file://run-ptest \ +" + +RDEPENDS:${PN}-ptest += " \ + ${PYTHON_PN}-pytest \ +" + +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_6.0.bb b/meta/recipes-devtools/python/python3-pyyaml_6.0.bb new file mode 100644 index 0000000000..6fe726110d --- /dev/null +++ b/meta/recipes-devtools/python/python3-pyyaml_6.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "Python support for YAML" +DEPENDS += "libyaml ${PYTHON_PN}-cython-native" +HOMEPAGE = "https://pyyaml.org/" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=6d8242660a8371add5fe547adf083079" + +PYPI_PACKAGE = "PyYAML" + +inherit pypi setuptools_build_meta + +SRC_URI[sha256sum] = "68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2" + +RDEPENDS:${PN} += "\ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-netclient \ +" + +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..9bc5fed921 --- /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} += "\ + ${PYTHON_PN}-core \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-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..4abd181acf --- /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:append = " \ + 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-ruamel-yaml_0.17.21.bb b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.21.bb new file mode 100644 index 0000000000..7d65c4c2d8 --- /dev/null +++ b/meta/recipes-devtools/python/python3-ruamel-yaml_0.17.21.bb @@ -0,0 +1,24 @@ +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/" +AUTHOR = "Anthon van der Neut" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=034154b7344d15438bc5ed5ee9cc075f" + +PYPI_PACKAGE = "ruamel.yaml" + +inherit pypi setuptools3 + +SRC_URI[sha256sum] = "8b7ce697a2f212752a35c1ac414471dc16c424c9573be4926b56ff3f5d23b7af" + +RDEPENDS:${PN} += "\ + ${PYTHON_PN}-shell \ + ${PYTHON_PN}-datetime \ + ${PYTHON_PN}-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 ce117a92d4..0000000000 --- a/meta/recipes-devtools/python/python3-scons_3.1.2.bb +++ /dev/null @@ -1,33 +0,0 @@ -SUMMARY = "Software Construction tool (make/autotools replacement)" -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.3.0.bb b/meta/recipes-devtools/python/python3-scons_4.3.0.bb new file mode 100644 index 0000000000..ae91d980fe --- /dev/null +++ b/meta/recipes-devtools/python/python3-scons_4.3.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] = "d47081587e3675cc168f1f54f0d74a69b328a2fc90ec4feb85f728677419b879" + +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.9.0.bb b/meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb new file mode 100644 index 0000000000..ee635871bf --- /dev/null +++ b/meta/recipes-devtools/python/python3-semantic-version_2.9.0.bb @@ -0,0 +1,12 @@ +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] = "abf54873553e5e07a6fd4d5f653b781f5ae41297a493666b59dcf214006a12b2" + +PYPI_PACKAGE = "semantic_version" +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb b/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb new file mode 100644 index 0000000000..bac7b6434a --- /dev/null +++ b/meta/recipes-devtools/python/python3-setuptools-rust-native_1.1.2.bb @@ -0,0 +1,26 @@ +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 = "https://files.pythonhosted.org/packages/67/08/e1aa2c582c62ac76e4d60f8e454bd3bba933781a06a88b4e38797445822a/setuptools-rust-${PV}.tar.gz" +SRC_URI[sha256sum] = "a0adb9b503c0ffc4e8fe80b7c617898cefa78049983aaaea7f747e153a3e65d1" + +inherit cargo pypi setuptools_build_meta native + +DEPENDS += "python3-setuptools-scm-native python3-wheel-native" + +RDEPENDS:${PN}:class-native += " \ + python3-semantic-version-native \ + python3-setuptools-native \ + python3-setuptools-scm-native \ + python3-toml-native \ + python3-typing-extensions-native \ + python3-wheel-native \ +" diff --git a/meta/recipes-devtools/python/python3-setuptools-scm_6.4.2.bb b/meta/recipes-devtools/python/python3-setuptools-scm_6.4.2.bb new file mode 100644 index 0000000000..182ccecbbf --- /dev/null +++ b/meta/recipes-devtools/python/python3-setuptools-scm_6.4.2.bb @@ -0,0 +1,26 @@ +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] = "6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30" + +PYPI_PACKAGE = "setuptools_scm" +inherit pypi setuptools_build_meta + +UPSTREAM_CHECK_REGEX = "setuptools_scm-(?P<pver>.*)\.tar" + +RDEPENDS:${PN} = "\ + ${PYTHON_PN}-packaging \ + ${PYTHON_PN}-pyparsing \ + ${PYTHON_PN}-setuptools \ + ${PYTHON_PN}-tomli \ +" + +RDEPENDS:${PN}:append:class-target = " \ + ${PYTHON_PN}-debugger \ + ${PYTHON_PN}-json \ +" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch new file mode 100644 index 0000000000..3150187951 --- /dev/null +++ b/meta/recipes-devtools/python/python3-setuptools/0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch @@ -0,0 +1,35 @@ +From 1ff575308248b183639c8cb14afee7c8572bd2b8 Mon Sep 17 00:00:00 2001 +From: Tim Orling <timothy.t.orling@intel.com> +Date: Wed, 20 Oct 2021 17:38:10 +0000 +Subject: [PATCH] _distutils/sysconfig: append + STAGING_LIBDIR/python-sysconfigdata to sys.path + +When python modules set SETUPTOOLS_USE_DISTULS='local', this uses the +vendored _distutils in setuptools rather than distutils in the Standard +Library. This is needed so that target configuration can be used with +python3-setuptools-native. + +Based on python3/0001-distutils-sysconfig-append-STAGING_LIBDIR-python-sys.patch +from Alex Kanavin <alex.kanavin@gmail.com> + +Upstream-Status: Inappropriate [oe-specific] + +Signed-off-by: Tim Orling <timothy.t.orling@intel.com> + +--- + setuptools/_distutils/sysconfig.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py +index d36d94f..616eb91 100644 +--- a/setuptools/_distutils/sysconfig.py ++++ b/setuptools/_distutils/sysconfig.py +@@ -484,6 +484,8 @@ def _init_posix(): + multiarch=getattr(sys.implementation, '_multiarch', ''), + ), + ) ++ if 'STAGING_LIBDIR' in os.environ: ++ sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata') + try: + _temp = __import__(name, globals(), locals(), ['build_time_vars'], 0) + except ImportError: diff --git a/meta/recipes-devtools/python/python3-setuptools_47.3.1.bb b/meta/recipes-devtools/python/python3-setuptools_47.3.1.bb deleted file mode 100644 index 0dc1ed8622..0000000000 --- a/meta/recipes-devtools/python/python3-setuptools_47.3.1.bb +++ /dev/null @@ -1,6 +0,0 @@ -require python-setuptools.inc -inherit setuptools3 - -do_install_append() { - mv ${D}${bindir}/easy_install ${D}${bindir}/easy3_install -} diff --git a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb new file mode 100644 index 0000000000..35bec19e33 --- /dev/null +++ b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb @@ -0,0 +1,57 @@ +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 setuptools_build_meta + +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 \ + file://0001-_distutils-sysconfig-append-STAGING_LIBDIR-python-sy.patch \ +" + +SRC_URI[sha256sum] = "d144f85102f999444d06f9c0e8c737fd0194f10f2f7e5fdb77573f6e2fa4fad0" + +DEPENDS += "${PYTHON_PN}" + +RDEPENDS:${PN} = "\ + ${PYTHON_PN}-2to3 \ + ${PYTHON_PN}-compile \ + ${PYTHON_PN}-compression \ + ${PYTHON_PN}-ctypes \ + ${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 \ +" + +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 \ +" + +# 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..05c94c390f --- /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" + +UPSTREAM_CHECK_REGEX = "/${PYPI_PACKAGE}/(?P<pver>(?!2\.0\.1)(\d+[\.\-_]*)+)/" diff --git a/meta/recipes-devtools/python/python3-smmap_3.0.4.bb b/meta/recipes-devtools/python/python3-smmap_3.0.4.bb deleted file mode 100644 index 5f0f341d6a..0000000000 --- a/meta/recipes-devtools/python/python3-smmap_3.0.4.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_5.0.0.bb index 7703722bca..ea131ef793 100644 --- a/meta/recipes-devtools/python/python-smmap.inc +++ b/meta/recipes-devtools/python/python3-smmap_5.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] = "9c98bbd1f9786d22f14b3d4126894d56befb835ec90cef151af566c7e19b5d24" +SRC_URI[sha256sum] = "c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936" -RDEPENDS_${PN} += "${PYTHON_PN}-codecs \ +RDEPENDS:${PN} += "${PYTHON_PN}-codecs \ ${PYTHON_PN}-mmap \ " BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb new file mode 100644 index 0000000000..0755d3e177 --- /dev/null +++ b/meta/recipes-devtools/python/python3-sortedcontainers_2.4.0.bb @@ -0,0 +1,9 @@ +SUMMARY = "Sorted Containers is an Apache2 licensed sorted collections library, written in pure-Python, and fast as C-extensions." +HOMEPAGE = "http://www.grantjenks.com/docs/sortedcontainers/" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7c7c6a1a12ec816da16c1839137d53ae" + +inherit pypi setuptools3 +SRC_URI[sha256sum] = "25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88" + +BBCLASSEXTEND = "native nativesdk" diff --git a/meta/recipes-devtools/python/python3-strict-rfc3339/0001-setup.py-use-vendored-_distutils.patch b/meta/recipes-devtools/python/python3-strict-rfc3339/0001-setup.py-use-vendored-_distutils.patch new file mode 100644 index 0000000000..ba1c3d3363 --- /dev/null +++ b/meta/recipes-devtools/python/python3-strict-rfc3339/0001-setup.py-use-vendored-_distutils.patch @@ -0,0 +1,27 @@ +From 857719e82daea0d85b734cac34cf569050724068 Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Sun, 20 Feb 2022 20:26:51 -0800 +Subject: [PATCH] setup.py: use vendored _distutils + +Deprecation warning of distutils is interferring with bdist_wheel build. + +For now, use the vendored setuptools._distutils.core. + +Upstream-Status: Pending [upstream appears unmaintained] + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + setup.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 1bf87cf..a49fb8e 100644 +--- a/setup.py ++++ b/setup.py +@@ -1,5 +1,5 @@ + import os.path +-from distutils.core import setup ++from setuptools._distutils.core import setup + + readme_file = os.path.join(os.path.dirname(__file__), 'README.md') + readme = open(readme_file).read() diff --git a/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb b/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb new file mode 100644 index 0000000000..c377c3bfb0 --- /dev/null +++ b/meta/recipes-devtools/python/python3-strict-rfc3339_0.7.bb @@ -0,0 +1,11 @@ +SUMMARY = "Strict, simple, lightweight RFC3339 function.s" +HOMEPAGE = "https://pypi.org/project/strict-rfc3339/" +LICENSE = "GPL-3.0-only" +LIC_FILES_CHKSUM = "file://LICENSE;md5=8f0e2cd40e05189ec81232da84bd6e1a" + +SRC_URI += "file://0001-setup.py-use-vendored-_distutils.patch" +SRC_URI[sha256sum] = "5cad17bedfc3af57b399db0fed32771f18fc54bbd917e85546088607ac5e1277" + +inherit pypi setuptools3 + +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 index 55066e2d0f..e4e3bf191d 100644 --- a/meta/recipes-devtools/python/python3-subunit_1.4.0.bb +++ b/meta/recipes-devtools/python/python3-subunit_1.4.0.bb @@ -1,4 +1,15 @@ -inherit setuptools3 -require python-subunit.inc +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" -RDEPENDS_${PN} = " python3-testtools" +PYPI_PACKAGE = "python-subunit" + +SRC_URI[sha256sum] = "042039928120fbf392e8c983d60f3d8ae1b88f90a9f8fd7188ddd9c26cad1e48" + +inherit pypi setuptools3 + +RDEPENDS:${PN} = " python3-testtools" + +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.5.0.bb index a254b90a75..896ecee65c 100644 --- a/meta/recipes-devtools/python/python3-testtools_2.4.0.bb +++ b/meta/recipes-devtools/python/python3-testtools_2.5.0.bb @@ -1,4 +1,2 @@ inherit setuptools3 require python-testtools.inc - -SRC_URI += "file://no_traceback2.patch" diff --git a/meta/recipes-devtools/python/python3-toml_0.10.2.bb b/meta/recipes-devtools/python/python3-toml_0.10.2.bb new file mode 100644 index 0000000000..be29cac798 --- /dev/null +++ b/meta/recipes-devtools/python/python3-toml_0.10.2.bb @@ -0,0 +1,15 @@ +SUMMARY = "Python Library for Tom's Obvious, Minimal Language" +HOMEPAGE = "https://github.com/uiri/toml" +LICENSE = "MIT" +SECTION = "devel/python" +LIC_FILES_CHKSUM = "file://LICENSE;md5=16c77b2b1050d2f03cb9c2ed0edaf4f0" + +SRC_URI[sha256sum] = "b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f" + +inherit pypi setuptools3 + +BBCLASSEXTEND = "native nativesdk" + +RDEPENDS:${PN} += " \ + ${PYTHON_PN}-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..6118a6a9c3 --- /dev/null +++ b/meta/recipes-devtools/python/python3-tomli_2.0.1.bb @@ -0,0 +1,13 @@ +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" diff --git a/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb b/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb new file mode 100644 index 0000000000..a5f491c770 --- /dev/null +++ b/meta/recipes-devtools/python/python3-typing-extensions_3.10.0.0.bb @@ -0,0 +1,12 @@ +HOMEPAGE = "https://github.com/python/typing" +LICENSE = "PSF-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=64fc2b30b67d0a8423c250e0386ed72f" + +# The name on PyPi is slightly different. +PYPI_PACKAGE = "typing_extensions" + +SRC_URI[sha256sum] = "50b6f157849174217d0656f99dc82fe932884fb250826c18350e159ec6cdf342" + +inherit pypi setuptools3 + +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..83e9b5eadb --- /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" + +RDEPENDS:${PN} += "${PYTHON_PN}-smartypants" + 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 new file mode 100644 index 0000000000..b63c4de0d9 --- /dev/null +++ b/meta/recipes-devtools/python/python3-wcwidth/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-wcwidth_0.2.5.bb b/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb new file mode 100644 index 0000000000..a532d3c5cb --- /dev/null +++ b/meta/recipes-devtools/python/python3-wcwidth_0.2.5.bb @@ -0,0 +1,25 @@ +SUMMARY = "Library for building powerful interactive command lines in Python" +DESCRIPTION = "Measures the displayed width of unicode strings in a terminal" +HOMEPAGE = "https://github.com/jquast/wcwidth" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb" + +SRC_URI[md5sum] = "a07a75f99d316e14838ac760c831ea37" +SRC_URI[sha256sum] = "c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83" + +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-webcolors/run-ptest b/meta/recipes-devtools/python/python3-webcolors/run-ptest new file mode 100644 index 0000000000..3385d68939 --- /dev/null +++ b/meta/recipes-devtools/python/python3-webcolors/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-webcolors_1.11.1.bb b/meta/recipes-devtools/python/python3-webcolors_1.11.1.bb new file mode 100644 index 0000000000..26dbe51767 --- /dev/null +++ b/meta/recipes-devtools/python/python3-webcolors_1.11.1.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=25b90379a52351261c51272e7923d240" + +SRC_URI[md5sum] = "54d28a7c80b3e4d974ec2fee86768be9" +SRC_URI[sha256sum] = "76f360636957d1c976db7466bc71dcb713bb95ac8911944dffc55c01cb516de6" + +inherit pypi setuptools3 ptest + +RDEPENDS:${PN}:class-target = "\ + ${PYTHON_PN}-stringold \ +" + +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-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch b/meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch new file mode 100644 index 0000000000..023de0e6a8 --- /dev/null +++ b/meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch @@ -0,0 +1,100 @@ +From f00dd220346773bc088d403847ee7f06f2b4c30a Mon Sep 17 00:00:00 2001 +From: Tim Orling <tim.orling@konsulko.com> +Date: Fri, 18 Feb 2022 11:09:16 -0800 +Subject: [PATCH] Backport pyproject.toml from flit-backend branch + +This allows us to bootstrap wheels and PEP-517 packaging. + +Upstream-Status: Backport from flit-backend branch +https://raw.githubusercontent.com/pypa/wheel/4f6ba78fede38a8d9e35a14e38377a121033afb3/pyproject.toml + +Signed-off-by: Tim Orling <tim.orling@konsulko.com> +--- + pyproject.toml | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 78 insertions(+) + create mode 100644 pyproject.toml + +diff --git a/pyproject.toml b/pyproject.toml +new file mode 100644 +index 0000000..749b8de +--- /dev/null ++++ b/pyproject.toml +@@ -0,0 +1,78 @@ ++[build-system] ++requires = ["flit_core >=3.2,<4"] ++build-backend = "flit_core.buildapi" ++ ++[project] ++name = "wheel" ++description = "A built-package format for Python" ++readme = "README.rst" ++classifiers = [ ++ "Development Status :: 5 - Production/Stable", ++ "Intended Audience :: Developers", ++ "Topic :: System :: Archiving :: Packaging", ++ "License :: OSI Approved :: MIT License", ++ "Programming Language :: Python", ++ "Programming Language :: Python :: 3 :: Only", ++ "Programming Language :: Python :: 3.7", ++ "Programming Language :: Python :: 3.8", ++ "Programming Language :: Python :: 3.9", ++ "Programming Language :: Python :: 3.10" ++] ++authors = [{name = "Daniel Holth", email = "dholth@fastmail.fm"}] ++maintainers = [{name = "Alex Grönholm", email = "alex.gronholm@nextday.fi"}] ++keywords = ["wheel", "packaging"] ++license = {file = "LICENSE.txt"} ++requires-python = ">=3.7" ++dependencies = [ ++ "setuptools >= 45.2.0" ++] ++dynamic = ["version"] ++ ++[project.urls] ++Documentation = "https://wheel.readthedocs.io/" ++Changelog = "https://wheel.readthedocs.io/en/stable/news.html" ++"Issue Tracker" = "https://github.com/pypa/wheel/issues" ++ ++[project.scripts] ++wheel = "wheel.cli:main" ++ ++[project.entry-points."distutils.commands"] ++bdist_wheel = "wheel.bdist_wheel:bdist_wheel" ++ ++[project.optional-dependencies] ++test = [ ++ "pytest >= 3.0.0" ++] ++ ++[tool.flit.sdist] ++exclude = [ ++ ".cirrus.yml", ++ ".github/*", ++ ".gitignore", ++ ".pre-commit-config.yaml", ++ ".readthedocs.yml" ++] ++ ++[tool.black] ++target-version = ['py37'] ++extend-exclude = ''' ++^/src/wheel/vendored/ ++''' ++ ++[tool.isort] ++src_paths = ["src"] ++profile = "black" ++skip_gitignore = true ++ ++[tool.flake8] ++max-line-length = 88 ++ ++[tool.pytest.ini_options] ++testpaths = "tests" ++ ++[tool.coverage.run] ++source = ["wheel"] ++omit = ["*/vendored/*"] ++ ++[tool.coverage.report] ++show_missing = true diff --git a/meta/recipes-devtools/python/python3-wheel_0.37.1.bb b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb new file mode 100644 index 0000000000..2f7dd122ba --- /dev/null +++ b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb @@ -0,0 +1,17 @@ +SUMMARY = "The official binary distribution format for Python " +HOMEPAGE = "https://github.com/pypa/wheel" +SECTION = "devel/python" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=10;endline=10;md5=8227180126797a0148f94f483f3e1489" + +SRC_URI[sha256sum] = "e9a504e793efbca1b8e0e9cb979a249cf4a0a7b5b8c9e8b65a5e39d49529c1c4" + +inherit python_flit_core pypi + +SRC_URI += " file://0001-Backport-pyproject.toml-from-flit-backend-branch.patch" + +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-zipp_3.7.0.bb b/meta/recipes-devtools/python/python3-zipp_3.7.0.bb new file mode 100644 index 0000000000..d0f936faf7 --- /dev/null +++ b/meta/recipes-devtools/python/python3-zipp_3.7.0.bb @@ -0,0 +1,18 @@ +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[sha256sum] = "9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d" + +DEPENDS += "${PYTHON_PN}-setuptools-scm-native" + +inherit pypi setuptools_build_meta + +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-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 index 59592821d7..62ef6efc28 100644 --- 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 @@ -1,4 +1,4 @@ -From 039c53dd5baddec3359a05be0bff46a3b32bbb84 Mon Sep 17 00:00:00 2001 +From 80f872e4573f542d33f91514538755557d566f79 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 @@ -12,10 +12,10 @@ Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py -index 20d7f35..ab18ff0 100644 +index 43e807f..11b5cf5 100644 --- a/setup.py +++ b/setup.py -@@ -957,7 +957,6 @@ class PyBuildExt(build_ext): +@@ -1149,7 +1149,6 @@ class PyBuildExt(build_ext): 'termcap'): readline_libs.append('termcap') self.add(Extension('readline', ['readline.c'], diff --git a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch b/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch deleted file mode 100644 index 112c979441..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Do-not-hardcode-lib-as-location-for-site-packages-an.patch +++ /dev/null @@ -1,214 +0,0 @@ -From a078b6ff1492e848ad1055764fb9a414abaf3e12 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Tue, 5 Feb 2019 15:52:02 +0100 -Subject: [PATCH] Do not hardcode "lib" as location for modules, site-packages - and lib-dynload - -Upstream-Status: Inappropriate [oe-core specific] -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> - ---- - Include/pythonrun.h | 2 ++ - Lib/site.py | 4 ++-- - Makefile.pre.in | 5 +++-- - Modules/getpath.c | 22 ++++++++++++++-------- - Python/getplatform.c | 10 ++++++++++ - Python/sysmodule.c | 2 ++ - 6 files changed, 33 insertions(+), 12 deletions(-) - -diff --git a/Include/pythonrun.h b/Include/pythonrun.h -index 46091e0..61b2e15 100644 ---- a/Include/pythonrun.h -+++ b/Include/pythonrun.h -@@ -7,6 +7,8 @@ - extern "C" { - #endif - -+PyAPI_FUNC(const char *) Py_GetLib(void); -+ - #ifndef Py_LIMITED_API - PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *); - PyAPI_FUNC(int) PyRun_AnyFileExFlags( -diff --git a/Lib/site.py b/Lib/site.py -index a065ab0..1d720ef 100644 ---- a/Lib/site.py -+++ b/Lib/site.py -@@ -335,12 +335,12 @@ def getsitepackages(prefixes=None): - seen.add(prefix) - - if os.sep == '/': -- sitepackages.append(os.path.join(prefix, "lib", -+ sitepackages.append(os.path.join(prefix, sys.lib, - "python%d.%d" % sys.version_info[:2], - "site-packages")) - else: - sitepackages.append(prefix) -- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) -+ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages")) - return sitepackages - - def addsitepackages(known_paths, prefixes=None): -diff --git a/Makefile.pre.in b/Makefile.pre.in -index 65665df..be49140 100644 ---- a/Makefile.pre.in -+++ b/Makefile.pre.in -@@ -143,7 +143,7 @@ LIBDIR= @libdir@ - MANDIR= @mandir@ - INCLUDEDIR= @includedir@ - CONFINCLUDEDIR= $(exec_prefix)/include --SCRIPTDIR= $(prefix)/lib -+SCRIPTDIR= @libdir@ - ABIFLAGS= @ABIFLAGS@ - - # Detailed destination directories -@@ -753,6 +753,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile - -DEXEC_PREFIX='"$(exec_prefix)"' \ - -DVERSION='"$(VERSION)"' \ - -DVPATH='"$(VPATH)"' \ -+ -DLIB='"$(LIB)"' \ - -o $@ $(srcdir)/Modules/getpath.c - - Programs/python.o: $(srcdir)/Programs/python.c -@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h - Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h - - Python/getplatform.o: $(srcdir)/Python/getplatform.c -- $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c -+ $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c - - Python/importdl.o: $(srcdir)/Python/importdl.c - $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c -diff --git a/Modules/getpath.c b/Modules/getpath.c -index b727f66..c003e46 100644 ---- a/Modules/getpath.c -+++ b/Modules/getpath.c -@@ -128,6 +128,7 @@ typedef struct { - wchar_t *exec_prefix; /* EXEC_PREFIX macro */ - - wchar_t *lib_python; /* "lib/pythonX.Y" */ -+ wchar_t *multilib_python; /* "lib[suffix]/pythonX.Y" */ - - int prefix_found; /* found platform independent libraries? */ - int exec_prefix_found; /* found the platform dependent libraries? */ -@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - if (delim) { - *delim = L'\0'; - } -- status = joinpath(prefix, calculate->lib_python, prefix_len); -+ status = joinpath(prefix, calculate->multilib_python, prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - do { - /* Path: <argv0_path or substring> / <lib_python> / LANDMARK */ - size_t n = wcslen(prefix); -- status = joinpath(prefix, calculate->lib_python, prefix_len); -+ status = joinpath(prefix, calculate->multilib_python, prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) { - return PATHLEN_ERR(); - } -- status = joinpath(prefix, calculate->lib_python, prefix_len); -+ status = joinpath(prefix, calculate->multilib_python, prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) { - return PATHLEN_ERR(); - } -- status = joinpath(prefix, calculate->lib_python, prefix_len); -+ status = joinpath(prefix, calculate->multilib_python, prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - return PATHLEN_ERR(); - } - } -- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len); -+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - do { - /* Path: <argv0_path or substring> / <lib_python> / "lib-dynload" */ - size_t n = wcslen(exec_prefix); -- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len); -+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig, - if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) { - return PATHLEN_ERR(); - } -- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len); -+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len); - if (_PyStatus_EXCEPTION(status)) { - return status; - } -@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate, const wchar_t *program_full_pat - return PATHLEN_ERR(); - } - reduce(argv0_path); -- status = joinpath(argv0_path, calculate->lib_python, argv0_path_len); -+ status = joinpath(argv0_path, calculate->multilib_python, argv0_path_len); - if (_PyStatus_EXCEPTION(status)) { - PyMem_RawFree(wbuf); - return status; -@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config) - if (!calculate->lib_python) { - return DECODE_LOCALE_ERR("EXEC_PREFIX define", len); - } -+ calculate->multilib_python = Py_DecodeLocale(LIB "/python" VERSION, &len); -+ if (!calculate->multilib_python) { -+ return DECODE_LOCALE_ERR("EXEC_PREFIX define", len); -+ } - - calculate->warnings = config->pathconfig_warnings; - calculate->pythonpath_env = config->pythonpath_env; -@@ -1216,6 +1221,7 @@ calculate_free(PyCalculatePath *calculate) - PyMem_RawFree(calculate->prefix); - PyMem_RawFree(calculate->exec_prefix); - PyMem_RawFree(calculate->lib_python); -+ PyMem_RawFree(calculate->multilib_python); - PyMem_RawFree(calculate->path_env); - } - -diff --git a/Python/getplatform.c b/Python/getplatform.c -index 81a0f7a..d55396b 100644 ---- a/Python/getplatform.c -+++ b/Python/getplatform.c -@@ -10,3 +10,13 @@ Py_GetPlatform(void) - { - return PLATFORM; - } -+ -+#ifndef LIB -+#define LIB "lib" -+#endif -+ -+const char * -+Py_GetLib(void) -+{ -+ return LIB; -+} -diff --git a/Python/sysmodule.c b/Python/sysmodule.c -index 5b0fb81..0dce754 100644 ---- a/Python/sysmodule.c -+++ b/Python/sysmodule.c -@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime, PyInterpreterState *interp, - PyUnicode_FromString(Py_GetCopyright())); - SET_SYS_FROM_STRING("platform", - PyUnicode_FromString(Py_GetPlatform())); -+ SET_SYS_FROM_STRING("lib", -+ PyUnicode_FromString(Py_GetLib())); - SET_SYS_FROM_STRING("maxsize", - PyLong_FromSsize_t(PY_SSIZE_T_MAX)); - SET_SYS_FROM_STRING("float_info", 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 index 83fd52d87f..d98f243cb1 100644 --- 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 @@ -1,4 +1,4 @@ -From 148861fa16f2aaacd518770f337ea54b5182f981 Mon Sep 17 00:00:00 2001 +From 2406432449784243b7590009d42bd0e871253b2e 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 @@ -9,15 +9,16 @@ 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 +index ee85f35..f0aedb7 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1431,12 +1431,9 @@ python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh +@@ -1640,12 +1640,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 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 index 3e471b9a49..5485020eb4 100644 --- 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 @@ -1,4 +1,4 @@ -From b880e78bf4a1852e260188e6df3ec6034403d2fc Mon Sep 17 00:00:00 2001 +From b6ead2d17ceafed47e598b6f50f3ff669deec5ab 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 @@ -11,10 +11,10 @@ Signed-off-by: Jeremy Puhlman <jpuhlman@mvista.com> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py -index 7208cd0..c0bd0ad 100644 +index c190002..5ef368d 100644 --- a/setup.py +++ b/setup.py -@@ -674,8 +674,8 @@ class PyBuildExt(build_ext): +@@ -854,8 +854,8 @@ class PyBuildExt(build_ext): add_dir_to_list(self.compiler.include_dirs, sysconfig.get_config_var("INCLUDEDIR")) 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..df5179e877 --- /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 86061629f4a179e740a17e53dd2c98ab47af2fe2 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 8d8ce40..35439c6 100644 +--- a/Lib/pty.py ++++ b/Lib/pty.py +@@ -154,7 +154,10 @@ def _copy(master_fd, master_read=_read, stdin_read=_read): + os.write(STDOUT_FILENO, data) + + if STDIN_FILENO in rfds: +- data = stdin_read(STDIN_FILENO) ++ try: ++ data = stdin_read(STDIN_FILENO) ++ except OSError: ++ data = b"" + if not data: + fds.remove(STDIN_FILENO) + else: diff --git a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch deleted file mode 100644 index b97583682a..0000000000 --- a/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.patch +++ /dev/null @@ -1,31 +0,0 @@ -From a21f4f8fa5e5c0601898740b4ac08ec84f41e190 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 18 Apr 2019 17:11:06 +0200 -Subject: [PATCH] Lib/sysconfig.py: fix another place where 'lib' is hardcoded - as the library path - -Upstream-Status: Inappropriate [oe-core specific] -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 d15cec8..87fa5e6 100644 ---- a/Lib/sysconfig.py -+++ b/Lib/sysconfig.py -@@ -20,10 +20,10 @@ __all__ = [ - - _INSTALL_SCHEMES = { - 'posix_prefix': { -- 'stdlib': '{installed_base}/lib/python{py_version_short}', -- 'platstdlib': '{platbase}/lib/python{py_version_short}', -- 'purelib': '{base}/lib/python{py_version_short}/site-packages', -- 'platlib': '{platbase}/lib/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': 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..a9240b3c8a --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch @@ -0,0 +1,32 @@ +From 01d209277e145072e478d8b9acfea3638ee16cdc Mon Sep 17 00:00:00 2001 +From: Alexander Kanavin <alex@linutronix.de> +Date: Fri, 10 Sep 2021 12:28:31 +0200 +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 e64bcdc..40c6b3e 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -613,6 +613,11 @@ def get_config_vars(*args): + _init_non_posix(_CONFIG_VARS) + 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'] + # For backward compatibility, see issue19555 + SO = _CONFIG_VARS.get('EXT_SUFFIX') + if SO is not None: 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 index b1bceac512..2f037ecb09 100644 --- 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 @@ -1,25 +1,32 @@ -From c501e121a872cbcef8ffe626c1de173a125be9f8 Mon Sep 17 00:00:00 2001 +From c960837b8fd83074bab5148236f3d0595468cea4 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 +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 -Upstream-Status: Pending +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/ + +Upstream-Status: Inappropriate [see issues above] 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 +index edd70d4..5e13ba2 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -1457,30 +1457,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c +@@ -1601,30 +1601,30 @@ libinstall: build_all $(srcdir)/Modules/xxmodule.c fi -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ 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..e1dabc92a3 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,19 +1,20 @@ -From cf6a9100902484e4d028ee88742dd2487b014a98 Mon Sep 17 00:00:00 2001 +From 9f85089cc3a21d5ff235bb37c6c9758f2b70497d 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 Upstream-Status: Inappropriate [oe-core specific] Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> + --- Makefile.pre.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile.pre.in b/Makefile.pre.in -index a3a02a7..d5503dd 100644 +index f0aedb7..edd70d4 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in -@@ -507,8 +507,7 @@ build_all_generate_profile: +@@ -519,8 +519,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: diff --git a/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch new file mode 100644 index 0000000000..96c5a3c840 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-Skip-failing-tests-due-to-load-variability-on-YP-AB.patch @@ -0,0 +1,50 @@ +From 7171aeee22a0b7ab57cdf3d1ae15530549f8f92a 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] + +Upstream-Status: Inappropriate [OE-Specific] + +Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com> + +--- + Lib/test/_test_multiprocessing.py | 2 ++ + Lib/test/test_time.py | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py +index 3bc5b8f..a6e106d 100644 +--- a/Lib/test/_test_multiprocessing.py ++++ b/Lib/test/_test_multiprocessing.py +@@ -568,6 +568,7 @@ class _TestProcess(BaseTestCase): + + close_queue(q) + ++ @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)) +@@ -4817,6 +4818,7 @@ class TestWait(unittest.TestCase): + sem.release() + time.sleep(period) + ++ @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 875615a..aebaa8c 100644 +--- a/Lib/test/test_time.py ++++ b/Lib/test/test_time.py +@@ -474,6 +474,7 @@ class TimeTestCase(unittest.TestCase): + def test_perf_counter(self): + time.perf_counter() + ++ @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() 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 index 957839bf3e..993ac243fc 100644 --- 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 @@ -1,19 +1,20 @@ -From 6c8ea7c1dacd42f3ba00440231ec0e6b1a38300d Mon Sep 17 00:00:00 2001 +From d7217b79a4e125d4fcc1087743171b94d91d1121 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 6d06266c6a..51db2e3b2e 100644 +index 4125240..341c9aa 100644 --- a/Python/marshal.c +++ b/Python/marshal.c -@@ -275,9 +275,14 @@ w_ref(PyObject *v, char *flag, WFILE *p) +@@ -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 */ @@ -28,8 +29,5 @@ index 6d06266c6a..51db2e3b2e 100644 return 0; + } - entry = _Py_HASHTABLE_GET_ENTRY(p->hashtable, v); + entry = _Py_hashtable_get_entry(p->hashtable, v); if (entry != NULL) { --- -2.21.0 - 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 index c4fae09a5b..6ab335a405 100644 --- 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 @@ -1,7 +1,8 @@ -From 1ad771d86728ee2ed30e202e9768d8d825f96467 Mon Sep 17 00:00:00 2001 +From bb409432f03dd8256865292e382ad16613737829 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 @@ -13,18 +14,17 @@ 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 +index 4230ef2..ee08b1b 100644 --- a/configure.ac +++ b/configure.ac -@@ -710,160 +710,27 @@ fi - MULTIARCH=$($CC --print-multiarch 2>/dev/null) - AC_SUBST(MULTIARCH) +@@ -718,160 +718,27 @@ then + fi + -AC_MSG_CHECKING([for the platform triplet based on compiler characteristics]) -cat >> conftest.c <<EOF @@ -202,8 +202,5 @@ index ede710e..bc81b0b 100644 + ;; +esac - if test x$PLATFORM_TRIPLET != x && test x$MULTIARCH != x; then - if test x$PLATFORM_TRIPLET != x$MULTIARCH; then --- -2.24.1 - + AC_MSG_CHECKING([for multiarch]) + AS_CASE([$ac_sys_system], diff --git a/meta/recipes-devtools/python/python3/0001-configure.ac-fix-LIBPL.patch b/meta/recipes-devtools/python/python3/0001-configure.ac-fix-LIBPL.patch deleted file mode 100644 index 123ce3a2dc..0000000000 --- a/meta/recipes-devtools/python/python3/0001-configure.ac-fix-LIBPL.patch +++ /dev/null @@ -1,35 +0,0 @@ -From acce3d441e7eadadd2d3ce38654155dc43f1f607 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Fri, 7 Feb 2020 09:36:25 +0800 -Subject: [PATCH] configure.ac: fix LIBPL - -Use LIBDIR rather than prefix/lib, so that it would work when lib64. - -Upstream-Status: Inappropriate [oe-core specific] - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> -Signed-off-by: Li Zhou <li.zhou@windriver.c> -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - configure.ac | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index ce04258..915f475 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -4532,9 +4532,9 @@ fi - dnl define LIBPL after ABIFLAGS and LDVERSION is defined. - AC_SUBST(PY_ENABLE_SHARED) - if test x$PLATFORM_TRIPLET = x; then -- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}" -+ LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}" - else -- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}" -+ LIBPL='$(LIBDIR)'"/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}" - fi - AC_SUBST(LIBPL) - --- -2.7.4 - 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 index 2b68c0acc2..3c62c2acb8 100644 --- 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 @@ -1,4 +1,4 @@ -From bc59d49efff41051034d7fbf5d0c8505e4c3134b Mon Sep 17 00:00:00 2001 +From 78dd1def953e18e7cda0325bb26d27c051bb6890 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 @@ -10,28 +10,14 @@ 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(+) + Lib/sysconfig.py | 2 ++ + 1 file changed, 2 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 +index 40c6b3e..ac94cc7 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py -@@ -419,6 +419,8 @@ def _init_posix(vars): +@@ -474,6 +474,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() diff --git a/meta/recipes-devtools/python/python3/0001-python3-Do-not-hardcode-lib-for-distutils.patch b/meta/recipes-devtools/python/python3/0001-python3-Do-not-hardcode-lib-for-distutils.patch deleted file mode 100644 index fe031b9983..0000000000 --- a/meta/recipes-devtools/python/python3/0001-python3-Do-not-hardcode-lib-for-distutils.patch +++ /dev/null @@ -1,43 +0,0 @@ -From bb711b53f10d32a90a27ccf4b0dc51e4a701d862 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Fri, 7 Feb 2020 09:42:09 +0800 -Subject: [PATCH] python3: Do not hardcode "lib" for distutils - -Get the sys.lib from python3 itself and do not use -hardcoded value of 'lib' for distutils. - -Upstream-Status: Inappropriate [oe-core specific] - -Signed-off-by: Li Zhou <li.zhou@windriver.com> -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - Lib/distutils/command/install.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py -index c625c95..8e32f54 100644 ---- a/Lib/distutils/command/install.py -+++ b/Lib/distutils/command/install.py -@@ -19,6 +19,8 @@ from site import USER_BASE - from site import USER_SITE - HAS_USER_SITE = True - -+libname = sys.lib -+ - WINDOWS_SCHEME = { - 'purelib': '$base/Lib/site-packages', - 'platlib': '$base/Lib/site-packages', -@@ -29,8 +31,8 @@ WINDOWS_SCHEME = { - - INSTALL_SCHEMES = { - 'unix_prefix': { -- 'purelib': '$base/lib/python$py_version_short/site-packages', -- 'platlib': '$platbase/lib/python$py_version_short/site-packages', -+ 'purelib': '$base/' + libname + '/python$py_version_short/site-packages', -+ 'platlib': '$platbase/' + libname + '/python$py_version_short/site-packages', - 'headers': '$base/include/python$py_version_short$abiflags/$dist_name', - 'scripts': '$base/bin', - 'data' : '$base', --- -2.7.4 - 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 fb10ca94b3..6bb85fcb34 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 994783da5c21cab81b6589ed2d4275e665a946f9 Mon Sep 17 00:00:00 2001 +From 9f68a27eb34394a00f1011c06900c609f15fb15c 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 @@ -27,10 +27,10 @@ Signed-off-by: Changqing Li <changqing.li@windriver.com> 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac -index a189d42..0f85486 100644 +index 0c06914..299786b 100644 --- a/configure.ac +++ b/configure.ac -@@ -54,6 +54,7 @@ AC_CONFIG_HEADER(pyconfig.h) +@@ -61,6 +61,7 @@ AC_CONFIG_HEADER(pyconfig.h) AC_CANONICAL_HOST AC_SUBST(build) AC_SUBST(host) @@ -38,7 +38,7 @@ index a189d42..0f85486 100644 # pybuilddir.txt will be created by --generate-posix-vars in the Makefile rm -f pybuilddir.txt -@@ -671,7 +672,7 @@ AC_MSG_RESULT($with_cxx_main) +@@ -688,7 +689,7 @@ AC_MSG_RESULT($with_cxx_main) preset_cxx="$CXX" if test -z "$CXX" then @@ -47,7 +47,7 @@ index a189d42..0f85486 100644 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]) ;; -@@ -957,7 +958,7 @@ rmdir CaseSensitiveTestDir +@@ -976,7 +977,7 @@ rmdir CaseSensitiveTestDir case $ac_sys_system in hp*|HP*) @@ -56,7 +56,7 @@ index a189d42..0f85486 100644 cc|*/cc) CC="$CC -Ae";; esac;; esac -@@ -1335,7 +1336,7 @@ else +@@ -1374,7 +1375,7 @@ else fi], [AC_MSG_RESULT(no)]) if test "$Py_LTO" = 'true' ; then @@ -65,7 +65,7 @@ index a189d42..0f85486 100644 *clang*) AC_SUBST(LLVM_AR) AC_PATH_TOOL(LLVM_AR, llvm-ar, '', ${llvm_path}) -@@ -1425,7 +1426,7 @@ then +@@ -1467,7 +1468,7 @@ then fi fi LLVM_PROF_ERR=no @@ -74,7 +74,7 @@ index a189d42..0f85486 100644 *clang*) # Any changes made here should be reflected in the GCC+Darwin case below PGO_PROF_GEN_FLAG="-fprofile-instr-generate" -@@ -1486,7 +1487,7 @@ esac +@@ -1528,7 +1529,7 @@ esac # compiler and platform. BASECFLAGS tweaks need to be made even if the # user set OPT. @@ -83,7 +83,7 @@ index a189d42..0f85486 100644 *clang*) cc_is_clang=1 ;; -@@ -1622,7 +1623,7 @@ yes) +@@ -1664,7 +1665,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? @@ -92,16 +92,16 @@ index a189d42..0f85486 100644 *icc*) ac_cv_disable_unused_result_warning=no ;; -@@ -1943,7 +1944,7 @@ yes) +@@ -2018,7 +2019,7 @@ yes) + ;; esac - # ICC needs -fp-model strict or floats behave badly -case "$CC" in +case "$cc_basename" in *icc*) + # ICC needs -fp-model strict or floats behave badly CFLAGS_NODIST="$CFLAGS_NODIST -fp-model strict" - ;; -@@ -2711,7 +2712,7 @@ then +@@ -2836,7 +2837,7 @@ then then LINKFORSHARED="-Wl,--export-dynamic" fi;; @@ -110,7 +110,7 @@ index a189d42..0f85486 100644 *gcc*) if $CC -Xlinker --help 2>&1 | grep export-dynamic >/dev/null then -@@ -5362,7 +5363,7 @@ if test "$have_gcc_asm_for_x87" = yes; then +@@ -5622,7 +5623,7 @@ if test "$have_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 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 d38ed61dd7..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: Pensing - -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-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..4fb63a9b7a --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-sysconfig.py-use-platlibdir-also-for-purelib.patch @@ -0,0 +1,28 @@ +From 9162460d81ccc725fb04a14b27d0bf4afcfb69c9 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 daf9f00..e64bcdc 100644 +--- a/Lib/sysconfig.py ++++ b/Lib/sysconfig.py +@@ -27,7 +27,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..371021c0a9 --- /dev/null +++ b/meta/recipes-devtools/python/python3/0001-test_ctypes.test_find-skip-without-tools-sdk.patch @@ -0,0 +1,34 @@ +From 13aa6449c47980c7270dad2527c3911517bf34e6 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.orlign@intel.com> + +--- + Lib/ctypes/test/test_find.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py +index 1ff9d01..59def26 100644 +--- a/Lib/ctypes/test/test_find.py ++++ b/Lib/ctypes/test/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..c762f98307 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 46856e692377d21be3562f6f90c242f5c9594ae2 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 f844e62..04df0c2 100644 --- a/Lib/test/test_locale.py +++ b/Lib/test/test_locale.py -@@ -527,7 +527,7 @@ class TestMiscellaneous(unittest.TestCase): +@@ -564,7 +564,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/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 index 4bd98f62fd..0ead57e465 100644 --- 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 @@ -1,4 +1,4 @@ -From a2dd127b4163aff6cc35af0d0251321964232ad4 Mon Sep 17 00:00:00 2001 +From 246c5ffe75a2d494e415d8a7522df9fe22056d41 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 @@ -10,21 +10,27 @@ 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(+) + setup.py | 8 ++++++++ + 1 file changed, 8 insertions(+) diff --git a/setup.py b/setup.py -index 7691258..ec3f2a4 100644 +index 2be4738..62f0e18 100644 --- a/setup.py +++ b/setup.py -@@ -408,6 +408,10 @@ class PyBuildExt(build_ext): +@@ -517,6 +517,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: 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..30d2906439 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,4 +1,4 @@ -From 863c09f640a5dfd33ff22915b0d5fee7bc5df70a Mon Sep 17 00:00:00 2001 +From 788cd0464ee2b175493a0167ceee8c0045ce323c 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 @@ -11,16 +11,17 @@ as dnf failures). 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(-) diff --git a/configure.ac b/configure.ac -index 915f475..c911011 100644 +index e5e3df8..bfdd987 100644 --- a/configure.ac +++ b/configure.ac -@@ -4828,12 +4828,6 @@ then +@@ -5092,12 +5092,6 @@ then [Define if you have struct stat.st_mtimensec]) fi @@ -34,10 +35,10 @@ index 915f475..c911011 100644 # On Solaris, term.h requires curses.h diff --git a/setup.py b/setup.py -index b0f1541..7208cd0 100644 +index 62f0e18..c190002 100644 --- a/setup.py +++ b/setup.py -@@ -973,8 +973,6 @@ class PyBuildExt(build_ext): +@@ -1169,8 +1169,6 @@ class PyBuildExt(build_ext): panel_library = 'panel' if curses_library == 'ncursesw': curses_defines.append(('HAVE_NCURSESW', '1')) 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 index 820fb98ed8..de4c6c4e19 100644 --- 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 @@ -1,4 +1,4 @@ -From 064187668fcbefdd39a8cde372bf651124c3e578 Mon Sep 17 00:00:00 2001 +From 33b5a31df6050110f4481a24f5a0a0bf7fe80096 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] python3: Add target and native recipes @@ -7,21 +7,21 @@ 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> +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 2df348c..4f8db84 100644 +index 3414a76..361d3a1 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py -@@ -96,7 +96,9 @@ def get_python_inc(plat_specific=0, prefix=None): +@@ -277,7 +277,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'. """ @@ -32,7 +32,7 @@ index 2df348c..4f8db84 100644 prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX if os.name == "posix": if python_build: -@@ -139,7 +141,13 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): +@@ -320,7 +322,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'. """ @@ -47,12 +47,12 @@ index 2df348c..4f8db84 100644 if standard_lib: prefix = plat_specific and BASE_EXEC_PREFIX or BASE_PREFIX else: -@@ -147,7 +155,7 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): - - if os.name == "posix": - libpython = os.path.join(prefix, -- "lib", "python" + get_python_version()) -+ lib_basename, "python" + get_python_version()) +@@ -334,7 +342,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 - else: diff --git a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch index 184540e794..2de72b7199 100644 --- a/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch +++ b/meta/recipes-devtools/python/python3/avoid_warning_about_tkinter.patch @@ -1,4 +1,4 @@ -From ba7202700578d435b07cfdfb7b57e83185752800 Mon Sep 17 00:00:00 2001 +From 6a23d52c905cd1f6a5944255903ec86ea8b904bb 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 @@ -15,10 +15,10 @@ Signed-off-by: Andrei Gherzan <andrei@gherzan.ro> 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py -index ab18ff0..7691258 100644 +index 11b5cf5..2be4738 100644 --- a/setup.py +++ b/setup.py -@@ -1706,8 +1706,8 @@ class PyBuildExt(build_ext): +@@ -1895,8 +1895,8 @@ class PyBuildExt(build_ext): self.detect_decimal() self.detect_ctypes() self.detect_multiprocessing() diff --git a/meta/recipes-devtools/python/python3/cgi_py.patch b/meta/recipes-devtools/python/python3/cgi_py.patch index 6c4ba54320..81e6099cfb 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 5b0d1212d661e9a8a36738279fc9109f96eebd25 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 6cb8cf2..a873ff3 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..5bb25264da 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 baa3a232e64e9bf5ae945366efdb8088ccf9b828 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,11 +14,16 @@ 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 d0db062..e5e3df8 100644 --- a/configure.ac +++ b/configure.ac -@@ -76,7 +76,7 @@ if test "$cross_compiling" = yes; then +@@ -83,7 +83,7 @@ if test "$cross_compiling" = yes; then AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found]) fi AC_MSG_RESULT($interp) diff --git a/meta/recipes-devtools/python/python3/get_module_deps3.py b/meta/recipes-devtools/python/python3/get_module_deps3.py index fd12baad84..1f4c982aed 100644 --- a/meta/recipes-devtools/python/python3/get_module_deps3.py +++ b/meta/recipes-devtools/python/python3/get_module_deps3.py @@ -3,12 +3,17 @@ # 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 @@ -18,13 +23,13 @@ import sys # 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}') @@ -45,19 +50,30 @@ 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: - importlib.import_module('%s' % 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": + modulepath = os.path.dirname(m.__file__) + for i in os.listdir(modulepath): + if i.startswith("_") or not(i.endswith(".py")): + continue + submodule = "{}.{}".format(current_module, i[:-3]) + try: + importlib.import_module(submodule) + 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': @@ -69,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') @@ -84,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' @@ -99,48 +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..2c06784ffc --- /dev/null +++ b/meta/recipes-devtools/python/python3/makerace.patch @@ -0,0 +1,32 @@ +From 7cc02dfa593d1350a689d64a7a6f2dc6478afe24 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 5e13ba2..026bffd 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -1527,7 +1527,7 @@ TESTSUBDIRS= ctypes/test \ + unittest/test unittest/test/testmock + + TEST_MODULES=@TEST_MODULES@ +-libinstall: build_all $(srcdir)/Modules/xxmodule.c ++libinstall: build_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 index c8a8f3d4aa..4da399e46e 100644 --- a/meta/recipes-devtools/python/python3/python-config.patch +++ b/meta/recipes-devtools/python/python3/python-config.patch @@ -1,4 +1,4 @@ -From 07df0ae0d70cba6d1847fe1c24a71063930bec60 Mon Sep 17 00:00:00 2001 +From 8632f25ac4e2c53a3c2c8a1b4fc97fc86e8aad5a 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 @@ -14,34 +14,35 @@ 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(-) + Misc/python-config.in | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Misc/python-config.in b/Misc/python-config.in -index 727c4a8..c702829 100644 +index ebd99da..0492e08 100644 --- a/Misc/python-config.in +++ b/Misc/python-config.in -@@ -6,7 +6,7 @@ +@@ -6,7 +6,9 @@ import getopt import os import sys -import sysconfig ++import warnings ++warnings.filterwarnings("ignore", category=DeprecationWarning) +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: +@@ -35,14 +37,14 @@ if '--help' in opt_flags: for opt in opt_flags: if opt == '--prefix': -- print(sysconfig.get_config_var('prefix')) +- print(getvar('prefix')) + print(sysconfig.PREFIX) elif opt == '--exec-prefix': -- print(sysconfig.get_config_var('exec_prefix')) +- print(getvar('exec_prefix')) + print(sysconfig.EXEC_PREFIX) elif opt in ('--includes', '--cflags'): diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json index 3bcc9b8662..2f5dad6486 100644 --- a/meta/recipes-devtools/python/python3/python3-manifest.json +++ b/meta/recipes-devtools/python/python3/python3-manifest.json @@ -122,8 +122,7 @@ "logging", "netclient", "numbers", - "stringold", - "typing" + "stringold" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/asyncio", @@ -173,10 +172,12 @@ ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/compileall.py", + "${libdir}/python${PYTHON_MAJMIN}/filecmp.py", "${libdir}/python${PYTHON_MAJMIN}/py_compile.py" ], "cached": [ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/compileall.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/filecmp.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/py_compile.*.pyc" ] }, @@ -285,7 +286,7 @@ "${libdir}/python${PYTHON_MAJMIN}/operator.py", "${libdir}/python${PYTHON_MAJMIN}/optparse.py", "${libdir}/python${PYTHON_MAJMIN}/os.py", - "${libdir}/python${PYTHON_MAJMIN}/pathlib.py", + "${libdir}/python${PYTHON_MAJMIN}/pathlib.py", "${libdir}/python${PYTHON_MAJMIN}/pkgutil.py", "${libdir}/python${PYTHON_MAJMIN}/platform.py", "${libdir}/python${PYTHON_MAJMIN}/posixpath.py", @@ -313,6 +314,9 @@ "${libdir}/python${PYTHON_MAJMIN}/tokenize.py", "${libdir}/python${PYTHON_MAJMIN}/traceback.py", "${libdir}/python${PYTHON_MAJMIN}/types.py", + "${libdir}/python${PYTHON_MAJMIN}/typing.py", + "${libdir}/python${PYTHON_MAJMIN}/urllib", + "${libdir}/python${PYTHON_MAJMIN}/urllib/parse.py", "${libdir}/python${PYTHON_MAJMIN}/warnings.py", "${libdir}/python${PYTHON_MAJMIN}/weakref.py", "${prefix}/lib/python${PYTHON_MAJMIN}/config*/*[!.a]" @@ -324,7 +328,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_compression.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_markupbase.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sitebuiltins.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_sysconfigdata*.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_weakrefset.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/abc.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/argparse.*.pyc", @@ -359,7 +363,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/operator.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/optparse.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/os.*.pyc", - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pathlib.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pathlib.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/pkgutil.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/platform.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/posixpath.*.pyc", @@ -386,6 +390,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/tokenize.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/traceback.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/types.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__", @@ -397,7 +402,9 @@ "${libdir}/python${PYTHON_MAJMIN}/importlib/__pycache__", "${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}/importlib/__pycache__/util.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__", + "${libdir}/python${PYTHON_MAJMIN}/urllib/__pycache__/parse.*.pyc" ] }, "crypt": { @@ -427,7 +434,10 @@ "ctypes": { "summary": "Python C types support", "rdepends": [ - "core" + "core", + "crypt", + "io", + "math" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/ctypes", @@ -537,7 +547,10 @@ "distutils": { "summary": "Python Distribution Utilities", "rdepends": [ - "core" + "compression", + "core", + "email", + "stringold" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/distutils" @@ -547,19 +560,12 @@ "doctest": { "summary": "Python framework for running examples in docstrings", "rdepends": [ - "asyncio", - "compression", "core", "debugger", "difflib", - "io", - "logging", - "netclient", - "numbers", "pprint", "shell", "stringold", - "typing", "unittest" ], "files": [ @@ -577,7 +583,9 @@ "datetime", "io", "math", - "netclient" + "mime", + "netclient", + "stringold" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/email", @@ -648,7 +656,6 @@ "io": { "summary": "Python low-level I/O", "rdepends": [ - "compression", "core", "crypt", "math", @@ -690,7 +697,11 @@ "summary": "Python logging support", "rdepends": [ "core", - "stringold" + "io", + "netserver", + "pickle", + "stringold", + "threading" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/logging" @@ -803,12 +814,12 @@ "shell", "smtpd", "sqlite3", + "statistics", "stringold", "syslog", "terminal", "threading", "tkinter", - "typing", "unittest", "unixadmin", "venv", @@ -824,11 +835,18 @@ "summary": "Python multiprocessing support", "rdepends": [ "core", + "crypt", + "ctypes", "io", - "pickle" + "math", + "mmap", + "netclient", + "pickle", + "threading" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_multiprocessing.*.so", + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_posixshmem.*.so", "${libdir}/python${PYTHON_MAJMIN}/multiprocessing" ], "cached": [] @@ -855,10 +873,9 @@ "${libdir}/python${PYTHON_MAJMIN}/mimetypes.py", "${libdir}/python${PYTHON_MAJMIN}/nntplib.py", "${libdir}/python${PYTHON_MAJMIN}/poplib.py", + "${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}/urllib/__pycache__", "${libdir}/python${PYTHON_MAJMIN}/uuid.py" ], "cached": [ @@ -868,6 +885,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/mimetypes.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/nntplib.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/poplib.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/secrets.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/smtplib.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/telnetlib.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/uuid.*.pyc" @@ -876,7 +894,6 @@ "netserver": { "summary": "Python Internet Protocol servers", "rdepends": [ - "compression", "core", "crypt", "datetime", @@ -963,7 +980,8 @@ "pprint": { "summary": "Python pretty-print support", "rdepends": [ - "core" + "core", + "profile" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/pprint.py" @@ -979,12 +997,14 @@ ], "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" ] @@ -992,8 +1012,7 @@ "pydoc": { "summary": "Python interactive help support", "rdepends": [ - "core", - "netclient" + "core" ], "files": [ "${bindir}/pydoc*", @@ -1017,7 +1036,6 @@ "shell": { "summary": "Python shell-like functionality", "rdepends": [ - "compression", "core", "stringold" ], @@ -1069,6 +1087,20 @@ ], "cached": [] }, + "statistics": { + "summary": "Basic statistics module", + "rdepends": [ + "core", + "math", + "numbers" + ], + "files": [ + "${libdir}/python${PYTHON_MAJMIN}/statistics.py" + ], + "cached": [ + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/statistics.*.pyc" + ] + }, "stringold": { "summary": "Python string APIs [deprecated]", "rdepends": [ @@ -1112,13 +1144,11 @@ "core" ], "files": [ - "${libdir}/python${PYTHON_MAJMIN}/_dummy_thread.py", "${libdir}/python${PYTHON_MAJMIN}/_threading_local.py", "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_queue.*.so", "${libdir}/python${PYTHON_MAJMIN}/queue.py" ], "cached": [ - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_dummy_thread.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/_threading_local.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/queue.*.pyc" ] @@ -1129,28 +1159,15 @@ "core" ], "files": [ - "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", + "${libdir}/python${PYTHON_MAJMIN}/lib-dynload/_tkinter.*.so", "${libdir}/python${PYTHON_MAJMIN}/tkinter" ], "cached": [] }, - "typing": { - "summary": "Python typing support", - "rdepends": [ - "core" - ], - "files": [ - "${libdir}/python${PYTHON_MAJMIN}/typing.py" - ], - "cached": [ - "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc" - ] - }, "unittest": { "summary": "Python unit testing framework", "rdepends": [ "asyncio", - "compression", "core", "difflib", "io", @@ -1158,8 +1175,7 @@ "netclient", "numbers", "pprint", - "stringold", - "typing" + "stringold" ], "files": [ "${libdir}/python${PYTHON_MAJMIN}/unittest", @@ -1185,7 +1201,6 @@ "venv": { "summary": "Provides support for creating lightweight virtual environments with their own site directories, optionally isolated from system site directories.", "rdepends": [ - "compression", "core", "logging", "stringold" @@ -1211,7 +1226,21 @@ "xmlrpc": { "summary": "Python XML-RPC support", "rdepends": [ + "compression", "core", + "crypt", + "datetime", + "email", + "fcntl", + "html", + "io", + "math", + "mime", + "netclient", + "netserver", + "numbers", + "pydoc", + "stringold", "xml" ], "files": [ 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_3.8.3.bb b/meta/recipes-devtools/python/python3_3.10.2.bb index a7cfbad5cd..32da2a12c8 100644 --- a/meta/recipes-devtools/python/python3_3.8.3.bb +++ b/meta/recipes-devtools/python/python3_3.10.2.bb @@ -1,9 +1,10 @@ SUMMARY = "The Python Programming Language" HOMEPAGE = "http://www.python.org" -LICENSE = "PSFv2" +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=203a6dbc802ee896020a47161e759642" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4b8801e752a2c70ac41a5f9aa243f766" SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ file://run-ptest \ @@ -11,47 +12,51 @@ SRC_URI = "http://www.python.org/ftp/python/${PV}/Python-${PV}.tar.xz \ 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-Do-not-hardcode-lib-as-location-for-site-packages-an.patch \ file://0001-python3-use-cc_basename-to-replace-CC-for-checking-c.patch \ - file://0001-Lib-sysconfig.py-fix-another-place-where-lib-is-hard.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://reformat_sysconfig.py \ 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://0001-configure.ac-fix-LIBPL.patch \ - file://0001-python3-Do-not-hardcode-lib-for-distutils.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 \ " -SRC_URI_append_class-native = " \ +SRC_URI:append:class-native = " \ + file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \ 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[md5sum] = "3000cf50aaa413052aef82fd2122ca78" -SRC_URI[sha256sum] = "dfab5ec723c218082fe3d5d7ae17ecbdebffa9a1aea4d64aa3a2ecdd2e795864" +SRC_URI[sha256sum] = "17de3ac7da9f2519aa9d64378c603a73a0e9ad58dffa8812e45160c086de64c7" # 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_IGNORE += "CVE-2007-4559" # This is not exploitable when glibc has CVE-2016-10739 fixed. -CVE_CHECK_WHITELIST += "CVE-2019-18348" +CVE_CHECK_IGNORE += "CVE-2019-18348" + +# This is windows only issue. +CVE_CHECK_IGNORE += "CVE-2020-15523" -PYTHON_MAJMIN = "3.8" +PYTHON_MAJMIN = "3.10" S = "${WORKDIR}/Python-${PV}" @@ -61,46 +66,46 @@ inherit autotools pkgconfig qemu ptest multilib_header update-alternatives MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}" -ALTERNATIVE_${PN}-dev = "python3-config" +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" +DEPENDS = "bzip2-replacement-native libffi bzip2 openssl sqlite3 zlib virtual/libintl xz virtual/crypt util-linux-libuuid libtirpc libnsl2 autoconf-archive-native" +DEPENDS:append:class-target = " python3-native" +DEPENDS:append:class-nativesdk = " python3-native" -EXTRA_OECONF = " --without-ensurepip --enable-shared" -EXTRA_OECONF_append_class-native = " --bindir=${bindir}/${PN}" +# force to use the mutex+cond implementation (https://bugs.python.org/issue41710) +CFLAGS += "-DHAVE_BROKEN_POSIX_SEMAPHORES" + +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" -PACKAGECONFIG_class-native ??= "readline gdbm" -PACKAGECONFIG_class-nativesdk ??= "readline gdbm" +# PGO currently causes builds to not be reproducible so disable by default, see YOCTO #13407 +PACKAGECONFIG:class-target ??= "readline 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 () { +do_configure:prepend () { mkdir -p ${B}/Modules cat > ${B}/Modules/Setup.local << EOF *disabled* @@ -109,7 +114,7 @@ ${@bb.utils.contains('PACKAGECONFIG', 'readline', '', 'readline', d)} EOF } -CPPFLAGS_append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid" +CPPFLAGS:append = " -I${STAGING_INCDIR}/ncursesw -I${STAGING_INCDIR}/uuid" EXTRA_OEMAKE = '\ STAGING_LIBDIR=${STAGING_LIBDIR} \ @@ -117,7 +122,7 @@ EXTRA_OEMAKE = '\ LIB=${baselib} \ ' -do_compile_prepend_class-target() { +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 @@ -129,15 +134,15 @@ EOF fi } -do_install_prepend() { +do_install:prepend() { ${WORKDIR}/check_build_completeness.py ${T}/log.do_compile } -do_install_append_class-target() { +do_install:append:class-target() { oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h } -do_install_append_class-native() { +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 @@ -147,9 +152,24 @@ do_install_append_class-native() { # (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 + } -do_install_append() { +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` cp $sysconfigfile ${D}${libdir}/python-sysconfigdata/_sysconfigdata.py @@ -161,13 +181,38 @@ do_install_append() { -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 -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_range.cpython* + rm -f ${D}${libdir}/python${PYTHON_MAJMIN}/test/__pycache__/test_xml_etree.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 () { +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" +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 () { @@ -227,7 +272,7 @@ python(){ # 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').split() + rprovides = (d.getVar('RPROVIDES') or "").split() # ${PN}-misc-native is not in the manifest rprovides.append(pn + '-misc-native') @@ -237,7 +282,7 @@ python(){ if pypackage not in rprovides: rprovides.append(pypackage) - d.setVar('RPROVIDES_class-native', ' '.join(rprovides)) + d.setVar('RPROVIDES:class-native', ' '.join(rprovides)) # Then work on the target include_pycs = d.getVar('INCLUDE_PYCS') @@ -255,33 +300,36 @@ python(){ newpackages.append(pypackage) # "Build" python's manifest FILES, RDEPENDS and SUMMARY - d.setVar('FILES_' + pypackage, '') + d.setVar('FILES:' + pypackage, '') for value in python_manifest[key]['files']: - d.appendVar('FILES_' + pypackage, ' ' + value) + d.appendVar('FILES:' + pypackage, ' ' + value) # Add cached files if include_pycs == '1': for value in python_manifest[key]['cached']: - d.appendVar('FILES_' + pypackage, ' ' + value) + 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) + 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.appendVar('RRECOMMENDS:' + pypackage, ' ' + pn + '-' + value) - d.setVar('SUMMARY_' + pypackage, python_manifest[key]['summary']) + 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') + 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 @@ -302,36 +350,34 @@ do_create_manifest() { } # bitbake python -c create_manifest -addtask do_create_manifest - # Make sure we have native python ready when we create a new manifest -do_create_manifest[depends] += "${PN}:do_prepare_recipe_sysroot" -do_create_manifest[depends] += "${PN}:do_patch" +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" +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} = "" +RPROVIDES:${PN}-modules = "${PN}" -FILES_${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3" -FILES_${PN}-idle += "${bindir}/idle3 ${bindir}/idle${PYTHON_MAJMIN}" +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" +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" +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 += "\ +RDEPENDS:${PN}-misc += "\ ${PN}-core \ ${PN}-email \ ${PN}-codecs \ @@ -340,22 +386,29 @@ RDEPENDS_${PN}-misc += "\ ${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" +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" +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}-tests_append_class-target = " ${MLPREFIX}bash" -RDEPENDS_${PN}-tests_append_class-nativesdk = " ${MLPREFIX}bash" +RDEPENDS:libpython3:append:libc-glibc = " libgcc" +RDEPENDS:${PN}-ctypes:append:libc-glibc = " ${MLPREFIX}ldconfig" +RDEPENDS:${PN}-ptest = "${PN}-modules ${PN}-tests ${PN}-dev 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', '${MLPREFIX}tk ${MLPREFIX}tk-lib', '', d)}" +RDEPENDS:${PN}-idle += "${@bb.utils.contains('PACKAGECONFIG', 'tk', '${PN}-tkinter ${MLPREFIX}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 +} |