| 
									
										
										
										
											2009-02-09 16:51:03 +00:00
										 |  |  | # Functions for copying sources to the Nix store. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let lib = import ./default.nix; in | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rec { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Bring in a path as a source, filtering out all Subversion and CVS | 
					
						
							|  |  |  |   # directories, as well as backup files (*~). | 
					
						
							|  |  |  |   cleanSource = | 
					
						
							|  |  |  |     let filter = name: type: let baseName = baseNameOf (toString name); in ! ( | 
					
						
							|  |  |  |       # Filter out Subversion and CVS directories. | 
					
						
							| 
									
										
										
										
											2014-02-03 23:43:54 +01:00
										 |  |  |       (type == "directory" && (baseName == ".git" || baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) || | 
					
						
							| 
									
										
										
										
											2009-02-09 16:51:03 +00:00
										 |  |  |       # Filter out backup files. | 
					
						
							| 
									
										
										
										
											2014-02-06 12:30:03 +01:00
										 |  |  |       lib.hasSuffix "~" baseName || | 
					
						
							|  |  |  |       # Filter out generates files. | 
					
						
							|  |  |  |       lib.hasSuffix ".o" baseName || | 
					
						
							|  |  |  |       lib.hasSuffix ".so" baseName | 
					
						
							| 
									
										
										
										
											2009-02-09 16:51:03 +00:00
										 |  |  |     ); | 
					
						
							|  |  |  |     in src: builtins.filterSource filter src; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Get all files ending with the specified suffices from the given | 
					
						
							| 
									
										
										
										
											2014-08-25 14:33:17 +02:00
										 |  |  |   # directory or its descendants.  E.g. `sourceFilesBySuffices ./dir | 
					
						
							|  |  |  |   # [".xml" ".c"]'. | 
					
						
							| 
									
										
										
										
											2009-02-09 16:51:03 +00:00
										 |  |  |   sourceFilesBySuffices = path: exts: | 
					
						
							|  |  |  |     let filter = name: type: | 
					
						
							|  |  |  |       let base = baseNameOf (toString name); | 
					
						
							| 
									
										
										
										
											2014-08-25 14:33:17 +02:00
										 |  |  |       in type == "directory" || lib.any (ext: lib.hasSuffix ext base) exts; | 
					
						
							| 
									
										
										
										
											2009-02-09 16:51:03 +00:00
										 |  |  |     in builtins.filterSource filter path; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |