You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by "Josh Guice (JIRA)" <ji...@apache.org> on 2009/06/19 01:26:07 UTC

[jira] Commented: (IVY-594) Add a transitive attribute to buildlist

    [ https://issues.apache.org/jira/browse/IVY-594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721549#action_12721549 ] 

Josh Guice commented on IVY-594:
--------------------------------

I too have this problem.  In the buildlist example in the docs it says this "Builds a list of build.xml files sorted according to the ivy.xml files found in an ivy directory relative to those build files. Only build.xml files of modules which are dependencies of myapp (either direct or transitive) are put in the result list."

The caveat is that all the ivy files between the root module and the transitive dependency (down the chain) must be present in the local work area for a complete buildlist to be generated (complete is defined as one that include all dependencies [transitive included] that are available locally to build)

In the OP's example, if you only have A and C present in the work dir and you compute a buildlist based on root A then C will not be included in the buildlist.  But if you also put module B in the work dir, then ivy can then follow the transitive trail and correctly calculate a build path C,B,A.

I suppose what we're asking is that if I only have A and C in my local work dir and they are dependent transitively via B, then buildlist should be able to figure that out and produce a build-path including A and C.

When buildlist sees that A depends on B, but no ivy.xml is present locally for B, it should perform a resolve operation to get the ivy.xml for B (using whatever selectors are in A's dependency block).  Then  follow the dependencies in B's remotely resolved ivy.xml adding any dependencies that *are* present locally to the build path (further resolving any that aren't present, continuing to add any local matches, until it exhausts the dependency graph).

In short, given A -> B -> C and locally present A and C I would expect ivy to be able to correctly give me a build path of C,A when A is the root.

Hope this helps clarify the requirements a bit.

The use-case for this is that without this functionality developers must ensure that they have downloaded all modules in the dependency chain (rather than just the ones they need to change).  This makes setup a bit complicated in an environment where there are sometimes a dozen or more modules in the dependency graph.  Ideally they could only checkout the modules they want to modify and if they are related at all ivy would correctly compute a build path included them.

Thanks,
Josh

> Add a transitive attribute to buildlist
> ---------------------------------------
>
>                 Key: IVY-594
>                 URL: https://issues.apache.org/jira/browse/IVY-594
>             Project: Ivy
>          Issue Type: New Feature
>            Reporter: Gilles Scokart
>
> Currently the buildlist task only order the given ivy file without considering the dependencies that are not in the ivy files.
> For instance if you have module A depending on B, and B depending on C, and you ask a buildlist ordoering A and C without giving the ivy.xml file of B, the result will be unknown.
> We should add an optional parameter 'transitive' to ask to take into account the transitive dependencies of the modules.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.