diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1c0518b6e21de5e008f8fb542436ea6667cc7c8d..382b6537af6839a4265f6d5c5374bc97cce795be 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -4,6 +4,7 @@ function. (package-initialize): Use it to populate `package-selected-packages'. (package-menu-execute): Clean unnecessary `and'. + (package--get-deps): Fix returning duplicates. 2015-02-02 Michael Albinus diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index c4a658b3d2e9d1650bf0241cc5097064505e68ae..16271060626d598268e8c75dc796c1f30c41081d 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1428,9 +1428,9 @@ The file can either be a tar file or an Emacs Lisp file." when (assq name package-alist) collect name)) (indirect-deps (unless (eq only 'direct) - (apply #'append - direct-deps - (mapcar #'package--get-deps direct-deps))))) + (delete-dups + (cl-loop for p in direct-deps + append (package--get-deps p)))))) (cl-case only (direct direct-deps) (separate (list direct-deps indirect-deps))