Skip to content

Commit

Permalink
Try checking for dependencies at load time instead of expansion time
Browse files Browse the repository at this point in the history
  • Loading branch information
digikar99 committed Mar 28, 2024
1 parent f1bacf7 commit 35862e4
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions src/asdf-system-connections.lisp
Expand Up @@ -126,18 +126,14 @@ or list acceptable to the reader macros #+ and #-."
(requires
(sort (mapcar #'system-name requires) #'string<)))
`(let* ((,prerequisites
(remove-if
(lambda (,req)
(system-depends-on-p ,req ',r))
(remove ',r ',requires
:test #'string=)))
(remove ',r ',requires
:test #'string=))
(,connections
(append (gethash ',r *system-connections*)
(list (cons ,prerequisites
',name)))))
(when ,prerequisites
(setf (gethash ',r *system-connections*)
,connections))))))
',name)))))
(setf (gethash ',r *system-connections*)
,connections)))))
requires)
(values ',name))))

Expand All @@ -149,14 +145,19 @@ or list acceptable to the reader macros #+ and #-."
(deps (system-depends-on component))
(connections (gethash (component-name component)
*system-connections*)))
;; Load connections of dependencies of this system
(loop :for dep :in deps
:do (load-connected-systems 'asdf:load-op dep))
(loop :for (prerequisites . connection) :in connections
:do (when (and (not (component-loaded-p connection))
(every #'component-loaded-p prerequisites))
(dolist (prereq prerequisites)
(dolist (dep (system-depends-on (find-system prereq)))
(load-connected-systems operation dep)))
(unless (system-depends-on-p prereq component)
;; Do not recurse if PREREQ depends on COMPONENT
(dolist (dep (system-depends-on (find-system prereq)))
;; Load connections of dependencies of other prerequisites
(load-connected-systems operation dep))))
;; Load connection
(asdf:oos operation connection))))
(dependency-feature-unsatisfied () nil)))

Expand Down

0 comments on commit 35862e4

Please sign in to comment.