Subject: bug#79353: 31.0.50; Eager macro expansion errors when building master

From: Gerd Möllmann <[email-masked]>
Date: Tue, 02 Sep 2025 06:48:50 +0200

Stefan Monnier <[email-masked]> writes:

>>> FWIW it sounds like a problem I've seen before in other circumstances
>>> where I just added a `(require 'cl-extra)`, e.g.:
>>>
>>>     lisp/emacs-lisp/comp-cstr.el:(require 'cl-extra) ;HACK: For
>>> `cl-find-class' when `cl-loaddefs' is missing.
>>
>> Interesting.  `tramp.el' could probably just (require 'cl-extra) to fix
>> this.  I guess this is a new use of this cl-extra macro somewhere, which
>> wasn't caught in testing.
>
> I wouldn't call it "new use".  It's probably just a use that can now
> occur a bit earlier (before `cl-loaddefs.el` is built).
>
> See also comment in cl-lib.el:
>
>     (unless (load "cl-loaddefs" 'noerror 'quiet)
>       ;; When bootstrapping, cl-loaddefs hasn't been built yet!
>       (require 'cl-macs)
>       (require 'cl-seq)
>       ;; FIXME: Arguably we should also load `cl-extra', except that this
>       ;; currently causes more bootstrap troubles, and `cl-extra' is
>       ;; rarely used, so instead we explicitly (require 'cl-extra) at
>       ;; those rare places where we do need it.
>       )
>
>
> - Stefan

Not sure if that's relevant, don't know what this is all about anyway.
When I

1 file changed, 1 insertion(+)
lisp/emacs-lisp/loaddefs-gen.el | 1 +

modified   lisp/emacs-lisp/loaddefs-gen.el
@@ -42,6 +42,7 @@
 (require 'radix-tree)
 (require 'lisp-mnt)
 (require 'generate-lisp-file)
+(require 'cl-extra)
 
 (defvar autoload-compute-prefixes t
   "If non-nil, autoload will add code to register the prefixes used in a file.

, just to see what happens, I get

  GEN      autoloads
  INFO     Scraping 1520 files for loaddefs... 
  INFO     Scraping 1520 files for loaddefs...10% 
  INFO     Scraping 1520 files for loaddefs...20% 
  INFO     Scraping 1520 files for loaddefs...30% 
  INFO     Scraping 1520 files for loaddefs...40% 
  INFO     Scraping 1520 files for loaddefs...50% 
  INFO     Scraping 1520 files for loaddefs...60% 
  INFO     Scraping 1520 files for loaddefs...70% 
loaddefs-gen: loading file tramp-adb (for tramp--with-startup)
Loading /Users/gerd/emacs/github/master/lisp/net/tramp-adb.el (source)...
Warning (emacs): loaddefs-gen: load error
	(invalid-read-syntax \N{COLON} 182 16)

which I think indicates that char-from-name doesn't work at that point
in the build process (tramp-compat.el has such character constants).