unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: emacs-devel@gnu.org
Subject: Re: *-loaddefs.el files are not byte-compiled after being regenerated
Date: Thu, 04 Aug 2022 20:18:13 +0300	[thread overview]
Message-ID: <834jys2ai2.fsf@gnu.org> (raw)
In-Reply-To: <87v8r8dk6n.fsf@gnus.org> (message from Lars Ingebrigtsen on Thu,  04 Aug 2022 18:53:36 +0200)

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Thu, 04 Aug 2022 18:53:36 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Something's wrong with the Makefile rules for these files: I see quite
> > a lot that they are regenerated, but the results are not subsequently
> > byte-compiled, causing warnings when I start Emacs after building it.
> 
> Sounds like the loaddefs files are being generated too early in some
> circumstances to be picked up by compile-main?
> 
> Do you have a recipe to reproduce this problem?

Unfortunately, no.

I use "make -j4", maybe that somehow triggers the problem.

Another thing that perhaps is relevant is that the generation of the
*-loaddefs.el files happens in parallel with (and close to the end of)
the byte-compilation of updated *.el files.  Here's an example:

  Finding pointers to doc strings...
  Finding pointers to doc strings...done
  Growing hash table to: 120000
  Pure-hashed: 18227 strings, 5621 vectors, 50818 conses, 5088 bytecodes, 330 others
  Dumping under the name emacs.pdmp
  Dumping fingerprint: 4d49c5e06c09d7ec789816d97b378812d91a300716e9553969c02f8f43918a9d
  Dump complete
  Byte counts: header=100 hot=7205544 discardable=130440 cold=3728296
  Reloc counts: hot=439088 discardable=5359
  Adding name emacs-29.0.50.1611.exe
  Adding name emacs-29.0.50.1611.pdmp
  cp -f emacs.pdmp bootstrap-emacs.pdmp
  make[1]: Leaving directory `/d/gnu/git/emacs/trunk/src'
  make -C lisp all
  make[1]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
  make -C ../leim all EMACS="../src/emacs.exe"
  make -C ../admin/grammars all EMACS="../../src/emacs.exe"
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/admin/grammars'
  make[2]: Nothing to be done for `all'.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/admin/grammars'
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/leim'
  make[2]: Nothing to be done for `all'.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/leim'
    GEN      autoloads
  rm ./emacs-lisp/autoload.elc
  rm ./net/netrc.elc
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
  make[2]: Nothing to be done for `compile-targets'.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
  Source file `d:/gnu/git/emacs/trunk/lisp/emacs-lisp/loaddefs-gen.el' newer than byte-compiled file; using older file
    INFO     Scraping files for loaddefs...
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/doc/misc'
  make[2]: `org.texi' is up to date.
  make[2]: `modus-themes.texi' is up to date.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/doc/misc'
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/leim'
  make[2]: Nothing to be done for `generate-ja-dic'.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/leim'
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
  make[2]: Nothing to be done for `compile-targets'.
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
    INFO     Scraping files for loaddefs...10%
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
    ELC      auth-source.elc
    ELC      cus-dep.elc
    ELC      dired-aux.elc
    ELC      dired-loaddefs.elc
    ELC      find-dired.elc
    ELC      ibuffer-loaddefs.elc
    ELC      makesum.elc
    ELC      ps-print-loaddefs.elc
    INFO     Scraping files for loaddefs...20%
    ELC      calc/calc-loaddefs.elc
    ELC      calendar/cal-loaddefs.elc
    ELC      calendar/diary-loaddefs.elc
    ELC      calendar/holiday-loaddefs.elc
    ELC      cedet/ede/loaddefs.elc
    ELC      cedet/semantic/loaddefs.elc
    ELC      cedet/srecode/loaddefs.elc
    INFO     Scraping files for loaddefs...30%
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
    ELC      emacs-lisp/checkdoc.elc
    ELC      emacs-lisp/cl-loaddefs.elc
    ELC      emacs-lisp/loaddefs-gen.elc
    INFO     Scraping files for loaddefs...40%
    ELC      emacs-lisp/package.elc
    ELC      erc/erc-loaddefs.elc
    ELC      eshell/em-extpipe.elc
    ELC      eshell/esh-groups.elc
    ELC      gnus/nnimap.elc
    INFO     Scraping files for loaddefs...50%
    ELC      gnus/nntp.elc
    INFO     Scraping files for loaddefs...60%
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
    INFO     Scraping files for loaddefs...70%
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
    ELC      mh-e/mh-loaddefs.elc
    ELC      net/eww.elc
    ELC      net/tramp-adb.elc
    ELC      net/tramp-loaddefs.elc
    INFO     Scraping files for loaddefs...80%
    ELC      net/tramp-sh.elc
    ELC      net/tramp.elc
    ELC      obsolete/autoload.elc
    ELC      obsolete/netrc.elc
    INFO     Scraping files for loaddefs...90%
    ELC      org/ob-lilypond.elc
    ELC      org/org-loaddefs.elc
    ELC      progmodes/meta-mode.elc
    INFO     Scraping files for loaddefs...100%
    INFO     Scraping files for loaddefs...done
    GEN      textmodes/reftex-loaddefs.el
    GEN      textmodes/texinfo-loaddefs.el
    GEN      org/org-loaddefs.el
    GEN      net/tramp-loaddefs.el
    GEN      mh-e/mh-loaddefs.el
    GEN      eshell/esh-groups.el
    GEN      erc/erc-loaddefs.el
    GEN      emacs-lisp/cl-loaddefs.el
    GEN      cedet/srecode/loaddefs.el
    GEN      cedet/semantic/loaddefs.el
    GEN      cedet/ede/loaddefs.el
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
    GEN      calendar/diary-loaddefs.el
    GEN      calendar/holiday-loaddefs.el
    GEN      calendar/cal-loaddefs.el
    GEN      calc/calc-loaddefs.el
    GEN      ps-print-loaddefs.el
    GEN      ibuffer-loaddefs.el
    GEN      dired-loaddefs.el
  make[2]: Entering directory `/d/gnu/git/emacs/trunk/lisp'
    ELC      textmodes/reftex-loaddefs.elc
    ELC      textmodes/texinfo-loaddefs.elc
  make[2]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
    GEN      loaddefs.el
  make[1]: Leaving directory `/d/gnu/git/emacs/trunk/lisp'
  make -C doc/misc info
  make[1]: Entering directory `/d/gnu/git/emacs/trunk/doc/misc'
  make[1]: Nothing to be done for `info'.
  make[1]: Leaving directory `/d/gnu/git/emacs/trunk/doc/misc'

Shouldn't the loaddefs files be the dependency of every .elc file?



  parent reply	other threads:[~2022-08-04 17:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-04 16:49 *-loaddefs.el files are not byte-compiled after being regenerated Eli Zaretskii
2022-08-04 16:53 ` Lars Ingebrigtsen
2022-08-04 16:56   ` Lars Ingebrigtsen
2022-08-04 17:10     ` Lars Ingebrigtsen
2022-08-04 17:22       ` Eli Zaretskii
2022-08-04 17:18   ` Eli Zaretskii [this message]
2022-08-04 22:13     ` Stefan Monnier
2022-08-04 22:26       ` Lars Ingebrigtsen
2022-08-04 22:41         ` Stefan Monnier
2022-08-04 22:47           ` Lars Ingebrigtsen
2022-08-04 22:56             ` Stefan Monnier
2022-08-05 11:52               ` Lars Ingebrigtsen

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=834jys2ai2.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.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).