aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-01-22 00:29:46 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-01-22 00:29:46 +0000
commit6b2e0ed19cb15c15460b35f8d1d42d4fa02bc11f (patch)
treeff5c0cd8821dc3b74cc8479c9177907a039e1ce5
parentd81f176639a80490c257bc075444948633ac64c7 (diff)
downloadpaludis-6b2e0ed19cb15c15460b35f8d1d42d4fa02bc11f.tar.gz
paludis-6b2e0ed19cb15c15460b35f8d1d42d4fa02bc11f.tar.xz
Only try to uninstall uninstallable things
-rw-r--r--paludis/install_task.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/paludis/install_task.cc b/paludis/install_task.cc
index 834a6a2..ccf4771 100644
--- a/paludis/install_task.cc
+++ b/paludis/install_task.cc
@@ -1384,7 +1384,8 @@ namespace
{
if (! failure)
if ((*env)[selection::SomeArbitraryVersion(generator::Matches(*node.spec(), MatchPackageOptions())
- | filter::SupportsAction<InstalledAction>())]->empty())
+ | filter::SupportsAction<InstalledAction>()
+ | filter::SupportsAction<UninstallAction>())]->empty())
failure = node.spec();
}
@@ -1580,7 +1581,8 @@ namespace
* there are no matches here it's not a problem because of or-deps. */
std::tr1::shared_ptr<const PackageIDSequence> installed((*env)[selection::AllVersionsUnsorted(
generator::Matches(*node.spec(), MatchPackageOptions()) |
- filter::SupportsAction<InstalledAction>())]);
+ filter::SupportsAction<InstalledAction>() |
+ filter::SupportsAction<UninstallAction>())]);
for (PackageIDSequence::ConstIterator i(installed->begin()), i_end(installed->end()) ;
i != i_end ; ++i)