def buildMultiRootContext(self, installRoots, ainstConf, useRepo=False, repos=[]): repoSack = None if useRepo: repoSack = self._initRepos(ainstConf, repos) if repoSack is None: return None rootSack = None localSack = MultiPackageSack() for installRoot in installRoots: if installRoot == '/': rootSack = RPMDBPackageSack('/') else: sack = AinstPackageSackBuilder( installRoot).buildActivePkgSack() if sack is None: Log.cout( Log.DEBUG, 'Build active pkg sack of %s failed' % installRoot) continue localSack.addPackageSack(installRoot, sack) return AinstMultiRootContext(rootSack, localSack, repoSack)
def _initPackageSack(self): repoList = self.getEnabledRepo() self.packageSack = MultiPackageSack() for repo in repoList: packageSack = repo.getPackageSack() if packageSack: self.packageSack.addPackageSack(repo.id, packageSack)
def _initLocalRepos(self, repoSack, localRepos): if not localRepos: return True if not repoSack: repoSack = MultiPackageSack() for local in localRepos: fileNames = file_util.listDir(local) if not fileNames: continue pkgSack = PackageSack() for name in fileNames: path = local + '/' + name pkg = LocalRpmPackage(path) if pkg.init(): pkgSack.addPackageObject(pkg) repoSack.addPackageSack(local, pkgSack) return True
def buildAinstContext(self, installRoot, ainstConf, useRepo=True, repos=[], localRepos=[], localRoots=None, localActivePkgs=None, localDeactivePkgs=None): repoSack = None if useRepo: repoSack = self._initRepos(ainstConf, repos) self._initLocalRepos(repoSack, localRepos) self._initInstallRootRepos(repoSack, installRoot) if repoSack is None: return None rootSack = RPMDBPackageSack('/') localSacks = MultiPackageSack() if installRoot == '/': if localRoots: for localRoot in localRoots: builder = AinstPackageSackBuilder(localRoot) sack = builder.buildActivePkgSack() if sack is None: Log.cout( Log.DEBUG, 'Build active pkg sack of %s failed' % localRoot) continue localSacks.addPackageSack(localRoot, sack) else: builder = AinstPackageSackBuilder(installRoot) sack = builder.buildActivePkgSack() if sack is None: Log.cout(Log.DEBUG, 'Build active pkg sack of %s failed' % installRoot) else: localSacks.addPackageSack(installRoot, sack) self._addFakeLocalInstallPkgs(localActivePkgs, installRoot, localSacks) if not self._removeWillDeactivePkgs(localSacks, localDeactivePkgs): return None return AinstContextImpl(installRoot, repoSack, rootSack, localSacks)