Common lisp 如何获取Quicklisp提供的每个系统的所有依赖项的列表?

Common lisp 如何获取Quicklisp提供的每个系统的所有依赖项的列表?,common-lisp,asdf,quicklisp,Common Lisp,Asdf,Quicklisp,我知道如何列出Quicklisp提供的所有系统 (ql:system-list) 我需要得到一种最依赖的系统,我想为Guix打包。是否有任何ASD或Quicklisp工具提供此功能?Quicklisp关于系统关系的所有信息都在release.txt和systems.txt两个文件中。systems.txt将告诉您依赖关系,releases.txt将把项目名称(如“alexandria”)映射到它提供的系统 它们都是简单的以空格分隔的记录文件,因此应该很容易解析并获得所需的信息 要获取Lisp中

我知道如何列出Quicklisp提供的所有系统

(ql:system-list)

我需要得到一种最依赖的系统,我想为Guix打包。是否有任何ASD或Quicklisp工具提供此功能?

Quicklisp关于系统关系的所有信息都在release.txt和systems.txt两个文件中。systems.txt将告诉您依赖关系,releases.txt将把项目名称(如“alexandria”)映射到它提供的系统

它们都是简单的以空格分隔的记录文件,因此应该很容易解析并获得所需的信息


要获取Lisp中的示例依赖项信息,请查看
ql:dependency tree

的源代码,了解我需要的一些工作解决方案,感谢Xach指出
systems.txt
文件

(defparameter*quicklisp系统路径*
(合并路径名)
(使路径名为:目录“(:relative“dists”“quicklisp”)
:名称“系统”:键入“txt”)
ql:*quicklisp主页*))
(定义quicklisp系统()
“返回Quicklisp的sistems.txt中列出的所有系统的列表”
(已打开文件)
(流*quicklisp系统路径)*
:方向:输入
:元素类型:默认值
:外部格式:默认值
:如果不存在(无)
(环路
:对于行:=(读取行流nil)
:while line
:对于行列表:=(拆分序列:拆分序列#\Space line)
:if(非(查找“#”行列表:测试#”相等))
:追加(cdr行列表)))
(定义quicklisp系统引用(列表)
“返回每个元素的关注点列表及其列表精度。
裁判:https://codereview.stackexchange.com/questions/215682"
(let((表(使哈希表:test#'相等)))
(环路
:对于列表中的x:
:do(incf(gethash x表0)))
(环路
:对于k:being:表的哈希键
:使用(哈希值v)
:收集(cons k v)))
一些结果

CL-USER> (subseq (sort (occurrences (get-systems)) #'> :key #'cdr) 0 50)
(("asdf" . 2441) ("alexandria" . 781) ("cl-ppcre" . 350)
 ("cl-glfw-opengl-core" . 346) ("cffi" . 337) ("fiveam" . 309)
 ("bordeaux-threads" . 228) ("closer-mop" . 194) ("split-sequence" . 185)
 ("iterate" . 180) ("uiop" . 158) ("prove" . 153) ("prove-asdf" . 146)
 ("hu.dwim.asdf" . 146) ("babel" . 136) ("local-time" . 132)
 ("flexi-streams" . 131) ("drakma" . 121) ("trivial-garbage" . 113)
 ("cl-fad" . 103) ("usocket" . 93) ("trivial-features" . 90)
 ("named-readtables" . 90) ("documentation-utils" . 83)
 ("trivial-gray-streams" . 75) ("ironclad" . 73) ("cffi-grovel" . 65)
 ("cl-json" . 62) ("anaphora" . 62) ("hunchentoot" . 60) ("hu.dwim.util" . 57)
 ("lift" . 56) ("cxml" . 55) ("log4cl" . 53) ("cl-base64" . 52) ("trivia" . 49)
 ("parse-number" . 46) ("cl-interpol" . 46) ("let-plus" . 46) ("yason" . 46)
 ("quri" . 43) ("parachute" . 41) ("lisp-unit" . 41) ("hu.dwim.stefil" . 40)
 ("puri" . 39) ("trivial-utf-8" . 38) ("swank" . 38) ("esrap" . 35)
 ("qtools-ui-base" . 35) ("cl-opengl" . 34))