Example #1
0
 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']))
Example #2
0
 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
Example #3
0
 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
Example #4
0
    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
Example #5
0
    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()