def installLocal(self, pkg, po=None, updateonly=False): if not self.ts: self.__initialize_transaction() solvfile = "%s/.solv" % (self.creator.cachedir) rc, out = runner.runtool( [fs_related.find_binary_path("rpms2solv"), pkg]) if rc == 0: f = open(solvfile, "w+") f.write(out) f.close() warnmsg = self.repo_manager.loadSolvFile(solvfile, os.path.basename(pkg)) if warnmsg: msger.warning(warnmsg) os.unlink(solvfile) else: msger.warning('Can not get %s solv data.' % pkg) hdr = rpmmisc.readRpmHeader(self.ts, pkg) arch = zypp.Arch(hdr['arch']) if self.creator.target_arch == None: # TODO, get the default_arch from conf or detected from global settings sysarch = zypp.Arch('i686') else: sysarch = zypp.Arch(self.creator.target_arch) if arch.compatible_with(sysarch): pkgname = hdr['name'] self.localpkgs[pkgname] = pkg self.selectPackage(pkgname) msger.info("Marking %s to be installed" % (pkg)) else: msger.warning( "Cannot add package %s to transaction. Not a compatible architecture: %s" % (pkg, hdr['arch']))
def _splitPkgString(self, pkg): sp = pkg.rsplit(".", 1) name = sp[0] arch = None if len(sp) == 2: arch = sp[1] sysarch = zypp.Arch(self.target_arch) if not zypp.Arch(arch).compatible_with (sysarch): arch = None name = ".".join(sp) return name, arch
def _splitPkgString(self, pkg): sp = pkg.rsplit(".", 1) name = sp[0] arch = None if len(sp) == 2: arch = sp[1] if self.creator.target_arch == None: # TODO, get the default_arch from conf or detected from global settings sysarch = zypp.Arch('i686') else: sysarch = zypp.Arch(self.creator.target_arch) if not zypp.Arch(arch).compatible_with(sysarch): arch = None name = ".".join(sp) return name, arch
def _splitPkgString(self, pkg): flags = [">=", "<=", "=", ">", "<"] evr = None f = None for flag in flags: if flag in pkg: f = flag pkg, evr = pkg.rsplit(flag,1) break sp = pkg.rsplit(".",1) name = sp[0] arch = None if len(sp) == 2: arch = sp[1] sysarch = zypp.Arch(self.target_arch) if not zypp.Arch(arch).compatible_with (sysarch): arch = None name = ".".join(sp) return name, arch, f, evr
def __initialize_zypp(self): if self.Z: return zconfig = zypp.ZConfig_instance() """ Set system architecture """ if self.creator.target_arch: zconfig.setSystemArchitecture(zypp.Arch(self.creator.target_arch)) msger.info("zypp architecture is <%s>" % zconfig.systemArchitecture()) """ repoPackagesCachePath is corrected by this """ self.repo_manager = zypp.RepoManager(self.repo_manager_options) repos = self.repo_manager.knownRepositories() for repo in repos: if not repo.enabled(): continue self.repo_manager.loadFromCache(repo) self.Z = zypp.ZYppFactory_instance().getZYpp() self.Z.initializeTarget(zypp.Pathname(self.creator._instroot)) self.Z.target().load()