Example #1
0
    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
Example #2
0
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)
Example #3
0
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)