def get_rev_deps(self, name, repo=None): try: rvdb = self.rvdb.get_item(name, repo) except BaseException: # FIXME: what exception could we catch here, replace with that. return [] rev_deps = [] for pkg, dep in rvdb: node = xmlext.parseString(dep) dependency = inary.analyzer.dependency.Dependency() dependency.package = xmlext.getNodeText(node) if xmlext.getAttributeList(node): if xmlext.getNodeAttribute(node, "version"): dependency.__dict__["version"] = xmlext.getNodeAttribute( node, "version") elif xmlext.getNodeAttribute(node, "release"): dependency.__dict__["release"] = xmlext.getNodeAttribute( node, "release") else: pass # FIXME: ugly rev_deps.append((pkg, dependency)) return rev_deps
def get_version_and_distro_release(self, name, repo=None): if not self.has_package(name, repo): raise Exception(_('Package \"{}\" not found.').format(name)) pkg_doc = xmlext.parseString(self.pdb.get_item(name, repo)) return self.__get_version(pkg_doc) + self.__get_distro_release(pkg_doc)
def get_last_date(self, name, repo=None): if not self.has_package(name, repo): raise Exception(_('Package \"{}\" not found.').format(name)) pkg_doc = xmlext.parseString(self.pdb.get_item(name, repo)) return self.__get_last_date(pkg_doc)
def get_replaces(self, repo=None): pairs = {} for pkg_name in self.rpdb.get_list_item(): xml = self.pdb.get_item(pkg_name, repo) package = xmlext.parseString(str(xml)) replaces_tag = xmlext.getNode(package, "Replaces") if replaces_tag: for node in xmlext.getTagByName(replaces_tag, "Package"): r = inary.data.relation.Relation() # XXX Is there a better way to do this? r.decode(node, []) if inary.data.replace.installed_package_replaced(r): pairs.setdefault(r.package, []).append(pkg_name) return pairs
def __make_dependency(depStr): node = xmlext.parseString(depStr) dependency = inary.analyzer.dependency.Dependency() dependency.package = xmlext.getNodeText(node) if xmlext.getAttributeList(node): if xmlext.getNodeAttribute(node, "version"): dependency.__dict__["version"] = xmlext.getNodeAttribute( node, "version") elif xmlext.getNodeAttribute(node, "release"): dependency.__dict__["release"] = xmlext.getNodeAttribute( node, "release") else: pass #FIXME: ugly return dependency