I can't answer your question, but I can tell you how I handle this.

I felt it was a bad idea to publish a partial module such that one platform's 
artifacts are present and other are not.  If this happens because of a compiler 
error on one platform but not others, then you can get into a bad situation.  
Such as, someone saying that my new feature works on linux but not on windows, 
not knowing that it works on linux because the new feature was compiled 
successfully on that platform and he is using the new published module.  But 
when he tries on windows, he is picking up on old published module since a new 
one with windows artifacts is not present due to the compile error.  Stuff like 
that.

Therefore, what I do is just as you describe, using separate configuration for 
each platform.  But then I use a good automated build system (QuickBuild 3.1) 
to wrap ivy commands.  So my QB build workflow is:

0. randomly select a master build machine from the pool, let's call it MASTER
1. MASTER:  checkout source on any machine
2. MASTER:  tar up source
3. MASTER:  copy source to other platform build machines
4. EACH PLATFORM:  untar onto each of those machines
5. MASTER:  delete tar file
6. MASTER:  clean.all
7. MASTER:  ivy dependencies (specifying proper conf setting so that All 
platforms dependency artifacts are downloaded)
8. MASTER:  perform java compile
9. MASTER:  copy dependencies and resulting jars from java compile to other 
platform build machines
10: EACH PLATFORM:  perform native code build
11: EACH PLATFORM:  perform unit testing
12: EACH PLATFORM:  copy resulting artifacts from each platform machine to 
master machine
13: MASTER:  publish all platform artifacts at once

By using a good automated build system, you can easily handle this multi 
platform build workflow and the hand off of control from one node to another.  
Then the publishing ONLY happens if ALL platforms are successful.  Therefore, I 
do not need the ability to publish a partial module.

I am sure there are other ways to do this and there is probably debate as to 
how efficient this is, but it works very well in a production environment.  If 
this sounds like an advertisement for QuickBuild, I apologize.  I do not work 
for them.  I am just a passionate happy customer.

---
Shawn Castrianni

-----Original Message-----
From: Felix Drueke [mailto:fdru...@orga-systems.com] 
Sent: Wednesday, January 12, 2011 4:59 AM
To: ivy-user@ant.apache.org
Subject: Publishing C-module artifacts from different platforms

Hi,

I'd like to manage the dependencies of a set of C-modules with ivy.
Each of these modules needs to be compiled on different platforms (i.e.
Solaris, Linux, HP-UX and others).

This requires that the same sources are compiled in separate workspaces
(on the different hosts).

In a first attempt I setup one ivy.xml with a set of configurations - one for
each platform on that I have to build&publish artifacts.

Being unexperienced with Ivy I didnd't find a way to just publish the
artifact for the one configuration that I built in a workspace.
For example I built module XYZ on Solaris and of course I can only
publish the Solaris-artifact from that workspace. In another worlspace
I got the artifact for Linux and of course I can only publish that.

How do you accomplish to publish just the artifacts for one particular
configuration?

Thanks for any hint,
Felix

The information included in this e-mail and any files transmitted with it is 
strictly confidential and may be privileged or otherwise protected from 
disclosure. If you are not the intended recipient, please notify the sender 
immediately by e-mail and delete this e-mail as well as any attachment from 
your system. If you are not the intended recipient you are not authorized to 
use and/or copy this message and/or attachment and/or disclose the contents to 
any other person.

----------------------------------------------------------------------
This e-mail, including any attached files, may contain confidential and 
privileged information for the sole use of the intended recipient.  Any review, 
use, distribution, or disclosure by others is strictly prohibited.  If you are 
not the intended recipient (or authorized to receive information for the 
intended recipient), please contact the sender by reply e-mail and delete all 
copies of this message.

Reply via email to