forked from lix-project/lix
* Get nix-env to compile.
This commit is contained in:
parent
55e207b2dc
commit
d8cd3115d8
|
@ -17,14 +17,12 @@ string DrvInfo::queryDrvPath(EvalState & state) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
string DrvInfo::queryOutPath(EvalState & state) const
|
string DrvInfo::queryOutPath(EvalState & state) const
|
||||||
{
|
{
|
||||||
if (outPath == "") {
|
if (outPath == "") {
|
||||||
Expr a = attrs->get(toATerm("outPath"));
|
Bindings::iterator i = attrs->find(toATerm("outPath"));
|
||||||
if (!a) throw TypeError("output path missing");
|
|
||||||
PathSet context;
|
PathSet context;
|
||||||
(string &) outPath = coerceToPath(state, a, context);
|
(string &) outPath = i != attrs->end() ? state.coerceToPath(i->second, context) : "";
|
||||||
}
|
}
|
||||||
return outPath;
|
return outPath;
|
||||||
}
|
}
|
||||||
|
@ -34,33 +32,26 @@ MetaInfo DrvInfo::queryMetaInfo(EvalState & state) const
|
||||||
{
|
{
|
||||||
MetaInfo meta;
|
MetaInfo meta;
|
||||||
|
|
||||||
Expr a = attrs->get(toATerm("meta"));
|
Bindings::iterator a = attrs->find(toATerm("meta"));
|
||||||
if (!a) return meta; /* fine, empty meta information */
|
if (a == attrs->end()) return meta; /* fine, empty meta information */
|
||||||
|
|
||||||
ATermMap attrs2;
|
state.forceAttrs(a->second);
|
||||||
queryAllAttrs(evalExpr(state, a), attrs2);
|
|
||||||
|
|
||||||
for (ATermMap::const_iterator i = attrs2.begin(); i != attrs2.end(); ++i) {
|
foreach (Bindings::iterator, i, *a->second.attrs) {
|
||||||
Expr e = evalExpr(state, i->value);
|
|
||||||
string s;
|
|
||||||
PathSet context;
|
|
||||||
MetaValue value;
|
MetaValue value;
|
||||||
int n;
|
state.forceValue(i->second);
|
||||||
ATermList es;
|
if (i->second.type == tString) {
|
||||||
if (matchStr(e, s, context)) {
|
|
||||||
value.type = MetaValue::tpString;
|
value.type = MetaValue::tpString;
|
||||||
value.stringValue = s;
|
value.stringValue = i->second.string.s;
|
||||||
meta[aterm2String(i->key)] = value;
|
} else if (i->second.type == tInt) {
|
||||||
} else if (matchInt(e, n)) {
|
|
||||||
value.type = MetaValue::tpInt;
|
value.type = MetaValue::tpInt;
|
||||||
value.intValue = n;
|
value.intValue = i->second.integer;
|
||||||
meta[aterm2String(i->key)] = value;
|
} else if (i->second.type == tList) {
|
||||||
} else if (matchList(e, es)) {
|
|
||||||
value.type = MetaValue::tpStrings;
|
value.type = MetaValue::tpStrings;
|
||||||
for (ATermIterator j(es); j; ++j)
|
for (unsigned int j = 0; j < i->second.list.length; ++j)
|
||||||
value.stringValues.push_back(evalStringNoCtx(state, *j));
|
value.stringValues.push_back(state.forceStringNoCtx(i->second.list.elems[j]));
|
||||||
meta[aterm2String(i->key)] = value;
|
} else continue;
|
||||||
}
|
meta[aterm2String(i->first)] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return meta;
|
return meta;
|
||||||
|
@ -76,6 +67,8 @@ MetaValue DrvInfo::queryMetaInfo(EvalState & state, const string & name) const
|
||||||
|
|
||||||
void DrvInfo::setMetaInfo(const MetaInfo & meta)
|
void DrvInfo::setMetaInfo(const MetaInfo & meta)
|
||||||
{
|
{
|
||||||
|
throw Error("not implemented");
|
||||||
|
#if 0
|
||||||
ATermMap metaAttrs;
|
ATermMap metaAttrs;
|
||||||
foreach (MetaInfo::const_iterator, i, meta) {
|
foreach (MetaInfo::const_iterator, i, meta) {
|
||||||
Expr e;
|
Expr e;
|
||||||
|
@ -94,8 +87,8 @@ void DrvInfo::setMetaInfo(const MetaInfo & meta)
|
||||||
metaAttrs.set(toATerm(i->first), makeAttrRHS(e, makeNoPos()));
|
metaAttrs.set(toATerm(i->first), makeAttrRHS(e, makeNoPos()));
|
||||||
}
|
}
|
||||||
attrs->set(toATerm("meta"), makeAttrs(metaAttrs));
|
attrs->set(toATerm("meta"), makeAttrs(metaAttrs));
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Cache for already considered values. */
|
/* Cache for already considered values. */
|
||||||
|
|
|
@ -164,9 +164,12 @@ static void loadDerivations(EvalState & state, Path nixExprPath,
|
||||||
string systemFilter, const ATermMap & autoArgs,
|
string systemFilter, const ATermMap & autoArgs,
|
||||||
const string & pathPrefix, DrvInfos & elems)
|
const string & pathPrefix, DrvInfos & elems)
|
||||||
{
|
{
|
||||||
getDerivations(state,
|
Value v;
|
||||||
findAlongAttrPath(state, pathPrefix, autoArgs, loadSourceExpr(state, nixExprPath)),
|
state.eval(loadSourceExpr(state, nixExprPath), v);
|
||||||
pathPrefix, autoArgs, elems);
|
|
||||||
|
// !!! findAlongAttrPath(state, pathPrefix, autoArgs, loadSourceExpr(state, nixExprPath))
|
||||||
|
|
||||||
|
getDerivations(state, v, pathPrefix, autoArgs, elems);
|
||||||
|
|
||||||
/* Filter out all derivations not applicable to the current
|
/* Filter out all derivations not applicable to the current
|
||||||
system. */
|
system. */
|
||||||
|
@ -221,7 +224,7 @@ static DrvInfos queryInstalled(EvalState & state, const Path & userEnv)
|
||||||
e = bottomupRewrite(addPos, e);
|
e = bottomupRewrite(addPos, e);
|
||||||
|
|
||||||
DrvInfos elems;
|
DrvInfos elems;
|
||||||
getDerivations(state, e, "", ATermMap(1), elems);
|
// !!! getDerivations(state, e, "", ATermMap(1), elems);
|
||||||
return elems;
|
return elems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,6 +258,8 @@ static bool createUserEnv(EvalState & state, DrvInfos & elems,
|
||||||
const Path & profile, bool keepDerivations,
|
const Path & profile, bool keepDerivations,
|
||||||
const string & lockToken)
|
const string & lockToken)
|
||||||
{
|
{
|
||||||
|
throw Error("not implemented");
|
||||||
|
#if 0
|
||||||
/* Build the components in the user environment, if they don't
|
/* Build the components in the user environment, if they don't
|
||||||
exist already. */
|
exist already. */
|
||||||
PathSet drvsToBuild;
|
PathSet drvsToBuild;
|
||||||
|
@ -355,6 +360,7 @@ static bool createUserEnv(EvalState & state, DrvInfos & elems,
|
||||||
switchLink(profile, generation);
|
switchLink(profile, generation);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,12 +524,11 @@ static void queryInstSources(EvalState & state,
|
||||||
|
|
||||||
Expr e1 = loadSourceExpr(state, instSource.nixExprPath);
|
Expr e1 = loadSourceExpr(state, instSource.nixExprPath);
|
||||||
|
|
||||||
for (Strings::const_iterator i = args.begin();
|
foreach (Strings::const_iterator, i, args) {
|
||||||
i != args.end(); ++i)
|
|
||||||
{
|
|
||||||
Expr e2 = parseExprFromString(state, *i, absPath("."));
|
Expr e2 = parseExprFromString(state, *i, absPath("."));
|
||||||
Expr call = makeCall(e2, e1);
|
Expr call = makeCall(e2, e1);
|
||||||
getDerivations(state, call, "", instSource.autoArgs, elems);
|
Value v; state.eval(call, v);
|
||||||
|
getDerivations(state, v, "", instSource.autoArgs, elems);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -540,7 +545,7 @@ static void queryInstSources(EvalState & state,
|
||||||
Path path = followLinksToStorePath(*i);
|
Path path = followLinksToStorePath(*i);
|
||||||
|
|
||||||
DrvInfo elem;
|
DrvInfo elem;
|
||||||
elem.attrs = boost::shared_ptr<ATermMap>(new ATermMap(0)); /* ugh... */
|
elem.attrs = new Bindings;
|
||||||
string name = baseNameOf(path);
|
string name = baseNameOf(path);
|
||||||
string::size_type dash = name.find('-');
|
string::size_type dash = name.find('-');
|
||||||
if (dash != string::npos)
|
if (dash != string::npos)
|
||||||
|
@ -574,12 +579,14 @@ static void queryInstSources(EvalState & state,
|
||||||
}
|
}
|
||||||
|
|
||||||
case srcAttrPath: {
|
case srcAttrPath: {
|
||||||
for (Strings::const_iterator i = args.begin();
|
throw Error("not implemented");
|
||||||
i != args.end(); ++i)
|
#if 0
|
||||||
|
foreach (Strings::const_iterator, i, args)
|
||||||
getDerivations(state,
|
getDerivations(state,
|
||||||
findAlongAttrPath(state, *i, instSource.autoArgs,
|
findAlongAttrPath(state, *i, instSource.autoArgs,
|
||||||
loadSourceExpr(state, instSource.nixExprPath)),
|
loadSourceExpr(state, instSource.nixExprPath)),
|
||||||
"", instSource.autoArgs, elems);
|
"", instSource.autoArgs, elems);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1472,7 +1479,7 @@ void run(Strings args)
|
||||||
|
|
||||||
op(globals, remaining, opFlags, opArgs);
|
op(globals, remaining, opFlags, opArgs);
|
||||||
|
|
||||||
printEvalStats(globals.state);
|
globals.state.printStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue