mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-05-28 03:51:53 +02:00
derivations: 'derivation' and related procedures return a single value.
* guix/derivations.scm (derivation->output-path, derivation->output-paths): New procedures. (derivation-path->output-path): Use 'derivation->output-path'. (derivation-path->output-paths): Use 'derivation->output-paths'. (derivation): Accept 'derivation?' objects as inputs. Return a single value. (build-derivations): New procedure. (compiled-modules): Use 'derivation->output-paths'. (build-expression->derivation)[source-path]: Add case for when the input matches 'derivation?'. [prologue]: Accept 'derivation?' objects in INPUTS. [mod-dir, go-dir]: Use 'derivation->output-path'. * guix/download.scm (url-fetch): Adjust to the single-value return. * guix/packages.scm (package-output): Use 'derivation->output-path'. * guix/scripts/build.scm (guix-build): When the argument is 'derivation-path?', pass it through 'read-derivation'. Use 'derivation-file-name' to print out the .drv file names, and to register them. Use 'derivation->output-path' instead of 'derivation-path->output-path'. * guix/scripts/package.scm (roll-back): Adjust to the single-value return. (guix-package): Use 'derivation->output-path'. * guix/ui.scm (show-what-to-build): Adjust to deal with 'derivation?' objects instead of .drv file names. * gnu/system/grub.scm (grub-configuration-file): Use 'derivation->output-path' instead of 'derivation-path->output-path'. * gnu/system/vm.scm (qemu-image, system-qemu-image): Likewise. * tests/builders.scm, tests/derivations.scm, tests/packages.scm, tests/store.scm, tests/union.scm: Adjust to the new calling convention. * doc/guix.texi (Defining Packages, The Store, Derivations): Adjust accordingly.
This commit is contained in:
+17
-14
@@ -82,7 +82,7 @@
|
||||
;; (d1 (derivation %store "link"
|
||||
;; "/bin/sh" `("-e" ,b)
|
||||
;; #:inputs `((,b) (,p1))))
|
||||
;; (p2 (derivation-path->output-path d1)))
|
||||
;; (p2 (derivation->output-path d1)))
|
||||
;; (and (add-temp-root %store p2)
|
||||
;; (build-derivations %store (list d1))
|
||||
;; (valid-path? %store p1)
|
||||
@@ -133,21 +133,21 @@
|
||||
s `("-e" ,b)
|
||||
#:env-vars `(("foo" . ,(random-text)))
|
||||
#:inputs `((,b) (,s))))
|
||||
(o (derivation-path->output-path d)))
|
||||
(o (derivation->output-path d)))
|
||||
(and (build-derivations %store (list d))
|
||||
(equal? (query-derivation-outputs %store d)
|
||||
(equal? (query-derivation-outputs %store (derivation-file-name d))
|
||||
(list o))
|
||||
(equal? (valid-derivers %store o)
|
||||
(list d)))))
|
||||
(list (derivation-file-name d))))))
|
||||
|
||||
(test-assert "no substitutes"
|
||||
(let* ((s (open-connection))
|
||||
(d1 (package-derivation s %bootstrap-guile (%current-system)))
|
||||
(d2 (package-derivation s %bootstrap-glibc (%current-system)))
|
||||
(o (map derivation-path->output-path (list d1 d2))))
|
||||
(o (map derivation->output-path (list d1 d2))))
|
||||
(set-build-options s #:use-substitutes? #f)
|
||||
(and (not (has-substitutes? s d1))
|
||||
(not (has-substitutes? s d2))
|
||||
(and (not (has-substitutes? s (derivation-file-name d1)))
|
||||
(not (has-substitutes? s (derivation-file-name d2)))
|
||||
(null? (substitutable-paths s o))
|
||||
(null? (substitutable-path-info s o)))))
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
(test-assert "substitute query"
|
||||
(let* ((s (open-connection))
|
||||
(d (package-derivation s %bootstrap-guile (%current-system)))
|
||||
(o (derivation-path->output-path d))
|
||||
(o (derivation->output-path d))
|
||||
(dir (and=> (getenv "GUIX_BINARY_SUBSTITUTE_URL")
|
||||
(compose uri-path string->uri))))
|
||||
;; Create fake substituter data, to be read by `substitute-binary'.
|
||||
@@ -177,7 +177,8 @@ Deriver: ~a~%"
|
||||
o ; StorePath
|
||||
(string-append dir "/example.nar") ; URL
|
||||
(%current-system) ; System
|
||||
(basename d)))) ; Deriver
|
||||
(basename
|
||||
(derivation-file-name d))))) ; Deriver
|
||||
|
||||
;; Remove entry from the local cache.
|
||||
(false-if-exception
|
||||
@@ -191,7 +192,7 @@ Deriver: ~a~%"
|
||||
(equal? (list o) (substitutable-paths s (list o)))
|
||||
(match (pk 'spi (substitutable-path-info s (list o)))
|
||||
(((? substitutable? s))
|
||||
(and (equal? (substitutable-deriver s) d)
|
||||
(and (string=? (substitutable-deriver s) (derivation-file-name d))
|
||||
(null? (substitutable-references s))
|
||||
(equal? (substitutable-nar-size s) 1234)))))))
|
||||
|
||||
@@ -207,7 +208,7 @@ Deriver: ~a~%"
|
||||
'()
|
||||
#:guile-for-build
|
||||
(package-derivation s %bootstrap-guile (%current-system))))
|
||||
(o (derivation-path->output-path d))
|
||||
(o (derivation->output-path d))
|
||||
(dir (and=> (getenv "GUIX_BINARY_SUBSTITUTE_URL")
|
||||
(compose uri-path string->uri))))
|
||||
;; Create fake substituter data, to be read by `substitute-binary'.
|
||||
@@ -238,7 +239,8 @@ Deriver: ~a~%"
|
||||
(compose bytevector->nix-base32-string sha256
|
||||
get-bytevector-all))
|
||||
(%current-system) ; System
|
||||
(basename d)))) ; Deriver
|
||||
(basename
|
||||
(derivation-file-name d))))) ; Deriver
|
||||
|
||||
;; Make sure we use `substitute-binary'.
|
||||
(set-build-options s #:use-substitutes? #t)
|
||||
@@ -257,7 +259,7 @@ Deriver: ~a~%"
|
||||
'()
|
||||
#:guile-for-build
|
||||
(package-derivation s %bootstrap-guile (%current-system))))
|
||||
(o (derivation-path->output-path d))
|
||||
(o (derivation->output-path d))
|
||||
(dir (and=> (getenv "GUIX_BINARY_SUBSTITUTE_URL")
|
||||
(compose uri-path string->uri))))
|
||||
;; Create fake substituter data, to be read by `substitute-binary'.
|
||||
@@ -279,7 +281,8 @@ Deriver: ~a~%"
|
||||
o ; StorePath
|
||||
"does-not-exist.nar" ; relative URL
|
||||
(%current-system) ; System
|
||||
(basename d)))) ; Deriver
|
||||
(basename
|
||||
(derivation-file-name d))))) ; Deriver
|
||||
|
||||
;; Make sure we use `substitute-binary'.
|
||||
(set-build-options s #:use-substitutes? #t)
|
||||
|
||||
Reference in New Issue
Block a user