added 1 changeset to branch 'refs/remotes/HaikuPM-github/package-management' old head: e550d7b8c563b9276ba9d8bd86b7ab41ec729836 new head: c996b65a894a38b587d02c9f34c795619f59e418 overview: https://github.com/haiku/HaikuPM/compare/e550d7b...c996b65 ---------------------------------------------------------------------------- c996b65: HaikuDepot: Init with correct repo flags before performing actions. Still something not entirely correct with the uninstall case though. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- Commit: c996b65a894a38b587d02c9f34c795619f59e418 Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Sat Sep 21 20:58:14 2013 UTC ---------------------------------------------------------------------------- 1 file changed, 19 insertions(+), 1 deletion(-) src/apps/haiku-depot/PackageManager.cpp | 20 +++++++++++++++++++- ---------------------------------------------------------------------------- diff --git a/src/apps/haiku-depot/PackageManager.cpp b/src/apps/haiku-depot/PackageManager.cpp index c3bc229..03333d1 100644 --- a/src/apps/haiku-depot/PackageManager.cpp +++ b/src/apps/haiku-depot/PackageManager.cpp @@ -77,6 +77,9 @@ public: virtual status_t Perform() { + fPackageManager->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES + | BPackageManager::B_ADD_REMOTE_REPOSITORIES + | BPackageManager::B_REFRESH_REPOSITORIES); PackageInfoRef ref(Package()); fPackageManager->SetCurrentActionPackage(ref, true); const char* packageName = ref->Title().String(); @@ -90,6 +93,7 @@ public: } catch (BAbortedByUserException ex) { return B_OK; } catch (BNothingToDoException ex) { + return B_OK; } catch (BException ex) { fprintf(stderr, "Exception occurred while installing package " "%s: %s\n", packageName, ex.Message().String()); @@ -121,6 +125,7 @@ public: virtual status_t Perform() { + fPackageManager->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES); PackageInfoRef ref(Package()); fPackageManager->SetCurrentActionPackage(ref, false); const char* packageName = ref->Title().String(); @@ -132,7 +137,10 @@ public: ex.Details().String()); return ex.Error(); } catch (BAbortedByUserException ex) { + return B_OK; } catch (BNothingToDoException ex) { + return B_OK; + } catch (BException ex) { fprintf(stderr, "Exception occurred while uninstalling package " "%s: %s\n", packageName, ex.Message().String()); return B_ERROR; @@ -197,6 +205,7 @@ PackageManager::GetPackageState(const PackageInfo& package) PackageActionList PackageManager::GetPackageActions(PackageInfoRef package) { + Init(B_ADD_INSTALLED_REPOSITORIES | B_ADD_REMOTE_REPOSITORIES); PackageActionList actionList; bool installed = false; @@ -433,14 +442,23 @@ PackageManager::_AddResults(InstalledRepository& repository, BSolverPackage* PackageManager::_GetSolverPackage(PackageInfoRef package) { + int32 flags = BSolver::B_FIND_IN_NAME; + if (package->State() == ACTIVATED || package->State() == INSTALLED) + flags |= BSolver::B_FIND_INSTALLED_ONLY; + BObjectList<BSolverPackage> packages; status_t result = Solver()->FindPackages(package->Title(), - BSolver::B_FIND_IN_NAME, packages); + flags, packages); if (result == B_OK) { for (int32 i = 0; i < packages.CountItems(); i++) { BSolverPackage* solverPackage = packages.ItemAt(i); if (solverPackage->Name() != package->Title()) continue; + else if (package->State() == NONE + && dynamic_cast<BPackageManager::RemoteRepository*>( + solverPackage->Repository()) == NULL) { + continue; + } return solverPackage; } }