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 < [email protected]> 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 > >
