* 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.
			
			
This commit is contained in:
		
							parent
							
								
									b438d37558
								
							
						
					
					
						commit
						a3e6415ba8
					
				
					 19 changed files with 143 additions and 68 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
							
								
								
									
										7
									
								
								tests/filter-source.nix.in
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tests/filter-source.nix.in
									
										
									
									
									
										Normal file
									
								
							|  | @ -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; | ||||
| } | ||||
							
								
								
									
										13
									
								
								tests/filter-source.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								tests/filter-source.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue