Emacs should no longer crash when the eln-cache isn't writable
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 3 Sep 2022 15:03:01 +0000 (11:03 -0400)
committerRob Browning <rlb@defaultvalue.org>
Tue, 27 Sep 2022 01:22:14 +0000 (20:22 -0500)
This upstream patch has been incorporated to fix the problem:

  * lisp/emacs-lisp/comp.el (comp-run-async-workers): Fail more gracefully

  Otherwise Emacs may fail to start if it can't find a writable
  `~/.emacs.d/eln-cache` directory.
  Fixes bug#57562.  See also Debian's bug #1017739.

Origin: upstream, commit: aad38d6010d9eef07685fa52ce93bcf70512f88b
Bug: https://bugs.gnu.org/57562
Bug-Debian: http://bugs.debian.org/1017739
Forwarded: not-needed

lisp/emacs-lisp/comp.el

index a363bed3642f13126aa914879330df7ae0b33d8d..e14486e026e57824f1bf325a5320d87eac30068f 100644 (file)
@@ -3925,8 +3925,11 @@ display a message."
          when (or native-comp-always-compile
                   load ; Always compile when the compilation is
                        ; commanded for late load.
-                  (file-newer-than-file-p
-                   source-file (comp-el-to-eln-filename source-file)))
+                  ;; Skip compilation if `comp-el-to-eln-filename' fails
+                  ;; to find a writable directory.
+                  (with-demoted-errors "Async compilation :%S"
+                    (file-newer-than-file-p
+                     source-file (comp-el-to-eln-filename source-file))))
          do (let* ((expr `((require 'comp)
                            ,(when (boundp 'backtrace-line-length)
                               `(setf backtrace-line-length ,backtrace-line-length))