emacs-devel
[Top][All Lists]
Advanced

[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: 2009年9月08日 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).
 Stefan
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.
 compile-onefile:
 @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 @@
 nil))))
 
 ;;;###autoload
+(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)))))))
+
+;;;###autoload
 (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]

AltStyle によって変換されたページ (->オリジナル) /