From: Ken Raeburn <raeburn@raeburn.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: build broken: no defun org-float-time. Who's guilty, and what does he propose?
Date: Tue, 8 Sep 2009 03:54:28 -0400 [thread overview]
Message-ID: <1825F3C9-40EA-402E-9FE9-6BF0A1207F6A@raeburn.org> (raw)
In-Reply-To: <83my562kda.fsf@gnu.org>
On Sep 7, 2009, at 23:20, Eli Zaretskii wrote:
>> But if a minor comment change is made in the compiler source, must we
>> recompile everything?
>
> Yes, why not?
Excessive time spent rebuilding things that aren't going to change?
>> We don't generally make .o files explicitly depend on the C
>> compiler.
>
> If a compiler can change the ABI, you must.
True. Is that something we need to worry about with Emacs? It's
changed a handful of times in the history of Emacs, but hasn't it
generally been backwards-compatible? Don't older .elc files generally
still work? Do we really need to force a recompile and *make*
everything take advantage of the latest and greatest optimizer tweaks
or whatever?
>>> 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?
>>
>> Well, "emacs", not "temacs" which is just linked from the C code, but
>> also I was assuming we wouldn't make the emacs binary an explicit
>> dependency for the .elc files
>
> Not all of them, just those that are preloaded. We already have that
> dependency:
>
> emacs${EXEEXT}: temacs${EXEEXT} ${etc}DOC ${lisp} $
> {SOME_MACHINE_LISP}
So "emacs" gets rebuilt if subr.el(c) is updated, yes. But I meant
the other way around -- that we wouldn't want to list foobar.elc as
depending on the emacs binary as a way of expressing dependence on all
the macros and functions that were preloaded into that binary.
>> otherwise, someone downloading and
>> building a release will have to recompile all the elisp code
>
> I don't see why. Please explain.
If foobar.el uses a macro that's defined in subr.el or something else
that's preloaded, and the macro's definition (or that of some function
in yet another file that gets invoked during expansion of the macro)
is changed, we want foobar.el to be recompiled, right? What should
foobar.elc be listed as depending on that would trigger this? The
choices seem to be subr.{el,elc} (and by extension all the preloaded
files, unless we can either compute more precise dependencies or
maintain them properly by hand) or the emacs binary itself.
Compiling a freshly downloaded source tree obviously updates the emacs
binary's timestamp, so if that's how we express the dependency on
"whatever is preloaded that we can't compute precise dependencies on",
everything gets byte compiled at build time, millions of people waste
millions of extra cycles, electricity usage soars, more oil is burned,
the greenhouse effect is amplified, and we all die. (I'm sorry, was
someone talking about hyperbole earlier?) So, I think we probably
don't want to do that.
Which, I think, leaves us indicating that foobar.elc depends on
subr.elc and friends.
>> On the other hand, we probably don't want to recompile
>> everything because lisp/language/georgian.el changed.
>
> No, we don't, but I don't see how would that happen. You just need to
> re-dump.
Depends if georgian.el(c) gets listed among the dependencies for all
the other .elc files, just in case someday it redefines "defcustom",
kind of like how things would depend on the compiler just in case the
ABI changes.
Ken
next prev parent reply other threads:[~2009-09-08 7:54 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-07 9:28 build broken: no defun org-float-time. Who's guilty, and what does he propose? Alan Mackenzie
2009-09-07 9:47 ` Andreas Schwab
2009-09-07 9:52 ` joakim
2009-09-07 10:09 ` Lennart Borgman
2009-09-07 11:37 ` joakim
2009-09-07 10:30 ` Jan D.
2009-09-07 17:42 ` Eli Zaretskii
2009-09-07 17:59 ` Ken Raeburn
2009-09-07 18:32 ` Drew Adams
2009-09-07 18:42 ` Lennart Borgman
2009-09-07 19:22 ` Ken Raeburn
2009-09-07 19:03 ` Glenn Morris
2009-09-07 19:20 ` Drew Adams
2009-09-07 20:08 ` Eli Zaretskii
2009-09-07 21:43 ` more reliable `make' Glenn Morris
2009-09-08 16:46 ` Stefan Monnier
2009-09-10 6:28 ` Glenn Morris
2009-09-10 13:37 ` Stefan Monnier
2009-09-07 20:59 ` build broken: no defun org-float-time. Who's guilty, and what does he propose? joakim
2009-09-07 21:39 ` Glenn Morris
2009-09-07 21:55 ` joakim
2009-09-07 21:13 ` Alan Mackenzie
2009-09-08 16:48 ` Stefan Monnier
2009-09-08 18:17 ` build broken: no defun org-float-time. A workaround Alan Mackenzie
2009-09-08 19:08 ` Ken Raeburn
2009-09-07 20:06 ` build broken: no defun org-float-time. Who's guilty, and what does he propose? Eli Zaretskii
2009-09-07 23:39 ` Ken Raeburn
2009-09-08 2:41 ` Stephen J. Turnbull
2009-09-08 3:20 ` Eli Zaretskii
2009-09-08 7:54 ` Ken Raeburn [this message]
2009-09-08 17:47 ` Eli Zaretskii
2009-09-08 18:32 ` Ken Raeburn
2009-09-08 17:01 ` Stefan Monnier
2009-09-08 17:51 ` Eli Zaretskii
2009-09-09 3:14 ` Stefan Monnier
2009-09-08 2:37 ` Stephen J. Turnbull
2009-09-08 3:14 ` Eli Zaretskii
2009-09-08 17:11 ` Stefan Monnier
2009-09-07 10:05 ` Miles Bader
2009-09-07 11:15 ` joakim
2009-09-07 13:35 ` Alan Mackenzie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1825F3C9-40EA-402E-9FE9-6BF0A1207F6A@raeburn.org \
--to=raeburn@raeburn.org \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).