emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 8d3b910: * lisp/emacs-lisp/package.el (package-comp


From: Artur Malabarba
Subject: [Emacs-diffs] master 8d3b910: * lisp/emacs-lisp/package.el (package-compute-transaction):
Date: Tue, 30 Jun 2015 09:51:28 +0000

branch: master
commit 8d3b9102130dd7091803d96c94415b24fe8a5bbf
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    * lisp/emacs-lisp/package.el (package-compute-transaction):
    
    Don't assume version sorting.
---
 lisp/emacs-lisp/package.el |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index e599e84..a148783 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1576,29 +1576,33 @@ SEEN is used internally to detect infinite recursion."
           (while (and pkg-descs (not found))
             (let* ((pkg-desc (pop pkg-descs))
                    (version (package-desc-version pkg-desc))
-                   (disabled (package-disabled-p next-pkg version)))
+                   (disabled (package-disabled-p next-pkg version))
+                   found-something)
               (cond
                ((version-list-< version next-version)
-                (error
-                 "Need package `%s-%s', but only %s is available"
-                 next-pkg (package-version-join next-version)
-                 (package-version-join version)))
+                ;; pkg-descs is sorted by priority, not version, so
+                ;; don't error just yet.
+                (unless found-something
+                  (setq found-something (package-version-join version))))
                (disabled
                 (unless problem
                   (setq problem
                         (if (stringp disabled)
-                            (format "Package `%s' held at version %s, \
-but version %s required"
+                            (format "Package `%s' held at version %s, but 
version %s required"
                                     next-pkg disabled
                                     (package-version-join next-version))
                           (format "Required package '%s' is disabled"
                                   next-pkg)))))
                (t (setq found pkg-desc)))))
           (unless found
-            (if problem
-                (error "%s" problem)
-              (error "Package `%s-%s' is unavailable"
-                     next-pkg (package-version-join next-version))))
+            (cond
+             (problem (error "%s" problem))
+             (found-something
+              (error "Need package `%s-%s', but only %s is available"
+                     next-pkg (package-version-join next-version)
+                     found-something))
+             (t (error "Package `%s-%s' is unavailable"
+                       next-pkg (package-version-join next-version)))))
           (setq packages
                 (package-compute-transaction (cons found packages)
                                              (package-desc-reqs found)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]