derivations: Add `derivation-path->output-paths'.
* guix/derivations.scm (derivation-path->output-paths): New procedure. * tests/derivations.scm ("multiple-output derivation"): Test it.
This commit is contained in:
parent
3441e16497
commit
7244a5f74e
|
@ -1,5 +1,5 @@
|
||||||
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
|
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
|
||||||
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of Guix.
|
;;; This file is part of Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -55,6 +55,7 @@
|
||||||
read-derivation
|
read-derivation
|
||||||
write-derivation
|
write-derivation
|
||||||
derivation-path->output-path
|
derivation-path->output-path
|
||||||
|
derivation-path->output-paths
|
||||||
derivation
|
derivation
|
||||||
|
|
||||||
%guile-for-build
|
%guile-for-build
|
||||||
|
@ -288,6 +289,16 @@ path of its output OUTPUT."
|
||||||
(outputs (derivation-outputs drv)))
|
(outputs (derivation-outputs drv)))
|
||||||
(and=> (assoc-ref outputs output) derivation-output-path)))))
|
(and=> (assoc-ref outputs output) derivation-output-path)))))
|
||||||
|
|
||||||
|
(define (derivation-path->output-paths path)
|
||||||
|
"Read the derivation from PATH (`/nix/store/xxx.drv'), and return the
|
||||||
|
list of name/path pairs of its outputs."
|
||||||
|
(let* ((drv (call-with-input-file path read-derivation))
|
||||||
|
(outputs (derivation-outputs drv)))
|
||||||
|
(map (match-lambda
|
||||||
|
((name . output)
|
||||||
|
(cons name (derivation-output-path output))))
|
||||||
|
outputs)))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; Derivation primitive.
|
;;; Derivation primitive.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
|
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
|
||||||
;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of Guix.
|
;;; This file is part of Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -234,7 +234,10 @@
|
||||||
(and succeeded?
|
(and succeeded?
|
||||||
(let ((one (derivation-path->output-path drv-path "out"))
|
(let ((one (derivation-path->output-path drv-path "out"))
|
||||||
(two (derivation-path->output-path drv-path "second")))
|
(two (derivation-path->output-path drv-path "second")))
|
||||||
(and (eq? 'one (call-with-input-file one read))
|
(and (lset= equal?
|
||||||
|
(derivation-path->output-paths drv-path)
|
||||||
|
`(("out" . ,one) ("second" . ,two)))
|
||||||
|
(eq? 'one (call-with-input-file one read))
|
||||||
(eq? 'two (call-with-input-file two read)))))))
|
(eq? 'two (call-with-input-file two read)))))))
|
||||||
|
|
||||||
(test-assert "multiple-output derivation, non-alphabetic order"
|
(test-assert "multiple-output derivation, non-alphabetic order"
|
||||||
|
|
Loading…
Reference in New Issue