diff options
author | Nicolás Bértolo <nicolasbertolo@gmail.com> | 2020-05-08 14:04:06 -0300 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-05-23 09:36:52 +0100 |
commit | 60b326ef112b6196cccf8bf9508df9e6622285cb (patch) | |
tree | 94000122eb6e518dc43c5840e64860fe9ec88eab /lisp/emacs-lisp | |
parent | 21aef26a4c0234c3af6e3fdd269292a726aa0f48 (diff) | |
download | emacs-60b326ef112b6196cccf8bf9508df9e6622285cb.tar.gz emacs-60b326ef112b6196cccf8bf9508df9e6622285cb.tar.bz2 emacs-60b326ef112b6196cccf8bf9508df9e6622285cb.zip |
* Workaround the 32768 chars command line limit in Windows.
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Pass the
compilation commands through a temporary file that is loaded by the
child process. This is also done all other operating systems, even
those that support long command lines. It should not be a problem
since libgccjit uses temporary files too.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 9fe614f9e94..e5d3be6eed0 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -2337,6 +2337,10 @@ display a message." (_ (progn (comp-log "\n") (comp-log (prin1-to-string expr)))) + (temp-file (make-temp-file + (concat "emacs-async-comp-" + (file-name-base source-file) "-") + nil ".el" (prin1-to-string expr))) (load1 load) (process (make-process :name (concat "Compiling: " source-file) @@ -2344,13 +2348,14 @@ display a message." :command (list (expand-file-name invocation-name invocation-directory) - "--batch" "--eval" (prin1-to-string expr)) + "--batch" "-l" temp-file) :sentinel (lambda (process _event) (run-hook-with-args 'comp-async-cu-done-hook source-file) (accept-process-output process) + (ignore-errors (delete-file temp-file)) (when (and load1 (zerop (process-exit-status process))) (native-elisp-load |