~ruther/guix-local

f0387dd1676bdcb08e005cede98de7dedbd82bad — Ludovic Courtès 12 years ago 18fb40e
gnu: vm: Fix inputs in 'file-union'.

* gnu/system/vm.scm (file-union): Filter out members of FILES that are
  outputs of INPUTS.
1 files changed, 18 insertions(+), 5 deletions(-)

M gnu/system/vm.scm
M gnu/system/vm.scm => gnu/system/vm.scm +18 -5
@@ 467,11 467,24 @@ in the new directory, and the second element is the target file.
The subset of FILES corresponding to plain store files is automatically added
as an inputs; additional inputs, such as derivations, are taken from INPUTS."
  (mlet %store-monad ((inputs (lower-inputs inputs)))
    (let ((inputs (append inputs
                          (filter (match-lambda
                                   ((_ file)
                                    (direct-store-path? file)))
                                  files))))
    (let* ((outputs (append-map (match-lambda
                                 ((_ (? derivation? drv))
                                  (list (derivation->output-path drv)))
                                 ((_ (? derivation? drv) sub-drv ...)
                                  (map (cut derivation->output-path drv <>)
                                       sub-drv))
                                 (_ '()))
                                inputs))
           (inputs   (append inputs
                             (filter (match-lambda
                                      ((_ file)
                                       ;; Elements of FILES that are store
                                       ;; files and that do not correspond to
                                       ;; the output of INPUTS are considered
                                       ;; inputs (still here?).
                                       (and (direct-store-path? file)
                                            (not (member file outputs)))))
                                     files))))
      (derivation-expression name
                             `(let ((out (assoc-ref %outputs "out")))
                                (mkdir out)