~ruther/guix-local

1a9574e3a73e6ec1641c7238d87e45d00b862283 — Eelco Dolstra 10 years ago 63a5be0
daemon: Fix --repair failure on multiple-output derivations.

If repair found a corrupted/missing path that depended on a
multiple-output derivation, and some of the outputs of the latter were
not present, it failed with a message like

  error: path ‘/nix/store/cnfn9d5fjys1y93cz9shld2xwaibd7nn-bash-4.3-p42-doc’ is not valid

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 3 insertions(+), 1 deletions(-)

M nix/libstore/build.cc
M nix/libstore/build.cc => nix/libstore/build.cc +3 -1
@@ 1106,8 1106,10 @@ void DerivationGoal::repairClosure()

    /* Get the output closure. */
    PathSet outputClosure;
    foreach (DerivationOutputs::iterator, i, drv.outputs)
    foreach (DerivationOutputs::iterator, i, drv.outputs) {
        if (!wantOutput(i->first, wantedOutputs)) continue;
        computeFSClosure(worker.store, i->second.path, outputClosure);
    }

    /* Filter out our own outputs (which we have already checked). */
    foreach (DerivationOutputs::iterator, i, drv.outputs)