mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-28 16:46:16 +02:00
libcmd: remove commented-out stuff
This commit is contained in:
parent
d78992dbff
commit
fbac9a4863
1 changed files with 0 additions and 201 deletions
|
@ -498,207 +498,6 @@ ref<eval_cache::EvalCache> openEvalCache(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
<<<<<<< HEAD
|
|
||||||
static std::string showAttrPaths(const std::vector<std::string> & paths)
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
for (const auto & [n, i] : enumerate(paths)) {
|
|
||||||
if (n > 0) s += n + 1 == paths.size() ? " or " : ", ";
|
|
||||||
s += '\''; s += i; s += '\'';
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
InstallableFlake::InstallableFlake(
|
|
||||||
SourceExprCommand * cmd,
|
|
||||||
ref<EvalState> state,
|
|
||||||
FlakeRef && flakeRef,
|
|
||||||
std::string_view fragment,
|
|
||||||
ExtendedOutputsSpec extendedOutputsSpec,
|
|
||||||
Strings attrPaths,
|
|
||||||
Strings prefixes,
|
|
||||||
const flake::LockFlags & lockFlags)
|
|
||||||
: InstallableValue(state),
|
|
||||||
flakeRef(flakeRef),
|
|
||||||
attrPaths(fragment == "" ? attrPaths : Strings{(std::string) fragment}),
|
|
||||||
prefixes(fragment == "" ? Strings{} : prefixes),
|
|
||||||
extendedOutputsSpec(std::move(extendedOutputsSpec)),
|
|
||||||
lockFlags(lockFlags)
|
|
||||||
{
|
|
||||||
if (cmd && cmd->getAutoArgs(*state)->size())
|
|
||||||
throw UsageError("'--arg' and '--argstr' are incompatible with flakes");
|
|
||||||
}
|
|
||||||
|
|
||||||
DerivedPathsWithInfo InstallableFlake::toDerivedPaths()
|
|
||||||
{
|
|
||||||
Activity act(*logger, lvlTalkative, actUnknown, fmt("evaluating derivation '%s'", what()));
|
|
||||||
|
|
||||||
auto attr = getCursor(*state);
|
|
||||||
|
|
||||||
auto attrPath = attr->getAttrPathStr();
|
|
||||||
|
|
||||||
if (!attr->isDerivation()) {
|
|
||||||
|
|
||||||
// FIXME: use eval cache?
|
|
||||||
auto v = attr->forceValue();
|
|
||||||
|
|
||||||
if (v.type() == nPath) {
|
|
||||||
PathSet context;
|
|
||||||
auto storePath = state->copyPathToStore(context, Path(v.path));
|
|
||||||
return {{
|
|
||||||
.path = DerivedPath::Opaque {
|
|
||||||
.path = std::move(storePath),
|
|
||||||
}
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (v.type() == nString) {
|
|
||||||
PathSet context;
|
|
||||||
auto s = state->forceString(v, context, noPos, fmt("while evaluating the flake output attribute '%s'", attrPath));
|
|
||||||
auto storePath = state->store->maybeParseStorePath(s);
|
|
||||||
if (storePath && context.count(std::string(s))) {
|
|
||||||
return {{
|
|
||||||
.path = DerivedPath::Opaque {
|
|
||||||
.path = std::move(*storePath),
|
|
||||||
}
|
|
||||||
}};
|
|
||||||
} else
|
|
||||||
throw Error("flake output attribute '%s' evaluates to the string '%s' which is not a store path", attrPath, s);
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
throw Error("flake output attribute '%s' is not a derivation or path", attrPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
auto drvPath = attr->forceDerivation();
|
|
||||||
|
|
||||||
std::optional<NixInt> priority;
|
|
||||||
|
|
||||||
if (attr->maybeGetAttr(state->sOutputSpecified)) {
|
|
||||||
} else if (auto aMeta = attr->maybeGetAttr(state->sMeta)) {
|
|
||||||
if (auto aPriority = aMeta->maybeGetAttr("priority"))
|
|
||||||
priority = aPriority->getInt();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {{
|
|
||||||
.path = DerivedPath::Built {
|
|
||||||
.drvPath = std::move(drvPath),
|
|
||||||
.outputs = std::visit(overloaded {
|
|
||||||
[&](const ExtendedOutputsSpec::Default & d) -> OutputsSpec {
|
|
||||||
std::set<std::string> outputsToInstall;
|
|
||||||
if (auto aOutputSpecified = attr->maybeGetAttr(state->sOutputSpecified)) {
|
|
||||||
if (aOutputSpecified->getBool()) {
|
|
||||||
if (auto aOutputName = attr->maybeGetAttr("outputName"))
|
|
||||||
outputsToInstall = { aOutputName->getString() };
|
|
||||||
}
|
|
||||||
} else if (auto aMeta = attr->maybeGetAttr(state->sMeta)) {
|
|
||||||
if (auto aOutputsToInstall = aMeta->maybeGetAttr("outputsToInstall"))
|
|
||||||
for (auto & s : aOutputsToInstall->getListOfStrings())
|
|
||||||
outputsToInstall.insert(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (outputsToInstall.empty())
|
|
||||||
outputsToInstall.insert("out");
|
|
||||||
|
|
||||||
return OutputsSpec::Names { std::move(outputsToInstall) };
|
|
||||||
},
|
|
||||||
[&](const ExtendedOutputsSpec::Explicit & e) -> OutputsSpec {
|
|
||||||
return e;
|
|
||||||
},
|
|
||||||
}, extendedOutputsSpec.raw()),
|
|
||||||
},
|
|
||||||
.info = {
|
|
||||||
.priority = priority,
|
|
||||||
.originalRef = flakeRef,
|
|
||||||
.resolvedRef = getLockedFlake()->flake.lockedRef,
|
|
||||||
.attrPath = attrPath,
|
|
||||||
.extendedOutputsSpec = extendedOutputsSpec,
|
|
||||||
}
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
||||||
std::pair<Value *, PosIdx> InstallableFlake::toValue(EvalState & state)
|
|
||||||
{
|
|
||||||
return {&getCursor(state)->forceValue(), noPos};
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<ref<eval_cache::AttrCursor>>
|
|
||||||
InstallableFlake::getCursors(EvalState & state)
|
|
||||||
{
|
|
||||||
auto evalCache = openEvalCache(state,
|
|
||||||
std::make_shared<flake::LockedFlake>(lockFlake(state, flakeRef, lockFlags)));
|
|
||||||
|
|
||||||
auto root = evalCache->getRoot();
|
|
||||||
|
|
||||||
std::vector<ref<eval_cache::AttrCursor>> res;
|
|
||||||
|
|
||||||
for (auto & attrPath : getActualAttrPaths()) {
|
|
||||||
auto attr = root->findAlongAttrPath(parseAttrPath(state, attrPath));
|
|
||||||
if (attr) res.push_back(ref(*attr));
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
ref<eval_cache::AttrCursor> InstallableFlake::getCursor(EvalState & state)
|
|
||||||
{
|
|
||||||
auto lockedFlake = getLockedFlake();
|
|
||||||
|
|
||||||
auto cache = openEvalCache(state, lockedFlake);
|
|
||||||
auto root = cache->getRoot();
|
|
||||||
|
|
||||||
Suggestions suggestions;
|
|
||||||
|
|
||||||
auto attrPaths = getActualAttrPaths();
|
|
||||||
|
|
||||||
for (auto & attrPath : attrPaths) {
|
|
||||||
debug("trying flake output attribute '%s'", attrPath);
|
|
||||||
|
|
||||||
auto attrOrSuggestions = root->findAlongAttrPath(
|
|
||||||
parseAttrPath(state, attrPath),
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!attrOrSuggestions) {
|
|
||||||
suggestions += attrOrSuggestions.getSuggestions();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return *attrOrSuggestions;
|
|
||||||
}
|
|
||||||
|
|
||||||
throw Error(
|
|
||||||
suggestions,
|
|
||||||
"flake '%s' does not provide attribute %s",
|
|
||||||
flakeRef,
|
|
||||||
showAttrPaths(attrPaths));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<flake::LockedFlake> InstallableFlake::getLockedFlake() const
|
|
||||||
{
|
|
||||||
if (!_lockedFlake) {
|
|
||||||
flake::LockFlags lockFlagsApplyConfig = lockFlags;
|
|
||||||
lockFlagsApplyConfig.applyNixConfig = true;
|
|
||||||
_lockedFlake = std::make_shared<flake::LockedFlake>(lockFlake(*state, flakeRef, lockFlagsApplyConfig));
|
|
||||||
}
|
|
||||||
return _lockedFlake;
|
|
||||||
}
|
|
||||||
|
|
||||||
FlakeRef InstallableFlake::nixpkgsFlakeRef() const
|
|
||||||
{
|
|
||||||
auto lockedFlake = getLockedFlake();
|
|
||||||
|
|
||||||
if (auto nixpkgsInput = lockedFlake->lockFile.findInput({"nixpkgs"})) {
|
|
||||||
if (auto lockedNode = std::dynamic_pointer_cast<const flake::LockedNode>(nixpkgsInput)) {
|
|
||||||
debug("using nixpkgs flake '%s'", lockedNode->lockedRef);
|
|
||||||
return std::move(lockedNode->lockedRef);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Installable::nixpkgsFlakeRef();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
Bindings * SourceExprCommand::getOverrideArgs(EvalState & state, ref<Store> store)
|
Bindings * SourceExprCommand::getOverrideArgs(EvalState & state, ref<Store> store)
|
||||||
{
|
{
|
||||||
Bindings * res = state.allocBindings(overrideArgs.size());
|
Bindings * res = state.allocBindings(overrideArgs.size());
|
||||||
|
|
Loading…
Reference in a new issue