Add information about which output is active to drvPath's context
This will break things that depend on being able to just strip away an equals sign, so those have to be updated next
This commit is contained in:
parent
ffa038f66d
commit
bf50d6ad32
1 changed files with 6 additions and 4 deletions
|
@ -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<PathSet>("=" + drvPath));
|
||||
foreach (DerivationOutputs::iterator, i, drv.outputs) {
|
||||
mkString(*state.allocAttr(v, state.symbols.create(i->first + "DrvPath")), drvPath, singleton<PathSet>("=" + i->first + "=" + drvPath));
|
||||
/* The output path of an output X is ‘<X>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; }; \
|
||||
|
|
Loading…
Reference in a new issue