HaikuDepot: Init with correct repo flags before performing actions.
Still something not entirely correct with the uninstall case though.
This commit is contained in:
@@ -77,6 +77,9 @@ public:
|
|||||||
|
|
||||||
virtual status_t Perform()
|
virtual status_t Perform()
|
||||||
{
|
{
|
||||||
|
fPackageManager->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES
|
||||||
|
| BPackageManager::B_ADD_REMOTE_REPOSITORIES
|
||||||
|
| BPackageManager::B_REFRESH_REPOSITORIES);
|
||||||
PackageInfoRef ref(Package());
|
PackageInfoRef ref(Package());
|
||||||
fPackageManager->SetCurrentActionPackage(ref, true);
|
fPackageManager->SetCurrentActionPackage(ref, true);
|
||||||
const char* packageName = ref->Title().String();
|
const char* packageName = ref->Title().String();
|
||||||
@@ -90,6 +93,7 @@ public:
|
|||||||
} catch (BAbortedByUserException ex) {
|
} catch (BAbortedByUserException ex) {
|
||||||
return B_OK;
|
return B_OK;
|
||||||
} catch (BNothingToDoException ex) {
|
} catch (BNothingToDoException ex) {
|
||||||
|
return B_OK;
|
||||||
} catch (BException ex) {
|
} catch (BException ex) {
|
||||||
fprintf(stderr, "Exception occurred while installing package "
|
fprintf(stderr, "Exception occurred while installing package "
|
||||||
"%s: %s\n", packageName, ex.Message().String());
|
"%s: %s\n", packageName, ex.Message().String());
|
||||||
@@ -121,6 +125,7 @@ public:
|
|||||||
|
|
||||||
virtual status_t Perform()
|
virtual status_t Perform()
|
||||||
{
|
{
|
||||||
|
fPackageManager->Init(BPackageManager::B_ADD_INSTALLED_REPOSITORIES);
|
||||||
PackageInfoRef ref(Package());
|
PackageInfoRef ref(Package());
|
||||||
fPackageManager->SetCurrentActionPackage(ref, false);
|
fPackageManager->SetCurrentActionPackage(ref, false);
|
||||||
const char* packageName = ref->Title().String();
|
const char* packageName = ref->Title().String();
|
||||||
@@ -132,7 +137,10 @@ public:
|
|||||||
ex.Details().String());
|
ex.Details().String());
|
||||||
return ex.Error();
|
return ex.Error();
|
||||||
} catch (BAbortedByUserException ex) {
|
} catch (BAbortedByUserException ex) {
|
||||||
|
return B_OK;
|
||||||
} catch (BNothingToDoException ex) {
|
} catch (BNothingToDoException ex) {
|
||||||
|
return B_OK;
|
||||||
|
} catch (BException ex) {
|
||||||
fprintf(stderr, "Exception occurred while uninstalling package "
|
fprintf(stderr, "Exception occurred while uninstalling package "
|
||||||
"%s: %s\n", packageName, ex.Message().String());
|
"%s: %s\n", packageName, ex.Message().String());
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
@@ -197,6 +205,7 @@ PackageManager::GetPackageState(const PackageInfo& package)
|
|||||||
PackageActionList
|
PackageActionList
|
||||||
PackageManager::GetPackageActions(PackageInfoRef package)
|
PackageManager::GetPackageActions(PackageInfoRef package)
|
||||||
{
|
{
|
||||||
|
Init(B_ADD_INSTALLED_REPOSITORIES | B_ADD_REMOTE_REPOSITORIES);
|
||||||
PackageActionList actionList;
|
PackageActionList actionList;
|
||||||
|
|
||||||
bool installed = false;
|
bool installed = false;
|
||||||
@@ -433,14 +442,23 @@ PackageManager::_AddResults(InstalledRepository& repository,
|
|||||||
BSolverPackage*
|
BSolverPackage*
|
||||||
PackageManager::_GetSolverPackage(PackageInfoRef package)
|
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;
|
BObjectList<BSolverPackage> packages;
|
||||||
status_t result = Solver()->FindPackages(package->Title(),
|
status_t result = Solver()->FindPackages(package->Title(),
|
||||||
BSolver::B_FIND_IN_NAME, packages);
|
flags, packages);
|
||||||
if (result == B_OK) {
|
if (result == B_OK) {
|
||||||
for (int32 i = 0; i < packages.CountItems(); i++) {
|
for (int32 i = 0; i < packages.CountItems(); i++) {
|
||||||
BSolverPackage* solverPackage = packages.ItemAt(i);
|
BSolverPackage* solverPackage = packages.ItemAt(i);
|
||||||
if (solverPackage->Name() != package->Title())
|
if (solverPackage->Name() != package->Title())
|
||||||
continue;
|
continue;
|
||||||
|
else if (package->State() == NONE
|
||||||
|
&& dynamic_cast<BPackageManager::RemoteRepository*>(
|
||||||
|
solverPackage->Repository()) == NULL) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
return solverPackage;
|
return solverPackage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user