emacs-devel
[Top][All Lists]
Advanced

[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/ -
-------------------------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]