On Sun, Jul 27, 2014 at 10:05 AM, "Paweł Hajdan, Jr." <phajdan...@gentoo.org> wrote: > On 7/21/14, 11:52 PM, Alexander Berntsen wrote: >> Michał has documented the shortcomings of dynamic deps in our wiki[0]. >> (Thank you!) [...] >> [0] <https://wiki.gentoo.org/wiki/Project:Portage/Dynamic_dependencies> > > There's one more thing I'd like to ask about: > > For "Minor linking change w/ dependency change (unnecessary linking > removed)" the "dynamic deps" cell is red with "revbump + mostly > unnecessary rebuild", and "static deps" says "applied after rebuild". > > Arguably with dynamic deps one could also skip the revbump, and the > update would similarly be applied after rebuild.
With dynamic deps you'd need to revbump if there is a linking change. Otherwise portage would just allow the dependency to be removed, and then linking will break, since the executable is unnecessarily linked to the dependency (in that scenario). If you wanted to apply the change after rebuild then you'd need to have a way to communicate to portage whether a dependency removal can be applied immediately (extraneous unlinked dependency) or only after rebuild (extraneous linked dependency). The table speaks mostly to portage as-is without additions like those posted in this thread. I think that USE changes basically involve potentially-unnecessary rebuilds no mater what in most real-life cases. Most people use the --newuse option when updating their system, so even if static dependencies don't require rebuilds they're going to get them anyway. Not using --newuse can cause different issues. One thing I would question in that table is "applied immediately (but can break hard when dynamic-deps stop working))." How can dynamically removing an "unused dependency" cause something to break, setting aside bugs in the package manager? If removing a dependency causes something to break, how can it be "unused?" Rich