def do_cycle(self, subcmd, opts, *args): """${cmd_name}: Try to visualize build dependencies between the package list specified Examples: osc cycle <pkg1> <pkg2> <pkg3> # outputs a dot file showing the relation between the listed packages """ if len(args) == 0: print("No packages were specified, no chain to draw") apiurl = self.get_api_url() print("digraph depgraph {") for pkgname in args: pkgname = pkgname.strip(',') if len(pkgname) == 0: continue try: deps = ET.fromstring( get_dependson(apiurl, "openSUSE:Factory", "standard", "x86_64", [pkgname])) pkg = deps.find('package') print("\"%s\"" % pkgname) for deps in pkg.findall('pkgdep'): if deps.text in args: print("\"%s\" -> \"%s\"" % (deps.text, pkgname)) except: # Ignore packages that do not exist print("[color=red]") continue print("}")
def depends_on(apiurl, project, repository, packages=None, reverse=None): dependencies = set() for arch in target_archs(apiurl, project): root = ET.fromstring(get_dependson(apiurl, project, repository, arch, packages, reverse)) dependencies.update(pkgdep.text for pkgdep in root.findall('.//pkgdep')) return dependencies
def depends_on(apiurl, project, repository, packages=None, reverse=None): dependencies = set() for arch in target_archs(apiurl, project, repository): root = ET.fromstring(get_dependson(apiurl, project, repository, arch, packages, reverse)) dependencies.update(pkgdep.text for pkgdep in root.findall('.//pkgdep')) return dependencies
def do_cycle(self, subcmd, opts, *args): """${cmd_name}: Try to visualize build dependencies between the package list specified Examples: osc cycle <pkg1> <pkg2> <pkg3> # outputs a dot file showing the relation between the listed packages """ if len(args) == 0: print("No packages were specified, no chain to draw") apiurl = self.get_api_url() print("digraph depgraph {") args = [pkg.strip() for pkglist in args for pkg in pkglist.split(',') if pkg.strip()] for pkgname in args: try: deps = ET.fromstring(get_dependson(apiurl, opts.project, opts.repository, opts.arch, [pkgname])) pkg = deps.find('package') print("\"%s\"" % pkgname) for deps in pkg.findall('pkgdep'): if deps.text in args: print("\"%s\" -> \"%s\"" % (deps.text, pkgname)) except: # Ignore packages that do not exist print("[color=red]") continue print("}")
def do_cycle(self, subcmd, opts, *args): """${cmd_name}: Try to visualize build dependencies between the package list specified Examples: osc cycle <pkg1> <pkg2> <pkg3> # outputs a dot file showing the relation between the listed packages """ if len(args) == 0: print("No packages were specified, no chain to draw") apiurl = self.get_api_url() print("digraph depgraph {") args = [ pkg.strip() for pkglist in args for pkg in pkglist.split(',') if pkg.strip() ] for pkgname in args: try: deps = ET.fromstring( get_dependson(apiurl, opts.project, opts.repository, opts.arch, [pkgname])) pkg = deps.find('package') print("\"%s\"" % pkgname) for deps in pkg.findall('pkgdep'): if deps.text in args: print("\"%s\" -> \"%s\"" % (deps.text, pkgname)) except HTTPError: # Ignore packages that do not exist print("[color=red]") continue print("}")