| Summary: | If package-a both DEPENDs and PDEPENDs on package-b, and package-b has a R / DEPEND on package-a, portage doesn't error when building package-b from source | ||
|---|---|---|---|
| Product: | Portage Development | Reporter: | Eli Schwartz <eschwartz> |
| Component: | Core - Dependencies | Assignee: | Portage team <dev-portage> |
| Status: | CONFIRMED --- | ||
| Severity: | normal | CC: | eschwartz, mgorny |
| Priority: | Normal | ||
| Version: | unspecified | ||
| Hardware: | All | ||
| OS: | Linux | ||
| See Also: | https://bugs.gentoo.org/show_bug.cgi?id=830966 | ||
| Whiteboard: | |||
| Package list: | Runtime testing required: | --- | |
|
Description
Eli Schwartz
2024-08-02 17:47:55 UTC
It has been pointed out to me that there's a loophole in PMS: - Runtime dependencies (RDEPEND). These must be installed and usable before the results of an ebuild merging are treated as usable. - Post dependencies (PDEPEND). These must be installed at some point before the package manager finishes the batch of installs. The sole purpose of post dependencies is to resolve cyclic dependencies as a last resort, which is what I tried to use it for. It is logically inconsistent for it to NOT be taken into account for satisfiability. Or perhaps I should say, it is logically inconsistent for PDEPEND to exist, but not have "PDEPEND except taken into account for the dependency graph". The existence of a PDEPEND="package-b" implies package-b is necessary for using package-a, so... how can I use package-a in another package before the batch of installs is done? Maybe an alternative way to do what I was *trying* to do, is for EAPI 9 to permit merging RDEPEND in any order, ignoring cyclic dependencies, as long as there are NO pkg_* phases in any of the associated packages within that group. See bug 937150. (In reply to Eli Schwartz from comment #2) > Maybe an alternative way to do what I was *trying* to do, is for EAPI 9 to > permit merging RDEPEND in any order, ignoring cyclic dependencies, as long > as there are NO pkg_* phases in any of the associated packages within that > group. This is what Portage currently does, and it's a mess. RDEPEND+PDEPEND let's us specify "install A first because it MUST be there, B is secondary". Back in the day setuptools would have a cyclic dep on certifi. certifi would be PDEP because you could use setuptools without it, so you could install everything else first to build certifi. Without that clarification, you could actually get non-functional setuptools. |