Date
1 - 4 of 4
[PATCH 00/19] Python PEP-517: build wheels and installw with pip
Upstream Python is moving to pyproject.toml rather than setup.py and
wheels rather than eggs. The main place this is documented is in PEP-517[1]. Installing packages with setup.py install is deprecated. We have a choice with the 'kirkstone' LTS release of introducing this series (and fixing any fall out during the stabilization period) or living with deprecated Python packaging for the duration of the LTS (at a minimum 2 years). This seems to be a compelling enough reason to bring in this series, even if it results in a slight slip of the 'feature freeze', which is officially tomorrow, Monday 21 Feb, 2022. This series bootstraps python3-setuptools-native, python3-flit-core-native, python3-wheel-native and python3-pip-native, simply unzipping the wheel into PYTHON_SITEPACKAGES_DIR. This allows all other recipes to be installed with pip, as intended by upstream. Three new classes are introduced: (1) flit_core which builds PEP-517 compliant packages which use flit_core.buildapi as their build-backend. (2) setuptools_build_meta which builds PEP-517 compliant packages which use setuptools_build_meta as their build-backend. (3) pip_install_wheel, which simply installs wheels built by other classes. The original setuptools3.bbclass do_compile is modified to 'setup.py bdist_wheel' (from python3-wheel-native) rather than the deprecated 'setup.py build' mechanism. The original setuptools3.bbclass do_install is modified to use the pip_install_wheel.bbclass to install wheels with pip rather than the deprecated 'setup.py install' mechanism. For pip install, we disable dependency checking (--no-deps) because it proves to be brittle in our environment without providing full wheel cache that seems like overhead that we do not need. We also disable fetching wheels from pypi (--no-index). This is no different than our normal workflow of requiring dependencies to be defined in a recipe. Missing from this series is documentation of the new features, classes and variables (this will be done under separate cover). Also desired and previously discussed in YP meetings is a helper function to warn that a recipe which currently inherits setuptools3 but has a pyproject.toml and defines a build-system.build-backend should instead use of the new PEP-517 classes. This function is still in progress. During testing, recipes which use python3-setuptools-scm are failing to determine the version of the python package, For several recipes, the fix was to use pyproject.toml and PEP-517 build backends. To be sure, other recipes are still going to fail for the short term, until the root cause can be determined. Another PEP-517 build-backend, poetry.core.masonry.api has been identified in recipes in meta-python, but not in oe-core. The python3-poetry-core recipe is WIP, but brings in a number of dependencies that are perhaps not worth it to bring into oe-core at this time. Rather we can support these recipes in meta-python? [YOCTO #14638] [1] https://www.python.org/dev/peps/pep-0517/ The following changes since commit 0539b563c6f41fef383429a13c28bf918231d404: libhandy: Use upstream regex to check version of upgrade. (2022-02-20 16:45:25 +0000) are available in the Git repository at: git://git.yoctoproject.org/git/poky-contrib timo/bootstrap-wheels http://git.yoctoproject.org/cgit.cgi/git/poky-contrib/log/?h=timo/bootstrap-wheels Tim Orling (19): python3-wheel: move 0.37.0 from meta-python python3-flit-core: add recipe for 3.6.0 python3-flit-core: simplify flit_core.bbclass: add helper for newer python packaging python3-wheel: inherit flit_core pip_install_wheel.bbclass: add helper class setuptools_build_meta.bbclass: add helper class python3-pip: inherit setuptools_build_meta python3-attrs: inherit setuptools_build_meta python3-git: inherit setuptools_build_meta python3-pytest: inherit setuptools_build_meta python3-setuptools-scm: inherit setuptools_build_meta python3-zipp: inherit setuptools_build_meta python3-iniconfig: inherit setuptools_build_meta python3-py: inherit setuptools_build_meta python3-pluggy: inherit setuptools_build_meta python3-setuptools: inherit setuptools_base_meta setuptools3.bbclass: refactor for wheels python3-more-itertools: set PIP_INSTALL_PACKAGE meta/classes/flit_core.bbclass | 16 +++ meta/classes/pip_install_wheel.bbclass | 18 ++++ meta/classes/setuptools3.bbclass | 20 ++-- meta/classes/setuptools_build_meta.bbclass | 18 ++++ .../python/python3-attrs_21.4.0.bb | 2 +- .../python/python3-flit-core_3.6.0.bb | 41 +++++++ .../python/python3-git_3.1.26.bb | 2 +- .../python/python3-iniconfig_1.1.1.bb | 4 +- .../python/python3-more-itertools_8.12.0.bb | 2 + .../python/python3-pip_22.0.3.bb | 19 +++- .../python/python3-pluggy_1.0.0.bb | 2 +- .../python/python3-py_1.11.0.bb | 2 +- .../python/python3-pytest_7.0.1.bb | 4 +- .../python/python3-setuptools-scm_6.4.2.bb | 2 +- .../python/python3-setuptools_59.5.0.bb | 19 +++- ...roject.toml-from-flit-backend-branch.patch | 100 ++++++++++++++++++ .../python/python3-wheel_0.37.1.bb | 24 +++++ .../python/python3-zipp_3.7.0.bb | 2 +- 18 files changed, 269 insertions(+), 28 deletions(-) create mode 100644 meta/classes/flit_core.bbclass create mode 100644 meta/classes/pip_install_wheel.bbclass create mode 100644 meta/classes/setuptools_build_meta.bbclass create mode 100644 meta/recipes-devtools/python/python3-flit-core_3.6.0.bb create mode 100644 meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch create mode 100644 meta/recipes-devtools/python/python3-wheel_0.37.1.bb -- 2.30.2 |
|
On Sun, Feb 20, 2022 at 5:27 PM Tim Orling via lists.openembedded.org <ticotimo=gmail.com@...> wrote: Upstream Python is moving to pyproject.toml rather than setup.py and I pushed a few more fixes to the same branch. Several recipes are failing in package qa because somehow the hash bang of e.g. #!/usr/bin/env python3 is being expanded to the full path to nativepython3 and this ends up being too long (ignore the fact that it is completely wrong): "maximum shebang size exceeded, the maximum size is 128. [shebang-size]" The installed files do not have the path to nativepython3 in them, they have the exepected #!/usr/bin/env python3 or similar. Tim Orling (19): |
|
Hi,
Seems that python changes cause build fail https://swatbot.yoctoproject.org/collection/6991/ Regards, Oleksiy ________________________________________ From: openembedded-core@... <openembedded-core@...> on behalf of Tim Orling <ticotimo@...> Sent: Monday, February 21, 2022 03:27 To: openembedded-core@... Subject: [OE-core] [PATCH 00/19] Python PEP-517: build wheels and installw with pip Upstream Python is moving to pyproject.toml rather than setup.py and wheels rather than eggs. The main place this is documented is in PEP-517[1]. Installing packages with setup.py install is deprecated. We have a choice with the 'kirkstone' LTS release of introducing this series (and fixing any fall out during the stabilization period) or living with deprecated Python packaging for the duration of the LTS (at a minimum 2 years). This seems to be a compelling enough reason to bring in this series, even if it results in a slight slip of the 'feature freeze', which is officially tomorrow, Monday 21 Feb, 2022. This series bootstraps python3-setuptools-native, python3-flit-core-native, python3-wheel-native and python3-pip-native, simply unzipping the wheel into PYTHON_SITEPACKAGES_DIR. This allows all other recipes to be installed with pip, as intended by upstream. Three new classes are introduced: (1) flit_core which builds PEP-517 compliant packages which use flit_core.buildapi as their build-backend. (2) setuptools_build_meta which builds PEP-517 compliant packages which use setuptools_build_meta as their build-backend. (3) pip_install_wheel, which simply installs wheels built by other classes. The original setuptools3.bbclass do_compile is modified to 'setup.py bdist_wheel' (from python3-wheel-native) rather than the deprecated 'setup.py build' mechanism. The original setuptools3.bbclass do_install is modified to use the pip_install_wheel.bbclass to install wheels with pip rather than the deprecated 'setup.py install' mechanism. For pip install, we disable dependency checking (--no-deps) because it proves to be brittle in our environment without providing full wheel cache that seems like overhead that we do not need. We also disable fetching wheels from pypi (--no-index). This is no different than our normal workflow of requiring dependencies to be defined in a recipe. Missing from this series is documentation of the new features, classes and variables (this will be done under separate cover). Also desired and previously discussed in YP meetings is a helper function to warn that a recipe which currently inherits setuptools3 but has a pyproject.toml and defines a build-system.build-backend should instead use of the new PEP-517 classes. This function is still in progress. During testing, recipes which use python3-setuptools-scm are failing to determine the version of the python package, For several recipes, the fix was to use pyproject.toml and PEP-517 build backends. To be sure, other recipes are still going to fail for the short term, until the root cause can be determined. Another PEP-517 build-backend, poetry.core.masonry.api has been identified in recipes in meta-python, but not in oe-core. The python3-poetry-core recipe is WIP, but brings in a number of dependencies that are perhaps not worth it to bring into oe-core at this time. Rather we can support these recipes in meta-python? [YOCTO #14638] [1] https://www.python.org/dev/peps/pep-0517/ The following changes since commit 0539b563c6f41fef383429a13c28bf918231d404: libhandy: Use upstream regex to check version of upgrade. (2022-02-20 16:45:25 +0000) are available in the Git repository at: git://git.yoctoproject.org/git/poky-contrib timo/bootstrap-wheels http://git.yoctoproject.org/cgit.cgi/git/poky-contrib/log/?h=timo/bootstrap-wheels Tim Orling (19): python3-wheel: move 0.37.0 from meta-python python3-flit-core: add recipe for 3.6.0 python3-flit-core: simplify flit_core.bbclass: add helper for newer python packaging python3-wheel: inherit flit_core pip_install_wheel.bbclass: add helper class setuptools_build_meta.bbclass: add helper class python3-pip: inherit setuptools_build_meta python3-attrs: inherit setuptools_build_meta python3-git: inherit setuptools_build_meta python3-pytest: inherit setuptools_build_meta python3-setuptools-scm: inherit setuptools_build_meta python3-zipp: inherit setuptools_build_meta python3-iniconfig: inherit setuptools_build_meta python3-py: inherit setuptools_build_meta python3-pluggy: inherit setuptools_build_meta python3-setuptools: inherit setuptools_base_meta setuptools3.bbclass: refactor for wheels python3-more-itertools: set PIP_INSTALL_PACKAGE meta/classes/flit_core.bbclass | 16 +++ meta/classes/pip_install_wheel.bbclass | 18 ++++ meta/classes/setuptools3.bbclass | 20 ++-- meta/classes/setuptools_build_meta.bbclass | 18 ++++ .../python/python3-attrs_21.4.0.bb | 2 +- .../python/python3-flit-core_3.6.0.bb | 41 +++++++ .../python/python3-git_3.1.26.bb | 2 +- .../python/python3-iniconfig_1.1.1.bb | 4 +- .../python/python3-more-itertools_8.12.0.bb | 2 + .../python/python3-pip_22.0.3.bb | 19 +++- .../python/python3-pluggy_1.0.0.bb | 2 +- .../python/python3-py_1.11.0.bb | 2 +- .../python/python3-pytest_7.0.1.bb | 4 +- .../python/python3-setuptools-scm_6.4.2.bb | 2 +- .../python/python3-setuptools_59.5.0.bb | 19 +++- ...roject.toml-from-flit-backend-branch.patch | 100 ++++++++++++++++++ .../python/python3-wheel_0.37.1.bb | 24 +++++ .../python/python3-zipp_3.7.0.bb | 2 +- 18 files changed, 269 insertions(+), 28 deletions(-) create mode 100644 meta/classes/flit_core.bbclass create mode 100644 meta/classes/pip_install_wheel.bbclass create mode 100644 meta/classes/setuptools_build_meta.bbclass create mode 100644 meta/recipes-devtools/python/python3-flit-core_3.6.0.bb create mode 100644 meta/recipes-devtools/python/python3-wheel/0001-Backport-pyproject.toml-from-flit-backend-branch.patch create mode 100644 meta/recipes-devtools/python/python3-wheel_0.37.1.bb -- 2.30.2 |
|
Richard Purdie
On Mon, 2022-02-21 at 10:52 +0000, Oleksiy Obitotskyy via lists.openembedded.org
wrote: Hi,FWIW that was with the other patches in your branch too. I was curious to see how it looked but it isn't quite there yet :/ Cheers, Richard |
|