-
Notifications
You must be signed in to change notification settings - Fork 0
/
compute-all-deps.lisp
26 lines (25 loc) · 1019 Bytes
/
compute-all-deps.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(defun prepare ()
(asdf:clear-source-registry)
(asdf:initialize-source-registry '(:source-registry :ignore-inherited-configuration)))
(defun compute-all-deps (system)
(let* ((strategy (ql::compute-load-strategy system))
(ql-systems (slot-value strategy 'ql::quicklisp-systems))
(asdf-systems (slot-value strategy 'ql::asdf-systems))
(system-names))
(loop for item = (pop asdf-systems)
while item
do (pushnew (slot-value item 'asdf/system::name) system-names :test #'equal)
;; TODO
(assert (null (slot-value item 'asdf/system::defsystem-depends-on)))
(loop for dep in (slot-value item 'asdf/system::depends-on)
for strategy = (ql::compute-load-strategy dep)
do
(setf ql-systems
(append (slot-value strategy 'ql::quicklisp-systems)
ql-systems)
asdf-systems
(append (slot-value strategy 'ql::asdf-systems)
asdf-systems))))
(loop for item in ql-systems
do (pushnew (slot-value item 'ql::name) system-names))
system-names))