Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-dev] [PATCH 00/30] One batch of Python eclass updates to rule them all
Date: Sun, 06 Feb 2022 12:49:08
Message-Id: 20220206124841.1299133-1-mgorny@gentoo.org
1 Hi,
2
3 Here's the largest batch of eclass updates in quite some time. They
4 combine some new features needed for PEP 517 packages, other new
5 features, refactoring, cleanup and cosmetic changes -- hopefully
6 to stop the cache updates for some time.
7
8 The changes can be also reviewed on GitHub, particularly if you want
9 to see the big diff rather than the 30 individual changes:
10 https://github.com/gentoo/gentoo/pull/24065
11
12 The highlights are:
13
14 1. A new distutils_pep517_install function is introduced that carries
15 the "core" PEP 517 functionality (previously inline
16 in distutils-r1_python_compile). This is mostly an internal change,
17 except that it can be used to install additional packages required
18 for tests (right now isort & pip need it). New isort revision
19 is included.
20
21 2. Some deprecated stuff that is no longer used in ::gentoo is removed.
22 Since it causes failures in global scope, there's little risk
23 of accidentally reintroducing its use.
24
25 3. python-any-r1 + python-r1 any-of API is now much more verbose.
26 It is explaining why a particular implementations is selected
27 or rejected. In additional to that, a new python_has_version()
28 wrapper is introduced that serves as a verbose alternative
29 to has_version() for use in python_check_deps(). This particularly
30 applies to USE=doc via distutils_enable_sphinx. (requested by soap)
31
32 Screenshot: https://pbs.twimg.com/media/FK1wBkFXIAElWm7?format=jpg
33
34 4. build_sphinx regression when Sphinx is not available for the current
35 Python version is fixed. It was broken by PEP 517 changes.
36
37 5. More complex inline Python invocations now use heredoc syntax
38 instead of `-c` (thanks to arthurzam for the suggestion!). This
39 improves readability a lot.
40
41 6. python_optimize is also more verbose now.
42
43 7. python_gen* now accept stdlib versions in additional to exact
44 interpreter names. The primary use is replacing backport deps like:
45
46 $(python_gen_cond_dep ... python3_7 pypy3)
47
48 with more maintanable:
49
50 $(python_gen_cond_dep ... 3.7)
51
52 The big difference is that the latter doesn't need to be updated
53 every time PyPy3 switches to a newer stdlib version.
54
55 8. The eclasses now issue a QA warning if the ebuild has been updated
56 recently (i.e. in 2022, through looking up the Copyright line)
57 and PYTHON_COMPAT still lists old implementations. (requested
58 by sam).
59
60 9. Minimum tomli dep is raised to aid people who don't update their
61 systems often enough.
62
63 --
64 Best regards,
65 Michał Górny
66
67
68 Michał Górny (30):
69 distutils-r1.eclass: Split backend getting code into a function
70 distutils-r1.eclass: Get wheel name from the backend
71 distutils-r1.eclass: Create distutils_pep517_install helper
72 dev-python/isort: Switch to PEP 517 build
73 python-r1.eclass: Remove deprecated python_gen_usedep
74 python-any-r1.eclass: Move EPYTHON validity check to python_setup()
75 python-utils-r1.eclass: Add function to run python_check_deps()
76 python-any-r1.eclass: Explain the reason for interpreter choice
77 python-utils-r1.eclass: Report _python_run_check_deps verbosely
78 python-utils-r1.eclass: Inline python_is_installed
79 distutils-r1.eclass: Fix has_version for distutils_enable_sphinx
80 python-utils-r1.eclass: Add a verbose python_has_version() wrapper
81 distutils-r1.eclass: Use python_has_version in ...enable_sphinx
82 python-utils-r1.eclass: Fix sphinx_build for non-autodoc case
83 python-utils-r1.eclass: Remove deprecated python_export
84 python-utils-r1.eclass: Remove python_wrapper_setup
85 python-single-r1.eclass: Inline & simplify USE-deps in gen_cond_dep
86 python-r1.eclass: Improve comment for USE-dep generation
87 python-utils-r1.eclass: Remove python_is_python3
88 python-single-r1.eclass: Remove PYTHON_MULTI_USEDEP
89 distutils-r1.eclass: Use heredoc instead of "python -c"
90 python-utils-r1.eclass: Use heredoc instead of "python -c"
91 python-utils-r1.eclass: Remove old phase check from python_optimize
92 python-utils-r1.eclass: Add status messages to python_optimize
93 python-utils-r1.eclass: Support matching impls by stdlib version
94 dev-python/jaraco-text: Use python_gen_cond_dep w/ stdlib ver
95 python-any-r1.eclass: Do not test EPYTHON twice
96 python-utils-r1.eclass: Add QA check for obsolete PYTHON_COMPAT
97 dev-libs/libwacom: Use python_has_version for verbose output
98 distutils-r1.eclass: Add min version to tomli dep
99
100 dev-libs/libwacom/libwacom-1.11.ebuild | 6 +-
101 dev-libs/libwacom/libwacom-1.12.ebuild | 6 +-
102 dev-python/isort/isort-5.10.1-r1.ebuild | 65 +++++
103 .../jaraco-text/jaraco-text-3.7.0-r1.ebuild | 2 +-
104 eclass/distutils-r1.eclass | 215 ++++++++++-------
105 eclass/python-any-r1.eclass | 62 ++---
106 eclass/python-r1.eclass | 97 ++------
107 eclass/python-single-r1.eclass | 68 +-----
108 eclass/python-utils-r1.eclass | 227 +++++++++++-------
109 eclass/tests/python-utils-r1.sh | 5 -
110 10 files changed, 382 insertions(+), 371 deletions(-)
111 create mode 100644 dev-python/isort/isort-5.10.1-r1.ebuild
112
113 --
114 2.35.1

