guix-commits
[Top][All Lists]
Advanced

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

05/35: build-system/elm: Add implicit Elm inputs.


From: guix-commits
Subject: 05/35: build-system/elm: Add implicit Elm inputs.
Date: Sat, 21 May 2022 19:43:04 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit dce724dc82c4ec4b55288b539e23239eb9677350
Author: Philip McGrath <philip@philipmcgrath.com>
AuthorDate: Wed May 18 14:10:52 2022 -0400

    build-system/elm: Add implicit Elm inputs.
    
    * guix/build-system/elm.scm (default-elm-core): New variable.
    (default-elm-json): Likewise
    (lower): Use them as implicit inputs when applicable.
    
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 guix/build-system/elm.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/guix/build-system/elm.scm b/guix/build-system/elm.scm
index b54954bf4e..293bcbfb64 100644
--- a/guix/build-system/elm.scm
+++ b/guix/build-system/elm.scm
@@ -103,6 +103,18 @@ given VERSION with sha256 checksum HASH."
   (let ((elm (resolve-interface '(gnu packages elm))))
     (module-ref elm 'elm)))
 
+(define (default-elm-core)
+  "Return the default elm-core package."
+  ;; Lazily resolve the binding to avoid a circular dependency.
+  (let ((elm (resolve-interface '(gnu packages elm))))
+    (module-ref elm 'elm-core)))
+
+(define (default-elm-json)
+  "Return the default elm-json package."
+  ;; Lazily resolve the binding to avoid a circular dependency.
+  (let ((elm (resolve-interface '(gnu packages elm))))
+    (module-ref elm 'elm-json)))
+
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
                 (implicit-elm-package-inputs? #t)
@@ -127,6 +139,28 @@ given VERSION with sha256 checksum HASH."
                '())
          ,@inputs
          ("elm" ,elm)
+         ,@(cond
+            (implicit-elm-package-inputs?
+             ;; These are needed for elm-build-system even if not actually
+             ;; needed by the package being built.  But "elm/json" is often
+             ;; present in practice, and "elm/core" always is: only add the
+             ;; default packages if no suitable inputs have been given
+             ;; explicitly.
+             (filter-map
+              (match-lambda
+                ((name get-default)
+                 (cond
+                  ((find (match-lambda
+                           ((_ pkg . _)
+                            (equal? name (guix-package->elm-name pkg))))
+                         inputs)
+                   #f)
+                  (else
+                   `(,name ,(get-default))))))
+              `(("elm/core" ,default-elm-core)
+                ("elm/json" ,default-elm-json))))
+            (else
+             '()))
          ;; TODO: probably don't need most of (standard-packages)
          ,@(standard-packages)))
       (outputs outputs)



reply via email to

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