diff --git a/src/libexpr/eval-cache.cc b/src/libexpr/eval-cache.cc index a1cb162ee..0eb4bc79e 100644 --- a/src/libexpr/eval-cache.cc +++ b/src/libexpr/eval-cache.cc @@ -648,7 +648,8 @@ std::vector AttrCursor::getListOfStrings() for (auto & elem : v.listItems()) res.push_back(std::string(root->state.forceStringNoCtx(*elem))); - cachedValue = {root->db->setListOfStrings(getKey(), res), res}; + if (root->db) + cachedValue = {root->db->setListOfStrings(getKey(), res), res}; return res; } diff --git a/tests/build.sh b/tests/build.sh index ff16d1603..fc6825e25 100644 --- a/tests/build.sh +++ b/tests/build.sh @@ -56,6 +56,13 @@ nix build -f multiple-outputs.nix --json 'e^*' --no-link | jq --exit-status ' (.outputs | keys == ["a", "b", "c"])) ' +# Make sure that `--impure` works (regression test for https://github.com/NixOS/nix/issues/6488) +nix build --impure -f multiple-outputs.nix --json e --no-link | jq --exit-status ' + (.[0] | + (.drvPath | match(".*multiple-outputs-e.drv")) and + (.outputs | keys == ["a", "b"])) +' + testNormalization () { clearStore outPath=$(nix-build ./simple.nix --no-out-link)