[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: build broken: no defun org-float-time. Who's guilty, and what does

From: Stefan Monnier
Subject: Re: build broken: no defun org-float-time. Who's guilty, and what does he propose?
Date: Tue, 08 Sep 2009 23:14:24 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux)

>> 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).

> Sounds like a good plan to me.

You can try the patch below (actually: first apply the second hunk,
recompile all, then install the first hunk).


Index: lisp/Makefile.in
RCS file: /sources/emacs/emacs/lisp/Makefile.in,v
retrieving revision 1.188
diff -u -r1.188 Makefile.in
--- lisp/Makefile.in    27 Aug 2009 18:35:24 -0000      1.188
+++ lisp/Makefile.in    9 Sep 2009 03:13:25 -0000
@@ -1287,7 +1287,7 @@
 # src/Makefile.in to rebuild a particular Lisp file, no questions asked.
        @echo Compiling $(THEFILE)
-       @$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f batch-byte-compile $(THEFILE)
+       @$(emacs) $(BYTE_COMPILE_EXTRA_FLAGS) -f byte-compile-refresh-preloaded 
-f batch-byte-compile $(THEFILE)
 # Files MUST be compiled one by one. If we compile several files in a
 # row (i.e., in the same instance of Emacs) we can't make sure that
Index: lisp/emacs-lisp/bytecomp.el
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/bytecomp.el,v
retrieving revision 2.257
diff -u -r2.257 bytecomp.el
--- lisp/emacs-lisp/bytecomp.el 5 Sep 2009 19:10:40 -0000       2.257
+++ lisp/emacs-lisp/bytecomp.el 9 Sep 2009 03:13:26 -0000
@@ -4362,6 +4363,24 @@
+(defun byte-compile-refresh-preloaded ()
+  (let* ((argv0 (car command-line-args))
+         (emacs-file (executable-find argv0)))
+    (if (not (and emacs-file (file-executable-p emacs-file)))
+        (message "Can't find %s to refresh preloaded Lisp files" argv0)
+      (dolist (f (reverse load-history))
+        (setq f (car f))
+        (if (string-match "elc\\'" f) (setq f (substring f 0 -1)))
+        (when (and (file-readable-p f)
+                   (file-newer-than-file-p f emacs-file))
+          (message "Reloading stale %s" (file-name-nondirectory f))
+          (condition-case nil
+              (load f 'noerror nil 'nosuffix)
+            ;; Probably shouldn't happen, but in case of an error, it seems
+            ;; at least as useful to ignore it as it is to stop compilation.
+            (error nil)))))))
 (defun batch-byte-recompile-directory (&optional arg)
   "Run `byte-recompile-directory' on the dirs remaining on the command line.
 Must be used only with `-batch', and kills Emacs on completion.

reply via email to

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