I've created a JIRA issue with an attached test case for this "buildlist with two parents" problem: https://issues.apache.org/jira/browse/IVY-1363 title: "ivy:buildlist task confused by extends feature using two parents"
It's going to be three weeks until I'd be able to try working on a patch myself for this. I'm hoping Jean-Louis or someone else might be interested in taking this on in the meantime. I'm also noticing a broader theme of instability surrounding the extends/parent feature. I mention here that earlier I'd started another ivy-user thread "buildlist task chokes on absolute path to parent Ivy module" concerning Ivy 2.2.0. It appeared that this problem went away in Ivy 2.3.0-rc1. However, after I cleared out my Ivy cache and ran ivy:buildlist, I found it inexplicably failing on an absolute path to a parent in a single Ivy module: java.text.ParseException: Problem occurred while parsing ivy file: null in file: … … Caused by: java.lang.NullPointerException at org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser$Parser.parseOtherIvyFile(XmlModuleDescriptorParser.java:659) at org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser$Parser.extendsStarted(XmlModuleDescriptorParser.java:443) at org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser$Parser.startElement(XmlModuleDescriptorParser.java:327) ... 48 more And believe me, the file is there. And strangely, as I suggest above, this failure only shows up after clearing out the Ivy cache. I'm going to try narrowing down and isolating this problem. It's odd that I should have to convert only one ivy.xml's extends@location value to a relative path. Plus, it's worth noting that I came across another JIRA issue (reported by someone else) involving buildlist not working as expected with extends: https://issues.apache.org/jira/browse/IVY-1345 title: "ivy:buildlist does not order properly modules that extend module with revision not matching dependencies" And just with the extends/parent feature (without buildlist getting involved), I encountered another problem that I reported yesterday in JIRA: https://issues.apache.org/jira/browse/IVY-1359 "ivy.xml extends feature complains about Windows filesystem path" On Tue, Jun 26, 2012 at 2:00 PM, Jean-Louis Boudart < jeanlouis.boud...@gmail.com> wrote: > I can try to spend some time on it but i need a reproducable use case. > > Opening a JIRA and attaching a test case could save hours. > Le 22 juin 2012 23:24, "Maarten Coene" <maarten_co...@yahoo.com> a écrit : > > > Hi Mitch, > > > > I've just replied on the ivy-user mailing list. > > > > I think this issue should get fixed before the 2.3.0 final release. > > Could you at least create a JIRA issue for this bug. Attaching a test > case > > would be really helpfull. > > (attaching a patch that fixes the problem would be even more helpfull > :-) ) > > > > > > I don't have time right now to look at it though. > > > > I hope to have a bit more time in july/august... > > > > > > Maarten > > > > > > > > ________________________________ > > From: Mitch Gitman <mgit...@gmail.com> > > To: Ant Developers List <dev@ant.apache.org> > > Sent: Friday, June 22, 2012 7:53 PM > > Subject: Fwd: extends & buildlist on 2.3.0-rc1 ... it gets worse > > > > I'm forwarding this thread I started on the ivy-user list. > > > > Can someone advise me how to handle this? Should I file a JIRA issue? Is > > someone aware if there's a JIRA issue already for this problem? For that > > matter, has anyone else noticed Ivy buildlist and extends not being able > to > > coexist? > > > > Once we've established that there's a JIRA issue with a reproducible use > > case, what's the best way to ensure it gets addressed? Would someone like > > Maarten want to tackle this, or should I? My fear is that, if I tackle > it, > > the fix is not going to find its way into the code base. > > > > Well, my bigger fear is that Ivy 2.3.0 is going to be released without > this > > problem being addressed. > > > > ---------- Forwarded message ---------- > > From: Mitch Gitman <mgit...@gmail.com> > > Date: Fri, Jun 22, 2012 at 10:21 AM > > Subject: Re: extends & buildlist on 2.3.0-rc1 ... it gets worse > > To: ivy-u...@ant.apache.org > > > > > > OK, I stripped away all use of the extends feature, and sure enough, > > buildlist produced a normal, expected, non-randomized project build > order. > > This indicates that something that had been working in Ivy 2.2.0 is no > > longer working in Ivy 2.3.0-rc1. > > > > Considering that: > > A. The buildlist task is a prerequisite for being productive with Ivy.* > > B. The extends feature is a prerequisite for being productive with Ivy.* > > The apparent fact that these two features are now mutually exclusive with > > Ivy 2.3.0-rc1 (where they weren't with Ivy 2.2.0) represents a serious > bug. > > > > I think my next step is to forward this thread to the ant-dev list and > ask > > how to proceed. > > > > * For those who wish to say, "Mitch, we've been able to get by just fine > > without (buildlist|extends)," I'm perfectly happy to have that > discussion, > > but my primary concern now is facilitating a fix. > > > > On Thu, Jun 21, 2012 at 10:12 PM, Mitch Gitman <mgit...@gmail.com> > wrote: > > > > > One other data point. As long as my undesired simplification wasn't > > > helping things, I went back to both a bootstrap-parent and a > > master-parent. > > > I also tried setting haltOnError="false" on ivy:buildlist. With that, > the > > > task successfully got through everything. However, it continued to > > create a > > > seriously trashed build order. > > > > > > Just as an experiment, I might try converting all the ivy.xml files to > > not > > > use the extends feature and then see what happens when running > buildlist. > > > My hypothesis is, this will work. Not that this is a desired state of > > > affairs, but at least it isolates the problem to the interaction > between > > > buildlist and extends. > > > > > > > > > On Thu, Jun 21, 2012 at 9:23 PM, Mitch Gitman <mgit...@gmail.com> > wrote: > > > > > >> Over a week ago, I'd sent out a message to this list, "buildlist task > > >> chokes on absolute path to parent Ivy module." I'd found that the > > extends > > >> feature worked fine with an absolute path to the parent ivy.xml if I > was > > >> building any single Ivy module, but the buildlist task would fail to > > find > > >> the absolute path. > > >> > > >> > > >> > > >> I'd noted that I'd been using Ivy 2.2.0. Now that I've upgraded to Ivy > > >> 2.3.0-rc1, my problems have only gotten worse. The first problem I > > >> encountered had nothing to do with absolute paths to parents. I'm > still > > >> using relative paths to parents. Instead, it arose from my using two > > >> different parent Ivy modules: bootstrap-parent and master-parent. Some > > >> projects extended the former; others the latter. For example: > > >> <info organisation="foo" module="homeowner" revision="${version}"> > > >> > > >> <extends organisation="foo" module="bootstrap-parent" > > >> revision="${version}" > > >> > > >> location="../bootstrap-parent/ivy.xml" /> > > >> > > >> </info> > > >> > > >> > > >> > > >> But then when I pointed the ivy:buildlist Ant task at a project stack > > >> that included a mix of both parents and their children, I saw this > > error: > > >> > > >> impossible to parse ivy file for …/foo-client/homeowner/build.xml: > > >> ivyfile=.../foo-client/homeowner/ivy.xml > > >> exception=java.text.ParseException: Problem occurred while parsing ivy > > >> file: inconsistent module descriptor file found in > > >> 'file:/.../master-parent/ivy.xml': bad module name: > > >> expected='bootstrap-parent' found='master-parent'; in > > >> file:/.../foo-client/homeowner/ivy.xml > > >> > > >> > > >> > > >> What's happening is, the homeowner 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, even though there's no > > >> interaction between the two parents. > > >> > > >> > > >> > > >> After this, even though I didn't really want to, I thought, "Why not > > make > > >> things simple for buildlist and use just one parent, master-parent?" > > >> > > >> > > >> > > >> Here's where things really got wild. With Ivy 2.2.0, buildlist worked > > >> just fine, provided I gave it relative paths to the different parents. > > Now, > > >> even with a relative path and even with a single parent, buildlist on > > >> 2.3.0-rc1 goes nuts. I go so far as to introduce a buildlist Ivy conf > to > > >> force project A to sort before project B. How does buildlist on > > 2.3.0-rc1 > > >> interpret this? It puts B before A. (And no, I can guarantee I have no > > >> circular dependencies.) > > >> > > >> > > >> > > >> Can someone say, are there any integration tests that test the > > >> interaction between buildlist and extends? > > >> > > >> > > >> > > >> And how should I proceed regarding these problems? Should I file a bug > > or > > >> bugs or JIRA? Does anyone know of any existing bugs on JIRA? > > >> > > > > > > >