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

From: Alan Mackenzie <[email-masked]>
Date: Wed, 10 Mar 2021 16:56:14 +0000

Hello, Eli.

On Wed, Mar 10, 2021 at 16:07:55 +0200, Eli Zaretskii wrote:
> > 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.

The cc-*.el files?  The cc-*.elc files simply have compiled `require's in
them and shouldn't be reloading already loaded .elc files.  I don't know
anything about the cc-*.eln files.

> When we process cc-require, we end up loading the required CC mode
> file, even though it is already loaded.

Yes, if it is processed while loading the source .el file.  This is a
facility designed for CC Mode hackers, in particular Martin S., whose
working style apparently led to him switching source directories
frequently.  

> > 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?

-- 
Alan Mackenzie (Nuremberg, Germany).