[gnu.emacs.bug] Sharing two versions of EMACS

peck@SUN.COM (Jeff Peck) (02/06/90)

>    I am a non-emacs-user who is trying to install emacs on our Sun system
>for several users.

>    So, my question.  How do people out there share the etc, lisp and such
>files between the two copies?  Do I really need seperate sets of these
>directories for the two executables?

No, you don't need two sets.  In fact, you don't even need to versions
of emacs.  The X compiled version of emacs should work just fine on
regular terminals.  At most, you would invoke with the "-nw" arg to disable
any attempt to use X windows.

You don't explain what you mean by "straight" terminals: dumb tty, or Sunview?  

Locally, i make one emacs with HAVE_X_WINDOWS, HAVE_SUN_WINDOWS,  HAVE_NEWS
*all* defined.  The window system environment variables tell emacs what
type of window to make or use (except X/NeWS users who want to specify a
NeWS window, they make their window and start emacs with -nw.


We do have many architectures, and manage to share everything but the
executables in the "etc" directory:

We have /usr/local/share/gnuemacs/{etc,src,lisp,info,...} which
has all the usual source and .elc files.

Then for each arch we have:
	/usr/local/`arch`/gnuemacs/{src,lisp,info,...}
	which are symlinks to "../../share/gnuemacs/{src,lisp,info,...}"

 and	/usr/local/`arch`/gnuemacs/etc  which contains
	symlinks to the *source* files and *DOC* files for the etc programs
	[ie: "../../share/gnuemacs/etc/etags.c" ]
        and contains the actual executables for that architecture.
	The "emacs" executable is also in this directory so users just
	need to include "/usr/local/gnuemacs/etc" in their path to 
	have access to all the gnu/etc executables.

#! /bin/csh
# make a /etc/local/`arch`/gnuemacs/etc directory
# convert non-executables to links to shared directory.
# rm -rf *
foreach file (`ls -F /export/local/share/gnuemacs/etc | grep -v "\*" `)
  (cd /export/local/sun3/gnuemacs/etc; \rm -f $file; ln -s ../../share/gnuemacs/etc/$file .)
  (cd /export/local/sun4/gnuemacs/etc; \rm -f $file; ln -s ../../share/gnuemacs/etc/$file .)
  (cd /export/local/sun386/gnuemacs/etc; \rm -f $file; ln -s ../../share/gnuemacs/etc/$file .)
end


I have also hacked the src/config.h file to read `arch` to include
the correct m-<arch> file. so a common config.h is used for all arch's...


/* Include here a m- file that describes the machine and system you use.
   See the file ../etc/MACHINES for a list of machines and
   the names of the m- files to use for them.
   See m-template.h for info on what m- files should define.
   */
#define HAVE_SUN_WINDOWS
#define HAVE_NEWS
#ifdef sun
#if defined sun386
#include "m-sun386.h"
#elif defined sparc
#include "m-sparc.h"
#elif defined mc68000
#include "m-sun3.h"
#endif
#endif