Пример #1
0
    def get_install_tar_hash(self, package):
        metadata_xml = os.path.join(self.package_path(package),
                                    ctx.const.metadata_xml)

        meta_doc = xmlext.parse(metadata_xml)

        return self.__get_install_tar_hash(meta_doc)
Пример #2
0
    def get_version(self, package):
        metadata_xml = os.path.join(self.package_path(package),
                                    ctx.const.metadata_xml)

        meta_doc = xmlext.parse(metadata_xml)

        return self.__get_version(meta_doc)
Пример #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)
Пример #4
0
    def get_repo_doc(self, repo_name):
        repo = self.get_repo(repo_name)

        index_path = repo.indexuri.get_uri()

        # FIXME Local index files should also be cached.
        if File.is_compressed(index_path) or repo.indexuri.is_remote_file():
            index = os.path.basename(index_path)
            index_path = util.join_path(ctx.config.index_dir(), repo_name,
                                        index)

            if File.is_compressed(index_path):
                index_path = os.path.splitext(index_path)[0]

        if not os.path.exists(index_path):
            ctx.ui.warning(
                _("{} repository needs to be updated").format(repo_name))
            return xmlext.newDocument("INARY")

        try:
            return xmlext.parse(index_path)
        except Exception as e:
            raise RepoError(
                _("Error parsing repository index information: {} \n Index file does not exist or is malformed."
                  ).format(e))
Пример #5
0
def domodules(filepath):
    doc = xmlext.parse(filepath)
    for item in xmlext.getAllNodes("File"):
        path = xmlext.getNodeText(item, "Path")
        if path.startswith("lib/modules/"):
            kernelVersion = path.split("/")[2]
            subprocess.call(["/sbin/depmod", "-a", kernelVersion])
            return
Пример #6
0
    def _get_doc(self):
        if self._doc is None:
            repos_file = os.path.join(ctx.config.info_dir(), ctx.const.repos)
            if os.path.exists(repos_file):
                self._doc = xmlext.parse(repos_file)

            else:
                self._doc = xmlext.newDocument("REPOS")

        return self._doc
Пример #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
Пример #8
0
def doinfo(filepath, remove=False):
    # install-info is broken with i18n :(
    os.environ["LC_ALL"] = "C"

    doc = xmlext.parse(filepath)
    for item in xmlext.getAllNodes(doc, "File"):
        path = xmlext.getNodeText(item, "Path")
        if path.startswith("usr/share/info") and path.endswith(
            (".info", ".info.gz")):
            if remove:
                subprocess.call([
                    "install-info", "--delete",
                    "/%s" % path, "/usr/share/info/dir"
                ])
            else:
                subprocess.call(
                    ["install-info",
                     "/%s" % path, "/usr/share/info/dir"])