diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 121dbca9b3..a752b9a596 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -455,8 +455,8 @@ static void prim_derivationStrict(EvalState & state, Value * * args, Value & v) drvHashes[drvPath] = hashDerivationModulo(*store, drv); state.mkAttrs(v, 1 + drv.outputs.size()); - mkString(*state.allocAttr(v, state.sDrvPath), drvPath, singleton("=" + drvPath)); foreach (DerivationOutputs::iterator, i, drv.outputs) { + mkString(*state.allocAttr(v, state.symbols.create(i->first + "DrvPath")), drvPath, singleton("=" + i->first + "=" + drvPath)); /* The output path of an output X is ‘Path’, e.g. ‘outPath’. */ mkString(*state.allocAttr(v, state.symbols.create(i->first + "Path")), @@ -1111,11 +1111,13 @@ void EvalState::createBaseEnv() attrValues = attrs: \ map (name: builtins.getAttr name attrs) (builtins.attrNames attrs); \ outputToAttrListElement = output: \ - let outPath = builtins.getAttr (output + \"Path\") strict; in { \ + let \ + outPath = builtins.getAttr (output + \"Path\") strict; \ + drvPath = builtins.getAttr (output + \"DrvPath\") strict; \ + in { \ name = output; \ value = attrs // { \ - drvPath = strict.drvPath; \ - inherit outPath; \ + inherit outPath drvPath; \ type = \"derivation\"; \ currentOutput = output; \ } // outputsAttrs // { all = allList; }; \