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@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Eli Schwartz
2024-06-23 00:50:18 -04:00
committed by Sam James
parent aca7df37ff
commit ef2c9d2102
3 changed files with 3 additions and 0 deletions

View File

@@ -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}]

View File

@@ -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}]

View File

@@ -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}]