From fcd9900d74b0eb3d57402c448ede2a411133fa46 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 1 Dec 2006 21:00:39 +0000 Subject: [PATCH] * Replace read-only calls to addTextToStore. --- src/libexpr/primops.cc | 4 +++- src/libstore/derivations.cc | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 17a04bc83..1d0d9c6b2 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -389,7 +389,9 @@ static Expr primToFile(EvalState & state, const ATermVector & args) refs.insert(*i); } - Path storePath = store->addTextToStore(name, contents, refs); + Path storePath = readOnlyMode + ? computeStorePathForText(name, contents) + : store->addTextToStore(name, contents, refs); /* Note: we don't need to add `context' to the context of the result, since `storePath' itself has references to the paths diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc index d159d47a5..aea95ef31 100644 --- a/src/libstore/derivations.cc +++ b/src/libstore/derivations.cc @@ -1,6 +1,7 @@ #include "derivations.hh" #include "store-api.hh" #include "aterm.hh" +#include "globals.hh" #include "derivations-ast.hh" #include "derivations-ast.cc" @@ -25,8 +26,11 @@ Path writeDerivation(const Derivation & drv, const string & name) /* Note that the outputs of a derivation are *not* references (that can be missing (of course) and should not necessarily be held during a garbage collection). */ - return store->addTextToStore(name + drvExtension, - atPrint(unparseDerivation(drv)), references); + string suffix = name + drvExtension; + string contents = atPrint(unparseDerivation(drv)); + return readOnlyMode + ? computeStorePathForText(suffix, contents) + : store->addTextToStore(suffix, contents, references); }