Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
Moving Out Tools
================
The process of moving out a tool to its own independent source tree is
expected to be essentially the same for each program. We'll take sid(1)
as an example:
1. Move out /tendra/utilities/sid to /sid/src
2. Make /sid/mk an svn:externals reference to /tendra/mk
3. Make /sid/build an svn:externals reference to /tendra/src/build
4. Provide a .mk file in /tendra/mk such that sid et al are able to
build using whichever compiler is around
Externals
---------
Our goal for separating these tools is to keep them semantically
distinct from each other. However, there're a few things that we still
wish to share between them, without compromising this separation.
For example, the build system is expected to be identical for each,
as there is no need to duplicate effort. Having multiple copies of this
would be a maintenance nightmare.
Subversion's 'externals' feature is our chosen method of keeping things
in one place, yet still separated to each program. This provides for
one centralised location containing the build system, and a link from
each program that makes use of it. When checked out, these trees will
automatically bring down the build system, too.
This is only visible to people working directly with Subversion; users
(when eventually we have some!) are not aware that the build system is
actually brought down by svn:externals: it simply appears present in
the archived snapshot.
Similarly during tagging, externals are pointed at a stable tag, before
the tag of the tool's trunk is made.
Building
--------
The system to build portably should be mostly be in place, since
bootstrapping process uses the same principle: to use whichever compiler
is available.
The current idea for approaching this, is to construct a new mk file
intended for building these programs. This is expected to be in essence
fairly similar to the bootstrap file.