Esempio n. 1
0
    def __get_last_date(meta_doc):
        history = xmlext.getNode(meta_doc, 'History')
        update = xmlext.getNode(history, 'Update')

        date = xmlext.getNodeText(update, 'Date')

        return date
Esempio n. 2
0
    def __get_release(meta_doc):
        history = xmlext.getNode(meta_doc, 'History')
        update = xmlext.getNode(history, 'Update')

        release = xmlext.getNodeAttribute(update, 'release')

        return release
Esempio n. 3
0
    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)
Esempio n. 4
0
    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
Esempio n. 5
0
    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")
        ]
Esempio n. 6
0
    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
Esempio n. 7
0
    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
Esempio n. 8
0
    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
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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"
Esempio n. 12
0
    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
Esempio n. 13
0
    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)
Esempio n. 14
0
    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
Esempio n. 15
0
 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
Esempio n. 16
0
    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
Esempio n. 17
0
    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
Esempio n. 18
0
 def get_distribution(self, name):
     doc = self.get_repo_doc(name)
     distro = xmlext.getNode(doc, "Distribution")
     return distro and xmlext.getNodeText(distro, "SourceName")
Esempio n. 19
0
    def get_distribution_release(self, name):
        doc = self.get_repo_doc(name)

        distro = xmlext.getNode(doc, "Distribution")
        return distro and xmlext.getNodeText(distro, "Version")
Esempio n. 20
0
 def __get_install_tar_hash(meta_doc):
     package = xmlext.getNode(meta_doc, 'Package')
     hash = xmlext.getNodeText(package, 'InstallTarHash')
     return hash