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?
> > >>
> > >
> > >
>

Reply via email to