]> git.eshelyaron.com Git - emacs.git/commitdiff
* Generate trampolines in a temporary directory if no other option is viable feature/inhibit-native-comp-cleanup
authorAndrea Corallo <akrl@sdf.org>
Tue, 14 Feb 2023 10:21:45 +0000 (11:21 +0100)
committerAndrea Corallo <akrl@sdf.org>
Tue, 14 Feb 2023 11:27:58 +0000 (12:27 +0100)
* lisp/emacs-lisp/comp.el (comp--trampoline-abs-filename): Use
temporary file if no other option is viable.

lisp/emacs-lisp/comp.el

index ed706feb923d705bf0edc3782fc3740076495a0d..a6b9b3f57ea040a8aa622d759b2f5e88713de222 100644 (file)
@@ -3800,18 +3800,22 @@ Return the trampoline if found or nil otherwise."
                      (list (expand-file-name comp-native-version-dir
                                              native-compile-target-directory))
                    (comp-eln-load-path-eff)))
+   with rel-filename = (comp-trampoline-filename subr-name)
    for dir in dirs
-   for f = (expand-file-name
-            (comp-trampoline-filename subr-name)
-            dir)
+   for abs-filename = (expand-file-name rel-filename dir)
    unless (file-exists-p dir)
      do (ignore-errors
           (make-directory dir t)
-          (cl-return f))
-   when (file-writable-p f)
-     do (cl-return f)
-   finally (error "Cannot find suitable directory for output in \
-`native-comp-eln-load-path'")))
+          (cl-return abs-filename))
+   when (file-writable-p abs-filename)
+     do (cl-return abs-filename)
+   ;; Default to some temporary directory if no better option was
+   ;; found.
+   finally (cl-return
+            (expand-file-name
+             (make-temp-file-internal (file-name-sans-extension rel-filename)
+                                      0 ".eln" nil)
+             temporary-file-directory))))
 
 (defun comp-trampoline-compile (subr-name)
   "Synthesize compile and return a trampoline for SUBR-NAME."