bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#75022: 31.0.50; --init-directory sets user-emacs-directory after use


From: Jordan Isaacs
Subject: bug#75022: 31.0.50; --init-directory sets user-emacs-directory after user eln-cache is set
Date: Sun, 22 Dec 2024 05:12:47 -0800

> As for the --init-directory, it doesn't affect the search for your
> init files, it only affects the value of user-emacs-directory (for
> looking up other files).

The issue is the `--init-directory` updated the user-emacs-directory, but there
was no corresponding call to update the eln-cache directory 
(startup--update-eln-cache).
There are comments throughout startup.el about updating the cache directory 
whenever
user-emacs-directory is changed. It is missing that call post command line 
evaluation.
 
> So I don't think I understand why you are asking for changes in how
> the startup code works in Emacs.  Please tell more about your use
> case.

I have a read-only directory of my init.el and early-init.el along with the
byte compiled versions of them. So I call emacs with --init-directory:

/nix/store/ln4pwf5blaqiynydrcn344zn7kbfn6vs-emacs-config
├── early-init.el -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/site-lisp/early-init.el
├── early-init.elc -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/site-lisp/early-init.elc
├── eln-cache
│   └── 31.0.50-0186c17f
│       ├── early-init-ca07bdae-ee82ea37.eln -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/native-lisp/31.0.50-0186c17f/early-init-ca07bdae-ee82ea37.eln
│       └── init-ab609663-d324ef3d.eln -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/native-lisp/31.0.50-0186c17f/init-ab609663-d324ef3d.eln
├── init.el -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/site-lisp/init.el
└── init.elc -> 
/nix/store/qq073crkwrjvpfrfnsbsqq502c8k0a5y-emacs-config-init-1/share/emacs/site-lisp/init.elc

However, when I remove any mutable eln-cache directory I get the following 
message:

"Error muted by safe_call: (apply native--compile-async 
("/nix/store/ln4pwf5blaqiynydrcn344zn7kbfn6vs-emacs-config/early-init.el" nil 
late)) signaled (error "Cannot find suitable directory for output in 
‘native-comp-eln-load-path’.")"

Or, when I do give it a mutable eln-cache directory, it ends up recompiling it 
in the background doing unnecessary work:

/home/jd/.local/state/emacs/eln-cache/31.0.50-0186c17f/
└── early-init-ed4380c6-4ba9e9ac.eln

When I set add  
`/nix/store/ln4pwf5blaqiynydrcn344zn7kbfn6vs-emacs-config/eln-cache` to 
`EMACSNATIVELOADPATH` everything works great. But ideally, startup.el should 
respect `--init-directory` and update the eln-cache location for you
before loading early-init.el





reply via email to

[Prev in Thread] Current Thread [Next in Thread]