mirror of
https://github.com/NixOS/nix.git
synced 2025-11-16 15:32:43 +01:00
Flake schemas
This applies upstream https://github.com/NixOS/nix/pull/8892.
This commit is contained in:
parent
51583851a2
commit
6406619c44
25 changed files with 702 additions and 819 deletions
|
|
@ -368,6 +368,12 @@ Value * EvalCache::getRootValue()
|
|||
{
|
||||
if (!value) {
|
||||
debug("getting root value");
|
||||
|
||||
/* For testing whether the evaluation cache is
|
||||
complete. */
|
||||
if (getEnv("NIX_ALLOW_EVAL").value_or("1") == "0")
|
||||
throw Error("not everything is cached, but evaluation is not allowed");
|
||||
|
||||
value = allocRootValue(rootLoader());
|
||||
}
|
||||
return *value;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,11 @@ class EvalCache : public std::enable_shared_from_this<EvalCache>
|
|||
friend struct CachedEvalError;
|
||||
|
||||
std::shared_ptr<AttrDb> db;
|
||||
|
||||
public:
|
||||
EvalState & state;
|
||||
|
||||
private:
|
||||
typedef std::function<Value *()> RootLoader;
|
||||
RootLoader rootLoader;
|
||||
RootValue value;
|
||||
|
|
@ -89,7 +93,10 @@ class AttrCursor : public std::enable_shared_from_this<AttrCursor>
|
|||
friend class EvalCache;
|
||||
friend struct CachedEvalError;
|
||||
|
||||
public:
|
||||
ref<EvalCache> root;
|
||||
|
||||
private:
|
||||
typedef std::optional<std::pair<std::shared_ptr<AttrCursor>, Symbol>> Parent;
|
||||
Parent parent;
|
||||
RootValue _value;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue