mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
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:
parent
08fa76131e
commit
84189ebc66
3 changed files with 38 additions and 38 deletions
|
@ -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)))))
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue