1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-26 07:33:47 +00:00

* Generate trampolines in a temporary directory if no other option is viable

* lisp/emacs-lisp/comp.el (comp--trampoline-abs-filename): Use
temporary file if no other option is viable.
This commit is contained in:
Andrea Corallo 2023-02-14 11:21:45 +01:00
parent 1a64f326e0
commit ce4a066ed1

View 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."