Subject: bug#52773: Master and (probably) emacs-28: locate-library hides .eln files.

From: Eli Zaretskii <[email-masked]>
Date: Fri, 24 Dec 2021 14:00:21 +0200

> Date: Fri, 24 Dec 2021 11:22:48 +0000
> From: Alan Mackenzie <[email-masked]>
> 
> The cause of the problem is in `locate-file' in files.el.  There, if a
> ..eln file is found, it's corresponding .el source is looked up in a hash
> table, and the .el name returned instead.
> 
> This mechanism was inserted by the following patch:
> 
> commit 3224a443060a5f21bb910064fc06fe4432810355
> Author: Andrea Corallo <[email-masked]>
> Date:   Sun Jul 19 10:46:24 2020 +0200
> 
>     Move eln files into dedicated cache directories
> 
>     When loading a elc file search for a corresponding eln one into
>     `comp-eln-load-path' directories and load it if available.
>     `comp-eln-load-path' contains by default two directory (user and
>     system one).
> 
> It seems there is some use case for which returning the .el file name in
> place of the .eln is appropriate.  It isn't appropriate for
> locate-library.
> 
> I would suggest moving the hash table mechanism out of locate-file, and
> into the other function which calls locate-file, where the substitution
> is wanted.

If you want this to be fixed on the emacs-28 branch, the above
proposal will not fly.  So either we will need a special, safer,
solution for the release branch, or we will have this solved only on
master.  (I prefer the former, FWIW.)