Merge pull request #577 from DarwinAwardWinner/dep-fix

Fix for installing packages with already-installed dependencies
This commit is contained in:
Dimitri Fontaine 2012-02-21 13:02:49 -08:00
commit 3bebbeb519
2 changed files with 35 additions and 3 deletions

View File

@ -471,15 +471,14 @@ PACKAGE may be either a string or the corresponding symbol."
;; once the first is installed
(el-get-verbose-message "el-get-install %s: %S" package packages)
(setq el-get-next-packages (cdr packages))
(add-hook 'el-get-post-install-hooks 'el-get-install-next-packages))
(add-hook 'el-get-post-init-hooks 'el-get-install-next-packages))
(let ((package (car packages)))
(if (not (el-get-package-is-installed package))
(el-get-do-install package)
;; if package is already installed, skip to the next
(message "el-get: `%s' package is already installed" package)
(el-get-init package)
(el-get-install-next-packages package)))))
(el-get-init package)))))
(defun el-get-reinstall (package)
"Remove PACKAGE and then install it again."

33
test/el-get-issue-583.el Normal file
View File

@ -0,0 +1,33 @@
;; https://github.com/dimitri/el-get/issues/583
;;
;; Installing, removing, and installing a package doesn't
;;
;; Also related: https://github.com/dimitri/el-get/issues/576
(let ((el-get-default-process-sync t)
(el-get-verbose t)
(el-get-sources
'((:name a
:type builtin
:depends (b c d e f))
(:name b
:type builtin)
(:name c
:type builtin)
(:name d
:type builtin)
(:name e
:type builtin)
(:name f
:type builtin))))
(require 'el-get)
;; Ensure a is uninstalled
(ignore-errors (el-get-remove 'a))
;; Install a and all deps
(el-get-install 'a)
;; Remove a, leaving deps installed
(el-get-remove 'a)
;; Try to install a again, this fails and only inits b and c.
(el-get-install 'a)
(assert (el-get-package-is-installed 'a) nil
"Package A should be installed but isn't."))