diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-10-16 15:55:34 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-10-16 15:55:34 +0000 |
commit | d7efd7639420f4c840cbfdfcbbb3c45292f3ac54 (patch) | |
tree | d48871893e6d3446b6298b0e5e612086233e3947 /src/nix-env | |
parent | 4c9aa821b985b8e334790a03497a56af3a021f3b (diff) |
* Big cleanup of the semantics of paths, strings, contexts, string
concatenation and string coercion. This was a big mess (see
e.g. NIX-67). Contexts are now folded into strings, so that they
don't cause evaluation errors when they're not expected. The
semantics of paths has been clarified (see nixexpr-ast.def).
toString() and coerceToString() have been merged.
Semantic change: paths are now copied to the store when they're in a
concatenation (and in most other situations - that's the
formalisation of the meaning of a path). So
"foo " + ./bla
evaluates to "foo /nix/store/hash...-bla", not "foo
/path/to/current-dir/bla". This prevents accidental impurities, and
is more consistent with the treatment of derivation outputs, e.g.,
`"foo " + bla' where `bla' is a derivation. (Here `bla' would be
replaced by the output path of `bla'.)
Diffstat (limited to 'src/nix-env')
-rw-r--r-- | src/nix-env/main.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/nix-env/main.cc b/src/nix-env/main.cc index 6a4038715..b55fc2246 100644 --- a/src/nix-env/main.cc +++ b/src/nix-env/main.cc @@ -167,18 +167,18 @@ static void createUserEnv(EvalState & state, const DrvInfos & elems, Path drvPath = keepDerivations ? i->queryDrvPath(state) : ""; ATerm t = makeAttrs(ATmakeList5( makeBind(toATerm("type"), - makeStr(toATerm("derivation")), makeNoPos()), + makeStr("derivation"), makeNoPos()), makeBind(toATerm("name"), - makeStr(toATerm(i->name)), makeNoPos()), + makeStr(i->name), makeNoPos()), makeBind(toATerm("system"), - makeStr(toATerm(i->system)), makeNoPos()), + makeStr(i->system), makeNoPos()), makeBind(toATerm("drvPath"), - makePath(toATerm(drvPath)), makeNoPos()), + makeStr(drvPath), makeNoPos()), makeBind(toATerm("outPath"), - makePath(toATerm(i->queryOutPath(state))), makeNoPos()) + makeStr(i->queryOutPath(state)), makeNoPos()) )); manifest = ATinsert(manifest, t); - inputs = ATinsert(inputs, makeStr(toATerm(i->queryOutPath(state)))); + inputs = ATinsert(inputs, makeStr(i->queryOutPath(state))); /* This is only necessary when installing store paths, e.g., `nix-env -i /nix/store/abcd...-foo'. */ @@ -196,11 +196,11 @@ static void createUserEnv(EvalState & state, const DrvInfos & elems, Expr topLevel = makeCall(envBuilder, makeAttrs(ATmakeList3( makeBind(toATerm("system"), - makeStr(toATerm(thisSystem)), makeNoPos()), + makeStr(thisSystem), makeNoPos()), makeBind(toATerm("derivations"), makeList(ATreverse(inputs)), makeNoPos()), makeBind(toATerm("manifest"), - makePath(toATerm(manifestFile)), makeNoPos()) + makeStr(manifestFile), makeNoPos()) ))); /* Instantiate it. */ |