def checkDeps(self, uJob, jobSet, trvSrc,
                  resolveDeps, ineligible, keepRequired = True,
                  criticalUpdateInfo = None, check = None):
        assert(check)

        keepList = []
        pathHashCache = {}

        while True:
            linkedJobs = self.client._findOverlappingJobs(jobSet,
                                      uJob.getTroveSource(),
                                      pathHashCache = pathHashCache)
            criticalJobs, finalJobs, criticalOnly = self._findCriticalJobInfo(
                                                         jobSet,
                                                         criticalUpdateInfo)
            result = check.depCheck(jobSet,
                                    linkedJobs = linkedJobs,
                                    criticalJobs = criticalJobs,
                                    finalJobs = finalJobs,
                                    criticalOnly = criticalOnly)
            cannotResolve = result.unresolveableList

            if not resolveDeps or not cannotResolve:
                break
            # We have troves that are in the state cannotResolve:
            # This means that they are troves that are needed by
            # something else that we are trying to erase.

            # We attempt to solve them here in this inner loop because
            # they are more difficult to resolve, and resolving them may
            # affect resolving normal missing dependencies.

            changeMade = False

            # first: attempt to update packages that dependended on the missing
            # package.
            log.debug('Update breaks dependencies!')
            for reqInfo, depSet, provInfo in sorted(cannotResolve,
                                                    key=lambda x:x[0][0]):
                depSet = '\n     '.join(str(depSet).split('\n'))
                msg = (
                    'Broken dependency: (dep needed by the system but being removed):\n'
                     '   %s=%s\n'
                     '   Requires:\n'
                     '     %s\n'
                     '   Provided by removed or updated packages: %s')
                args = (reqInfo[0], reqInfo[1].trailingRevision(), depSet,
                        ', '.join(x[0] for x in provInfo))
                log.debug(msg, *args)
            if self.cfg.resolveLevel > 1:
                cannotResolve, newJobSet = self.resolveEraseByUpdating(
                                                                trvSrc,
                                                                cannotResolve,
                                                                uJob, jobSet,
                                                                ineligible,
                                                                check)
                if newJobSet:
                    jobSet |= newJobSet
                    changeMade = True

            if not changeMade and cannotResolve and keepRequired:
                # second: attempt to keep packages that were being erased
                cannotResolve, newKeepList = self.resolveEraseByKeeping(
                                                         trvSrc,
                                                         cannotResolve,
                                                         uJob, jobSet)
                if newKeepList:
                    changeMade = True
                    keepList += newKeepList

            if not changeMade:
                break

        return (result, cannotResolve, keepList, ineligible)
Execute commands in this directory. Nesting of cd-statements is
dataset/ETHPy150Open sassoftware/conary/conary/conaryclient/resolve.py/DependencySolver.checkDeps--crossover with--dataset/ETHPy150Open jonathanslenders/python-deployer/deployer/host/base.py/HostContext.cd