summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/package.el
diff options
context:
space:
mode:
authorTom Willemse <tom@ryuslash.org>2013-12-14 11:02:39 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2013-12-14 11:02:39 -0500
commitf77d7d1773e2100fae8dce2e0f6bfe352c789bcf (patch)
tree6b8aab9323c00b577229e4ea90011cff1e452596 /lisp/emacs-lisp/package.el
parentaa2bddd73d8359ad944fde7c424d2d89c0ccf0d9 (diff)
downloademacs-f77d7d1773e2100fae8dce2e0f6bfe352c789bcf.tar.gz
* lisp/emacs-lisp/package.el (package--prepare-dependencies): New function.
(package-buffer-info): Use it. Fixes: debbugs:15108
Diffstat (limited to 'lisp/emacs-lisp/package.el')
-rw-r--r--lisp/emacs-lisp/package.el21
1 files changed, 20 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 34aa2b62105..b8c21e0386b 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1104,6 +1104,23 @@ Otherwise return nil."
(declare-function lm-homepage "lisp-mnt" (&optional file))
+(defun package--prepare-dependencies (deps)
+ "Turn DEPS into an acceptable list of dependencies.
+
+Any parts missing a version string get a default version string
+of \"0\" (meaning any version) and an appropriate level of lists
+is wrapped around any parts requiring it."
+ (cond
+ ((not (listp deps))
+ (error "Invalid requirement specifier: %S" deps))
+ (t (mapcar (lambda (dep)
+ (cond
+ ((symbolp dep) `(,dep "0"))
+ ((stringp dep)
+ (error "Invalid requirement specifier: %S" dep))
+ (t dep)))
+ deps))))
+
(defun package-buffer-info ()
"Return a `package-desc' describing the package in the current buffer.
@@ -1135,7 +1152,9 @@ boundaries."
"Package lacks a \"Version\" or \"Package-Version\" header"))
(package-desc-from-define
file-name pkg-version desc
- (if requires-str (package-read-from-string requires-str))
+ (if requires-str
+ (package--prepare-dependencies
+ (package-read-from-string requires-str)))
:kind 'single
:url homepage))))