From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Nelson H. F. Beebe" Newsgroups: gmane.emacs.devel Subject: emacs-24.x "make install" issues Date: Sat, 2 Mar 2013 16:28:44 -0700 (MST) Message-ID: NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1362266933 22991 80.91.229.3 (2 Mar 2013 23:28:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 2 Mar 2013 23:28:53 +0000 (UTC) Cc: beebe@math.utah.edu To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Mar 03 00:29:15 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UBvrd-0006Ei-Ai for ged-emacs-devel@m.gmane.org; Sun, 03 Mar 2013 00:29:13 +0100 Original-Received: from localhost ([::1]:54503 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBvrI-0005DW-0o for ged-emacs-devel@m.gmane.org; Sat, 02 Mar 2013 18:28:52 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:56550) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBvrE-0005DP-2V for emacs-devel@gnu.org; Sat, 02 Mar 2013 18:28:49 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UBvrC-0003mx-Q3 for emacs-devel@gnu.org; Sat, 02 Mar 2013 18:28:48 -0500 Original-Received: from mail.math.utah.edu ([155.101.98.135]:39228) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UBvrC-0003mq-J9 for emacs-devel@gnu.org; Sat, 02 Mar 2013 18:28:46 -0500 Original-Received: from psi.math.utah.edu (psi.math.utah.edu [155.101.96.19]) by mail.math.utah.edu (8.14.5/8.14.5) with ESMTP id r22NSiaB015033; Sat, 2 Mar 2013 16:28:44 -0700 (MST) Original-Received: from psi.math.utah.edu (localhost [127.0.0.1]) by psi.math.utah.edu (8.14.5/8.14.5) with ESMTP id r22NSide015396; Sat, 2 Mar 2013 16:28:44 -0700 (MST) Original-Received: (from beebe@localhost) by psi.math.utah.edu (8.14.5/8.14.5/Submit) id r22NSit9015394; Sat, 2 Mar 2013 16:28:44 -0700 (MST) X-US-Mail: "Department of Mathematics, 110 LCB, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT 84112-0090, USA" X-Telephone: +1 801 581 5254 X-FAX: +1 801 581 4148 X-URL: http://www.math.utah.edu/~beebe X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.3.8 (mail.math.utah.edu [155.101.98.135]); Sat, 02 Mar 2013 16:28:44 -0700 (MST) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 155.101.98.135 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:157487 Archived-At: 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/ - -------------------------------------------------------------------------------