From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: build broken: no defun org-float-time. A workaround. Date: Tue, 8 Sep 2009 18:17:35 +0000 Message-ID: <20090908181735.GA11465@muc.de> References: <20090907092823.GA3210@muc.de> <83ws4a3b49.fsf@gnu.org> <0C7A6FC6-085D-4B7F-9DC0-FF0493876153@raeburn.org> <15tyzeinlq.fsf@fencepost.gnu.org> <20090907211315.GC3210@muc.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1252433675 8343 80.91.229.12 (8 Sep 2009 18:14:35 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 8 Sep 2009 18:14:35 +0000 (UTC) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 08 20:14:27 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 1Ml5D0-0003Ua-Cg for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 20:14:26 +0200 Original-Received: from localhost ([127.0.0.1]:53478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ml5Cz-0002tG-J0 for ged-emacs-devel@m.gmane.org; Tue, 08 Sep 2009 14:14:25 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ml5Cv-0002tA-Ns for emacs-devel@gnu.org; Tue, 08 Sep 2009 14:14:21 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ml5Cq-0002sr-Pu for emacs-devel@gnu.org; Tue, 08 Sep 2009 14:14:21 -0400 Original-Received: from [199.232.76.173] (port=36429 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ml5Cq-0002so-Mf for emacs-devel@gnu.org; Tue, 08 Sep 2009 14:14:16 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:2734 helo=mail.muc.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Ml5Cq-0003Wj-3J for emacs-devel@gnu.org; Tue, 08 Sep 2009 14:14:16 -0400 Original-Received: (qmail 89331 invoked by uid 3782); 8 Sep 2009 18:14:12 -0000 Original-Received: from acm.muc.de (pD9E529CA.dip.t-dialin.net [217.229.41.202]) by colin2.muc.de (tmda-ofmipd) with ESMTP; Tue, 08 Sep 2009 20:14:11 +0200 Original-Received: (qmail 11594 invoked by uid 1000); 8 Sep 2009 18:17:35 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.9i X-Delivery-Agent: TMDA/1.1.5 (Fettercairn) X-Primary-Address: acm@muc.de X-detected-operating-system: by monty-python.gnu.org: FreeBSD 4.6-4.9 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:115146 Archived-At: Hi, everybody, On Tue, Sep 08, 2009 at 12:48:50PM -0400, Stefan Monnier wrote: > >> Always run `make bootstrap' if you don't want to deal with these issues. > > That's horrible. It's very slow, and if the build breaks for any > > other reason (careless commission), you haven't even got the bulk of > > your old build left. > The problem is that we don't have the necessary code right now to > generate the needed dependency graph, so wile "cvs update; make" often > works, it sometimes fails for lack of dependency info, in which case > "make bootstrap" works around the problem. How about this for a workaround? Before doing any byte compilation, you scan the .../lisp directory for stale .elc files, and rename them all. That way, the byte compiler is forced to load the new .el files in response to `require', and the like. At the end of the process, you either delete or unrename the stale files as appropriate. Here's a script I've hacked together which does this. Is it easy to implement this idea in the makefiles? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #! /bin/bash ############################################################################## # # m a k e - e m a c s . s h # # Invoke make, having first renamed stale .elc files to prevent them being # loaded spuriously by the byte compiler. Afterwards, delete or restore each # renamed file appropriately. # # Call this script from the top level of an Emacs tree. ############################################################################## OLD=ksiwrjcy STALES=$(for f in `find . -name '*.el'` ; do if [ -f ${f}c -a ${f}c -ot $f ] ; then echo ${f}c ; fi done) echo "Stale files: $STALES" >&2 sleep 3 echo for f in $STALES ; do mv ${f}{,.$OLD} ; done make for f in $STALES ; do if [ -f $f ] then rm ${f}.$OLD else mv ${f}{.$OLD,} echo $f wasn\'t remade >&2 fi done ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > Stefan -- Alan Mackenzie (Nuremberg, Germany).