33from typing import Dict , List , Optional
44
55from acbs .const import TMP_DIR
6- from acbs .parser import ACBSPackageInfo , ACBSSourceInfo , parse_package
6+ from acbs .parser import ACBSPackageInfo , ACBSSourceInfo , parse_package , check_buildability
77from acbs .utils import make_build_dir
88
99
@@ -48,6 +48,24 @@ def check_package_group(name: str, search_path: str, entry_path: str, modifiers:
4848 return None
4949
5050
51+ def filter_unbuildable_packages (packages : List [ACBSPackageInfo ], group_name : Optional [str ]= None ) -> List [ACBSPackageInfo ]:
52+ """Filter out packages that are not buildable."""
53+ filtered_packages = []
54+ unbuildable = []
55+ for package in packages :
56+ if check_buildability (package ):
57+ filtered_packages .append (package )
58+ else :
59+ unbuildable .append (package .name )
60+ if unbuildable :
61+ logging .warning (
62+ "The following packages %swill be skipped as they are not buildable:\n \t %s" ,
63+ f"(in { group_name } ) " if group_name else "" ,
64+ " " .join (unbuildable ),
65+ )
66+ return filtered_packages
67+
68+
5169def find_package (name : str , search_path : str , modifiers : str , tmp_dir : str = TMP_DIR ) -> List [ACBSPackageInfo ]:
5270 if os .path .isfile (os .path .join (search_path , name )):
5371 with open (os .path .join (search_path , name ), 'rt' ) as f :
@@ -66,7 +84,7 @@ def find_package(name: str, search_path: str, modifiers: str, tmp_dir: str = TMP
6684 f'Package { p } requested in { name } was not found.' )
6785 results .extend (found )
6886 print ()
69- return results
87+ return filter_unbuildable_packages ( results , group_name = name )
7088 return find_package_inner (name , search_path , modifiers = modifiers , tmp_dir = tmp_dir )
7189
7290
0 commit comments