1
votes

I am currently trying to figure out how to install the Common Music library: http://commonmusic.sourceforge.net/cm2/doc/cm.html, to run on Portacle, an IDE that integrates Emacs among other implementations to run Common LISP.

I was able to successfully download Common Music's source tree to my Portacle installation directory following these steps, found at http://commonmusic.sourceforge.net/cm2/doc/install.html#cvs :

  1. Change directories to your Lisp installation directory.

$ cd /usr/local/lisp

  1. Set the shell variable CVSROOT to point to the CVS repository:

$ export CVSROOT=":pserver:[email protected]:/cvsroot/commonmusic"

  1. Use cvs login to connect to the Sourceforge CVS server, press Enter when prompted for a password:

$ cvs login CVS password:

  1. Use cvs checkout to restore CM's source tree to your Lisp installation directory:

$ cvs checkout -P cm

.

Opening my Common Lisp REPL, portacle, I typed in the equivalent of (load "/usr/local/lisp/cm/src/cm.lisp") for my specific pathname for cm.lisp.

I recieved the following errors.

READ error during LOAD:

Symbol "UNIX-FILE-KIND" not found in the SB-UNIX package.

Line: 116, Column: 47, File-Position: 4278

Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /usr/local/lisp/cm/cm.asd" {1004108F23}>

[Condition of type SB-C::INPUT-ERROR-IN-LOAD]

.

If anyone is familiar with Common Lisp and integrating Common Music, any help would be greatly appreciated.

Thanks.

1

1 Answers

0
votes

The problem is that this system was written for a different world. Unix-file-kind was removed from sb-unix over 10 years ago.

Here, it is used to determine whether a pathname names an existing directory. I am not sure how using cl-fad in that system loading context would work (this could be made much simpler nowadays, but that's some work), so maybe you could either inline whatever cl-fad:directory-exists-p does, or maybe this works for you (it's a little hacky though):

#+sbcl (let ((truename (probe-file dir)))
         (and truename
              (string= (namestring truename)
                       (directory-namestring truename))))

You'd replace the line in cm.lisp that currently says #+sbcl (eq :directory (sb-unix:unix-file-kind (namestring dir))) with this.

… but I expect that this is only the tip of the iceberg. Good luck!