Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 831158 - Portage does not skip binary packages that depend on removed ebuilds
Summary: Portage does not skip binary packages that depend on removed ebuilds
Status: UNCONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core - Dependencies (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-01-13 22:01 UTC by Allen Webb
Modified: 2023-05-20 05:28 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Allen Webb 2022-01-13 22:01:30 UTC
Here is an example error from the Chrome OS build:
```
!!! All ebuilds that could satisfy "dev-rust/regex:1.5.3" for /build/octopus/ have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-rust/regex-1.5.3::chromiumos (masked by: need to rebuild from source)

(dependency required by "@__auto_rebuild__" [argument])
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.
```

We worked around the problem by restoring dev-rust/regex/regex-1.5.3.ebuild until we had binary packages built against the new version of dev-rust/regex, so portage could resolve the depgraph without bailing out.

Taking a look at degraph.py here:
https://github.com/gentoo/portage/blob/v2.3.0_rc1/pym/_emerge/depgraph.py#L265

It doesn't look like there is code to handle the case that a dependency is present on the binhost, but not present as in source.

Reproducible: Always

Steps to Reproduce:
1. Generate binary packages for a package A with a slot dependency on package B and upload them to a binhost.
2. Upgrade package B and remove the ebuild for the old version.
3. Build a package that depends on package A against with binary packages enabled using the binhost in step 1.
Actual Results:  
The build fails

Expected Results:  
The build succeeds
Comment 1 Allen Webb 2022-01-14 17:20:43 UTC
There needs to be another step:
2.5) Given a package C that package B depends on with the slot operator :=, upgrade package C to a new subslot triggering a rebuild of package B.
Comment 2 Allen Webb 2022-01-14 17:21:45 UTC
(In reply to Allen Webb from comment #1)
> There needs to be another step:
> 2.5) Given a package C that package B depends on with the slot operator :=,
> upgrade package C to a new subslot triggering a rebuild of package B.

This upgrade should be done in the source tree but should not be executed until step 3.