Subject: bug#75022: closed (Re: bug#75022: 31.0.50; --init-directory sets user-emacs-directory after user eln-cache is set)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 04 Jan 2025 12:46:02 +0000

Your bug report

#75022: 31.0.50; --init-directory sets user-emacs-directory after user eln-cache is set

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
75022: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75022
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#75022: 31.0.50; --init-directory sets user-emacs-directory after user eln-cache is set
From: Eli Zaretskii <[email-masked]>
To: Andrea Corallo <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 04 Jan 2025 14:45:31 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Andrea Corallo <[email-masked]>
> Cc: "Jordan Isaacs" <[email-masked]>,  [email-masked]
> Date: Sun, 29 Dec 2024 06:25:18 -0500
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> Date: Sun, 22 Dec 2024 13:26:04 -0800
> >> From: "Jordan Isaacs" <[email-masked]>
> >> Cc: [email-masked]
> >> 
> >> Because it is read only, there is no reason not to byte compile everything. I just make it part of the build step when packaging up my configuration.
> >> 
> >> The reasoning for why I byte compile though seems irrelevant, it’s a bug with a simple fix. The eln-cache path isn’t staying in sync with user-emacs-directory. 
> >> 
> >>     (let ((old-face-font-rescale-alist face-font-rescale-alist))
> >>       (unwind-protect
> >> 	  (command-line)
> >> +  (when (featurep 'native-compile)
> >> +     (startup--update-eln-cache))
> >
> > I'm not at all sure it's indeed so simple to change the eln-cache in
> > the middle of a session, but let's hear what Andrea (CC'ed) thinks
> > about this.
> 
> I have nothing in my mind which suggests this should not work, I think
> that if the patch is tested and seems to work we could try it on master.

OK, installed on master, and closing the bug.

Thanks.

Subject: 31.0.50; --init-directory sets user-emacs-directory after user eln-cache is set
From: "Jordan Isaacs" <[email-masked]>
To: [email-masked]
Date: Sun, 22 Dec 2024 03:57:01 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

In startup.el, the user-emacs-directory and the user eln-cache are set up before processing command line args.
The user eln-cache is then gets updated after the early-init.el is loaded. This leaves a gap where early-init.el is
loaded without the correct eln-cache directory. This means there will always be a cache miss if the early-init.eln
file was in the `--init-directory`.

To fix this, either `--init-directory` needs to be read before setting up the user eln-cache, or a call to `startup--update-eln-cache` needs to be called after command line args are processed since user-emacs-directory may have changed (from `--init-directory`).