Subject: bug#74490: 31.0.50; make bootstrap fails

From: Eli Zaretskii <[email-masked]>
Date: Sat, 23 Nov 2024 16:21:46 +0200

merge 74490 74491 73855
thanks

> Cc: [email-masked]
> Date: Sat, 23 Nov 2024 15:44:30 +0200
> From: Eli Zaretskii <[email-masked]>
> 
> > From: Vincenzo Pupillo <[email-masked]>
> > Cc: Eli Zaretskii <[email-masked]>
> > Date: Sat, 23 Nov 2024 13:22:30 +0100
> > 
> > Ciao Eli, 
> > make bootstrap fails today, I think it is due to this commit: 
> > commit 1c2e0615fb87727bc2aa1f871353c999b67c792a
> > Author: Eli Zaretskii <[email-masked]>
> > Date:   Sat Nov 23 04:51:10 2024 -0500
> > 
> >     ; Update ldefs-boot.el
> > 
> > 
> > 
> > Loading /home/vincenzo/Projects/Emacs/emacs/lisp/ldefs-boot.el (source)...
> > 
> > Error: void-function (rx)
> >   (rx (or (seq "." (or "py" "pth" "pyi" "pyw")) (seq "/" (or "SConstruct" 
> > "SConscript"))) eos)
> >   (defconst python--auto-mode-alist-regexp (rx (or (seq "." (or "py" "pth" 
> > "pyi" "pyw")) (seq "/" (or "SConstruct" "SConscript"))) eos))
> >   eval-buffer(#<buffer  *load*> nil "/home/vincenzo/Projects/Emacs/emacs/lisp/
> > ldefs-boot.el" nil t)
> >   (if eval-function (funcall eval-function buffer (if dump-mode file fullname)) 
> 
> No, I think this is bug#73855, which somehow rears its ugly head.
> 
> Stefan, could you please look into this?

I think I see the reason: python--auto-mode-alist-regexp appears in
ldefs-boot before the autoloads from rx.el, which define the macro rx.
(A similar defconts defined by Tramp doesn't trigger the problem
because it comes _after_ rx.)

So I believe it's a bad idea to use rx in an autoloaded defconst,
since we cannot know whether the defconst will be in loaddefs.el
before or after the rx macro.

Stefan, are there any clean ways of using calls to autoloaded macros
in autoloaded defconst or defvar?