Subject: bug#57562: [PATCH] * lisp/emacs-lisp/comp.el (comp-run-async-workers): Fail more gracefully

From: Stefan Monnier <[email-masked]>
Date: Sat, 03 Sep 2022 11:24:02 -0400

> I have trouble seeing the actual change amongst unrelated whitespace
> changes.  Please show a patch with the minimal necessary change,
> without all the reformatting.  Emacs 28.2 is so close to a release
> that playing whitespace and formatting games is not appropriate there.

Hmm... looks like I sent the patch I had on `master`, sorry.
Here is the cleaner `emacs-28` version.

        Stefan
commit 516d2ea5e958866120f1c2d04771c04d1f5a4425
Author: Stefan Monnier <[email-masked]>
Date:   Sat Sep 3 11:03:01 2022 -0400

    * 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.
    See Debian's bug #1017739.

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 374b39e9990..a5ab12ae388 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -3927,8 +3927,11 @@ comp-run-async-workers
          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))