Beispiel #1
0
 def _initInstallRootRepos(self, repoSack, installRoot):
     if installRoot == "/":
         return True
     builder = AinstPackageSackBuilder(installRoot)
     sack = builder.buildInstalledPkgRepoSack()
     if sack is None:
         Log.cout(Log.DEBUG, "Build install pkg sack of %s failed" % installRoot)
         return False
     repoSack.addPackageSack(self.installRootRepoPrefix + installRoot, sack)
     return True
Beispiel #2
0
 def buildLocalRemoveContext(self, installRoot):
     if installRoot == "/":
         return None
     builder = AinstPackageSackBuilder(installRoot)
     sack = builder.buildInstalledPkgSack()
     if sack is None:
         Log.cout(Log.DEBUG, "Build install pkg sack of %s failed" % installRoot)
         return None
     rootSack = RPMDBPackageSack("/")
     return AinstContextImpl(installRoot, None, rootSack, sack)
Beispiel #3
0
 def _initInstallRootRepos(self, repoSack, installRoot):
     if installRoot == '/':
         return True
     builder = AinstPackageSackBuilder(installRoot)
     sack = builder.buildInstalledPkgRepoSack()
     if sack is None:
         Log.cout(Log.DEBUG,
                  'Build install pkg sack of %s failed' % installRoot)
         return False
     repoSack.addPackageSack(self.installRootRepoPrefix + installRoot, sack)
     return True
Beispiel #4
0
 def buildLocalRemoveContext(self, installRoot):
     if installRoot == '/':
         return None
     builder = AinstPackageSackBuilder(installRoot)
     sack = builder.buildInstalledPkgSack()
     if sack is None:
         Log.cout(Log.DEBUG,
                  'Build install pkg sack of %s failed' % installRoot)
         return None
     rootSack = RPMDBPackageSack('/')
     return AinstContextImpl(installRoot, None, rootSack, sack)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)