Author: jkupec
Date: Wed May 21 17:46:07 2008
New Revision: 10175
URL: http://svn.opensuse.org/viewcvs/zypp?rev=10175&view=rev
Log:
- fixed installing of already installed patterns (bnc #391414)
Modified:
trunk/zypper/src/zypper-misc.cc
trunk/zypper/src/zypper.cc
Modified: trunk/zypper/src/zypper-misc.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper-misc.cc?rev=10175&r1=10174&r2=10175&view=diff
==============================================================================
--- trunk/zypper/src/zypper-misc.cc (original)
+++ trunk/zypper/src/zypper-misc.cc Wed May 21 17:46:07 2008
@@ -94,7 +94,14 @@
return true;
}
- if (!provider.status().isInstalled()) {
+ bool is_installed;
+ if (provider->isKind(ResKind::package))
+ is_installed = provider.status().isInstalled();
+ else
+ is_installed = provider.isSatisfied();
+
+ if (!is_installed)
+ {
// deselect the item if it's already selected,
// only one item should be selected
if (provider.status().isToBeInstalled()) {
@@ -378,8 +385,12 @@
{
PoolItem theone = s.theObj();
//! \todo handle multiple installed case
- bool installed = !s.installedEmpty() && theone &&
- equalNVRA(*s.installedObj().resolvable(), *theone.resolvable());
+ bool installed;
+ if (s.kind() == ResKind::package)
+ installed = !s.installedEmpty() && theone &&
+ equalNVRA(*s.installedObj().resolvable(), *theone.resolvable());
+ else
+ installed = theone.isSatisfied();
if (install_not_remove)
{
@@ -592,11 +603,17 @@
bool installed = false;
string provider;
for_(solvit, q.poolItemBegin(), q.poolItemEnd())
- if (solvit->status().isInstalled())
+ {
+ if (solvit->resolvable()->isKind(ResKind::package))
+ installed = solvit->status().isInstalled();
+ else
+ installed = solvit->isSatisfied();
+ if (installed)
{
- installed = true;
- provider = solvit->resolvable()->name();
- break; }
+ provider = solvit->resolvable()->name();
+ break;
+ }
+ }
// already installed, nothing to do
if (installed && install_not_remove)
{
Modified: trunk/zypper/src/zypper.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/zypper/src/zypper.cc?rev=10175&r1=10174&r2=10175&view=diff
==============================================================================
--- trunk/zypper/src/zypper.cc (original)
+++ trunk/zypper/src/zypper.cc Wed May 21 17:46:07 2008
@@ -2453,6 +2453,8 @@
init_target(*this);
// load metadata
load_resolvables(*this);
+ // needed to compute status of PPP
+ resolve(*this);
// tell the solver what we want
install_remove(*this, _arguments, install_not_remove, kind);
@@ -2865,6 +2867,8 @@
if (exitCode() != ZYPPER_EXIT_OK)
return;
load_resolvables(*this);
+ // needed to compute status of PPP
+ resolve(*this);
cout << "