aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-06-29 13:34:39 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2010-06-29 13:42:02 +0100
commit94c0830a85c4f524231f0a61349190cd6811c586 (patch)
tree771889b60bb44f6f3bd490b3008bd9f6ac5cf7e4
parentbf9034006571dcdd6d911df490fa5257e4e5a1d5 (diff)
downloadpaludis-94c0830a85c4f524231f0a61349190cd6811c586.tar.gz
paludis-94c0830a85c4f524231f0a61349190cd6811c586.tar.xz
Uninstall packages before dependencies
-rw-r--r--paludis/resolver/orderer.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/paludis/resolver/orderer.cc b/paludis/resolver/orderer.cc
index e35008c..009ca26 100644
--- a/paludis/resolver/orderer.cc
+++ b/paludis/resolver/orderer.cc
@@ -32,6 +32,7 @@
#include <paludis/resolver/job_requirements.hh>
#include <paludis/resolver/destination.hh>
#include <paludis/resolver/orderer_notes.hh>
+#include <paludis/resolver/change_by_resolvent.hh>
#include <paludis/util/private_implementation_pattern-impl.hh>
#include <paludis/util/exception.hh>
#include <paludis/util/stringify.hh>
@@ -361,8 +362,25 @@ namespace
{
}
- void visit(const DependentReason &)
+ void visit(const DependentReason & r)
{
+ NAGIndex from(make_named_values<NAGIndex>(
+ n::resolvent() = r.id_and_resolvent_being_removed().resolvent(),
+ n::role() = nir_done
+ ));
+
+ NAGIndex to(make_named_values<NAGIndex>(
+ n::resolvent() = resolvent,
+ n::role() = nir_done
+ ));
+
+ nag->add_edge(from, to,
+ make_named_values<NAGEdgeProperties>(
+ n::build() = false,
+ n::build_all_met() = true,
+ n::run() = false,
+ n::run_all_met() = true
+ ));
}
void visit(const TargetReason &)