guix-commits
[Top][All Lists]
Advanced

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

02/08: DRAFT packages: Allow inputs to be plain package lists.


From: guix-commits
Subject: 02/08: DRAFT packages: Allow inputs to be plain package lists.
Date: Sat, 19 Jun 2021 17:17:36 -0400 (EDT)

civodul pushed a commit to branch wip-simplified-packages
in repository guix.

commit 90f5f4f626b8d9b2de3732daad50b6077f07ee5b
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Thu May 20 15:46:08 2021 +0200

    DRAFT packages: Allow inputs to be plain package lists.
    
    DRAFT: Is it a good idea?  If it is, add tests and doc.
    
    * guix/packages.scm (add-input-label, sanitize-inputs): New procedures.
    (<package>)[inputs, propagated-inputs, native-inputs]: Add 'sanitize' 
property.
---
 guix/packages.scm | 35 ++++++++++++++++++++++++++++++++---
 1 file changed, 32 insertions(+), 3 deletions(-)

diff --git a/guix/packages.scm b/guix/packages.scm
index a66dbea..087e6e6 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -366,6 +366,14 @@ name of its URI."
   ;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>.
   (fold delete %supported-systems '("mips64el-linux" "powerpc-linux")))
 
+(define-inlinable (sanitize-inputs inputs)
+  "Sanitize INPUTS by turning it into a list of name/package tuples if it's
+not already the case."
+  (cond ((null? inputs) inputs)
+        ((and (pair? (car inputs))
+              (string? (caar inputs)))
+         inputs)
+        (else (map add-input-label inputs))))
 
 ;; A package.
 (define-record-type* <package>
@@ -380,11 +388,14 @@ name of its URI."
              (default '()) (thunked))
 
   (inputs package-inputs                  ; input packages or derivations
-          (default '()) (thunked))
+          (default '()) (thunked)
+          (sanitize sanitize-inputs))
   (propagated-inputs package-propagated-inputs    ; same, but propagated
-                     (default '()) (thunked))
+                     (default '()) (thunked)
+                     (sanitize sanitize-inputs))
   (native-inputs package-native-inputs    ; native input packages/derivations
-                 (default '()) (thunked))
+                 (default '()) (thunked)
+                 (sanitize sanitize-inputs))
 
   (outputs package-outputs                ; list of strings
            (default '("out")))
@@ -415,6 +426,24 @@ name of its URI."
                             source-properties->location))
             (innate)))
 
+(define (add-input-label input)
+  "Add an input label to INPUT."
+  (match input
+    ((? package? package)
+     (list (package-name package) package))
+    (((? package? package) output)                ;XXX: ugly?
+     (list (package-name package) package output))
+    ((? gexp-input?)       ;XXX: misplaced because 'native?' field is ignored?
+     (let ((obj    (gexp-input-thing input))
+           (output (gexp-input-output input)))
+       `(,(if (package? obj)
+              (package-name obj)
+              "_")
+         ,obj
+         ,@(if (string=? output "out") '() (list output)))))
+    (x
+     `("_" ,x))))
+
 (set-record-type-printer! <package>
                           (lambda (package port)
                             (let ((loc    (package-location package))



reply via email to

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