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)
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)
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_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))
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
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
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 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"])