aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libexpr/primops.cc4
-rw-r--r--src/libstore/derivations.cc8
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);
}