forked from lix-project/lix
Merge branch 'readfile' of https://github.com/abbradar/nix
This commit is contained in:
commit
f39d94a55b
|
@ -1470,7 +1470,11 @@ static void prim_readFile(EvalState & state, const Pos & pos, Value * * args, Va
|
||||||
string s = readFile(path);
|
string s = readFile(path);
|
||||||
if (s.find((char) 0) != string::npos)
|
if (s.find((char) 0) != string::npos)
|
||||||
throw Error("the contents of the file '%1%' cannot be represented as a Nix string", path);
|
throw Error("the contents of the file '%1%' cannot be represented as a Nix string", path);
|
||||||
v.mkString(s);
|
auto refs = state.store->isInStore(path) ?
|
||||||
|
state.store->queryPathInfo(state.store->toStorePath(path).first)->references :
|
||||||
|
StorePathSet{};
|
||||||
|
auto context = state.store->printStorePathSet(refs);
|
||||||
|
v.mkString(s, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
static RegisterPrimOp primop_readFile({
|
static RegisterPrimOp primop_readFile({
|
||||||
|
|
|
@ -59,7 +59,8 @@ nix_tests = \
|
||||||
ca/recursive.sh \
|
ca/recursive.sh \
|
||||||
ca/concurrent-builds.sh \
|
ca/concurrent-builds.sh \
|
||||||
ca/nix-copy.sh \
|
ca/nix-copy.sh \
|
||||||
eval-store.sh
|
eval-store.sh \
|
||||||
|
readfile-context.sh
|
||||||
# parallel.sh
|
# parallel.sh
|
||||||
|
|
||||||
ifeq ($(HAVE_LIBCPUID), 1)
|
ifeq ($(HAVE_LIBCPUID), 1)
|
||||||
|
|
1
tests/readfile-context.builder.sh
Normal file
1
tests/readfile-context.builder.sh
Normal file
|
@ -0,0 +1 @@
|
||||||
|
echo "$input" > $out
|
19
tests/readfile-context.nix
Normal file
19
tests/readfile-context.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
with import ./config.nix;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
input = import ./simple.nix;
|
||||||
|
|
||||||
|
dependent = mkDerivation {
|
||||||
|
name = "dependent";
|
||||||
|
builder = ./readfile-context.builder.sh;
|
||||||
|
input = "${input}/hello";
|
||||||
|
};
|
||||||
|
|
||||||
|
readDependent = mkDerivation {
|
||||||
|
name = "read-dependent";
|
||||||
|
builder = ./readfile-context.builder.sh;
|
||||||
|
input = builtins.readFile dependent;
|
||||||
|
};
|
||||||
|
|
||||||
|
in readDependent
|
16
tests/readfile-context.sh
Normal file
16
tests/readfile-context.sh
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
clearStore
|
||||||
|
|
||||||
|
outPath=$(nix-build --no-out-link readfile-context.nix)
|
||||||
|
|
||||||
|
# Set a GC root.
|
||||||
|
ln -s $outPath "$NIX_STATE_DIR"/gcroots/foo
|
||||||
|
|
||||||
|
# Check that file exists.
|
||||||
|
[ "$(cat $(cat $outPath))" = "Hello World!" ]
|
||||||
|
|
||||||
|
nix-collect-garbage
|
||||||
|
|
||||||
|
# Check that file still exists.
|
||||||
|
[ "$(cat $(cat $outPath))" = "Hello World!" ]
|
Loading…
Reference in a new issue