On Mon 2008-03-31 at 08:39h, Johannes Stamminger wrote on ivy-user:
> On Saturday 29 March 2008, Gilles Scokart wrote:
> > On 28/03/2008, Johannes Stamminger <[EMAIL PROTECTED]> wrote:
:
> > >  the exclude and override I could imagine that it would make sense to
> > > specify them per dependency - not only globally for all dependencies ...
> > > ?
> >
> > Why would you exclude or overwrite it for one dependency but not for the
> > others?
:
> P1 -> L1 -> L2
> and
> P1 -> L3 -> L2
> 
> With the global exclude L2 still is not in P1 though it is needed
> now. With specifying it only for the dependency to L1, people in P1
> get triggered to analyse the dependency again (when detecting the
> newly included L2). With specifying it globally one runs into
> problems in worst case (dynamic load of L2 in L1) only very late.

I wonder how the semantics is intended to be anyway (by Ivy).
What if L1 excludes (some revisions of) L2 because it isn't compatible
with them? Can L3 cause such in incompatible revision to be included
anyway? What if L3 uses <override>?

In that light, it seems to me that applying exclude/override globally
is the only thing that makes sense. The logic by which Ivy prunes
dependency subtrees is based on the assumption that it doesn't matter
in which order conflicts are considered; that the result will be the
same regardless of the order. Exclude/override/conflict do break that
assumption, unless they are applied globally.

-- Niklas Matthies

Reply via email to