forked from lix-project/lix
Expose mkOutputString
as method of EvalState
This commit is contained in:
parent
0a9afce3b9
commit
8e1a990268
|
@ -1047,6 +1047,27 @@ void EvalState::mkStorePathString(const StorePath & p, Value & v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void EvalState::mkOutputString(
|
||||||
|
Value & value,
|
||||||
|
const StorePath & drvPath,
|
||||||
|
const std::string outputName,
|
||||||
|
std::optional<StorePath> optOutputPath)
|
||||||
|
{
|
||||||
|
value.mkString(
|
||||||
|
optOutputPath
|
||||||
|
? store->printStorePath(*std::move(optOutputPath))
|
||||||
|
/* Downstream we would substitute this for an actual path once
|
||||||
|
we build the floating CA derivation */
|
||||||
|
: downstreamPlaceholder(*store, drvPath, outputName),
|
||||||
|
NixStringContext {
|
||||||
|
NixStringContextElem::Built {
|
||||||
|
.drvPath = drvPath,
|
||||||
|
.output = outputName,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Create a thunk for the delayed computation of the given expression
|
/* Create a thunk for the delayed computation of the given expression
|
||||||
in the given environment. But if the expression is a variable,
|
in the given environment. But if the expression is a variable,
|
||||||
then look it up right away. This significantly reduces the number
|
then look it up right away. This significantly reduces the number
|
||||||
|
|
|
@ -576,12 +576,37 @@ public:
|
||||||
void mkThunk_(Value & v, Expr * expr);
|
void mkThunk_(Value & v, Expr * expr);
|
||||||
void mkPos(Value & v, PosIdx pos);
|
void mkPos(Value & v, PosIdx pos);
|
||||||
|
|
||||||
/* Create a string representing a store path.
|
/**
|
||||||
|
* Create a string representing a store path.
|
||||||
The string is the printed store path with a context containing a single
|
*
|
||||||
`Opaque` element of that store path. */
|
* The string is the printed store path with a context containing a single
|
||||||
|
* `NixStringContextElem::Opaque` element of that store path.
|
||||||
|
*/
|
||||||
void mkStorePathString(const StorePath & storePath, Value & v);
|
void mkStorePathString(const StorePath & storePath, Value & v);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a string representing a `DerivedPath::Built`.
|
||||||
|
*
|
||||||
|
* The string is the printed store path with a context containing a single
|
||||||
|
* `NixStringContextElem::Built` element of the drv path and output name.
|
||||||
|
*
|
||||||
|
* @param value Value we are settings
|
||||||
|
*
|
||||||
|
* @param drvPath Path the drv whose output we are making a string for
|
||||||
|
*
|
||||||
|
* @param outputName Name of the output
|
||||||
|
*
|
||||||
|
* @param optOutputPath Optional output path for that string. Must
|
||||||
|
* be passed if and only if output store object is input-addressed.
|
||||||
|
* Will be printed to form string if passed, otherwise a placeholder
|
||||||
|
* will be used (see `downstreamPlaceholder()`).
|
||||||
|
*/
|
||||||
|
void mkOutputString(
|
||||||
|
Value & value,
|
||||||
|
const StorePath & drvPath,
|
||||||
|
const std::string outputName,
|
||||||
|
std::optional<StorePath> optOutputPath);
|
||||||
|
|
||||||
void concatLists(Value & v, size_t nrLists, Value * * lists, const PosIdx pos, std::string_view errorCtx);
|
void concatLists(Value & v, size_t nrLists, Value * * lists, const PosIdx pos, std::string_view errorCtx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -129,30 +129,6 @@ static SourcePath realisePath(EvalState & state, const PosIdx pos, Value & v, co
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Inverse of one of the `EvalState::coerceToDerivedPath()` cases.
|
|
||||||
*/
|
|
||||||
static void mkOutputString(
|
|
||||||
EvalState & state,
|
|
||||||
Value & value,
|
|
||||||
const StorePath & drvPath,
|
|
||||||
const std::string outputName,
|
|
||||||
std::optional<StorePath> optOutputPath)
|
|
||||||
{
|
|
||||||
value.mkString(
|
|
||||||
optOutputPath
|
|
||||||
? state.store->printStorePath(*std::move(optOutputPath))
|
|
||||||
/* Downstream we would substitute this for an actual path once
|
|
||||||
we build the floating CA derivation */
|
|
||||||
: downstreamPlaceholder(*state.store, drvPath, outputName),
|
|
||||||
NixStringContext {
|
|
||||||
NixStringContextElem::Built {
|
|
||||||
.drvPath = drvPath,
|
|
||||||
.output = outputName,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add and attribute to the given attribute map from the output name to
|
* Add and attribute to the given attribute map from the output name to
|
||||||
* the output path, or a placeholder.
|
* the output path, or a placeholder.
|
||||||
|
@ -173,8 +149,7 @@ static void mkOutputString(
|
||||||
const StorePath & drvPath,
|
const StorePath & drvPath,
|
||||||
const std::pair<std::string, DerivationOutput> & o)
|
const std::pair<std::string, DerivationOutput> & o)
|
||||||
{
|
{
|
||||||
mkOutputString(
|
state.mkOutputString(
|
||||||
state,
|
|
||||||
attrs.alloc(o.first),
|
attrs.alloc(o.first),
|
||||||
drvPath,
|
drvPath,
|
||||||
o.first,
|
o.first,
|
||||||
|
|
Loading…
Reference in a new issue