def sort_doxygen(self): """ Get a list of doxygen docs to build """ deps_tree = self.deps_tree["doxygen"] doc_names = topological_sort(deps_tree, self.doxydocs.keys()) return [self.get_doc("doxygen", d) for d in doc_names]
def sort_sphinx(self): """ Get a list of sphinx docs to build, in the correct order """ deps_tree = self.deps_tree["sphinx"] doc_names = topological_sort(deps_tree, self.sphinxdocs.keys()) return [self.get_doc("sphinx", d) for d in doc_names]
def get_intersphinx_mapping(self, name): """ Get the relevant intersphinx_mapping for the given name """ res = dict() deps_tree = self.deps_tree["sphinx"] doc_names = topological_sort(deps_tree, [name]) docs = [self.get_doc("sphinx", d) for d in doc_names] for doc in docs: # Remove self from the list: if doc.name != name: res[doc.name] = (doc.dest, None) return res
def get_doxygen_mapping(self, name): """ Get the relevant Doxygen TAGFILES setting """ doc = self.get_doc("doxygen", name) res = dict() deps_tree = self.deps_tree["doxygen"] dep_doc_names = topological_sort(deps_tree, [name]) dep_docs = [self.get_doc("doxygen", d) for d in dep_doc_names] for dep_doc in dep_docs: # Remove self from the list if dep_doc.name == name: continue doxytag_file = os.path.join(self.doxytags_path, dep_doc.name + ".tag") dep_dest = dep_doc.dest rel_path = os.path.relpath(dep_dest, doc.dest) res[doxytag_file] = rel_path return res
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)