GNU bug report logs -
#59334
29.0.50; loading native-compiled init file sets user-init-file to .eln
Previous Next
Reported by: Juanma Barranquero <lekktu <at> gmail.com>
Date: Thu, 17 Nov 2022 09:30:02 UTC
Severity: normal
Fixed in version 29.0.50
Done: Juanma Barranquero <lekktu <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #23 received at 59334 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
This fix works. It assumes (as the original code does) that the source will
either be an .el file, or extensionless (though when an .eln was loaded,
the source will always be .el), so the following code will check for
staleness of the .elc as usual.
In other words, with this patch, it will still warn if the source file is
newer than the .elc (as it does now Emacs), regardless of whether the init
file was loaded from an .elc or .eln. (The age of the .eln is irrelevant
here, that's for the native compiler to check and act upon.)
diff --git i/lisp/startup.el w/lisp/startup.el
index 70267fc857..62984426e5 100644
--- i/lisp/startup.el
+++ w/lisp/startup.el
@@ -1064,7 +1064,11 @@ startup--load-user-init-file
;; If we loaded a compiled file, set `user-init-file' to
;; the source version if that exists.
- (when (equal (file-name-extension user-init-file)
- "elc")
- (let* ((source (file-name-sans-extension user-init-file))
+ (when (member (file-name-extension user-init-file)
+ '("elc" "eln"))
+ (let* ((source (file-name-sans-extension
+ (or (gethash
+ (file-name-nondirectory user-init-file)
+ comp-eln-to-el-h)
+ user-init-file)))
(alt (concat source ".el")))
(setq source (cond ((file-exists-p alt) alt)
Testing this patch allowed me to discover another bug:
If you use ~/.emacs instead of ~.emacs.d/init.el, and happen to compile
.emacs, Emacs loads .emacs.elc (as it has always done), but the native
compiler does *not* know how to compile it (because it does not know how to
locate its source), so it gives a warning:
022-11-18 02:54:01+0100 Warning (comp): Cannot look up eln file as no
source file was found for d:/Home/.emacs.elc
and then it assigns the user-init-file to warnings.el!
ELISP> user-init-file
"d:/Home/.emacs.d/native/29.0.50-a4a10996/warnings-28e75f4d-02da775e.eln"
which, if my patch is installed, gets converted to its source file:
ELISP> user-init-file
"d:/Devel/emacs/repo/trunk/lisp/emacs-lisp/warnings.el"
So this is a double bug for anyone compiling their .emacs: they will always
get a warning, and an erroneous user-init-file.
Do you want me to file this as a separate bug?
[Message part 2 (text/html, inline)]
This bug report was last modified 2 years and 244 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.