我可以为多个相关的Common Lisp软件包获得具有良好样式的推荐或指向具有代表性的代码存储库的链接吗?
例如,考虑一个带有随附的低级API的高级工作流库,每个库都在其自己的CL包中,但由于同步发布而具有相同的git repo。
每个系统(*.asd
文件)都隔离测试,可以使用以下命令来调用:
(asdf:test-system foo :force t)
可以通过make
构建单独的系统,这无疑有助于隔离SBCL代码覆盖率报告。
该库的某些用户可能只想加载较低级别的API。为了简化使用高级API的人员的依赖关系,最好将所有内容捆绑在一个存储库中。对一个库的任何修订都可能需要更新同一发行版的所有库。
我目前只有一个目录树,每个CL包都有一个子目录。库维护将使用的顶级Makefile
加上每个子目录中的一个。顶层还包含指向相关子目录的.asd
文件的符号链接。 (这是一个通过uiop-posix
高度依赖POSIX调用的库,因此它仅适用于具有符号链接的OS。)
考虑到Quicklisp-docs [0]的第1个问题,这似乎是一个大问题。
在Google的CL风格指南[1],2015年普通Lisp生态系统状况[2],Edi的CL食谱[3]或Lisp-lang [4]中都没有找到相关的内容。浏览存储库似乎有多种样式。
要修复的仓库:https://gitlab.com/dpezely/cl-mmap
(提交2018年7月14日的a23bd88d;该版本在修复后将被标记)
答案 0 :(得分:2)
您可以考虑使用asdf-inferred-package。这样,您可以拥有一个依赖于mmap/high
软件包的mmap/low
软件包。使用该设置,您实际上可以要求Quicklisp直接加载它们中的任何一个:
(ql:quickload "mmap/high")
或
(ql:quickload "mmap/low")
您可以在我的cl-bulk存储库中看到一个示例。
答案 1 :(得分:2)
试图接触可能在这里未曾看到此问题的特定受众,这是posted到Common Lisp Pro邮件列表。
各种回应的摘要-除了对各种可能的未来方向的深刻见解之外-没有用于解决多种因素组合的事实惯例,机制或风格:
在添加此答案时,最接近一致,具体的现有解决方案似乎与原始帖子中提到的软件包已经实施的解决方案相吻合-或足够接近。 (当然,如前面的答案所示,在设计和命名上存在细微的差别,但我认为这些变化是可比的。)
建议的软件包和系统要点:
未来的方向和建议的阅读内容包括:
(非常感谢Pascal J. Bourguignon,Ken Tilton,Scott McKay,Faré,Svante诉Erichsen,Don Morrison和Pascal Costanza参与了电子邮件讨论。)