[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-24.x "make install" issues
From: |
Nelson H. F. Beebe |
Subject: |
emacs-24.x "make install" issues |
Date: |
Sat, 2 Mar 2013 16:28:44 -0700 (MST) |
For people like me who need to install emacs releases on multiple
platforms, there is a serious performance and synchronization problem
with the "make install" step.
Most of the work in that step involves installing files into
$prefix/share/emacs/x.y.z/, and because that directory is shared
across platforms, it is unwise to attempt a "make install" on more
than one machine at a time. If you do, you will very likely get
complaints about corrupted files.
On a fast fileserver with natives disks, the "make install" takes only
about a minute. However, on remote machines with a common fileserver,
I see "make install" times that run to tens of minutes, and because
those jobs must be run sequentially, completing "make install" across
my 25 or so flavors of Unix takes several painful hours.
I think that the "make install" step could, and should, be modified as
follows:
On "make install", create a new empty lock file, called, say,
INSTALLED, but if it already exists, skip entirely the
installs into the $prefix/share/emacs/x.y.z/ tree.
In order to detect races, instead of making it an empty file,
make it hold the installer's hostname. Then the install step
could check after creating it that it contained the expected
string:
test -f INSTALLED && exit
test -f INSTALLED || hostname > INSTALLED
test "`cat INSTALLED`" = "`hostname`" || exit
That way, the first "make install" would would run to completion as it
currently does, and all of the remaining "make install" runs on other
machines would only install the platform-dependent files in
$prefix/bin (and possibly other places). Those "make install" runs
could then proceed in parallel, and with care about which machine was
done first, all of them could complete in a couple of minutes, instead
of taking many hours.
I wish also to request that the gzipping of installed files be made
optional, e.g., controlled by an environment variable. It is by far
the most time-consuming part of the "make install", and for
emacs-24.2.92, the disk space required grows from 88MB to 124MB if the
gzip compression is subsequently undone. With today's disk sizes,
that is a minor difference that I'd be happy to give up, saving time
in the future for every emacs library loaded dynamically into an
editor session.
For environments where space is still at a premium (e.g., mobile and
embedded devices), consider switching to "xz -9" compression (and
supporting the loading of .el.xz files). When I did that, the *.el.gz
file space dropped from 88MB to 83M.
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: address@hidden -
- 155 S 1400 E RM 233 address@hidden address@hidden -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
- emacs-24.x "make install" issues,
Nelson H. F. Beebe <=