def _getRemoveOperations(self, param, context, removePkgs): if param.noDependents: operations = {} for pkg in removePkgs: if pkg: operations[pkg] = resolver.REMOVE return operations resolverOption = ResolverOption() depResolver = RecursiveDepResolver(context, resolverOption) ret, operations, topOrder = depResolver.remove(removePkgs) if ret != error.ERROR_NONE: Log.cout(Log.ERROR, 'Dependency resovle failed') return None return operations
def install(self, pkgs, param, command): streamer = RootInfoDbStreamer() rootInfo = streamer.load(self._ainstConf.rootinfo) if rootInfo is None: Log.cout(Log.ERROR, 'Load root info failed') return OperatorRet.OPERATE_FAILED context = self._contextBuilder.buildAinstContext(self._installRoot, self._ainstConf, True, param.repos, param.localRepos, localRoots=rootInfo.installRootSet) if context is None: Log.cout(Log.ERROR, 'Build context failed') return OperatorRet.OPERATE_FAILED installPkgs = self._selectInstallPkgs(context, pkgs) if not installPkgs: Log.cout(Log.INFO, 'No package to install') return OperatorRet.OPERATE_FAILED resolverOption = self._getResolverOption(param) depResolver = RecursiveDepResolver(context, resolverOption) ret, operations, topOrder = depResolver.install(installPkgs) if ret != error.ERROR_NONE: Log.cout(Log.ERROR, 'Dependency resovle failed') return OperatorRet.OPERATE_FAILED if not operations: Log.cout(Log.INFO, 'No effective operations') return OperatorRet.OPERATE_SUCCESS self._displayOperations(operations) if param.dryRun: return OperatorRet.OPERATE_SUCCESS if not param.confirmYes and not Log.coutConfirm(): return True if not self._doRpmTransaction(operations): Log.cout(Log.ERROR, 'Do rpm transaction failed') return OperatorRet.OPERATE_FAILED return OperatorRet.OPERATE_SUCCESS