Lisp通用样式:同一仓库中有多个软件包

Dan*_*iel 5 packaging common-lisp quicklisp

我可以为多个相关的Common Lisp软件包获得具有良好样式的推荐或具有代表性的代码仓库链接吗?

例如,考虑一个带有低级API的高级工作流库,每个API都在其自己的CL包中,但由于同步版本而具有相同的git repo。

每个系统(*.asd文件)都隔离测试,可以使用以下命令调用:

(asdf:test-system foo :force t)

可以通过以下方式构建单独的系统 make,这无疑有助于隔离SBCL代码覆盖率报告。

库的某些用户可能只希望加载较低级别的API。为了简化使用高级API的人员的依赖关系,最好将所有内容捆绑在一个存储库中。对一个库的任何修订都可能需要针对同一发行版进行全部更新。

我目前只有一个目录树,每个CL包都有一个子目录。Makefile库维护将使用的每个子目录中都有一个顶级目录。顶层还包含.asd指向相关子目录的文件的符号链接。(这是一个库,它通过以下方式严重依赖POSIX调用uiop-posix,因此它仅适用于具有符号链接的OS。)

考虑到Quicklisp-docs [0]的问题#1,这似乎是一个大问题。

在Google的CL风格指南[1],《通用Lisp生态系统现状》 [2015],Edi的CL食谱[3]或Lisp-lang [4]中,没有发现任何相关内容。浏览存储库似乎混合了很多样式。

修复的仓库:https
://gitlab.com/dpezely/cl-mmap(提交2018年7月14日的a23bd88d;发布将在修复后进行标记)

Now*_*man 3

您可以考虑使用asdf-inferred-package。这样,您就可以拥有一个mmap/high依赖于某个mmap/low包的包。通过该设置,您实际上可以要求 Quicklisp 直接加载其中一个:

(ql:quickload "mmap/high")
Run Code Online (Sandbox Code Playgroud)

或者

(ql:quickload "mmap/low")
Run Code Online (Sandbox Code Playgroud)

您可以在我的cl-bulk存储库中查看示例。