diff --git a/src/python/jw/pkg/cmds/projects/CmdBuild.py b/src/python/jw/pkg/cmds/projects/CmdBuild.py index 3972bda5..6677e71b 100644 --- a/src/python/jw/pkg/cmds/projects/CmdBuild.py +++ b/src/python/jw/pkg/cmds/projects/CmdBuild.py @@ -94,6 +94,14 @@ class CmdBuild(Cmd): # export @override async def _run(self, args: Namespace) -> None: + @lru_cache(maxsize = None) + def proj_dir(module: str) -> str | None: + return self.app.find_dir( + module, + pretty = False, + projs_roots = [self.app.projs_root], + ) + @lru_cache(maxsize = None) def read_deps(cur: str, dep_flavour: str) -> list[str]: # dep cache doesn't make a difference at all @@ -172,20 +180,27 @@ class CmdBuild(Cmd): # export dep_tree[k].remove(d) return 1 + def log_skip(module: str, msg: str) -> None: + title = f'---- {module}' + log(NOTICE, f',{title} >') + log(NOTICE, f'| {msg}<') + log(NOTICE, f'`{title} <') + async def run_make( module: str, target: str, cur_project: int, num_projects: int ) -> None: patt = self.app.is_excluded_from_build(module) if patt is not None: - title = f'---- {module}' - log(NOTICE, f',{title} >') - log(NOTICE, f'| Configured to skip build on platform >{patt}<') - log(NOTICE, f'`{title} <') + log_skip(module, f'Configured to skip build on platform >{patt}<') + return + + wd = proj_dir(module) + if wd is None: + log_skip(module, 'Skipping: No buildable project directory') return make_cmd = ['make', target] - wd = self.app.find_dir(module, pretty = False) title = '---- [%d/%d]: Running "%s" in %s -' % ( cur_project, num_projects,