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: feature request: configuration intersections only implemented halfway
Date Thu, 30 Jul 2009 06:22:06 GMT
Thank you all for actively pursuing this issue. I need to take a step back
from my feature request for a moment, because I just realized my situation
is even more complicated than I had thought.

Forgive me for going back to my coffee analogy. In addition to something
like mocha-tall-iced.jar that I only want delivered in that combination
situation, I also have something like mocha-tall.jar that I simultaneously
want delivered whether it's iced or hot. And to top all that off, I also
have something called mocha.jar that I likewise simultaneously want
delivered regardless of the size or temperature.

So I need to come up with a palette of Ivy confs and a combination of them
to specify to deliver me the following artifacts:
mocha.jar
mocha-tall.jar
mocha-tall-iced.jar

Well, I know how to do this the hard way:
<conf name="mocha" />
<conf name="mocha-tall" extends="mocha" />
<conf name="mocha-tall-iced" extends="mocha-tall" />

Then in my dependency module, I would ask for "mocha-tall-iced". Only
problem: now I'm stuck with 4+16+32 Ivy confs. There's got to be a better
way. (Again, I realize that I'm producing a proliferation of artifacts
regardless.)

It may very well be that I wind up doing some serious re-factoring and get
rid of one of my dimensions. I'll also take a second look at configuration
groupings.

Regards,
Garima.

On Wed, Jul 29, 2009 at 4:09 PM, Mitch Gitman <mgitman@gmail.com> wrote:

> Shawn, I think your last paragraph really captures the fundamental
> difference between your use case and the one I'm facing (which parallels
> the
> use case Garima broached):
> I don't understand Garima's request as putting the intersection logic into
> the <publications> section of the ivy.xml file like:  <artifact
> name="art1d"
> type="dll" conf="windows+debug"/> means that the ONLY way a consumer can
> get
> this artifact is by specifying "default->windows+debug" in the
> <dependencies> section.  This prevents me from getting all windows
> artifacts
> or all debug artifacts.  It just doesn't make sense to me.
>
> For me, being able to get "ALL Windows artifacts" or "ALL Windows OR debug
> artifacts" would be at best an academic exercise. As a practical matter,
> though, the simple ability to do this is trouble. The simple inability to
> express intersection-only means that I can't communicate in Ivy the true
> semantics of my Ivy module.
>
> In other words, I really do have artifacts that should only be available in
> the intersection of certain confs of their Ivy module. Being able to get
> unions containing these particular artifacts does me no good, but it does
> potentially do me harm.
>
> To put things in simple terms, what Shawn asked for was to make the
> following possible on the *consumer *Ivy module:
> if (A && B)
> In addition to:
> if (A || B)
>
> What Garima is asking for—and what I'm seconding—is to make the same
> possible on the *producer *Ivy module.
>
> On Wed, Jul 29, 2009 at 3:15 PM, Shawn Castrianni <
> Shawn.Castrianni@halliburton.com> wrote:
>
> > 1. Yes, I agree that adding what Garima wants will not compromise my use
> > case.  I just haven't been convinced why Garima is requesting this.
>  Either
> > Garima is not understanding configurations in general (which might be the
> > case as Garima admitted not knowing about the '@' character) or you are
> not
> > understanding configurations in general (which might be the case based on
> > your comment that "windows,debug" is inaccurate) or I am not
> understanding
> > your use case.
> >
> > 2. "The following, by itself, is inaccurate: <artifact name="art1d"
> > type="dll" conf="windows,debug" />"
> >
> > How can you say this is inaccurate?  I am thinking you are getting
> confused
> > about configurations (or maybe I am).  The conf attribute of an artifact
> is
> > simply a comma delimited list of all configuration names that this
> artifact
> > is applicable for.  The art1d.dll is a windows related file so it is
> > definitely applicable for the windows configuration.  The art1d.dll is a
> > debug version of the dll so it is definitely applicable for the debug
> > configuration.  The "windows,debug" does NOT mean union in this section
> of
> > the ivy.xml file where the artifacts are defined.
> >
> > It is in the <dependencies? section of the ivy.xml file where
> > "windows,debug" would mean union.  So the comma notation of
> configurations
> > means two different things depending on what section of the ivy.xml you
> are
> > talking about.  In the <publications> section, the comma doesn't mean
> > anything.  It is just a delimiter separating configuration names for all
> of
> > the configurations that this artifact is applicable for.  In the
> > <dependencies> section, the conf mapping attribute like
> > "default->windows,debug" means the default configuration of my current
> > module is dependent on BOTH (UNION) of the windows and debug
> configurations
> > of the dependent module.
> >
> > IVY configurations are just a way to subset all the artifacts of a module
> > since you may not want all artifacts of a module all the time.  Sometimes
> > you just want all windows artifacts so you would use the conf mapping in
> the
> > <dependencies> section as "default->windows".  Sometimes you just want
> all
> > debug artifacts so you would use the conf mapping in the <dependencies>
> > section as "default->debug".  Sometimes you just want the windows debug
> > artifacts so you would use the new intersection capability in the
> > <dependencies> section as "default->windows+debug".  It is purely a
> download
> > efficiency enhancement for me.  Before the intersection capability, I
> would
> > have to use "default->windows" and then manually delete the non-debug
> > artifacts.  But even with that, I had to wait for IVY to download them
> into
> > the cache.  Over a slow network line, this can waste a lot of time for
> > artifacts that are just going to be deleted manually.
> >
> > I don't understand Garima's request as putting the intersection logic
> into
> > the <publications> section of the ivy.xml file like:  <artifact
> name="art1d"
> > type="dll" conf="windows+debug"/> means that the ONLY way a consumer can
> get
> > this artifact is by specifying "default->windows+debug" in the
> > <dependencies> section.  This prevents me from getting all windows
> artifacts
> > or all debug artifacts.  It just doesn't make sense to me.
> >
> > ---
> > Shawn Castrianni
> >
> >
>

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