[comp.unix.questions] maintaining UNIX system source code

stevens@hsi.UUCP (Richard Stevens) (03/10/88)

How do you maintain the source code files for your UNIX ??

We're running 4.3 BSD on a VAX and use RCS.  What we've been doing
for the last 4 years is to leave the BSD directories (/usr/src/...)
exactly as-is from the release tape.  When we modify something, say
tar, we've been copying /usr/src/bin/tar.c into /usr/local/src/tar.c,
RCS'ing it and modifying it.  When we converted from 4.2 to 4.3 we
just looked at /usr/local/src and were able to see what we had
modified from the Berkeley release.  I'm wondering if we should just
go ahead and RCS everything in /usr/src, and make our local
modifications there, as we'd still be able to get to the original
distribution sources as RCS version 1.1.  (For the kernel itself,
we've already gone ahead and RCS'ed everything starting at /usr/src/sys,
since we've tended to modify it more than we've modified anything else
starting at /usr/src.   However, we're about to install NFS, so we'll
have to re-make almost everything in sight, so I'd like to get things
set up "best" ahead of time.)

Any ideas or comments as to how you're doing this ??

	Richard Stevens
	Health Systems International, New Haven, CT
	   { uunet | ihnp4 } ! hsi ! stevens

kcs@j.cc.purdue.edu (Kevin C. Smallwood) (03/11/88)

In article <874@hsi.UUCP> stevens@hsi.UUCP (Richard Stevens) writes:
>How do you maintain the source code files for your UNIX ??

At the Purdue University Computing Center, we maintain the source code by
checking all of the distributed source code in when we get it.  For 4.3BSD
UNIX, we checked everything in as revision "4.3" setting the "state" to
"dist" (for distribution).  At the same time, we also forced a check-in of
the same file as revision 4.3.1.1 (on a side-branch).  We might also set a
symbolic name of something  like "4_3BSD" as the 4.3 revision.  Now all local
modifications and fixes occur on the side-branch of the distributed version
of the source file.  Typically, we use the "state" (-s) to either "Local"
or "Fix" or something else more meaningful than "exp" :-).  When 4.4BSD
UNIX (or whatever it will be called) comes out, we will probably check
everything in as revision 4.4 and use the side-branch 4.4.1 for local
modifications.  BTW, we got this technique from Purdue's Engineering
Computer Network (ECN); a technique they used for the kernel code.

Another technique we are using is to actually track the revision that come
from the source distributor.  That is, if the source has an RCS or SCCS
revision of "7.1", for example, we check-in the source file with this
revision number.  We still use side-branches to do the local work.

Kevin C. Smallwood			Internet: kcs@j.cc.purdue.edu
Manager of UNIX Systems			UUCP: ...!{pur-ee,purdue}!kcs
Purdue University Computing Center

ggs@ulysses.homer.nj.att.com (Griff Smith) (03/14/88)

In article <874@hsi.UUCP>, stevens@hsi.UUCP (Richard Stevens) writes:
> How do you maintain the source code files for your UNIX ??
> 
> We're running 4.3 BSD on a VAX and use RCS.  What we've been doing
> for the last 4 years is to leave the BSD directories (/usr/src/...)
> exactly as-is from the release tape.  When we modify something, say
> tar, we've been copying /usr/src/bin/tar.c into /usr/local/src/tar.c,
> RCS'ing it and modifying it.
> ...
> Any ideas or comments as to how you're doing this ??
> 
> 	Richard Stevens
> 	Health Systems International, New Haven, CT
> 	   { uunet | ihnp4 } ! hsi ! stevens

We read the source distribution tape into a separate filesystem, which
we call /source; it contains src and sys.  After cleaning up any
objectionable ownerships and permissions, we mount the filesystem
read-only.  We then create directory trees called /usr/src and /usr/sys
where all type 'f' files are replaced by symbolic links to the real
files in /source.  The first time we want to modify a file, we remove
the link, copy the file into the working source tree, then edit the
copy.  This strategy satisfies a vocal "let freedom ring" contingent
who would otherwise hack at the original source without leaving traces,
and it simplifies audits for the rest of us.  Whenever I want a summary
of all local edits, I just use "diff -r /source/src/... /usr/src/...".
-- 
Griff Smith	AT&T (Bell Laboratories), Murray Hill
Phone:		1-201-582-7736
UUCP:		{allegra|ihnp4}!ulysses!ggs
Internet:	ggs@ulysses.att.com