diff options
author | Mark H Weaver <mhw@netris.org> | 2014-09-08 11:00:06 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2014-09-08 11:00:06 -0400 |
commit | e759c0a38c799f2d03b3454e9ca6acf2262dc957 (patch) | |
tree | 08f5a1414410bc6719205090ac07484b308ba918 /gnu/packages.scm | |
parent | 11459384968f654c42ad7dba4443dada35191f5b (diff) | |
parent | 4a4cbd0bdd2ad8c4f37c3ffdd69596ef1ef41d91 (diff) | |
download | patches-e759c0a38c799f2d03b3454e9ca6acf2262dc957.tar patches-e759c0a38c799f2d03b3454e9ca6acf2262dc957.tar.gz |
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages.scm')
-rw-r--r-- | gnu/packages.scm | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/gnu/packages.scm b/gnu/packages.scm index 14ad75561c..26d87c6b16 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -28,6 +28,7 @@ #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-39) #:export (search-patch @@ -45,7 +46,9 @@ package-transitive-dependents package-covering-dependents - check-package-freshness)) + check-package-freshness + + specification->package)) ;;; Commentary: ;;; @@ -326,3 +329,24 @@ but ~a is available upstream~%") (case key ((getaddrinfo-error ftp-error) #f) (else (apply throw key args)))))) + +(define (specification->package spec) + "Return a package matching SPEC. SPEC may be a package name, or a package +name followed by a hyphen and a version number. If the version number is not +present, return the preferred newest version." + (let-values (((name version) + (package-name->name+version spec))) + (match (find-best-packages-by-name name version) + ((p) ; one match + p) + ((p x ...) ; several matches + (warning (_ "ambiguous package specification `~a'~%") spec) + (warning (_ "choosing ~a from ~a~%") + (package-full-name p) + (location->string (package-location p))) + p) + (_ ; no matches + (if version + (leave (_ "~A: package not found for version ~a~%") + name version) + (leave (_ "~A: unknown package~%") name)))))) |