On Sun, Feb 20, 2022 at 5:27 PM Tim Orling via lists.openembedded.org <[email protected]> wrote:
> 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 > > 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): > 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 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#162012): https://lists.openembedded.org/g/openembedded-core/message/162012 Mute This Topic: https://lists.openembedded.org/mt/89285058/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
