예제 #1
0
 def searchPkgs(self, pkg):
     if not pkg:
         return None
     name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
     repo2Pkgs = {}
     if self._rootSack:
         pkgs = self._rootSack.searchPkg(name, epoch, ver, rel, arch)
         repo2Pkgs.update({"/": pkgs})
     if self._localSack:
         repo2Pkgs.update(self._localSack.searchPkg2(name, epoch, ver, rel, arch))
     if self._repoSack:
         repo2Pkgs.update(self._repoSack.searchPkg2(name, epoch, ver, rel, arch))
     return repo2Pkgs
예제 #2
0
 def _selectInstalledPkgs(self, context, pkgs):
     removePkgs = []
     for pkg in pkgs:
         name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
         installRootpkgs = context.searchInstallRootPkgs(name, epoch, ver,
                                                         rel, arch)
         if not installRootpkgs:
             Log.cout(Log.WARNING, 'No installed [%s] in installRoot' % pkg)
             continue
         if len(installRootpkgs) > 1:
             Log.cout(Log.ERROR, 'Too many package: [%s] is installed' % pkg)
             return None
         removePkgs.append(installRootpkgs[0])
     return removePkgs
예제 #3
0
 def searchPkgs(self, pkg):
     if not pkg:
         return None
     name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
     repo2Pkgs = {}
     if self._rootSack:
         pkgs = self._rootSack.searchPkg(name, epoch, ver, rel, arch)
         repo2Pkgs.update({'/': pkgs})
     if self._localSack:
         repo2Pkgs.update(
             self._localSack.searchPkg2(name, epoch, ver, rel, arch))
     if self._repoSack:
         repo2Pkgs.update(
             self._repoSack.searchPkg2(name, epoch, ver, rel, arch))
     return repo2Pkgs
예제 #4
0
 def _selectInstalledPkgs(self, context, pkgs):
     removePkgs = []
     for pkg in pkgs:
         name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
         installRootpkgs = context.searchInstallRootPkgs(
             name, epoch, ver, rel, arch)
         if not installRootpkgs:
             Log.cout(Log.WARNING, 'No installed [%s] in installRoot' % pkg)
             continue
         if len(installRootpkgs) > 1:
             Log.cout(Log.ERROR,
                      'Too many package: [%s] is installed' % pkg)
             return None
         removePkgs.append(installRootpkgs[0])
     return removePkgs
예제 #5
0
    def _selectPkg(self, context, pkg):
        pkgs = []
        name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
        installRootPkgs = context.searchInstallRootPkgs(name, epoch, ver, rel, arch)
        if installRootPkgs:
            pkgs.extend(installRootPkgs)
        availablePkgs = context.searchAvailablePkgs(name, epoch, ver, rel, arch)

        if availablePkgs:
            pkgs.extend(availablePkgs)
        if not pkgs:
            return None
        sorter = PackageArchSorter(arch)
        pkgs = sorter.sort(pkgs)
        return pkgs[0]
예제 #6
0
    def _selectPkg(self, context, pkg):
        pkgs = []
        name, ver, rel, epoch, arch = rpmutils.splitPkgName3(pkg)
        installRootPkgs = context.searchInstallRootPkgs(
            name, epoch, ver, rel, arch)
        if installRootPkgs:
            pkgs.extend(installRootPkgs)
        availablePkgs = context.searchAvailablePkgs(name, epoch, ver, rel,
                                                    arch)

        if availablePkgs:
            pkgs.extend(availablePkgs)
        if not pkgs:
            return None
        sorter = PackageArchSorter(arch)
        pkgs = sorter.sort(pkgs)
        return pkgs[0]