def __get_last_date(meta_doc): history = xmlext.getNode(meta_doc, 'History') update = xmlext.getNode(history, 'Update') date = xmlext.getNodeText(update, 'Date') return date
def __get_release(meta_doc): history = xmlext.getNode(meta_doc, 'History') update = xmlext.getNode(history, 'Update') release = xmlext.getNodeAttribute(update, 'release') return release
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 __get_version(meta_doc): history = xmlext.getNode(meta_doc, 'History') update = xmlext.getNode(history, 'Update') version = xmlext.getNodeText(update, 'Version') release = xmlext.getNodeAttribute(update, 'release') return version, release, None
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 __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 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
def get_binary_repos(self, only_active=True): repos = [] for r in self.list_repos(only_active): if not xmlext.getNode(self.get_repo_doc(r), "SpecFile"): repos.append(r) return repos
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 __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 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 __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 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 __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 decode(node, errs, where): node = xmlext.getNode(node, tag) if node: try: obj = make_object() obj.decode(node, errs, where) return obj except Error: errs.append(where + ': ' + _('Type mismatch: DOM cannot be decoded.')) else: if req == mandatory: errs.append(where + ': ' + _('Mandatory argument not available.')) return None
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 __get_distro_release(meta_doc): package = xmlext.getNode(meta_doc, 'Package') distro = xmlext.getNodeText(package, 'Distribution') release = xmlext.getNodeText(package, 'DistributionRelease') return distro, release
def get_distribution(self, name): doc = self.get_repo_doc(name) distro = xmlext.getNode(doc, "Distribution") return distro and xmlext.getNodeText(distro, "SourceName")
def get_distribution_release(self, name): doc = self.get_repo_doc(name) distro = xmlext.getNode(doc, "Distribution") return distro and xmlext.getNodeText(distro, "Version")
def __get_install_tar_hash(meta_doc): package = xmlext.getNode(meta_doc, 'Package') hash = xmlext.getNodeText(package, 'InstallTarHash') return hash