Function: package--sort-by-dependence
package--sort-by-dependence is a byte-compiled function defined in
package.el.gz.
Signature
(package--sort-by-dependence PACKAGE-LIST)
Documentation
Return PACKAGE-LIST sorted by dependence.
That is, any element of the returned list is guaranteed to not directly depend on any elements that come before it.
PACKAGE-LIST is a list of package-desc objects.
Indirect dependencies are guaranteed to be returned in order only
if all the in-between dependencies are also in PACKAGE-LIST.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package--sort-by-dependence (package-list)
"Return PACKAGE-LIST sorted by dependence.
That is, any element of the returned list is guaranteed to not
directly depend on any elements that come before it.
PACKAGE-LIST is a list of `package-desc' objects.
Indirect dependencies are guaranteed to be returned in order only
if all the in-between dependencies are also in PACKAGE-LIST."
(let ((alist (mapcar (lambda (p) (cons (package-desc-name p) p)) package-list))
out-list)
(dolist (cell alist out-list)
;; `package--sort-deps-in-alist' destructively changes alist, so
;; some cells might already be empty. We check this here.
(when-let* ((pkg-desc (cdr cell)))
(setcdr cell nil)
(setq out-list
(append (package--sort-deps-in-alist pkg-desc alist)
out-list))))))