62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | import pathlib | ||
|  | 
 | ||
|  | def skip_example(example, board): | ||
|  |     ex_dir = pathlib.Path('examples/') / example | ||
|  |     bsp = pathlib.Path("hw/bsp") | ||
|  | 
 | ||
|  |     board_dir = list(bsp.glob("*/boards/" + board)) | ||
|  |     if not board_dir: | ||
|  |         # Skip unknown boards | ||
|  |         return True | ||
|  | 
 | ||
|  |     board_dir = list(board_dir)[0] | ||
|  |      | ||
|  |     family_dir = board_dir.parent.parent | ||
|  |     family = family_dir.name | ||
|  | 
 | ||
|  |     # family CMake | ||
|  |     family_mk = family_dir / "family.cmake" | ||
|  | 
 | ||
|  |     # family.mk | ||
|  |     if not family_mk.exists(): | ||
|  |         family_mk = family_dir / "family.mk" | ||
|  | 
 | ||
|  |     mk_contents = family_mk.read_text() | ||
|  | 
 | ||
|  |     # Find the mcu | ||
|  |     if "CFG_TUSB_MCU=OPT_MCU_" not in mk_contents: | ||
|  |         board_mk = board_dir / "board.cmake" | ||
|  |         if not board_mk.exists(): | ||
|  |             board_mk = board_dir / "board.mk" | ||
|  | 
 | ||
|  |         mk_contents = board_mk.read_text() | ||
|  | 
 | ||
|  |     for token in mk_contents.split(): | ||
|  |         if "CFG_TUSB_MCU=OPT_MCU_" in token: | ||
|  |             # Strip " because cmake files has them. | ||
|  |             token = token.strip("\"") | ||
|  |             _, opt_mcu = token.split("=") | ||
|  |             mcu = opt_mcu[len("OPT_MCU_"):] | ||
|  | 
 | ||
|  |     # Skip all OPT_MCU_NONE these are WIP port | ||
|  |     if mcu == "NONE": | ||
|  |         return True | ||
|  | 
 | ||
|  |     skip_file = ex_dir / "skip.txt" | ||
|  |     only_file = ex_dir / "only.txt" | ||
|  | 
 | ||
|  |     if skip_file.exists() and only_file.exists(): | ||
|  |         raise RuntimeError("Only have a skip or only file. Not both.") | ||
|  |     elif skip_file.exists(): | ||
|  |         skips = skip_file.read_text().split() | ||
|  |         return ("mcu:" + mcu in skips or | ||
|  |                 "board:" + board in skips or | ||
|  |                 "family:" + family in skips) | ||
|  |     elif only_file.exists(): | ||
|  |         onlys = only_file.read_text().split() | ||
|  |         return not ("mcu:" + mcu in onlys or | ||
|  |                     "board:" + board in onlys or | ||
|  |                     "family:" + family in onlys) | ||
|  | 
 | ||
|  |     return False |