[Spread-users] CVS vs. release src package directory layout

Daniel Rall dlr at finemaltcoding.com
Wed Jan 9 13:04:39 EST 2002


Jonathan Stanton <jonathan at cnds.jhu.edu> writes:

> On Tue, Jan 08, 2002 at 10:46:27AM -0800, Daniel Rall wrote:
> > I've recently been building Spread from CVS.  It's not currently
>> possible to build the Java Spread client using the Ant build file (the
>> preferred method for a Java developer) from CVS unmodified -- it's
>> only possible from the release package's directory layout.  Now, I can
>> modify the Ant build file so that it can determine which layout it's
>> building source for and react accordingly.  However, in this case it
>> would make more sense if the CVS directory layout matched the release
>> layout closely enough for the same build rules to be leveraged.
>
> Yes I agree. Almost as soon as I did the CVS layout I realized it was
> non-optimal to have different layouts. However, I wasn't crazy about the
> release layout either as that has sort of just grown up and could be
> better. 

I much prefer your CVS layout to the source release layout.

> What I'd like to do is come up with what a "good" layout would be and then
> change the release and CVS to match that. I know this would require
> checking and fixing all the build tools and outside packages, but it is
> better to do it now then later.

Agreed.

> If you, or anyone else has suggestions on a good way to do the
> layout, I'd be interested in hearing them.
>
> Then I'll change it and do whatever ant and makefile fixes are needed.

Here's my ideal source layout (which assumes the CVS layout is used as
the source release layout):

[current content of daemon directory]
java/
  spread/
perl/
  Spread/
python/

Leave the daemon source at the top level (as it currently stands in
the source release); the C libraries provide a client implementation.
Directories for other client implementations leaf out from there.
Java client and app code is mixed in the spread/ package tree (used in
most projects), but could be JAR'd using different build targets (if
desired).  This layout makes the assumption that the only
implementation of the daemon is in C.

Regardless of which way the source tree is layed out it'll be nice to
have those build files work in the same fashion between CVS and
release layouts.

                            Thanks, Daniel



p.s. To preserve CVS history, the content your CVS data
files/directories can be moved around on the file system (just make
sure the permissions remain as they were before).  Warning: this hoses
branches.





More information about the Spread-users mailing list