Skip to content

RdependChange is unnecessarily emitted when PYTHON_COMPAT is updated #761

@eli-schwartz

Description

@eli-schwartz

Packages regularly get PYTHON_COMPAT updated with new impls,.and pkgcheck then complains that the ebuild has been modified and RDEPEND has changed without a revbump to force the RDEPEND to be propagated to installed user systems.

But PYTHON_COMPAT always adds new RDEPEND in the form:

USE+="
    python_targets_python3_14
"
RDEPEND+="
    python_targets_python3_14? (
        dev-lang/python:3.14
    )
"

... hence it's inaccurate to claim that a revbump is needed to propagate metadata changes. Furthermore, it's undesirable to revbump. We generally don't, and in cases where the ebuild doesn't need patches to ensure tests pass for the new python implementation, avoiding revbump+30day+stablereqs means we can actually get the whole ecosystem ported in a timely manner. It also means that for example when other packages have an optional dependency on python (and use python modules), we aren't forced to make an "either or" decision about whether to enable new python versions (that depend on additional unstable-only packages) or successfully stable a trivial bugfix which does legitimately need a revbump but there is already a revbumped unstable package doing nothing but adding PYTHON_COMPAT. We could of course revbump yet again with an urgent bugfix, drop python support, stable that, then revbump yet again with new PYTHON_COMPAT but that sounds incredibly painful.

Generically, the issue here is that USE-dependencies that can only be enabled together with enabling a USE flag newly added to the package in the same commit that added the dependencies, should not trigger this warning. It just mostly occurs for python since all PYTHON_TARGETS are guaranteed to act like (-) use, not like (+) use. So we know that the RdependChange that is being warned about is only applicable to users who have rebuilt with a newly enabled USE flag.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions