From apple!bogart.cse.ogi.edu!bruce Thu Apr  9 03:40:08 1992
Return-Path: <apple!bogart.cse.ogi.edu!bruce>
Received: by mitsu.veritas.com (/\==/\ Smail3.1.25.1 #25.1)
	id <m0lYwY3-0006vwC@mitsu.veritas.com>; Thu, 9 Apr 92 03:40 PDT
Received: by veritas.veritas.com (/\==/\ Smail3.1.22.1 #22.2)
	id <m0lYvVF-000051C@veritas.veritas.com>; Thu, 9 Apr 92 02:33 PDT
Received: by mobius.veritas.com (/\==/\ Smail3.1.25.1 #25.2)
	id <m0lYwUk-0000cCC@mobius.veritas.com>; Thu, 9 Apr 92 03:36 PDT
Received: by veritas.veritas.com (/\==/\ Smail3.1.22.1 #22.2)
	id <m0lYvV8-000067C@veritas.veritas.com>; Thu, 9 Apr 92 02:33 PDT
Received: from bogart.cse.ogi.edu by apple.com with SMTP (5.61/10-Dec-1991-eef)
	id AA21446; Thu, 9 Apr 92 02:38:40 -0700
	for veritas.com!tron
Received: by bogart.cse.ogi.edu (/\==/\ Smail3.1.25.1 #25.35)
	id <m0lYvaT-000GueC@bogart.cse.ogi.edu>; Thu, 9 Apr 92 02:38 PDT
Message-Id: <m0lYvaT-000GueC@bogart.cse.ogi.edu>
Date: Thu, 9 Apr 92 02:38 PDT
From: apple!bogart.cse.ogi.edu!bruce (Bruce Jerrick)
To: tron@veritas.com
Subject: Re: PATH_ALIASES_FILE (and PATH_PATHS_FILE) not always set correctly
Status: R

> >    In smail-3.1.25, if ALIASES_FILE is set in conf/os/$OS_TYPE instead
> >of conf/EDITME, some variables are not set correctly in conf/lib/mkdefs.sh .
> 
> I will agree that the code doesn't allow for this.  However, why would
> anyone want to do this?

I'm building smail for at least three different architectures or OS's
(Sequent, Sun-4, Sun-3, probably Ultrix also), from one central source,
accessed read-only via NFS.  I can use the same EDITME if all the OS
dependencies are in the os/xxx files.  That avoids having to have
multiple but slightly divergent copies of source.

    So my philosophy on EDITME is that it should contain site dependencies,
not OS dependencies.  E.g., where smail gets installed is in EDITME,
but something like /etc/aliases (SunOS) vs. /usr/lib/aliases (Classic)
should be in os/xxx .

    We do practically all our builds in "shadow" directories -- on disk
local to a machine doing the build for a particular architecture.  This is
under a hierarchy similar to /usr/src, only starting with /usr/src.shadow .
Source files are actually symlinks into /usr/src/..., which is NFS-mounted
read-only from one machine (a "source server").

    We regard multiple copies of source as being almost as leperous as
s*ndmail.cf files, because of the danger that divergent versions will
develop.

    To facilitate this, I took all the OS_TYPE=xxx lines out of EDITME,
replacing them with a line that sources a file:

    . ${ROOT}/conf/OS_TYPE

That name "OS_TYPE" doesn't change.  There are a variety of OS_TYPE.xxx
files to choose from; all are in the central source tree, and all are made
available to all shadow trees.  The only thing that differs on the
various machines is one OS-specific symlink in the shadow directory,
e.g., on the Sequent:

    OS_TYPE -> OS_TYPE.dynix3.2

and on the Sun:

    OS_TYPE -> OS_TYPE.sun_os4.1

In the shadow directories the OS_TYPE.xxx files are symlinks just like all
other source file symlinks:

    OS_TYPE.dynix3.2 -> SRC/OS_TYPE.dynix3.2
    OS_TYPE.sun_os4.1 -> SRC/OS_TYPE.sun_os4.1
    (etc.)

(SRC is a symlink pointing into the source tree, just for name compaction).

In the central source, the OS_TYPE.xxx files are each a one-liner -- the
appropriate OS_TYPE=xxx.

At first I had done this with EDITME (e.g., EDITME -> EDITME.dynix3.2), but
found I was making changes to multiple EDITME.xxx files that differed by
only one line (the OS_TYPE=xxx line).

-- Bruce
