如何使用Portacle IDE在Common Lisp中实现Common Music?

问题描述

我目前正在尝试找出如何安装Common Music库:http://commonmusic.sourceforge.net/cm2/doc/cm.html,以便在Portacle上运行,Portacle是一个将Emacs与其他实现集成在一起以运行Common LISP的IDE。

通过以下步骤,我可以成功将Common Music的源代码树下载到我的Portacle安装目录中:位于http://commonmusic.sourceforge.net/cm2/doc/install.html#cvs上:

  1. 将目录更改为Lisp安装目录。

$ cd / usr / local / lisp

  1. 将shell变量CVSROOT设置为指向CVS存储库:

$ export CVSROOT =“:pserver:anonymous@commonmusic.cvs.sourceforge.net:/ cvsroot / commonmusic”

  1. 使用cvs登录名连接到Sourceforge CVS服务器,在提示输入密码时按Enter:

$ cvs登录 CVS密码:

  1. 使用cvs签出将CM的源树还原到您的Lisp安装目录:

$ cvs结帐-P厘米

打开我的Common Lisp REPL,portacle,我输入了与cm.lisp的特定路径名等效的(load“ /usr/local/lisp/cm/src/cm.lisp”)。

我收到以下错误。

加载过程中读取错误:

在SB-UNIX软件包中找不到符号“ UNIX-FILE-KIND”。

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

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

[SB-C :: INPUT-ERROR-IN-LOAD类型的条件]

如果有人熟悉Common Lisp并集成了Common Music,将不胜感激。

谢谢。

解决方法

问题是该系统是为另一个世界编写的。 Unix-file-kind已于10年前从sb-unix中删除。

在这里,它用于确定 pathname 是否命名现有目录。 我不确定在该系统加载上下文中使用cl-fad会如何工作(如今可以变得更简单,但这是有些工作),所以也许您可以内联cl-fad:directory-exists-p的工作,或者也许为您工作(虽然有点hacky):

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

您将用此替换cm.lisp中当前显示#+sbcl (eq :directory (sb-unix:unix-file-kind (namestring dir)))的行。

…但是我希望这只是冰山一角。祝你好运!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...