unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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




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