Subject: Re: bug#46256: [feature/native-comp] AOT eln files ignored if run from build tree

From: Eli Zaretskii <[email-masked]>
Date: Wed, 10 Mar 2021 16:07:55 +0200

> Date: Wed, 10 Mar 2021 13:14:16 +0000
> Cc: [email-masked], [email-masked], [email-masked],
>   [email-masked]
> From: Alan Mackenzie <[email-masked]>
> 
> > Answering my own question here: it can easily happen due to use of
> > cc-require in cc-*.el files.  Alan, why does CC mode use this
> > technique? what is the purpose of always loading a Lisp file even if
> > it was already loaded?
> 
> Are you sure?  cc-require is intended just to compile a `require' form
> (OK, it compiles (progn nil (require 'cc-vars)), but the byte compiler
> will optimise the progn away).

We are not talking about compilation, we are talking about loading
cc-* files.  When we process cc-require, we end up loading the
required CC mode file, even though it is already loaded.

> When loading uncompiled cc-*.el, cc-require does fancy things to make
> sure the cc-*.el is in the "correct" directory, but it shouldn't compile
> any of this into the *.elc.  Maybe there's a bug, somewhere.
> 
> The code in this area was written by Martin Stjernholm (my predecessor),
> who was evidently having trouble with "wrong" versions of the *.el files
> getting loaded.
> 
> I've had a bit of a look at the thread for bug #46256, but I can't really
> follow it, at least not without a lot of effort.  Might it be that the
> ..eln compiler is doing things on the .el file?  I'm not at all familiar
> with how the native compilation works, I'm afraid.

Maybe.  Andrea, could you take a look at what happens with cc-require
in the native-comp branch?