Michał Górny <[email protected]> wrote: > > Consider the following: > > 1. A depends on B, both are installed, > > 2. dependency on B is removed, emerge --depclean uninstalls B thanks > to dynamic-deps, > > 3. B is treecleaned (nothing depends on it), > > 4. old version of A is removed (user doesn't update it yet), therefore > dependency on B is restored from vdb. > > So, now user has package A installed which has unsatisfied dependency > on non-available package.
And this is per se not a bad situation: The version of A which the user has installed is obsolete and needs to be upgraded. This happens with emerge -NDu @world which should be the first (portage-related) action the user does after syncing (certainly before removing packages with emerge depclean, as he is already instructed clearly). When he does not, it is a user error. When he insists on not updating A, he should have a very valid reason for this and take responsibility for the situation by maintaining A in his overlay: As already mentioned several times, it is impossible to handle unmaintained packages/versions correctly in all situations. Whenever a package is removed or all available versions of a package[:slot] are masked and no update happens, portage *must* print a big fat warning, since this is a situation which can always lead to problematic situations - completely independent of whether dynamic deps or static deps are used.
