def __add_to_revdeps(self, package, revdeps): metadata_xml = os.path.join(self.package_path(package), ctx.const.metadata_xml) meta_doc = xmlext.parse(metadata_xml) try: pkg = xmlext.getNode(meta_doc, "Package") except: pkg = None if pkg is None: # If package info is broken or not available, skip it. ctx.ui.warning( _("Installation info for package \"{}\" is broken. " "Reinstall it to fix this problem.").format(package)) del self.installed_db[package] return deps = xmlext.getNode(pkg, 'RuntimeDependencies') if deps: for dep in xmlext.getTagByName(deps, 'Dependency'): revdep = revdeps.setdefault(xmlext.getNodeText(dep), {}) revdep[package] = xmlext.toString(dep) for anydep in xmlext.getTagByName(deps, 'AnyDependency'): for dep in xmlext.getTagByName(anydep, 'Dependency'): revdep = revdeps.setdefault(xmlext.getNodeText(dep), {}) revdep[package] = xmlext.toString(anydep)
def _set_i18n(tag, inst): try: for summary in xmlext.getTagByName(tag, "Summary"): inst.summary[xmlext.getNodeAttribute( summary, "xml:lang")] = xmlext.getNodeText(summary) for desc in xmlext.getTagByName(tag, "Description"): inst.description[xmlext.getNodeAttribute( desc, "xml:lang")] = xmlext.getNodeText(desc) except AttributeError as e: raise Error( _("translations.xml file is badly formed.: {}").format(e))
def __generate_revdeps(doc): revdeps = {} for node in xmlext.getTagByName(doc, "Package"): name = xmlext.getNodeText(node, 'Name') deps = xmlext.getNode(node, 'RuntimeDependencies') if deps: for dep in xmlext.getTagByName(deps, "Dependency"): revdeps.setdefault(xmlext.getNodeText(dep), set()).add( (name, xmlext.toString(dep))) return revdeps
def get_isa_packages(isa): repodb = inary.db.repodb.RepoDB() packages = set() for repo in repodb.list_repos(): doc = repodb.get_repo_doc(repo) for package in xmlext.getTagByName(doc, "Package"): if xmlext.getNodeText(package, "IsA"): for node in xmlext.getTagByName(package, "IsA"): if xmlext.getNodeText(node) == isa: packages.add(xmlext.getNodeText(package, "Name")) return list(packages)
def __generate_revdeps(doc): revdeps = {} for spec in xmlext.getTagByName(doc, "SpecFile"): src = xmlext.getNode(spec, "Source") name = xmlext.getNodeText(src, "Name") deps = xmlext.getNode(src, "BuildDependencies") if deps: for dep in xmlext.getTagByName(deps, "Dependency"): revdeps.setdefault(xmlext.getNodeText(dep), set()).add( (name, xmlext.toString(dep))) return revdeps
def __generate_sources(doc): sources = {} pkgstosrc = {} for spec in xmlext.getTagByName(doc, "SpecFile"): src = xmlext.getNode(spec, "Source") src_name = xmlext.getNodeText(src, "Name") compressed_data = gzip.zlib.compress( xmlext.toString(spec).encode('utf-8')) sources[src_name] = compressed_data for package in xmlext.getTagByName(spec, "Package"): pkgstosrc[xmlext.getNodeText(package, "Name")] = src_name return sources, pkgstosrc
def __generate_replaces(doc): replaces = [] packages = xmlext.getTagByName(doc, "Package") for node in packages: if xmlext.getNodeText(node, "Replaces"): replaces.append(xmlext.getNodeText(node, "Name")) return replaces
def __generate_components(doc): components = {} component = xmlext.getTagByName(doc, "Component") for comp in component: name = xmlext.getNodeText(comp, "Name") components[name] = xmlext.toString(comp) return components
def __generate_groups(doc): groups = {} group = xmlext.getTagByName(doc, "Group") for gr in group: name = xmlext.getNodeText(gr, "Name") groups[name] = xmlext.toString(gr) return groups
def __generate_components(doc): groups = {} components = xmlext.getTagByName(doc, "Component") for comp in components: group = xmlext.getNodeText(comp, "Group") name = xmlext.getNodeText(comp, "Name") groups.setdefault(group, []).append(name) return groups
def __generate_packages(doc): components = {} packages = xmlext.getTagByName(doc, "Package") for pkg in packages: name = xmlext.getNodeText(pkg, "Name") partof = xmlext.getNodeText(pkg, "PartOf") components.setdefault(partof, []).append(name) return components
def __generate_packages(doc): pdict = {} for x in xmlext.getTagByName(doc, "Package"): name = xmlext.getNodeText(x, "Name") compressed_data = gzip.zlib.compress( xmlext.toString(x).encode('utf-8')) pdict[name] = compressed_data return pdict
def __generate_sources(doc): pdict = {} for x in xmlext.getTagByName(doc, "SpecFile"): source = xmlext.getNode(x, "Source") name = xmlext.getNodeText(source, "Name") compressed_data = gzip.zlib.compress( xmlext.toString(x).encode('utf-8')) pdict[name] = compressed_data return pdict
def _get_repos(self): repo_doc = self._get_doc() order = {} for r in xmlext.getTagByName(repo_doc, "Repo"): media = xmlext.getNodeText(r, "Media") name = xmlext.getNodeText(r, "Name") order.setdefault(media, []).append(name) return order
def __generate_sources(doc): components = {} specfile = xmlext.getTagByName(doc, "SpecFile") for spec in specfile: source = xmlext.getNode(spec, "Source") name = xmlext.getNodeText(source, "Name") partof = xmlext.getNodeText(source, "PartOf") components.setdefault(partof, []).append(name) return components
def __generate_obsoletes(doc): distribution = xmlext.getNode(doc, "Distribution") obsoletes = distribution and xmlext.getNode(distribution, "Obsoletes") src_repo = xmlext.getNode(doc, "SpecFile") is not None if not obsoletes or src_repo: return [] return [ xmlext.getNodeText(x) for x in xmlext.getTagByName(obsoletes, "Package") ]
def get_status(self, repo_name): repo_doc = self._get_doc() for r in xmlext.getTagByName(repo_doc, "Repo"): if xmlext.getNodeText(r, "Name") == repo_name: status_node = xmlext.getNode(r, "Status") if status_node: status = xmlext.getNodeText(status_node) if status in ["active", "inactive"]: return status return "inactive"
def set_status(self, repo_name, status): repo_doc = self._get_doc() for r in xmlext.getTagByName(repo_doc, "Repo"): if xmlext.getNodeText(r, "Name") == repo_name: status_node = xmlext.getNode(r, "Status") if status_node: xmlext.removeChild(status_node, r) xmlext.addText(r, "Status", status) else: xmlext.addText(r, "Status", status) self._update(repo_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 read_translations(self, path): if not os.path.exists(path): return doc = xmlext.parse(path) if xmlext.getNodeText(xmlext.getNode(doc, "Source"), "Name") == self.source.name: # Set source package translations self._set_i18n(xmlext.getNode(doc, "Source"), self.source) for pak in xmlext.getTagByName(doc, "Package"): for inst in self.packages: if inst.name == xmlext.getNodeText(pak, "Name"): self._set_i18n(pak, inst) break