Subject: 29.0.50; Silent "Compiler-macro error for cl-member" when building from scratch

From: Kévin Le Gouguec <[email-masked]>
Date: Sat, 09 Apr 2022 16:10:15 +0200

When building from scratch ("./autogen.sh && ./configure && make" from a
fresh clone), I spot the following error, which does not interrupt
compilation:

> make[2]: Entering directory '/home/peniblec/src/emacs/lisp'
>   ELC      international/titdic-cnv.elc
> make -C ../leim all EMACS="../src/bootstrap-emacs"
> make[3]: Entering directory '/home/peniblec/src/emacs/leim'
>   GEN      ../lisp/leim/quail/CCDOSPY.el
>   […]
>   GEN      ../lisp/leim/leim-list.el
> /usr/bin/mkdir -p ../lisp/leim/ja-dic
>   GEN      ../lisp/leim/ja-dic/ja-dic.el
>   INFO     Processing OKURI-ARI entries
>   INFO     Processing POSTFIX entries
>   INFO     Processing PREFIX entries
>   INFO     Collecting OKURI-NASI entries
>   INFO     Collecting OKURI-NASI entries... 
>   […]
>   INFO     Collecting OKURI-NASI entries...done
>   INFO     Processing OKURI-NASI entries
>   INFO     Processing OKURI-NASI entries... 
>   […]
>   INFO     Processing OKURI-NASI entries...done
> Compiler-macro error for cl-member: Handler: cl--compiler-macro-member
> (excessive-variable-binding)
> Eager macro-expansion failure: (excessive-variable-binding)
> make[3]: Leaving directory '/home/peniblec/src/emacs/leim'

(For the avoidance of doubt: this is a -j1 run; the […] lines are
regular "GEN/INFO" messages)

As far as I can tell the resulting Emacs is mostly functional; I'm using
it to write this report and have not observed any problem so far.

I have not bisected the problem yet (I noticed it yesterday); I tried to
find a faster recipe than "git clean -fdx && ./autogen.sh && ./configure
&& make", e.g. variations of "touch foo && make bar" from leim/Makefile
and lisp/Makefile, but the error does not show up unless I rebuild
everything from scratch.

"make V=1" says that this is the command that runs when the error comes
(run from the leim subdirectory):

'../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp -batch -l ja-dic-cnv \
  -f batch-skkdic-convert -dir "./../lisp/leim/ja-dic" "SKK-DIC/SKK-JISYO.L"

Unfortunately running this after Emacs is built does not trigger the
error for me.  The "simplest" recipe I have is:

git clean -dfx
./autogen.sh
./configure
make -j16 -C src bootstrap-emacs
cd leim
mkdir ../lisp/leim/ja-dic
'../src/bootstrap-emacs' -batch --no-site-file --no-site-lisp -batch -l ja-dic-cnv -f batch-skkdic-convert -dir "./../lisp/leim/ja-dic" "SKK-DIC/SKK-JISYO.L"

Hope someone can make sense of that, and this is not some setup-specific
thing; FWIW I'm seeing this on openSUSE Tumbleweed and Debian bullseye.

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0)
 of 2022-04-08 built on amdahl30
Repository revision: e9849939549010529e180ffb2509922f1bcc4843
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: openSUSE Tumbleweed