Subject: Re: bug#47161: 28.0.50; [feature/native-comp] Failure to native-compile bytecomp.el etc.

From: Andrea Corallo <[email-masked]>
Date: Tue, 16 Mar 2021 16:22:01 +0000

Eli Zaretskii <[email-masked]> writes:

>> From: Andrea Corallo <[email-masked]>
>> Cc: [email-masked]
>> Date: Mon, 15 Mar 2021 20:05:10 +0000
>> 
>> >     ELC      emacs-lisp/byte-opt.elc
>> >   Compiler-macro error for cl--block-wrapper: (error "(setf seq-elt) is already defined as something else than a generic function")
>> >   Eager macro-expansion failure: (error "(setf seq-elt) is already defined as something else than a generic function")
>> >
>> > What causes this?
>> 
>> ATM I've no idea, but it doesn't look to me evidently related to native
>> compilation.  How can I reproduce it?
>
> What I did was modified byte-opt.el, saved, and said "make".

I can reproduce it.

>> Also, shouldn't byte-opt.el be native compiled as it's in COMPILE_FIRST?
>
> That bothers me as well.  It happens from time to time: for example,
> I've just updated from Git, which brought modified bytecomp.el and
> comp.el, both in COMPILE_FIRST.  And yet this is what I see when I say
> "make":
>
>   make -C lisp all
>   make[1]: Entering directory `/d/gnu/git/emacs/native-comp/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/native-comp/admin/grammars'
>   make[2]: Nothing to be done for `all'.
>   make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/admin/grammars'
>   make[2]: Entering directory `/d/gnu/git/emacs/native-comp/leim'
>   make[2]: Nothing to be done for `all'.
>   make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/leim'
>   make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp'
>     ELC      emacs-lisp/bytecomp.elc
>   make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp'
>   make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp'
>     ELC      emacs-lisp/comp.elc
>   make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp'
>   make[2]: Entering directory `/d/gnu/git/emacs/native-comp/lisp'
>   make[2]: Nothing to be done for `compile-targets'.
>   make[2]: Leaving directory `/d/gnu/git/emacs/native-comp/lisp'
>
> Why not "ELC+ELN"?

AFAICS using "make V=1" we fail only to add the correct "ELC+ELN" in
place of "ELC" but we invoke the right command, will try to have a look.

Regarding the macro expansion issue I tried to have a quick look but I'm
not very much into cl-generic.el and couldn't spot any obvious (for me)
issue so far.

  Andrea