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

From: Andrea Corallo <[email-masked]>
Date: Wed, 10 Mar 2021 15:24:40 +0000

Eli Zaretskii <[email-masked]> writes:

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

Yes, today or tomorrow evening I'll try to have a look.

Thanks

  Andrea