Src/config plan for installed software

This is a preliminary document describing how software configuration and source management should be handled for software that is installed in /s.

Note: This is a very preliminary document; suggestions are welcome and appreciated on all points discussed.

Goals

The goals of this Src/configuration system are to:

Assumptions

This document assumes that software is already being installed according to the recommendations made in the /s document. When reference is made to "the package's directory", we're referring to the directory /s/package-name.

Plan of Action

The set of goals above will be discussed one-by-one, with a suggested plan of action for each.

Determining where sources originally came from

Determining what local modifications have been made to sources

It is very useful for local modification information be available on two different levels of granularity. For example, sometimes a simple "executive summary" type of information is desirable: a couple of sentences describing what's changed. It's also important that a set of local patches be simple to obtain. These two different needs are handled by two different solutions:

Determining what configuration was used in compiling a package

There are a number of common but different configuration methods; each of these will have to be dealt with somewhat differently.

Can anyone point out common configuration methods that I've missed?

Are there packages for which the above would not capture enough information to repeat the build? You guys have more experience installing packages than I, so I'd be happy to have some feedback on this...

Determining where binaries came from, if not built locally

Determining what changes have been made to binaries as installed

Using CVS for source control

Creating the CVSROOT

Each package will have its own CVSROOT area, located in /s/pkgname/src/CVSROOT. The CVSROOT can be created and initialized with the following command:

> setenv CVSROOT /s/pkgname/src/CVSROOT
> cd /s/cvs/src/cvs-1.3
> ./cvsinit
Note: The requirement of having your current directory be in the cvs src tree will go away when cvsinit gets fixed. I intend to do this, though it probably won't be right away.

Importing the distribution

It is important that each package's original distribution be imported into CVS, so that we can track all modifications that are made locally to each package.

The initial distribution should be imported immediately after the distribution is extracted, as demonstrated by the following example:

> echo $CVSROOT
/s/pkgname-x.y.z/src/CVSROOT
> cd /s/pkgname-x.y.z/src
> tar xzvf pkgname-x.y.z.tgz
> cd pkgname-x.y.z
> cvs import -I ! -m "pkgname x.y.z distribution" pkgname-x.y.z VENDOR PKGNAME_X_Y_Z

Thus, the import line I used to import GNU-make was:

> cvs import -I ! -m "GNU-make 3.74 distribution" make-3.74 GNU GNUMAKE_3_74

where:
	make-3.74	was the directory that I wanted to import
	GNU		was the vendor
	GNUMAKE_3_74	was the version tag

Note that the "import" command does update the imported tree at all. In other words, the equivalent of the "checkout" is not performed. So the first thing you want to do after the import is blow away the tree, and extract the version you just imported, so that additions and changes can be tracked.

So, to continue the above example:

> cd ..
> \rm -rf pkgname-x.y.z
> cvs co pkgname-x.y.z


Last modified: Thu Jul 6 13:41:46 CDT 1995 by jcargill