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>
This commit is contained in:
Philip McGrath 2022-05-18 14:10:52 -04:00 committed by Ludovic Courtès
parent d16b2a1421
commit dce724dc82
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 34 additions and 0 deletions

View File

@ -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)