[
https://issues.apache.org/jira/browse/IVY-1363?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maarten Coene updated IVY-1363:
-------------------------------
Fix Version/s: (was: trunk)
> ivy:buildlist task confused by extends feature using two parents
> ----------------------------------------------------------------
>
> Key: IVY-1363
> URL: https://issues.apache.org/jira/browse/IVY-1363
> Project: Ivy
> Issue Type: Bug
> Components: Ant, Core
> Affects Versions: 2.3.0-RC1
> Environment: Ant 1.7.1 (but should be the same with Ant 1.8.3)
> Reporter: Mitch Gitman
> Assignee: Nicolas Lalevée
> Labels: patch, testcase
> Fix For: 2.3.0-RC2
>
> Attachments: BuildlistAndExtendsIntegrationTest.zip,
> IVY-1347-1363-2.3.x.patch, IVY-1347-1363.patch, IVY-1347-1363-trunk.patch,
> IVY-1359-1363-1364-2.3.x.patch, ivy-2.3.x.patch, ivy-trunk.patch
>
>
> I'm finding that the ivy:buildlist Ant task is erroring when it encounters
> more than one parent Ivy module that's pulled in through the
> /ivy-module/info/extends element. This problem is new to Ivy 2.3.0-rc1; I did
> not encounter it with Ivy 2.2.0. There is no relationship or interaction
> between the two different parent Ivy modules, i.e. no nesting of parents.
> In my test case, which I explain shortly, when I point the ivy:buildlist Ant
> task at a project stack that includes a mix of both parents and their
> children, I see this error:
> ...\multimodule-build\build.xml:28: impossible to parse ivy file for
> ...\testTwoParents\germany\build.xml:
> ivyfile=...\testTwoParents\germany\ivy.xml
> exception=java.text.ParseException: Problem occurred while parsing ivy file:
> inconsistent module descriptor file found in
> 'file:/.../testTwoParents/master-parent/ivy.xml': bad module name:
> expected='bootstrap-parent' found='master-parent'; in
> file:/.../testTwoParents/germany/ivy.xml
> What's happening is, the germany module extends bootstrap-parent, but somehow
> the relative path to master-parent/ivy.xml is supplanting the relative path
> to bootstrap-parent/ivy.xml. It appears buildlist doesn't know how to deal
> with more than one parent.
> This is what occurs when the haltOnError attribute is set to "true" on
> ivy:buildlist. If I set haltOnError="false" in my test case, the exception
> goes away, but I see the following build order:
> 1. germany
> 2. ireland
> 3. bootstrap-parent
> 4. master-parent
> 5. croatia
> What's wrong about this build order is that germany depends on ireland and
> ireland depends on bootstrap-parent, so the order of the first three entries
> is reversed. If I removed the dependency of ireland on bootstrap-parent, the
> order would be the same. This misordering is clearly related to the presence
> of more than one parent because comparable tests using (A) the extends
> feature with a single parent and (B) no extends feature at all get the order
> right. Plus, I see this unexpected output when haltOnError="false":
> [ivy:buildlist] => adding it at the beginning of the path
> [ivy:buildlist] => adding it at the beginning of the path
> TEST CASE INSTRUCTIONS:
> I've attached a ZIP containing three standalone test cases, each consisting
> of a suite of Ant projects that together comprise a multimodule build whose
> build order is to be determined by the ivy:buildlist task:
> * testNoParents: The extends feature is not used.
> * testOneParent: The extends feature is used to pull in content from a single
> parent Ivy module.
> * testTwoParents: The extends feature is used where one Ivy module pulls in
> content from one parent and two other Ivy modules pull in content from a
> different parent.
> The testNoParents and testOneParent tests are the control groups. The
> testTwoParents test is where things fail.
> When running Ant from one of these test cases, you need to specify the
> location of the Ivy 2.3.0-rc1 installation using one of the following:
> * an IVY_DIR environment variable
> * an env.IVY_DIR user property, i.e. -Denv.IVY_DIR=...
> * an ivy.dir user property, i.e. -Divy.dir=...
> To run the build in any of these suites, go to the multimodule-build
> directory, and execute "ant" or "ant init"—while specifying the Ivy
> installation location. You can also run "ant cleancache" to clear out the Ivy
> cache. However, you shouldn't need to do this regularly because each of these
> test cases uses its own dedicated Ivy cache.
> NOTE: This issue is broached in the email thread "extends & buildlist on
> 2.3.0-rc1 … it gets worse" on the ivy-user and ant-dev mailing lists.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira