aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-09-27 17:16:51 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2009-09-27 17:16:51 +0100
commit676900a5ce9d2023915def9bfc451e64c795d424 (patch)
treee2d4d71ba8c0b67a087413d373bde3bc4ac5009b
parent443e934ecade4f54dcf178f18d5acae570de17e1 (diff)
downloadpaludis-676900a5ce9d2023915def9bfc451e64c795d424.tar.gz
paludis-676900a5ce9d2023915def9bfc451e64c795d424.tar.xz
bin -> bin rdeps cause no arrows
-rw-r--r--paludis/resolver/resolver.cc20
1 files changed, 16 insertions, 4 deletions
diff --git a/paludis/resolver/resolver.cc b/paludis/resolver/resolver.cc
index a9fe5cd..eef951a 100644
--- a/paludis/resolver/resolver.cc
+++ b/paludis/resolver/resolver.cc
@@ -836,10 +836,14 @@ namespace
{
bool causes_pre_arrow;
bool ignorable;
+ const bool creating_binary;
+ const bool from_binary;
- ArrowInfo(const DependencyReason & reason) :
+ ArrowInfo(const DependencyReason & reason, const bool f) :
causes_pre_arrow(false),
- ignorable(true)
+ ignorable(true),
+ creating_binary(reason.from_resolvent().destination_type() == dt_create_binary),
+ from_binary(f)
{
const std::tr1::shared_ptr<const ActiveDependencyLabels> labels(
reason.sanitised_dependency().active_dependency_labels());
@@ -859,7 +863,15 @@ namespace
void visit(const DependencyRunLabel &)
{
- causes_pre_arrow = true;
+ if (creating_binary && from_binary)
+ {
+ /* a binary package's run dependencies don't have to be created before
+ * we can create the binary. */
+ }
+ else
+ {
+ causes_pre_arrow = true;
+ }
}
void visit(const DependencyPostLabel &)
@@ -919,7 +931,7 @@ Resolver::_resolve_arrow(
}
else
{
- ArrowInfo a(*if_dependency_reason);
+ ArrowInfo a(*if_dependency_reason, resolvent.destination_type() == dt_create_binary);
if (a.causes_pre_arrow)
{
int ignorable_pass(0);