commit:     ef2c9d2102b3c06f1c346097e4dd85cdf19b1d59
Author:     Eli Schwartz <eschwartz93 <AT> gmail <DOT> com>
AuthorDate: Sun Jun 23 04:50:18 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Jun 25 01:31:25 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ef2c9d21

dev-python/setuptools: add strong blocker for old versions of setuptools-rust

This version is no longer packaged in the tree. It contains a runtime dependency
on typing_extensions, and triggers pathological dependency graph bugs
due to its nature as a setuptools plugin. The issue trivially manifests
when changing PYTHON_TARGETS.

The ONLY way to fix this is to update/uninstall setuptools-rust before
recompiling setuptools itself. Uninstalling is reasonably cheap, since
the package is only ever used as a bdep for other packages. This also
means it may end up not getting upgraded in a timely fashion.

Strong blockers are a strong tool to use here, but:
- it is an old version so panicking and refusing to do anything until it
  gets manually removed may be warranted
- it does in fact prevent even successfully running src_compile() for
  setuptools itself, if setuptools-rust is in partially-merged state due
  to typing_extensions being queued before setuptools and
  setuptools-rust being queued *after* setuptools

This "fixes" world updates by telling people exactly which package to
manually remove rather than inscrutably failing at compile time with
python tracebacks and leaving them to guess which package to manually
remove. It could be wished that users would be aided through the power
of automatically resolved dependency graphs, but there's no good options
here and at least the error message is clear.

No revbump, because existing packages that successfully compiled don't
have the issue and it only occurs during certain world updates.

Bug: https://bugs.gentoo.org/933553
Signed-off-by: Eli Schwartz <eschwartz93 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-python/setuptools/setuptools-69.0.3-r1.ebuild | 1 +
 dev-python/setuptools/setuptools-69.5.1-r1.ebuild | 1 +
 dev-python/setuptools/setuptools-70.0.0.ebuild    | 1 +
 3 files changed, 3 insertions(+)

diff --git a/dev-python/setuptools/setuptools-69.0.3-r1.ebuild 
b/dev-python/setuptools/setuptools-69.0.3-r1.ebuild
index 056511cea1a8..c0efaa62a9ae 100644
--- a/dev-python/setuptools/setuptools-69.0.3-r1.ebuild
+++ b/dev-python/setuptools/setuptools-69.0.3-r1.ebuild
@@ -26,6 +26,7 @@ IUSE="test"
 RESTRICT="!test? ( test )"
 
 RDEPEND="
+       !!<dev-python/setuptools-rust-1.8.0
        >=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
        >=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
        >=dev-python/ordered-set-4.0.2-r1[${PYTHON_USEDEP}]

diff --git a/dev-python/setuptools/setuptools-69.5.1-r1.ebuild 
b/dev-python/setuptools/setuptools-69.5.1-r1.ebuild
index 548567ac52f4..bcb1a8e87e20 100644
--- a/dev-python/setuptools/setuptools-69.5.1-r1.ebuild
+++ b/dev-python/setuptools/setuptools-69.5.1-r1.ebuild
@@ -27,6 +27,7 @@ RESTRICT="!test? ( test )"
 
 # check */_vendor/vendored.txt
 RDEPEND="
+       !!<dev-python/setuptools-rust-1.8.0
        >=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
        >=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
        >=dev-python/ordered-set-4.0.2-r1[${PYTHON_USEDEP}]

diff --git a/dev-python/setuptools/setuptools-70.0.0.ebuild 
b/dev-python/setuptools/setuptools-70.0.0.ebuild
index f2d2eb0377c7..9b177c5796d4 100644
--- a/dev-python/setuptools/setuptools-70.0.0.ebuild
+++ b/dev-python/setuptools/setuptools-70.0.0.ebuild
@@ -27,6 +27,7 @@ RESTRICT="!test? ( test )"
 
 # check */_vendor/vendored.txt
 RDEPEND="
+       !!<dev-python/setuptools-rust-1.8.0
        >=dev-python/jaraco-text-3.7.0-r1[${PYTHON_USEDEP}]
        >=dev-python/more-itertools-8.12.0-r1[${PYTHON_USEDEP}]
        >=dev-python/ordered-set-4.0.2-r1[${PYTHON_USEDEP}]

Reply via email to