Subject: Installing for multiple archs (was: Re: xntpd)
To: None <Hubert.Feyrer@rz.uni-regensburg.de>
From: Jesus M. Gonzalez <jgb@gsyc.inf.uc3m.es>
List: current-users
Date: 01/05/1996 14:53:04
>Can you give some more details on this one, focussing on multiple
>OSs/architectures: where do you keep machine dependent parts?

	The full schema of our directory strucutre is a bit complex.
I could send you a small draft explaining it a bit, if you are interested..
But sumarizing:

1. You have /mix, wich is the root of everithing wich should be non-local
(in general, useful to more than one machine).

2. Under /mix, you have arch-dependent directories, e.g.:
/mix/sunos-4.1, /mix/netbsd-i386-1.1, etc.

3. Every machine links /usr/local to /mix/arch_name. That way,
everybody can type "emacs" on any machine, and the proper emacs
is executed (because everybody is taught to have /usr/local/bin in
her path).

4. Under /mix/arch_name (/usr/local) you have the usual bin, man , lib, etc
dirs, full of symlinks to the proper places under /usr/local/install,
which is where installed packages live (each one under
/usr/local/install/pkg_name)

5. You also have /usr/local/distrib and /usr/local/test, for pkg distributions
and building and testing of packages (something similar to src in other
schemas I've seen).

6. You also have /mix/share, under wich you put the sharable things.
You have /mix/share/{install,test,distrib}. For instance, emacs lisp 
libraries are under /mix/share/install/emacs-19.30.

7. For convenience, we also have /usr/local/share, wich is a link
to /mix/share (see (c.) below).

	To understand what all this mess is for, consider the following
scenarios:

a. Installation of a new machine. Just install the O.S., and automount
(or symlink) /mix and link (or automount) /usr/local to /mix/arch_name.
Everithing up and running.

b. I'm on a NetBSD machine and want to see something wich is built
for SunOS. Just "cd /mix/sunos-4.1/install/whatever"

c. I want to have a copy of "everithing for NetBSD-i386" for the machine
at home (no multiple arch there). Just "tar cvzf xxx.tar.gz /usr/local",
and install it at home later untarring.

d. I want to install a new version of package foo for NetBSD.
Just delete the old version from /mix/netbsd-i386-1.1/install/foo,
unpack it under /mix/netbsd-i386-1.1/test in any machine,
configure it to install under /usr/local/install/foo, compile and
install from a NetBSD-i386 machine. Have a look at symlinks under
/usr/local/{bin,man,lib}, just in case file names have changed.
Voila. (tha latter part should be atuomated.

>Furthermore, i think if you rip apart packages in shareable and arch-specific
>code, packages seem to be more difficult to create, no? GNU software seems to
>support that, X is a mess anyway (as Rob pointed out earlier), what else do we
>have as possible targets for packages?

	GNU things use to be pretty easy. TeX is easy too.
Things based on Perl scripts (e.g. LaTeX2html) are very easily
installed under /mix/share/install in full. Then you have things
where the only sharable thing is the man page. You can repeat
it for all the archs, or modify its makefile slightly to put
it under /mix/share... Anyway, when you are building a package, you
can just "build it under /usr/local/install" without bothering
about sharable parts, or can "build it with care", installing
sharables under /mix/share/isntall. You are not forced to do the
things in any way.

	I just hope all this "evagelism" wasn't "too much"... ;-)

		Jesus.
--
Jesus M. Gonzalez Barahona         | addr.:  c/ Butarque, 15
Grupo de Sistemas y Comunicaciones |         28911 Leganes, Spain
Departamento de Informatica        | tel: +34 1 624 94 58
Universidad Carlos III de Madrid   | fax: +34 1 624 94 30
e-mail: jgb@gsyc.inf.uc3m.es       | www: http://ordago.gsyc.inf.uc3m.es/~jgb