On Fri, 20 Jul 2012 15:48:34 -0400 Alexandre Rostovtsev wrote: > On Fri, 2012-07-20 at 20:17 +0100, Ciaran McCreesh wrote: > > On Fri, 20 Jul 2012 15:15:31 -0400 > > Alexandre Rostovtsev wrote: > > > > That's sensitive to old versions ebuilds being removed from the > > > > tree, so it's utterly unworkable. > > > > > > I do not see why you think it's unworkable. Ebuilds already have > > > dependencies that can be broken by removing an old version; if > > > wombat depends on foo[bar], and you removed the only version of > > > foo that had bar in IUSE, you broke wombat. Adding special > > > LINGUAS handling would not change the fact that before deleting > > > an ebuild, you need to verify that you did not render other > > > ebuilds' dependencies unsatisfiable. > > > > That's not how undefaulted use dependencies work. If wombat depends > > upon foo[bar], it is an error if there is *any* version of foo > > *ever* that doesn't have bar in IUSE_EFFECTIVE. > > Very odd; AFAICT neither portage nor repoman treats that situation as > an error. I am guessing that this is another case where paludis does > things differently? Paludis yells. Portage silently ignores the error and does something unexpected. The spec is clear that it is an error, though. > Be that as it may, even with paludis, the foo maintainer could easily > break wombat if wombat depended on foo:bar, and the last ebuild > matching foo:bar got removed; or on foo[bar,baz], and the only > remaining versions of foo in the tree have REQUIRED_USE="^^ ( bar baz > )"; or on foo[bar], when the only remaining versions of foo in the > tree have bar disabled via profiles/base/package.use.mask. Which is why it's policy that you check every dependent before making changes to a package. You *do* follow that policy, and not just assume that repoman passing means it's fine, right? -- Ciaran McCreesh