From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: build broken: no defun org-float-time. Who's guilty, and what does he propose? Date: Tue, 08 Sep 2009 13:01:21 -0400 Message-ID: References: <20090907092823.GA3210@muc.de> <83ws4a3b49.fsf@gnu.org> <0C7A6FC6-085D-4B7F-9DC0-FF0493876153@raeburn.org> <83tyze34fd.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1252429376 25411 80.91.229.12 (8 Sep 2009 17:02:56 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 8 Sep 2009 17:02:56 +0000 (UTC) Cc: acm@muc.de, Ken Raeburn , joakim@verona.se, jan.h.d@swipnet.se, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 08 19:02:48 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Ml45d-0005TU-Uv for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 19:02:46 +0200 Original-Received: from localhost ([127.0.0.1]:49170 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ml45d-0004q5-EC for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 13:02:45 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ml44X-000423-KH for emacs-devel@gnu.org; Tue, 08 Sep 2009 13:01:37 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ml44S-0003v5-8y for emacs-devel@gnu.org; Tue, 08 Sep 2009 13:01:36 -0400 Original-Received: from [199.232.76.173] (port=35925 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ml44S-0003us-1s for emacs-devel@gnu.org; Tue, 08 Sep 2009 13:01:32 -0400 Original-Received: from chene.dit.umontreal.ca ([132.204.246.20]:60252) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Ml44K-0006Cj-R0; Tue, 08 Sep 2009 13:01:25 -0400 Original-Received: from faina.iro.umontreal.ca (faina.iro.umontreal.ca [132.204.26.177]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id n88H1Llm015117; Tue, 8 Sep 2009 13:01:21 -0400 Original-Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 6CD913A8F3; Tue, 8 Sep 2009 13:01:21 -0400 (EDT) In-Reply-To: <83tyze34fd.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 07 Sep 2009 23:06:46 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV3358=0 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:115140 Archived-At: >> Other files could be autoloaded during compilation, and should be >> listed as dependencies too. > We have `features' and `load-history' to help us. It's doable, yes. Note that just looking at the `require's and `provide's will give you a graph with cycles. > Files loaded by loadup.el are easily extracted by simple text > scanning, and the byte compiler itself indeed _is_ a prerequisite for > every other compilation. Note that a basic hypothesis here, is that "make bootstrap" is not a good solution, so any solution that ends recompiling similar amounts of code is not good either. But if you look in detail, you'll see that only bootstrap does it really right: the byte-compiler is a prerequisitie of all elc files, and the byte-compiler itself uses potentially any code in loadup.el (and then some), so any change to a preloaded file should fundamentally require recompiling all Lisp files. Anything short of that is an optimistic optimization. > Btw, I don't understand what problem do you see with files preloaded > by loadup. They should simply be all prerequisites of temacs, and > that's it, right? Of temacs, no, but of `emacs' or `emacs-bootstrap', yes. A recent case to ponder is the addition of define-obsolete-face-alias. Maybe we can handle this one in the following way: When byte-compiling elc files with a preexisting emacs-bootstrap binary, re-load all the files that were preloaded but that have been changed since building emacs-bootstrap, before doing the actual recompilation (i.e. when starting emacs-bootstrap, check the load-history to see if any of those files have changed and reload them if needed). Of course, this will bump into a few bugs at first, since some of the preloaded files do not like to be re-loaded. -- Stefan