[haiku-commits] BRANCH HaikuPM-github.package-management [c996b65] src/apps/haiku-depot

  • From: HaikuPM-github.package-management <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 21 Sep 2013 23:00:32 +0200 (CEST)

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;
                }
        }


Other related posts:

  • » [haiku-commits] BRANCH HaikuPM-github.package-management [c996b65] src/apps/haiku-depot - HaikuPM-github . package-management