asdf-install on clisp + windows

Update 3 July 2007: Chris Done has provided a new guide.

Since clisp is the only viable free common lisp on Windows at the moment, and asdf-install is the most vibrant of all lisp distributed library solution, we need clisp and asdf-install to run properly. Lots of people have hit problems trying though:

This google groups thread suggests that a patch is available but didn’t clarify what.

http://wiki.alu.org/ASDF_Universality has a project going.

This more recent thread suggests avoiding asdf-install altogether.

Resolution steps

  • Check in asdf-install.lisp that *cygwin-bash-program* and *gnu-tar-program* points to the correct path. You need the former if you are running the cygwin-compiled version, and the latter if you are running the mingw version.
  • This thread from 2004 has patches from Alex Mizrahi which still hasn’t been applied. I believe these identify the critical errors in CLISP/MingW distribution. Specifically:

    i don't know whether it works for cygwin version, but for native one version
    that is
    #+(not :win32) works fine except :wait nil - in this case it can
    capture no output. with :wait t all is well. 
  • There is a misplaced parenthesis in asdf-install/port.lisp:
    #+(and :clisp :win32)
    (defun return-output-from-program (program args)
      (unless (probe-file program)
        (error "External program not found ~A" program))
      (with-output-to-string (out-stream)
        (let ((stream
                (ext:run-shell-command
                 (format nil "~A~{ ~A~}" program args)
                 :o utput :stream
                 :wait t)))
          (loop for line = (ignore-errors (read-line stream nil))
                while line
                do (write-line line out-stream)))))
  • Download distribution manually
  • Save the distribution into this directory *default-pathname-defaults*
  • change it’s file name to the name of the package. eg. rename cl-ppcre.tar.gz to cl-ppcre.
  • (asdf-install:install "cl-ppcre")

    should work now

  • asdf-install is broken in cvs. You need to set your *features* so that the following keywords are true in asdf-install/defpackage.lisp
    (pushnew :o ld *features*)
    (pushnew :o ld-asdf-behavior *features*)
  • (asdf-install:install "http://weitz.de/cl-ppcre.tar.gz")

    should work now


About this entry