diff --git a/lang/ninja/src/build.sld b/lang/ninja/src/build.sld index 397895d..b1f7c79 100644 --- a/lang/ninja/src/build.sld +++ b/lang/ninja/src/build.sld @@ -2,6 +2,7 @@ (define-library (zilch lang ninja build) (import (scheme base) (scheme lazy) (scheme file) + (scheme case-lambda) (zilch file) (zilch magic) (scheme char) (zilch nix drv) (zilch nix path) (zilch nixpkgs) (zilch zexpr) (zilch vfs) @@ -536,8 +537,10 @@ (set-build-env-vfs! env (vfs-to-store (make-vfs filtered-vfs))) (define edge-ref - (lambda (path) - (define edge (mapping-ref edges path (lambda () (mapping-ref edges (normalize-path path) (lambda () (error "Target doesn't exist" path)))))) - (cons (if (promise? (car edge)) (force (car edge)) (car edge)) (force (cdr edge))))) + (case-lambda + ((path) (edge-ref path #f)) + ((path may-fail) + (define edge (mapping-ref edges path (lambda () (mapping-ref edges (normalize-path path) (lambda () (if may-fail #f (error "Target doesn't exist" path))))))) + (and edge (cons (if (promise? (car edge)) (force (car edge)) (car edge)) (force (cdr edge))))))) (define defaults (build-file-default-targets file)) (values edge-ref defaults (lambda () (build-env-collected-deps env))))))