ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Garima Bathla <garima.bat...@gmail.com>
Subject Re: Better Determine conflicting dependencies
Date Wed, 16 Dec 2009 00:45:57 GMT
To my best knowledge, there is something called conflict-manager that you
can configure in ivysettings to handle conflicts the way you will want them
to be handled

http://ant.apache.org/ivy/history/latest-milestone/settings/conflict-managers.html

And you can always run ant task repreport to find out down-stream
dependencies,
http://ant.apache.org/ivy/history/latest-milestone/use/repreport.html

I am not sure about up-stream dependency ( that just means going and
searching for ivy.xml randomly and looking if it refers to a dependency or
not).

Regards,
Garima.


And for your other queries

On Tue, Dec 15, 2009 at 4:34 PM, Carl Myers <cmyers@palantirtech.com> wrote:

> Hey all,
>
> It seems like a common problem (the way we are using ivy) to run into
> conflicts.  Unfortunately, if your dependency tree looks like this:
>
> A: B C D E
> C: F G
> G: H-1.0
> E: Z
> Z: H-1.1
>
> Here I have a conflict and get the message "H-1.0 (required by G) conflicts
> with H-1.1 (required by Z)".
>
> Unfortunately, I am building A, and I have no clue where H comes from. If I
> look at my ivy.xml (the only ivy.xml that I have checked out and handy) all
> I see are A, B, C, D, and E.  I have potentially never heard of Z or G, nor
> do I care.  Some dependency changed and boned me, and I need more
> information than that to figure out how to fix it.
>
> Specifically, I need the all packages on the path to the "lowest common
> ancestor" of the two conflicting packages in my dependency tree.  In this
> example, I would like to see:
>
> H-1.1 (A->E->Z->H-1.1) conflicts with H-1.0 (A->C->G->H-1.0)
>
> This should include the version numbers too, I am just leaving them out for
> clarity and brevity here.  The two lists of dependencies above are the two
> paths from the lowest common ancestor to each respective conflicting
> package.  It also happens to be a conprehensive list of *every* package I
> might potentially edit to fix this problem, giving me the data I need to
> analyze the problem.  In this example, the lowest common ancestor was A, the
> package I was working on, but you can easily come up with examples where
> even the LCA will be some package you have never heard of - but armed with
> that path, you can start your investigation and figure out what changed, and
> what needs to change to fix it.
>
> Additionally, presently, Ivy bails out as soon as it finds a single
> dependency conflict, when there may be more than one.  This means you make
> some decision (like "I am reverting Z to H-1.0") and fix that problem, only
> to realize some other package (Maybe, in this example, F) also depends on
> H-1.1.  How frustrating!
>
> My questions are as follows:
> 1. Is there some "tell me more" setting which will make Ivy print out more
> info like I am asking for, or list all conflicts it can find instead of
> dying on the first one?
>
> 2. If I want to write a tool to analyze dependencies, for example:
> getDownstreamDependencies(pkgName, pkgVersion)
> getUpstreamDependencies(pkgName, pkgVersion)
> getDirectDownstreamDependencies(pkgName, pkgVersion)
>
> Is there some library which can parse ivy.xml files which can easily be
> used outside the ivy code base?  I haven't looked the code yet but I thought
> I'd run it by you guys before I tried anything drastic
>
> 3. RFC?  (Requests for comments) - should I consider submitting a patch for
> Ivy to do what I described above?
>
> Thanks!
> --
> Carl Myers
> Palantir Technologies | Internal Tools Software Engineer
> cmyers@palantirtech.com
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message