def get_build_dir(self, project_name): """ Get the build dir of a project """ toc = qibuild.toc.toc_open(self.test_dir, args=self.args) project = toc.get_project(project_name) return project.build_directory
def parse_project_arg(toc, arg): """ Parse one project arg. arg can be: * a absolute path to a qibuild project * the path to a qibuild project relative to the worktree root * a project name """ as_path = qisys.sh.to_native_path(arg) if os.path.exists(as_path): p_name = qibuild.project.project_from_dir(toc, directory=as_path, raises=False) if p_name: return toc.get_project(p_name) else: # Try a relative path to to root: as_path = os.path.join(toc.worktree.root, arg) if os.path.exists(as_path): p_name = qibuild.project.project_from_dir(toc, directory=as_path, raises=False) if p_name: return toc.get_project(p_name) # Assume it's a name: return toc.get_project(arg, raises=True)
def get_deps(toc, projects, single=False, runtime=False, build_deps=False): """ Get a list (packages, projects) from a toc object, some projects and some flags """ orig_list = [x.name for x in projects] if single: return (list(), projects) to_sort = dict() if build_deps: for project in toc.projects: to_sort[project.name] = project.depends elif runtime: for project in toc.projects: to_sort[project.name] = project.rdepends else: for project in toc.projects: to_sort[project.name] = project.rdepends.union(project.depends) names = topological_sort(to_sort, [x.name for x in projects]) package_names = list() if toc.toolchain: package_names = [x.name for x in toc.toolchain.packages] project_names = [x.name for x in toc.projects] r_projects = list() r_packages = list() for name in names: if name in orig_list: r_projects.append(toc.get_project(name)) elif name in package_names: r_packages.append(toc.get_package(name)) elif name in project_names: r_projects.append(toc.get_project(name)) return (r_packages, r_projects)