From 6dca5c9099b92b6a93071197aa606a31ccd83a37 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 8 Mar 2006 16:03:58 +0000 Subject: * When obtaining derivations from Nix expressions, ignore all expressions that cause an assertion failure (like `assert system == "i686-linux"'). This allows all-packages.nix in Nixpkgs to be used on all platforms, even if some Nix expressions don't work on all platforms. Not sure if this is a good idea; it's a bit hacky. In particular, due to laziness some derivations might appear in `nix-env -qa' but disappear in `nix-env -qas' or `nix-env -i'. Commit 5000! --- src/libexpr/eval.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/libexpr/eval.cc') diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 045e5f632ff6..eac13c3fd980 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -383,7 +383,13 @@ Expr evalExpr(EvalState & state, Expr e) /* Otherwise, evaluate and memoize. */ state.normalForms.set(e, state.blackHole); - nf = evalExpr2(state, e); + try { + nf = evalExpr2(state, e); + } catch (Error & err) { + debug("removing black hole"); + state.normalForms.remove(e); + throw; + } state.normalForms.set(e, nf); return nf; } -- cgit 1.4.1