[comp.emacs] disk space required for GNU Emacs

neves@ai.WISC.EDU (David M. Neves) (10/13/87)

I sent out the following message to a few people at our site and I
thought it of general interest so I decided to submit it to the net.
I would appreciate hearing more information about what is really
needed in the Emacs distribution as it certainly is disk hungry.
I would also appreciate it if you correct any errors here.
----------------------------------------------------------------

A few people have been putting Emacs on (Unix) workstations.  Because of the
limited amount of disk space on their machines they have had problems
fitting the megabytes of Emacs code and libraries.  You can delete
some of these files.

Necessary file:
emacs 500-700K in size.

All other files are optional.  If you have additional space you should
set up a directory for the supporting files.  The location of this
directory is specified when emacs is compiled.  Sometimes it is called
/usr/local/emacs [[is there a lisp variable that has the location as a
value?]]  The two subdirectories that are needed are "etc" and "lisp".
The "info" subdirectory holds a tree structure representation of the
emacs manual, but if you are short of disk space then delete it.

ETC subdirectory

  The most important file in the /etc directory is the doc file.  Its
name is something like DOC-18.49.3.  If there are several DOC files in
the directory delete all but the latest one (i.e. if there was a 49.2
you could delete it).  [[ This is slightly misleading.  The DOC file
you should keep corresponds to the version of emacs that you are
running.  You can see this version by typing Meta-x emacs-version.]]
The doc file is used to get online documentation on functions (e.g.
describe function in HELP) and for apropos.  It runs about 215K bytes.

  You would need "loadst" if you used meta-x display-time
  You would need "tutorial" if you wanted to look at the online
tutorial file.
  If you use tags in Emacs then ctags and etags would have to be
placed in one of the path directories.

All other files can be deleted [[ maybe someone can tell us what the
other files are for]].

LISP subdirectory
  You can delete all the ".el" files.  These are uncompiled versions
of the compiled files (".elc").  You can also delete the following
.elc files which are already loaded into emacs.

"abbrev.elc buff-menu.elc c-mode.elc files.elc fill.elc help.elc
indent.elc isearch.elc lisp-mode.elc lisp.elc page.elc paragraphs.elc
paths.el register.elc replace.elc simple.elc startup.elc subr.elc
text-mode.elc window.elc"

The rest of the ".elc" files are optional.  You might delete them all
and if you find you need a particular library file then bring it over
from another machine.  The .elc files I use the most

shell.elc - run a Unix shell within a buffer
dired.elc - edit directory
spell.elc - used to correct spelling errors
rmail.elc - if you read your mail using Emacs
sendmail.elc - if you send mail within Emacs
tex-mode.elc - Used to edit TeX formatted files
sort.elc - sort text in a buffer
rect.elc - delete/insert rectangles of text in a buffer

If you do all the above you reduce the disk space that Emacs takes up
from 5.5 megabytes to a total of 1-1.5 megabytes.

David Neves, Computer Sciences Department, University of Wisconsin-Madison
Usenet:  {rutgers,ucbvax,ihnp4}!uwvax!neves
Arpanet: neves@cs.wisc.edu

liberte@uiucdcsb.cs.uiuc.edu (10/18/87)

To save disk space, and to make local distribution of emacs easier, I built
the following Distfile for use with rdist.  You'll have to customize it
to your own needs.  But let me know if you come up with major improvements.

dan
---- cut ----
# rdist(1) distribution file for GNU Emacs on UIUC DCS machines
# Execute in the root directory of emacs: /usr/local/lib/gnuemacs. 
# Use an rdist command like: "rdist -m horse local".
#
# Written by:
# Dan LaLiberte
# liberte@a.cs.uiuc.edu
# uiucdcs!liberte
#
#
# functions:
#	src:	Install everything but the binaries to different kinds of
#			machines or development machines.
#	bin:	Install the binaries for this kind of machine.
#			Do this before lib and info.
#			Bin machines should not be src machines and vice versa.
#	lib:	Install the minimal gnuemacs library things to lib machines.
#	info:	Install the minimal info files and lisp/*.el to info machines.
#			Gnuemacs works without the info files if space is tight.
#	local:  Install the local directory to lib machines.
#	lisp:   Install all lisp/* and lisp/term/* files and remove extras.
#

GNUEMACS_PATH = /usr/local/lib/gnuemacs

#------------------- specify machine groups ----------------------
#
# Don't include ME, cause that is where we are...
ME = p

# Modify the following two machine lists for other machines of this type.
BINMACHS = ( )
INFOMACHS = ( )

# Every machine can be a lib machine.  Also used for "local" distribution.
LIBMACHS = ( a b c d e f g h i max mickey brutus horse )

# This source machine distributes source to other source machines.
SRCMACHS = ( c max mickey brutus horse guitar )


#----------------  specify file groups -----------------------
#
# Source is everything except binaries and objects and other junk.
# Need to make sure paths.h is newer than paths.h.dist.  But this wont do it.
SRCFILES = (	* src/paths.h )

SRCJUNK = ( src/{emacs-*,temacs,xemacs,*.o} etc/DOC* )

BINFILES = ( src/xemacs )

LISP = 	( lisp )

LISPel = ( lisp/*.el lisp/term/*.el )
LISPelc = ( lisp/COPYING lisp/term/COPYING \
  lisp/*.elc lisp/term/*.elc lisp/site-init.el )

# The following code is included in emacs itself, and need not be copied.
LISPelcEXTRA = ( abbrev.elc buff-menu.elc c-mode.elc files.elc fill.elc \
   help.elc indent.elc isearch.elc lisp-mode.elc lisp.elc page.elc )
   paragraphs.elc paths.el register.elc replace.elc simple.elc \
   startup.elc subr.elc text-mode.elc window.elc )

ETCEXECUTABLES = ( test-distrib etags ctags loadst make-docfile \
   digest-doc sorted-doc movemail cvtmail fakemail yow env \
   server emacsclient )

ETCBIN = ( ctags cvtmail emacsclient env etags loadst movemail server yow)
ETCDOC = ( DOC-* )

ETCFILES = ( etc/${ETCDOC} etc/${ETCBIN} )

INFOFILES = ( info etc/NEWS etc/TUTORIAL )

LOCALFILES = ( local local-test/{time.el} )



#------------------------- distribution functions ----------------

src:	${SRCFILES} -> ${SRCMACHS}
	except ${SRCJUNK} ;
	except etc/${ETCEXECUTABLES} ;
	except local-test ;
	except doc ;
	install -w ${GNUEMACS_PATH} ;

# This puts xemacs in the src directory.  You may want to install xemacs
# in /usr/local/gnuemacs instead.
# Remove any DOC files when installing a new binary.
bin:	( READMEFIRST ${BINFILES} ) -> ${BINMACHS}
	install -w ${GNUEMACS_PATH} ;
	special src/xemacs "rm /usr/local/lib/gnuemacs/etc/DOC*" ;

lib:	( ${ETCFILES} ${LISPelc} ) -> ${LIBMACHS}
	except ${LISPelcEXTRA} ;
	install -w -R ${GNUEMACS_PATH} ;

info:	( ${INFOFILES} ${LISPel} ) -> ${INFOMACHS}
	install -w -R ${GNUEMACS_PATH} ;

local:	( ${LOCALFILES} ) -> ${LIBMACHS}
	install -w ${GNUEMACS_PATH} ;

# Use "lisp" to make sure there are no extra files on the destination machine.
lisp:	( ${LISP} ) -> ${LIBMACHS}
	install -w -R ${GNUEMACS_PATH} ;