diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2024-01-21 11:05:46 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2024-01-21 11:08:13 +0100 |
commit | 2d83a25450d4b820c13d52152e5e9f1bbfb5d985 (patch) | |
tree | 0f39b63aad62117b5d5b6478dc1c0ba83a56312c /guix | |
parent | 1d00a9edffc3795bdbaf53a69edb6f98368e1ccf (diff) |
import/cran: Generate rudimentary ARGUMENTS field.
* guix/import/cran.scm (phases-for-inputs, maybe-arguments): New procedures.
(description->package): Splice in result of MAYBE-ARGUMENTS.
Change-Id: I578e1903f37c91bf865f0be49b04187ec372ed05
Diffstat (limited to 'guix')
-rw-r--r-- | guix/import/cran.scm | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm index d7497e6fb9..57a8e86fcb 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -672,6 +672,52 @@ of META, a package in REPOSITORY." (string<? (upstream-input-downstream-name input1) (upstream-input-downstream-name input2)))))) +(define (phases-for-inputs input-names) + "Generate a list of build phases based on the provided INPUT-NAMES, a list +of package names for all input packages." + (let ((rules + (list (lambda () + (and (member "styler" input-names) + '(add-after 'unpack 'set-HOME + (lambda _ (setenv "HOME" "/tmp"))))) + (lambda () + (and (member "esbuild" input-names) + '(add-after 'unpack 'process-javascript + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "inst/" + (for-each (match-lambda + ((source . target) + (minify source #:target target))) + '()))))))))) + (fold (lambda (rule phases) + (let ((new-phase (rule))) + (if new-phase (cons new-phase phases) phases))) + (list) + rules))) + +(define (maybe-arguments inputs) + "Generate a list for the arguments field that can be spliced into a package +S-expression." + (let ((input-names (map upstream-input-name inputs)) + (esbuild-modules '(#:modules + '((guix build r-build-system) + (guix build minify-build-system) + (guix build utils) + (ice-9 match)) + #:imported-modules + `(,@%r-build-system-modules + (guix build minify-build-system))))) + (match (phases-for-inputs input-names) + (() '()) + (phases + `((arguments + (list + ,@(if (member "esbuild" input-names) + esbuild-modules '()) + #:phases + '(modify-phases %standard-phases + ,@phases)))))))) + (define* (description->package repository meta #:key (license-prefix identity) (download-source download)) "Return the `package' s-expression for an R package published on REPOSITORY @@ -751,7 +797,7 @@ from the alist META, which was derived from the R package's DESCRIPTION file." `((properties ,`(,'quasiquote ((,'upstream-name . ,name))))) '()) (build-system r-build-system) - + ,@(maybe-arguments inputs) ,@(maybe-inputs (filter (upstream-input-type-predicate 'regular) inputs) 'inputs) |