From a3e6415ba8cf1b8d2a1db40c06997d997eac8afc Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 12 Dec 2006 23:05:01 +0000 Subject: * New primop builtins.filterSource, which can be used to filter files from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way. --- tests/Makefile.am | 4 +++- tests/filter-source.nix.in | 7 +++++++ tests/filter-source.sh | 13 +++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/filter-source.nix.in create mode 100644 tests/filter-source.sh (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 4b56d0226878..d4c39ca5f0c1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -15,12 +15,13 @@ user-envs.sh: user-envs.nix fixed.sh: fixed.nix gc-runtime.sh: gc-runtime.nix check-refs.sh: check-refs.nix +filter-source.sh: filter-source.nix TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \ locking.sh parallel.sh build-hook.sh substitutes.sh substitutes2.sh \ fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \ referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \ - gc-runtime.sh install-package.sh check-refs.sh + gc-runtime.sh install-package.sh check-refs.sh filter-source.sh XFAIL_TESTS = @@ -44,5 +45,6 @@ EXTRA_DIST = $(TESTS) \ fixed.nix.in fixed.builder1.sh fixed.builder2.sh \ gc-runtime.nix.in gc-runtime.builder.sh \ check-refs.nix.in \ + filter-source.nix.in \ $(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) \ common.sh.in diff --git a/tests/filter-source.nix.in b/tests/filter-source.nix.in new file mode 100644 index 000000000000..2b5c23d31765 --- /dev/null +++ b/tests/filter-source.nix.in @@ -0,0 +1,7 @@ +derivation { + name = "filter"; + system = "@system@"; + builder = "@shell@"; + args = ["-e" "-x" (builtins.toFile "builder" "PATH=@testPath@; ln -s $input $out")]; + input = builtins.filterSource (path: baseNameOf (toString path) != "foo") ./test-tmp/filterin; +} diff --git a/tests/filter-source.sh b/tests/filter-source.sh new file mode 100644 index 000000000000..4880969ba7ad --- /dev/null +++ b/tests/filter-source.sh @@ -0,0 +1,13 @@ +source common.sh + +rm -rf $TEST_ROOT/filterin +mkdir $TEST_ROOT/filterin +mkdir $TEST_ROOT/filterin/foo +touch $TEST_ROOT/filterin/foo/bar +touch $TEST_ROOT/filterin/xyzzy + +$NIX_BIN_DIR/nix-build ./filter-source.nix -o $TEST_ROOT/filterout + +set -x +test ! -e $TEST_ROOT/filterout/foo/bar +test -e $TEST_ROOT/filterout/xyzzy -- cgit 1.4.1