68 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| with import ./config.nix;
 | |
| 
 | |
| rec {
 | |
| 
 | |
|   a = mkDerivation {
 | |
|     name = "multiple-outputs-a";
 | |
|     outputs = [ "first" "second" ];
 | |
|     builder = builtins.toFile "builder.sh"
 | |
|       ''
 | |
|         mkdir $first $second
 | |
|         test -z $all
 | |
|         echo "first" > $first/file
 | |
|         echo "second" > $second/file
 | |
|         ln -s $first $second/link
 | |
|       '';
 | |
|     helloString = "Hello, world!";
 | |
|   };
 | |
| 
 | |
|   b = mkDerivation {
 | |
|     defaultOutput = assert a.second.helloString == "Hello, world!"; a;
 | |
|     firstOutput = assert a.outputName == "first"; a.first.first;
 | |
|     secondOutput = assert a.second.outputName == "second"; a.second.first.first.second.second.first.second;
 | |
|     allOutputs = a.all;
 | |
|     name = "multiple-outputs-b";
 | |
|     builder = builtins.toFile "builder.sh"
 | |
|       ''
 | |
|         mkdir $out
 | |
|         test "$firstOutput $secondOutput" = "$allOutputs"
 | |
|         test "$defaultOutput" = "$firstOutput"
 | |
|         test "$(cat $firstOutput/file)" = "first"
 | |
|         test "$(cat $secondOutput/file)" = "second"
 | |
|         echo "success" > $out/file
 | |
|       '';
 | |
|   };
 | |
| 
 | |
|   c = mkDerivation {
 | |
|     name = "multiple-outputs-c";
 | |
|     drv = b.drvPath;
 | |
|     builder = builtins.toFile "builder.sh"
 | |
|       ''
 | |
|         mkdir $out
 | |
|         ln -s $drv $out/drv
 | |
|       '';
 | |
|   };
 | |
| 
 | |
|   d = mkDerivation {
 | |
|     name = "multiple-outputs-d";
 | |
|     drv = builtins.unsafeDiscardOutputDependency b.drvPath;
 | |
|     builder = builtins.toFile "builder.sh"
 | |
|       ''
 | |
|         mkdir $out
 | |
|         echo $drv > $out/drv
 | |
|       '';
 | |
|   };
 | |
| 
 | |
|   cyclic = (mkDerivation {
 | |
|     name = "cyclic-outputs";
 | |
|     outputs = [ "a" "b" "c" ];
 | |
|     builder = builtins.toFile "builder.sh"
 | |
|       ''
 | |
|         mkdir $a $b $c
 | |
|         echo $a > $b/foo
 | |
|         echo $b > $c/bar
 | |
|         echo $c > $a/baz
 | |
|       '';
 | |
|   }).a;
 | |
| 
 | |
| }
 |