Package: cl-asdf
Version: 1.109-2
Severity: wishlist

The function asdf:run-shell-command is not right for LispWorks 5.x:

    #+lispworks
    (system:call-system-showing-output
     command
     :shell-type "/bin/sh"
     :output-stream *verbose-out*)

I test a expression on LispWorks 5.0:

CL-USER 1 > (system:call-system-showing-output "id -u" :shell-type
"/bin/sh" :output-stream t)
; id -u
; 10003
0

To make common-lisp-controller:get-uid work well, the call to
system:call-system-showing-output must come with two additional keyword
arguments, :show-cmd nil, and :prefix "".

I running LispWorks 5.x on Debian, I use this script to save a LispWorks
 image which can then load all debian CL packages:

(in-package :cl-user)

(load-all-patches)

(load
"/usr/share/common-lisp/source/common-lisp-controller/common-lisp-controller.lisp")
(common-lisp-controller:init-common-lisp-controller-v4 "lispworks")
;; (load "asdf-patch")

(save-image (merge-pathnames
             (make-pathname :name "lispworks")
             (lisp-image-name))
            :remarks "LispWorks 5.0.2" :environment t)

So, I HOPE a patch can be merged into cl-asdf, as in attach
(asdf.lisp.patch).

Now I must load a patch for this purpose (asdf-patch.lisp).

Thanks!

Chun TIAN (binghe)


-- 
(defsignature (田春 Chun Tian (binghe))
  (网易杭州研究院 系统管理员)
  (E-Mail [EMAIL PROTECTED])
  (Phone (0571)88271736 (020)85106834)
  (POPO binghe.lisp)
  (GTalk [EMAIL PROTECTED]))
--- asdf.lisp.old	2007-12-27 16:17:49.267166457 +0800
+++ asdf.lisp	2007-12-27 16:18:32.878933629 +0800
@@ -1188,6 +1188,8 @@
     (system:call-system-showing-output
      command
      :shell-type "/bin/sh"
+     :prefix ""
+     :show-cmd nil
      :output-stream *verbose-out*)
     
     #+clisp				;XXX not exactly *verbose-out*, I know
(in-package :asdf)

(defun run-shell-command (control-string &rest args)
  "Interpolate ARGS into CONTROL-STRING as if by FORMAT, and
synchronously execute the result using a Bourne-compatible shell, with
output to *VERBOSE-OUT*.  Returns the shell's exit code."
  (let ((command (apply #'format nil control-string args)))
    (format *verbose-out* "; $ ~A~%" command)
    #+sbcl
    (sb-ext:process-exit-code
     (sb-ext:run-program  
      #+win32 "sh" #-win32 "/bin/sh"
      (list  "-c" command)
      #+win32 #+win32 :search t
      :input nil :output *verbose-out*))
    
    #+(or cmu scl)
    (ext:process-exit-code
     (ext:run-program  
      "/bin/sh"
      (list  "-c" command)
      :input nil :output *verbose-out*))

    #+allegro
    (excl:run-shell-command command :input nil :output *verbose-out*)
    
    #+lispworks
    (system:call-system-showing-output
     command
     :shell-type "/bin/sh"
     :prefix ""
     :show-cmd nil
     :output-stream *verbose-out*)
    
    #+clisp                             ;XXX not exactly *verbose-out*, I know
    (ext:run-shell-command  command :output :terminal :wait t)

    #+openmcl
    (nth-value 1
               (ccl:external-process-status
                (ccl:run-program "/bin/sh" (list "-c" command)
                                 :input nil :output *verbose-out*
                                 :wait t)))
    #+ecl ;; courtesy of Juan Jose Garcia Ripoll
    (si:system command)
    #-(or openmcl clisp lispworks allegro scl cmu sbcl ecl)
    (error "RUN-SHELL-PROGRAM not implemented for this Lisp")
    ))

Reply via email to