That’s a quote from solar. I also like this bug. I really like it. I think it’s one of the best bug reports I’ve ever seen.
(First, a disclaimer: I’m not a Gentoo developer, I’ve only just started any kind of serious portage work, and have had quite a few stupid ideas at this point. Take what I have to say with a healthy pinch of salt.)
First of all, here’s the bug link: https://bugs.gentoo.org/327809
Here’s a highlight of what I think makes this bug so impressive, and my comments on it:
- “A first step would of course be to implement and have a working –as-needed build environment. This is mostly a matter of developer buy-in rather than anything else.” That’s a quote from spider in the beginning of the bug report. Not only is this the best bug report ever, but it depends on what is possibly the most needed fix in Gentoo. (It’s caused at least the libpng fiasco.) I’ve yet to hear any argument against this fix, and it’s wonderful that there’s finally something convincing to push this fix forward.
- “First, we build a pair list of the form ‘file dependency_file’ for our package, this list gets shipped inside the installation path list. … second, we also generate a backwards-resolved list of ‘Dependend files => currently installed package owning it’ to be stored for QA reasons.” Basically, this means that any files that are required by a binary to operate will be scanned and recorded into the first list, and the packages that own that file will be recorded into the second list. The first list essentially eliminates revdep-rebuild’s first function, which is to scan all binaries for their dependencies. The second list could be used later by portage for an extra feature, which would warn about packages that use other libraries but never mention it in their DEPEND variables. Brilliant!
- “for both binary and source installation, we can at a pre_install step check if our package (binary or source) is currently unsupportable by the current system….” This check also occurs before removing files, spider said. This no doubt also applies to upgrades, where binaries are replaced by newer ones. This check, as far as I can tell, will eliminate almost all breaks that revdep-rebuild is used to catch. That’s what this is all about.
CC yourself. Add votes. Let’s get this thing in portage!