From 51ad21bbcad6cd82c79f810a82b0249eb186aa2d Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau <tunes@google.com> Date: Tue, 8 Sep 2015 13:20:34 -0400 Subject: [PATCH] Fix but disable %use-run-program for ECL. There was a UIOP bug (fixed), but there is also still an ECL bug, so don't try to use ext:run-program, and stick with ext:system. This means that run-program was broken on ECL in ASDF 3.1.5, but not in ASDF 3.1.4 and earlier. --- uiop/run-program.lisp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp index eaeebec51..5cf8032b3 100644 --- a/uiop/run-program.lisp +++ b/uiop/run-program.lisp @@ -579,13 +579,12 @@ It returns a process-info plist with possible keys: ;; 1- wait #+clozure (ccl::external-process-wait process) #+(or cmu scl) (ext:process-wait process) - #+(and (or clasp ecl) os-unix) (ext:external-process-wait process) #+sbcl (sb-ext:process-wait process) ;; 2- extract result #+allegro (sys:reap-os-subprocess :pid process :wait t) #+clozure (nth-value 1 (ccl:external-process-status process)) #+(or cmu scl) (ext:process-exit-code process) - #+(or clasp ecl) (nth-value 1 (ext:external-process-wait process)) + #+(or clasp ecl) (nth-value 1 (ext:external-process-wait process t)) #+lispworks (if-let ((stream (or (getf process-info :input-stream) (getf process-info :output-stream) @@ -911,9 +910,7 @@ or an indication of failure via the EXIT-CODE of the process" (apply (if (or force-shell #+(or clasp clisp) (or (not ignore-error-status) t) #+clisp (member error-output '(:interactive :output)) - ;; old versions of ecl <= 15.3.7 don't support non-trivial :error - #+ecl (and (nth-value 1 (ignore-errors (slot-value (ext:make-external-process) 'ext::error-stream))) - (not (member error-output '(:interactive :output nil)))) + #+ecl t ;; A race condition in ECL <= 16.0.0 prevents using ext:run-program #+(and lispworks os-unix) (%interactivep input output error-output) #+(or abcl cormanlisp gcl (and lispworks os-windows) mcl xcl) t) '%use-system '%use-run-program) -- GitLab