Fix: Check dependencies for owned packages too

Fixes #9134
This commit is contained in:
Eivind Fonn 2017-06-23 18:29:15 +02:00 committed by syl20bnr
parent 3419247ee8
commit 69b5f83d5a
2 changed files with 52 additions and 2 deletions

View file

@ -1347,6 +1347,16 @@ wether the declared layer is an used one or not."
(and obj (cfgl-package-get-safe-owner obj) (and obj (cfgl-package-get-safe-owner obj)
(not (oref obj :excluded))))) (not (oref obj :excluded)))))
(defun configuration-layer//package-deps-used-p (pkg)
"Returns non-nil if all dependencies of PKG are used."
(not (memq nil (mapcar
(lambda (dep-pkg)
(let ((pkg-obj (configuration-layer/get-package dep-pkg)))
(and pkg-obj
(cfgl-package-get-safe-owner pkg-obj)
(not (oref pkg-obj :excluded)))))
(oref pkg :depends)))))
(defun configuration-layer/package-lazy-installp (name) (defun configuration-layer/package-lazy-installp (name)
"Return non-nil if NAME is the name of a package to be lazily installed." "Return non-nil if NAME is the name of a package to be lazily installed."
(let ((obj (configuration-layer/get-package name))) (let ((obj (configuration-layer/get-package name)))
@ -1649,6 +1659,8 @@ wether the declared layer is an used one or not."
((null (oref pkg :owners)) ((null (oref pkg :owners))
(spacemacs-buffer/message (spacemacs-buffer/message
(format "%S ignored since it has no owner layer." pkg-name))) (format "%S ignored since it has no owner layer." pkg-name)))
((not (configuration-layer//package-deps-used-p pkg))
(spacemacs-buffer/message (format "%S is ignored since it has dependencies that are not used." pkg-name)))
((not (cfgl-package-enabled-p pkg)) ((not (cfgl-package-enabled-p pkg))
(spacemacs-buffer/message (format "%S is disabled." pkg-name))) (spacemacs-buffer/message (format "%S is disabled." pkg-name)))
(t (t

View file

@ -375,6 +375,44 @@
(configuration-layer//add-package pkg-b) (configuration-layer//add-package pkg-b)
(should (null (configuration-layer//package-enabled-p pkg-a 'layer))))) (should (null (configuration-layer//package-enabled-p pkg-a 'layer)))))
;; ---------------------------------------------------------------------------
;; configuration-layer//package-deps-used-p
;; ---------------------------------------------------------------------------
(ert-deftest test-package-deps-used-p--no-deps ()
(let ((pkg-a (cfgl-package "pkg-a"
:name 'pkg-a)))
(should (configuration-layer//package-deps-used-p pkg-a))))
(ert-deftest test-package-deps-used-p--deps ()
(let ((pkg-a (cfgl-package "pkg-a"
:name 'pkg-a
:depends '(pkg-b)))
(pkg-b (cfgl-package "pkg-b"
:name 'pkg-b
:owners '(owner)))
(owner (cfgl-layer "owner" :name 'owner))
configuration-layer--used-layers
(configuration-layer--indexed-packages (make-hash-table :size 2048))
(configuration-layer--indexed-layers (make-hash-table :size 1024)))
(configuration-layer//add-package pkg-b)
(configuration-layer//add-layer owner 'used)
(should (configuration-layer//package-deps-used-p pkg-a))))
(ert-deftest test-package-deps-used-p--depends-not-owner ()
(let ((pkg-a (cfgl-package "pkg-a"
:name 'pkg-a
:depends '(pkg-b)
:owners '(owner)))
(pkg-b (cfgl-package "pkg-b"
:name 'pkg-b))
(owner (cfgl-layer "owner" :name 'owner))
(configuration-layer--indexed-packages (make-hash-table :size 2048))
(configuration-layer--indexed-layers (make-hash-table :size 1024)))
(configuration-layer//add-package pkg-b)
(configuration-layer//add-layer owner nil)
(should (null (configuration-layer//package-deps-used-p pkg-a)))))
;; --------------------------------------------------------------------------- ;; ---------------------------------------------------------------------------
;; configuration-layer//package-archive-absolute-pathp ;; configuration-layer//package-archive-absolute-pathp
;; --------------------------------------------------------------------------- ;; ---------------------------------------------------------------------------