Move 'specification->package+output' to (gnu packages).

* guix/scripts/package.scm (specification->package+output): Move to...
* gnu/packages.scm (specification->package+output): ... here
* guix/scripts/archive.scm (guix): Adjust accordingly.
This commit is contained in:
Ludovic Courtès 2015-06-17 10:49:29 +02:00
parent 08fa76131e
commit 84189ebc66
3 changed files with 38 additions and 38 deletions

View file

@ -51,7 +51,8 @@ (define-module (gnu packages)
check-package-freshness
specification->package))
specification->package
specification->package+output))
;;; Commentary:
;;;
@ -418,3 +419,36 @@ (define (specification->package spec)
(leave (_ "~A: package not found for version ~a~%")
name version)
(leave (_ "~A: unknown package~%") name))))))
(define* (specification->package+output spec #:optional (output "out"))
"Return the package and output specified by SPEC, or #f and #f; SPEC may
optionally contain a version number and an output name, as in these examples:
guile
guile-2.0.9
guile:debug
guile-2.0.9:debug
If SPEC does not specify a version number, return the preferred newest
version; if SPEC does not specify an output, return OUTPUT."
(define (ensure-output p sub-drv)
(if (member sub-drv (package-outputs p))
sub-drv
(leave (_ "package `~a' lacks output `~a'~%")
(package-full-name p)
sub-drv)))
(let-values (((name version sub-drv)
(package-specification->name+version+output spec output)))
(match (find-best-packages-by-name name version)
((p)
(values p (ensure-output p sub-drv)))
((p p* ...)
(warning (_ "ambiguous package specification `~a'~%")
spec)
(warning (_ "choosing ~a from ~a~%")
(package-full-name p)
(location->string (package-location p)))
(values p (ensure-output p sub-drv)))
(()
(leave (_ "~a: package not found~%") spec)))))

View file

@ -27,6 +27,8 @@ (define-module (guix scripts archive)
#:use-module (guix ui)
#:use-module (guix pki)
#:use-module (guix pk-crypto)
#:use-module (guix scripts build)
#:use-module (gnu packages)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 rdelim)
@ -34,8 +36,6 @@ (define-module (guix scripts archive)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-37)
#:use-module (guix scripts build)
#:use-module (guix scripts package)
#:use-module (rnrs io ports)
#:export (guix-archive))

View file

@ -47,8 +47,7 @@ (define-module (guix scripts package)
#:use-module (gnu packages base)
#:use-module (gnu packages guile)
#:use-module ((gnu packages bootstrap) #:select (%bootstrap-guile))
#:export (specification->package+output
switch-to-generation
#:export (switch-to-generation
switch-to-previous-generation
roll-back
delete-generation
@ -324,39 +323,6 @@ (define-syntax-rule (leave-on-EPIPE exp ...)
(primitive-_exit 0)
(apply throw args)))))
(define* (specification->package+output spec #:optional (output "out"))
"Return the package and output specified by SPEC, or #f and #f; SPEC may
optionally contain a version number and an output name, as in these examples:
guile
guile-2.0.9
guile:debug
guile-2.0.9:debug
If SPEC does not specify a version number, return the preferred newest
version; if SPEC does not specify an output, return OUTPUT."
(define (ensure-output p sub-drv)
(if (member sub-drv (package-outputs p))
sub-drv
(leave (_ "package `~a' lacks output `~a'~%")
(package-full-name p)
sub-drv)))
(let-values (((name version sub-drv)
(package-specification->name+version+output spec output)))
(match (find-best-packages-by-name name version)
((p)
(values p (ensure-output p sub-drv)))
((p p* ...)
(warning (_ "ambiguous package specification `~a'~%")
spec)
(warning (_ "choosing ~a from ~a~%")
(package-full-name p)
(location->string (package-location p)))
(values p (ensure-output p sub-drv)))
(()
(leave (_ "~a: package not found~%") spec)))))
(define (upgradeable? name current-version current-path)
"Return #t if there's a version of package NAME newer than CURRENT-VERSION,
or if the newest available version is equal to CURRENT-VERSION but would have