[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: Stephen J. Turnbull
Subject: Re: build broken: no defun org-float-time. Who's guilty, and what does he propose?
Date: Tue, 08 Sep 2009 11:37:54 +0900

Eli Zaretskii writes:

 > What we need IMO is a way to scan all the *.el files, look for
 > `require', and generate Make dependencies between Lisp files.  Then
 > this problem should be gone for good.

It's both harder and easier than that.  The harder part: Charles
Wilson tried to do this for XEmacs about 10 years ago and gave up.
You also need to handle conditional requires, explicit loads,
autoloads, and there was some other weirdness (files like cl-macs.el,
which in XEmacs at least can't be required, and maybe even more arcane
stuff ... at least you guys don't support DLLs so you don't have to
worry about that).

The easier part: we can assume that the .el files are good for the
purposes of eliminating errors from stray out-of-date .elcs.  But .el
files are just as good as .elc files (as long as you're willing to
accept a few extra seconds for bootstrapping operations).

The way XEmacs handles this is

1. build temacs, and start it
2. load enough .el files to bootstrap the compiler (I think this is
   the whole to-dump list in practice)
3. compile the compiler, and reload it as compiled
4. recompile all out of date .elc files in the to-dump list
5. restart temacs, load the .elc files, and dump
6. start xemacs and recompile any remaining out-of-date elcs.

We still get a few .el/.elc confusions, but they're all PEBKACs.

Alan: there *is* a good reason for preferring the .elc to the .el in
normal operation.  Much surgical experimentation on elisp is done "in
vitro", so the .elc may be considered "stable", while definitions from
the .el are pulled in with C-x C-e for testing.  As long as you
haven't trashed M-x load somehow, you can restore the stable Lisp
environment with a quick M-x load.


reply via email to

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