unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Eli Zaretskii <eliz@gnu.org>
Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
Subject: Re: Speeding up the bootstrap build - a quick hack.
Date: Wed, 19 Jan 2022 16:50:11 +0000	[thread overview]
Message-ID: <YehBQy0b4Teq2nOU@ACM> (raw)
In-Reply-To: <835yqgt0bf.fsf@gnu.org>

Hello, Eli.

On Wed, Jan 19, 2022 at 13:46:44 +0200, Eli Zaretskii wrote:
> > Date: Wed, 19 Jan 2022 11:10:32 +0000
> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > No, we need two consecutive shell commands under the same target: one
> > > with no-native-compile set, the other without it.

> > No, this would not work.  It is essential to have all seven compile-first
> > files byte compiled before we start native compiling any of them.  That
> > is what halves the time taken for the compile-to-native of comp.el.

> The following single command in src/Makefile.in

> 	$(MAKE) -C ../lisp compile-first EMACS="$(bootstrap_exe)"

> compiles all of the seven dwarfs in one go, so I'm not sure what you
> mean by "would not work".  Please elaborate.

> > I don't think we can avoid two separate targets for each of these source
> > files.

> I don't think you understood my proposal, because this reason makes no
> sense to me.

You're right, I didn't.  Maybe I understand it now.

The idea is to leave lisp/Makefile.in unchanged, and make all the
alterations in src/Makefile.in.

The segment of code you cite above builds all of compile-first in one
invocation, so there's no need to worry about mixtures of interpreted
source and .elc.

So, we duplicate that bit of code, setting the Emacs variable
no-native-compile on the command line of the first occurrence.  This
will cause the byte compilation of all of compile-first.

After this bit of new code, we use 'touch' to set the date of these new
*.elc's back to the distant past.  This will ensure that these *.el's
get built again in the next step.

The second duplicate of the old bit of make code will build the .eln's,
using the ("very old") .elc's which are still available inside Emacs.
It should do this reasonably quickly, because it is using *.elc's.

Yes, I agree that this approach is more elegant and surely easier to
maintain than my original hack, if it can be made to work (which it
surely can).  I will look at this this evening.  Thanks for the
suggestion.

-- 
Alan Mackenzie (Nuremberg, Germany).



  reply	other threads:[~2022-01-19 16:50 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-17 20:26 Speeding up the bootstrap build - a quick hack Alan Mackenzie
2022-01-17 20:55 ` Stefan Monnier
2022-01-18 11:56   ` Alan Mackenzie
2022-01-18 13:14     ` Stefan Monnier
2022-01-18 20:27       ` Alan Mackenzie
2022-01-18 20:48         ` Stefan Monnier
2022-01-19 11:50           ` Alan Mackenzie
2022-01-19 14:34             ` Stefan Monnier
2022-01-19 15:24               ` Stefan Monnier
2022-01-18 13:16     ` Robert Pluim
2022-01-18 14:04       ` Alan Mackenzie
2022-01-18 14:13         ` Robert Pluim
2022-01-18 14:24           ` Stefan Monnier
2022-01-18 14:35             ` Robert Pluim
2022-01-18 15:13               ` Robert Pluim
2022-01-18 16:50                 ` Eli Zaretskii
2022-01-18 16:09               ` Andrea Corallo
2022-01-18 18:36               ` Stefan Monnier
2022-01-18 14:05       ` Stefan Monnier
2022-01-18 14:18         ` Robert Pluim
2022-01-17 21:03 ` Lars Ingebrigtsen
2022-01-18  0:46 ` Po Lu
2022-01-18 14:17 ` Eli Zaretskii
2022-01-18 18:40   ` Stefan Monnier
2022-01-18 19:34     ` Eli Zaretskii
2022-01-18 20:28       ` Stefan Monnier
2022-01-18 20:35       ` Alan Mackenzie
2022-01-18 20:50         ` Stefan Monnier
2022-01-19 11:10       ` Alan Mackenzie
2022-01-19 11:46         ` Eli Zaretskii
2022-01-19 16:50           ` Alan Mackenzie [this message]
2022-01-19 17:03             ` Eli Zaretskii
2022-01-19 21:32               ` Alan Mackenzie
2022-01-20  9:25                 ` Robert Pluim
2022-01-20 11:35                   ` Alan Mackenzie
2022-01-20 13:18                     ` Robert Pluim
2022-01-20 14:54                       ` Robert Pluim
2022-01-20 18:48                         ` Alan Mackenzie
2022-01-20 22:29                           ` Stefan Monnier
2022-01-21  8:17                             ` Robert Pluim
2022-01-21 10:18                 ` Stephen Leake
2022-01-21 10:42                   ` David Engster
2022-01-21 10:51                   ` Robert Pluim
2022-01-24 19:43 ` Andrea Corallo
2022-01-24 19:54   ` Eli Zaretskii
2022-01-24 20:15     ` Andrea Corallo

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=YehBQy0b4Teq2nOU@ACM \
    --to=acm@muc.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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).