You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by Ma...@sew-eurodrive.de on 2008/04/18 16:10:09 UTC

Ivy for C++ source modules

After evaluating Ivy in order to manage modules in a C++ project, I couldn't find a replacement for our makefile-based dependency manager, possibly because I don't see the last simple missing links.

We have a collection of reusable modules written in C++. These are combined with application code and compiled and linked for different target systems. 

Each module is under version control in a Microsoft Visual SourceSafe database.

A target system makefile contains a variable that contains a list of module names with a version string, like:
MODULES = ModuleA-1.0 ModuleB-1.1 ModuleC-0.9
Before compiling tha target system, the makefile analyses this string list and downloads the complete source code of each module with the specified version (-> the revision label in SourceSafe) from the SourceSafe database and puts it in a cache directory. From each module source code, a library is built and all is linked together. So, I need to describe multiple artifacts per module.

These are my open questions:

1. Is it possible to write a resolver for the Microsoft SourceSafe VCS? Are there any examples to follow?

2. Is it possible to specify a module with a fixed list of C++-Source files and ALL header files?
This could look like:
...
<publications>
    <artifact name="src/ClassA" ext="cpp"/>
    <artifact name="src/ClassB" ext="cpp"/>
    <artifact include="src/**/*" ext="h"/>          <======= all C++ header files
</publications>

This means: An artifact represents a fileset, not a single file.
Is this possible?

Thank you in advance.
Matthias Albert


SEW-EURODRIVE GmbH & Co KG
Kommanditgesellschaft, Sitz: Bruchsal, RG Mannheim HRA 230970
Komplementärin: SEW-EURODRIVE Verwaltungs-GmbH, Sitz: Bruchsal, RG Mannheim HRB 230207

Gesellschafter und Geschäftsführer: Rainer Blickle, Jürgen Blickle
Geschäftsführer: Johann Soder, Hans Sondermann, Bernd P. Uckrow




Re: Ivy for C++ source modules

Posted by Xavier Hanin <xa...@gmail.com>.
On Fri, Apr 18, 2008 at 4:10 PM, <Ma...@sew-eurodrive.de> wrote:

> After evaluating Ivy in order to manage modules in a C++ project, I
> couldn't find a replacement for our makefile-based dependency manager,
> possibly because I don't see the last simple missing links.
>
> We have a collection of reusable modules written in C++. These are
> combined with application code and compiled and linked for different target
> systems.
>
> Each module is under version control in a Microsoft Visual SourceSafe
> database.
>
> A target system makefile contains a variable that contains a list of
> module names with a version string, like:
> MODULES = ModuleA-1.0 ModuleB-1.1 ModuleC-0.9
> Before compiling tha target system, the makefile analyses this string list
> and downloads the complete source code of each module with the specified
> version (-> the revision label in SourceSafe) from the SourceSafe database
> and puts it in a cache directory. From each module source code, a library is
> built and all is linked together. So, I need to describe multiple artifacts
> per module.
>
> These are my open questions:
>
> 1. Is it possible to write a resolver for the Microsoft SourceSafe VCS?
> Are there any examples to follow?

I guess it's possible. A good example to follow IMO is the ivy-svn resolver
which already use a SCM to store artifacts:
 http://www.audioscrobbler.net/development/ivysvn/

The ant SourceSafe tasks may also be a good example to see how to invoke
sourcesafe from java.

2. Is it possible to specify a module with a fixed list of C++-Source files
> and ALL header files?
> This could look like:
> ...
> <publications>
>    <artifact name="src/ClassA" ext="cpp"/>
>    <artifact name="src/ClassB" ext="cpp"/>
>    <artifact include="src/**/*" ext="h"/>          <======= all C++ header
> files
> </publications>
>
> This means: An artifact represents a fileset, not a single file.
> Is this possible?

No, this is not possible. There's an open issue to support directories, your
request is pretty similar, you can vote for it, and comment about your need.

The workaround we suggest is to zip the files in a single zip artifact. Then
you can use triggers to automatically unzip the files once resolved. Or you
can just use the unzip ant task once Ivy has done the dependency resolving
job.

Xavier

>
>
> Thank you in advance.
> Matthias Albert
>
>
> SEW-EURODRIVE GmbH & Co KG
> Kommanditgesellschaft, Sitz: Bruchsal, RG Mannheim HRA 230970
> Komplementärin: SEW-EURODRIVE Verwaltungs-GmbH, Sitz: Bruchsal, RG
> Mannheim HRB 230207
>
> Gesellschafter und Geschäftsführer: Rainer Blickle, Jürgen Blickle
> Geschäftsführer: Johann Soder, Hans Sondermann, Bernd P. Uckrow
>
>
>
>


-- 
Xavier Hanin - Independent Java Consultant
http://xhab.blogspot.com/
http://ant.apache.org/ivy/
http://www.xoocode.org/