From: Nicolás Bértolo Date: Fri, 8 May 2020 17:04:06 +0000 (-0300) Subject: * Workaround the 32768 chars command line limit in Windows. X-Git-Tag: emacs-28.0.90~2727^2~619 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=60b326ef112b6196cccf8bf9508df9e6622285cb;p=emacs.git * 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. --- 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