unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
To: emacs-devel@gnu.org
Cc: beebe@math.utah.edu
Subject: emacs-24.x "make install" issues
Date: Sat, 2 Mar 2013 16:28:44 -0700 (MST)	[thread overview]
Message-ID: <CMM.0.94.0.1362266924.beebe@psi.math.utah.edu> (raw)

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: beebe@math.utah.edu  -
- 155 S 1400 E RM 233                       beebe@acm.org  beebe@computer.org -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------



             reply	other threads:[~2013-03-02 23:28 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-02 23:28 Nelson H. F. Beebe [this message]
2013-03-03  0:16 ` emacs-24.x "make install" issues Paul Eggert
2013-03-03  2:15   ` Glenn Morris
2013-03-03  9:04     ` Óscar Fuentes
2013-03-06  6:27       ` Paul Eggert
  -- strict thread matches above, loose matches on Subject: below --
2013-03-05  0:51 Nelson H. F. Beebe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CMM.0.94.0.1362266924.beebe@psi.math.utah.edu \
    --to=beebe@math.utah.edu \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).