]> git.eshelyaron.com Git - emacs.git/commitdiff
* Workaround the 32768 chars command line limit in Windows.
authorNicolás Bértolo <nicolasbertolo@gmail.com>
Fri, 8 May 2020 17:04:06 +0000 (14:04 -0300)
committerAndrea Corallo <akrl@sdf.org>
Sat, 23 May 2020 08:36:52 +0000 (09:36 +0100)
* 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.

lisp/emacs-lisp/comp.el

index 9fe614f9e946d4fdb7c5bdf24473ccd2810af741..e5d3be6eed042aaa2a271f9c52ce4154c148879f 100644 (file)
@@ -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