(zilch lang ninja): support swapping out the build phase of nixpkgs-style drv
Change-Id: I6a6a69649c5c37c67dbe05a0795356b78caff528
This commit is contained in:
parent
c6504571e8
commit
23ce8304f5
5 changed files with 203 additions and 11 deletions
|
|
@ -1,12 +1,13 @@
|
|||
(define-library (zilch lang ninja config)
|
||||
(import
|
||||
(scheme base) (scheme eval)
|
||||
(zilch nixpkgs) (zilch vfs))
|
||||
(zilch magic) (zilch nixpkgs) (zilch vfs)
|
||||
(prefix (only scheme eval) scheme-))
|
||||
|
||||
(export
|
||||
ninja-build-config?
|
||||
ninja-build-config-environment ninja-build-config-root-dir
|
||||
ninja-build-config-patches ninja-build-config-targets
|
||||
ninja-build-config-environment ninja-build-config-environment-drv
|
||||
ninja-build-config-root-dir ninja-build-config-patches ninja-build-config-targets
|
||||
|
||||
set-ninja-build-config-root-dir! set-ninja-build-config-environment!
|
||||
|
||||
|
|
@ -14,9 +15,10 @@
|
|||
|
||||
(begin
|
||||
(define-record-type <ninja-build-config>
|
||||
(make-ninja-build-config environment root-dir patches targets)
|
||||
(make-ninja-build-config environment environment-drv root-dir patches targets)
|
||||
ninja-build-config?
|
||||
(environment ninja-build-config-environment set-ninja-build-config-environment!)
|
||||
(environment-drv ninja-build-config-environment-drv set-ninja-build-config-environment-drv!)
|
||||
(root-dir ninja-build-config-root-dir set-ninja-build-config-root-dir!)
|
||||
(patches ninja-build-config-patches set-ninja-build-config-patches!)
|
||||
(targets ninja-build-config-targets set-ninja-build-config-targets!))
|
||||
|
|
@ -28,7 +30,11 @@
|
|||
(else
|
||||
(case (car data)
|
||||
((#:env #:environment)
|
||||
(set-ninja-build-config-environment! conf (if (string? (list-ref data 1)) (environment-for-derivation (cdar (nixpkgs-eval (list-ref data 1)))) (list-ref data 1)))
|
||||
(if (string? (list-ref data 1))
|
||||
(let ((drv (cdar (nixpkgs-eval (list-ref data 1)))))
|
||||
(set-ninja-build-config-environment! conf (environment-for-derivation drv))
|
||||
(set-ninja-build-config-environment-drv! conf (store-path-drv drv)))
|
||||
(set-ninja-build-config-environment! conf (list-ref data 1)))
|
||||
(parse-config-inner conf (cddr data)))
|
||||
((#:root)
|
||||
(set-ninja-build-config-root-dir! conf (if (string? (list-ref data 1)) (vfs-from-directory (list-ref data 1)) (list-ref data 1)))
|
||||
|
|
@ -41,7 +47,7 @@
|
|||
((string? patch-base)
|
||||
(lambda (target) patch-base))
|
||||
((list? patch-base)
|
||||
(eval patch-base (environment '(scheme base) '(zilch lang ninja))))
|
||||
(scheme-eval patch-base))
|
||||
(else patch-base))))
|
||||
(set-ninja-build-config-patches! conf (cons processed-patch (ninja-build-config-patches conf))))
|
||||
(parse-config-inner conf (cddr data)))
|
||||
|
|
@ -58,4 +64,4 @@
|
|||
(define (parse-ninja-config config)
|
||||
(unless (list? config)
|
||||
(error "expected Zilch Ninja config to be a list"))
|
||||
(parse-config-inner (make-ninja-build-config #f #f '() #f) config))))
|
||||
(parse-config-inner (make-ninja-build-config #f #f #f '() #f) config))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue