static PyObject * write_debugdata(_GoalObject *self, PyObject *dir_str) { PyObject *tmp_py_str = NULL; const char *dir = pycomp_get_string(dir_str, &tmp_py_str); if (dir == NULL) { Py_XDECREF(tmp_py_str); return NULL; } int ret = hy_goal_write_debugdata(self->goal, dir); Py_XDECREF(tmp_py_str); if (ret2e(ret, "write_debugdata() failed")) return NULL; Py_RETURN_NONE; }
static PyObject * write_debugdata(_GoalObject *self, PyObject *dir_str) { g_autoptr(GError) error = NULL; PyObject *tmp_py_str = NULL; const char *dir = pycomp_get_string(dir_str, &tmp_py_str); if (dir == NULL) { Py_XDECREF(tmp_py_str); return NULL; } gboolean ret = hy_goal_write_debugdata(self->goal, dir, &error); Py_XDECREF(tmp_py_str); if (!ret) { op_error2exc(error); return NULL; } Py_RETURN_NONE; }
uint32_t TDNFGoal( PTDNF pTdnf, HyPackageList hPkgList, HySelector hSelector, TDNF_ALTERTYPE nResolveFor, PTDNF_SOLVED_PKG_INFO pInfo ) { uint32_t dwError = 0; HyGoal hGoal = NULL; HyPackage hPkg = NULL; PTDNF_PKG_INFO pPkgsToInstall = NULL; PTDNF_PKG_INFO pPkgsToUpgrade = NULL; PTDNF_PKG_INFO pPkgsToDowngrade = NULL; PTDNF_PKG_INFO pPkgsToRemove = NULL; PTDNF_PKG_INFO pPkgsUnNeeded = NULL; PTDNF_PKG_INFO pPkgsToReinstall = NULL; int nFlags = 0; int nRequirePkgList = (nResolveFor != ALTER_UPGRADEALL && nResolveFor != ALTER_DISTRO_SYNC); if(!pTdnf || !pInfo ) { dwError = ERROR_TDNF_INVALID_PARAMETER; BAIL_ON_TDNF_ERROR(dwError); } if(nResolveFor == ALTER_UPGRADE && !hSelector) { dwError = ERROR_TDNF_INVALID_PARAMETER; BAIL_ON_TDNF_ERROR(dwError); } if(nRequirePkgList) { if(!hPkgList) { dwError = ERROR_TDNF_INVALID_PARAMETER; BAIL_ON_TDNF_ERROR(dwError); } hPkg = hy_packagelist_get(hPkgList, 0); if(!hPkg) { dwError = ERROR_TDNF_PACKAGELIST_EMPTY; BAIL_ON_TDNF_ERROR(dwError); } } hGoal = hy_goal_create(pTdnf->hSack); if(!hGoal) { dwError = ERROR_TDNF_GOAL_CREATE; BAIL_ON_TDNF_ERROR(dwError); } switch(nResolveFor) { case ALTER_DOWNGRADE: dwError = hy_goal_downgrade_to(hGoal, hPkg); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_ERASE: dwError = hy_goal_erase(hGoal, hPkg); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_REINSTALL: dwError = hy_goal_install(hGoal, hPkg); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_INSTALL: dwError = TDNFPackageGetLatest(hPkgList, &hPkg); BAIL_ON_TDNF_ERROR(dwError); dwError = hy_goal_install(hGoal, hPkg); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_UPGRADE: dwError = hy_goal_upgrade_to_selector(hGoal, hSelector); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_UPGRADEALL: dwError = hy_goal_upgrade_all(hGoal); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_DISTRO_SYNC: dwError = hy_goal_distupgrade_all(hGoal); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; case ALTER_AUTOERASE: dwError = TDNFGoalSetUserInstalled(hGoal, hPkgList); BAIL_ON_TDNF_HAWKEY_ERROR(dwError); break; default: dwError = ERROR_TDNF_INVALID_RESOLVE_ARG; BAIL_ON_TDNF_ERROR(dwError); } if(pTdnf->pArgs->nBest) { nFlags = nFlags | HY_FORCE_BEST; } if(pTdnf->pArgs->nAllowErasing || nResolveFor == ALTER_ERASE || nResolveFor == ALTER_AUTOERASE) { nFlags = nFlags | HY_ALLOW_UNINSTALL; } dwError = hy_goal_run_flags(hGoal, nFlags); if(pTdnf->pArgs->nDebugSolver) { hy_goal_write_debugdata(hGoal, "debugdata"); } BAIL_ON_TDNF_HAWKEY_ERROR(dwError); dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_installs(hGoal), &pPkgsToInstall); BAIL_ON_TDNF_ERROR(dwError); dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_upgrades(hGoal), &pPkgsToUpgrade); BAIL_ON_TDNF_ERROR(dwError); dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_downgrades(hGoal), &pPkgsToDowngrade); BAIL_ON_TDNF_ERROR(dwError); dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_erasures(hGoal), &pPkgsToRemove); BAIL_ON_TDNF_ERROR(dwError); if(nResolveFor == ALTER_AUTOERASE) { dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_unneeded(hGoal), &pPkgsUnNeeded); BAIL_ON_TDNF_ERROR(dwError); } dwError = TDNFGoalGetResultsIgnoreNoData( hy_goal_list_reinstalls(hGoal), &pPkgsToReinstall); BAIL_ON_TDNF_ERROR(dwError); pInfo->pPkgsToInstall = pPkgsToInstall; pInfo->pPkgsToUpgrade = pPkgsToUpgrade; pInfo->pPkgsToDowngrade = pPkgsToDowngrade; pInfo->pPkgsToRemove = pPkgsToRemove; pInfo->pPkgsUnNeeded = pPkgsUnNeeded; pInfo->pPkgsToReinstall = pPkgsToReinstall; pTdnf->hGoal = hGoal; cleanup: return dwError; error: if(hGoal) { TDNFGoalReportProblems(hGoal); hy_goal_free(hGoal); } if(pPkgsToInstall) { TDNFFreePackageInfo(pPkgsToInstall); } if(pPkgsToUpgrade) { TDNFFreePackageInfo(pPkgsToUpgrade); } if(pPkgsToDowngrade) { TDNFFreePackageInfo(pPkgsToDowngrade); } if(pPkgsToRemove) { TDNFFreePackageInfo(pPkgsToRemove); } if(pPkgsUnNeeded) { TDNFFreePackageInfo(pPkgsUnNeeded); } if(pPkgsToReinstall) { TDNFFreePackageInfo(pPkgsToReinstall); } goto cleanup; }