Function: package--dependencies
package--dependencies is a byte-compiled function defined in
package.el.gz.
Signature
(package--dependencies PKG)
Documentation
Return a list of all transitive dependencies of PKG.
If PKG is a package descriptor, the return value is a list of package descriptors. If PKG is a symbol designating a package, the return value is a list of symbols designating packages.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package--dependencies (pkg)
"Return a list of all transitive dependencies of PKG.
If PKG is a package descriptor, the return value is a list of
package descriptors. If PKG is a symbol designating a package,
the return value is a list of symbols designating packages."
(when-let* ((desc (if (package-desc-p pkg) pkg
(cadr (assq pkg package-archive-contents)))))
;; Can we have circular dependencies? Assume "nope".
(let ((all (named-let more ((pkg-desc desc))
(let (deps)
(dolist (req (package-desc-reqs pkg-desc))
(setq deps (nconc
(catch 'found
(dolist (p (apply #'append (mapcar #'cdr (package--alist))))
(when (and (string= (car req) (package-desc-name p))
(version-list-<= (cadr req) (package-desc-version p)))
(throw 'found (more p)))))
deps)))
(delete-dups (cons pkg-desc deps))))))
(remq pkg (mapcar (if (package-desc-p pkg) #'identity #'package-desc-name) all)))))