Replies

Subject Author
[gentoo-dev] [PATCH 01/30] distutils-r1.eclass: Split backend getting code into a function "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 02/30] distutils-r1.eclass: Get wheel name from the backend "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 03/30] distutils-r1.eclass: Create distutils_pep517_install helper "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 04/30] dev-python/isort: Switch to PEP 517 build "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 05/30] python-r1.eclass: Remove deprecated python_gen_usedep "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 06/30] python-any-r1.eclass: Move EPYTHON validity check to python_setup() "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 07/30] python-utils-r1.eclass: Add function to run python_check_deps() "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 08/30] python-any-r1.eclass: Explain the reason for interpreter choice "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 09/30] python-utils-r1.eclass: Report _python_run_check_deps verbosely "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 10/30] python-utils-r1.eclass: Inline python_is_installed "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 11/30] distutils-r1.eclass: Fix has_version for distutils_enable_sphinx "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 12/30] python-utils-r1.eclass: Add a verbose python_has_version() wrapper "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 13/30] distutils-r1.eclass: Use python_has_version in ...enable_sphinx "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 14/30] python-utils-r1.eclass: Fix sphinx_build for non-autodoc case "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 15/30] python-utils-r1.eclass: Remove deprecated python_export "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 16/30] python-utils-r1.eclass: Remove python_wrapper_setup "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 17/30] python-single-r1.eclass: Inline & simplify USE-deps in gen_cond_dep "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 18/30] python-r1.eclass: Improve comment for USE-dep generation "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 19/30] python-utils-r1.eclass: Remove python_is_python3 "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 20/30] python-single-r1.eclass: Remove PYTHON_MULTI_USEDEP "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 21/30] distutils-r1.eclass: Use heredoc instead of "python -c" "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 22/30] python-utils-r1.eclass: Use heredoc instead of "python -c" "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 23/30] python-utils-r1.eclass: Remove old phase check from python_optimize "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 24/30] python-utils-r1.eclass: Add status messages to python_optimize "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 25/30] python-utils-r1.eclass: Support matching impls by stdlib version "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 26/30] dev-python/jaraco-text: Use python_gen_cond_dep w/ stdlib ver "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 27/30] python-any-r1.eclass: Do not test EPYTHON twice "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 28/30] python-utils-r1.eclass: Add QA check for obsolete PYTHON_COMPAT "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 29/30] dev-libs/libwacom: Use python_has_version for verbose output "Michał Górny" <mgorny@g.o>
[gentoo-dev] [PATCH 30/30] distutils-r1.eclass: Add min version to tomli dep "Michał Górny" <mgorny@g.o>
Re: [gentoo-dev] [PATCH 00/30] One batch of Python eclass updates to rule them all Sam James <sam@g.o>