guix-commits
[Top][All Lists]
Advanced

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

03/05: Move 'specification->package+output' to (gnu packages).


From: Ludovic Courtès
Subject: 03/05: Move 'specification->package+output' to (gnu packages).
Date: Wed, 17 Jun 2015 22:36:24 +0000

civodul pushed a commit to branch master
in repository guix.

commit 84189ebc66266f03b9ca7e8b912d529886436851
Author: Ludovic Courtès <address@hidden>
Date:   Wed Jun 17 10:49:29 2015 +0200

    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.
---
 gnu/packages.scm         |   36 +++++++++++++++++++++++++++++++++++-
 guix/scripts/archive.scm |    4 ++--
 guix/scripts/package.scm |   36 +-----------------------------------
 3 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/gnu/packages.scm b/gnu/packages.scm
index 9eb4877..6e46a89 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -51,7 +51,8 @@
 
             check-package-freshness
 
-            specification->package))
+            specification->package
+            specification->package+output))
 
 ;;; Commentary:
 ;;;
@@ -418,3 +419,36 @@ present, return the preferred newest version."
            (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)))))
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index ea6801a..ab2fc46 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -27,6 +27,8 @@
   #: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 @@
   #: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))
 
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d9f38fb..56a6e2d 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -47,8 +47,7 @@
   #: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 @@ similar."
           (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



reply via email to

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