This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Moving C to its own directory (was Re: ObjC tree inlining)


On Wed, Nov 21, 2001 at 05:58:54PM -0600, Karl Fogel wrote:
> 
> There have been various proposals for a Subversion module system,
> along the lines of "union directories", or other indirection-based
> systems that allow rule-based groupings.  That would probably solve
> the problem described above, but it will not be in 1.0.
> 
> On the other hand, Subversion will support symlinks / shortcuts, which
> should alleviate the problem...

Let me attempt to illustrate how GCC currently uses modules and how I
think that might map to a subversion repository, and you can tell me
if I'm all wet.

The gcc tree is laid out like this:

/cvs/gcc/gcc/		# core code needed always
	 libiberty/
	 include/
	 configure
	 ...

	 gcc/cp/	# C++ front end and libraries
	 libstdc++/

	 gcc/java/	# Java front end and libraries
	 libjava/
	 boehm-gc/
	 ...

Each of these blocks is a CVS module: checking out gcc-core gets you
no more than you need to build a C compiler, gcc-core + gcc-cp gets
you C++ as well, etc.  Checking out "gcc" gives you the whole
enchilada.

Now, you say Subversion doesn't have a feature directly equivalent to
CVS modules, but it does have in-repository symbolic links.  I could
lay out the file system like this:

/subv/gcc/PHYSICAL/libiberty/
		   include/
		   gcc-core/
		   gcc-cp/
		   gcc-java/
		   libstdc++/
		   libjava/
		   ...

/subv/gcc/all/  libiberty -> ../PHYSICAL/libiberty
		gcc       -> ../PHYSICAL/gcc-core
		gcc/cp    -> ../../PHYSICAL/gcc-cp
		...

/subv/gcc/core/ libiberty -> ../PHYSICAL/libiberty
		gcc       -> ../PHYSICAL/gcc-core
		...

And ideally, when I checked out "all" or "core", the server would
traverse the symlinks and I'd get a working copy that appeared to have
the cp directory as a direct child of gcc/.  Also, on future update
operations, the server would notice additions to the shadow tree I'm
in, but not pick up PHYSICAL modules not referenced from that tree.

Two problems:  first, I've got a symlink as a child of a symlink in
the above illo, which is probably impossible.  Second, how do I check
out "gcc-core gcc-cp" and get just the core and the C++ compiler?  We
don't want a combinatorial explosion of these shadow trees.

zw


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]