aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2011-06-19 18:06:02 +0100
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2011-06-19 18:06:02 +0100
commita3e36c8d731798e9ca930b9fdd4e99cda155dbd5 (patch)
treef076828e0704c95e7fd0b9394d4b3e47d0ef75d3
parent726d87775ad381f4c38bf336e02437a9f3bed037 (diff)
downloadpaludis-a3e36c8d731798e9ca930b9fdd4e99cda155dbd5.tar.gz
paludis-a3e36c8d731798e9ca930b9fdd4e99cda155dbd5.tar.xz
Make some ChangeByResolvents into DependentPackageIDs
-rw-r--r--paludis/resolver/collect_depped_upon-fwd.hh7
-rw-r--r--paludis/resolver/collect_depped_upon.cc72
-rw-r--r--paludis/resolver/collect_depped_upon.hh34
-rw-r--r--paludis/resolver/decider.cc8
-rw-r--r--paludis/resolver/get_constraints_for_dependent_helper.cc2
-rw-r--r--paludis/resolver/get_constraints_for_dependent_helper.hh6
-rw-r--r--paludis/resolver/orderer.cc8
-rw-r--r--paludis/resolver/reason.cc21
-rw-r--r--paludis/resolver/reason.hh8
-rw-r--r--paludis/resolver/resolver_functions.hh6
-rwxr-xr-xsrc/clients/cave/cmd_display_resolution.cc7
-rw-r--r--src/clients/cave/cmd_resolve_dump.cc8
-rw-r--r--src/clients/cave/resolve_common.cc2
13 files changed, 153 insertions, 36 deletions
diff --git a/paludis/resolver/collect_depped_upon-fwd.hh b/paludis/resolver/collect_depped_upon-fwd.hh
index 2509744..0f49a22 100644
--- a/paludis/resolver/collect_depped_upon-fwd.hh
+++ b/paludis/resolver/collect_depped_upon-fwd.hh
@@ -21,6 +21,7 @@
#define PALUDIS_GUARD_PALUDIS_RESOLVER_COLLECT_DEPPED_UPON_FWD_HH 1
#include <paludis/util/attributes.hh>
+#include <paludis/util/sequence-fwd.hh>
#include <paludis/resolver/change_by_resolvent-fwd.hh>
#include <paludis/package_id-fwd.hh>
#include <paludis/environment-fwd.hh>
@@ -30,7 +31,11 @@ namespace paludis
{
namespace resolver
{
- const std::shared_ptr<const ChangeByResolventSequence> dependent_upon(
+ struct DependentPackageID;
+
+ typedef Sequence<DependentPackageID> DependentPackageIDSequence;
+
+ const std::shared_ptr<const DependentPackageIDSequence> dependent_upon(
const Environment * const,
const std::shared_ptr<const PackageID> &,
const std::shared_ptr<const ChangeByResolventSequence> &,
diff --git a/paludis/resolver/collect_depped_upon.cc b/paludis/resolver/collect_depped_upon.cc
index b577304..49dbd6f 100644
--- a/paludis/resolver/collect_depped_upon.cc
+++ b/paludis/resolver/collect_depped_upon.cc
@@ -19,11 +19,17 @@
#include <paludis/resolver/collect_depped_upon.hh>
#include <paludis/resolver/change_by_resolvent.hh>
+
#include <paludis/util/visitor_cast.hh>
#include <paludis/util/indirect_iterator-impl.hh>
-#include <paludis/util/wrapped_output_iterator.hh>
#include <paludis/util/accept_visitor.hh>
#include <paludis/util/make_null_shared_ptr.hh>
+#include <paludis/util/make_named_values.hh>
+#include <paludis/util/sequence-impl.hh>
+#include <paludis/util/set-impl.hh>
+#include <paludis/util/wrapped_output_iterator-impl.hh>
+#include <paludis/util/wrapped_forward_iterator-impl.hh>
+
#include <paludis/spec_tree.hh>
#include <paludis/dep_spec.hh>
#include <paludis/environment.hh>
@@ -33,6 +39,8 @@
#include <paludis/metadata_key.hh>
#include <paludis/match_package.hh>
#include <paludis/version_spec.hh>
+#include <paludis/serialise-impl.hh>
+
#include <algorithm>
using namespace paludis;
@@ -50,6 +58,30 @@ namespace
return i.package_id();
}
+ template <typename R_>
+ struct ResultValueMaker;
+
+ template <>
+ struct ResultValueMaker<std::shared_ptr<const PackageID> >
+ {
+ static const std::shared_ptr<const PackageID> create(const std::shared_ptr<const PackageID> & i)
+ {
+ return i;
+ }
+ };
+
+ template <>
+ struct ResultValueMaker<DependentPackageID>
+ {
+ static DependentPackageID create(const ChangeByResolvent & r)
+ {
+ return make_named_values<DependentPackageID>(
+ n::package_id() = r.package_id(),
+ n::resolvent() = r.resolvent()
+ );
+ }
+ };
+
template <typename S_>
const std::shared_ptr<const PackageID> best_eventual(
const Environment * const env,
@@ -70,7 +102,7 @@ namespace
return result;
}
- template <typename C_>
+ template <typename C_, typename R_>
struct DependentChecker
{
const Environment * const env;
@@ -78,7 +110,7 @@ namespace
const std::shared_ptr<const C_> going_away;
const std::shared_ptr<const C_> newly_available;
const std::shared_ptr<const PackageIDSequence> not_changing_slots;
- const std::shared_ptr<C_> result;
+ const std::shared_ptr<R_> result;
DependentChecker(
const Environment * const e,
@@ -91,7 +123,7 @@ namespace
going_away(g),
newly_available(n),
not_changing_slots(s),
- result(std::make_shared<C_>())
+ result(std::make_shared<R_>())
{
}
@@ -137,7 +169,7 @@ namespace
}
if (! any)
- result->push_back(*g);
+ result->push_back(ResultValueMaker<typename R_::value_type>::create(*g));
}
}
@@ -170,7 +202,7 @@ namespace
};
}
-const std::shared_ptr<const ChangeByResolventSequence>
+const std::shared_ptr<const DependentPackageIDSequence>
paludis::resolver::dependent_upon(
const Environment * const env,
const std::shared_ptr<const PackageID> & id,
@@ -178,7 +210,7 @@ paludis::resolver::dependent_upon(
const std::shared_ptr<const ChangeByResolventSequence> & staying,
const std::shared_ptr<const PackageIDSequence> & not_changing_slots)
{
- DependentChecker<ChangeByResolventSequence> c(env, id, going_away, staying, not_changing_slots);
+ DependentChecker<ChangeByResolventSequence, DependentPackageIDSequence> c(env, id, going_away, staying, not_changing_slots);
if (id->dependencies_key())
id->dependencies_key()->parse_value()->top()->accept(c);
else
@@ -201,7 +233,7 @@ paludis::resolver::collect_depped_upon(
const std::shared_ptr<const PackageIDSequence> & candidates,
const std::shared_ptr<const PackageIDSequence> & not_changing_slots)
{
- DependentChecker<PackageIDSequence> c(env, id, candidates, std::make_shared<PackageIDSequence>(), not_changing_slots);
+ DependentChecker<PackageIDSequence, PackageIDSequence> c(env, id, candidates, std::make_shared<PackageIDSequence>(), not_changing_slots);
if (id->dependencies_key())
id->dependencies_key()->parse_value()->top()->accept(c);
else
@@ -233,7 +265,7 @@ paludis::resolver::collect_dependents(
for (auto i(installed_ids->begin()), i_end(installed_ids->end()) ;
i != i_end ; ++i)
{
- DependentChecker<PackageIDSequence> c(env, *i, going_away_as_ids,
+ DependentChecker<PackageIDSequence, PackageIDSequence> c(env, *i, going_away_as_ids,
std::make_shared<PackageIDSequence>(), std::make_shared<PackageIDSequence>());
if ((*i)->dependencies_key())
@@ -255,3 +287,25 @@ paludis::resolver::collect_dependents(
return result;
}
+void
+DependentPackageID::serialise(Serialiser & s) const
+{
+ s.object("DependentPackageID")
+ .member(SerialiserFlags<serialise::might_be_null>(), "package_id", package_id())
+ .member(SerialiserFlags<>(), "resolvent", resolvent())
+ ;
+}
+
+const DependentPackageID
+DependentPackageID::deserialise(Deserialisation & d)
+{
+ Deserialisator v(d, "DependentPackageID");
+ return make_named_values<DependentPackageID>(
+ n::package_id() = v.member<std::shared_ptr<const PackageID> >("package_id"),
+ n::resolvent() = v.member<Resolvent>("resolvent")
+ );
+}
+
+template class Sequence<DependentPackageID>;
+template class WrappedForwardIterator<Sequence<DependentPackageID>::ConstIteratorTag, const DependentPackageID>;
+
diff --git a/paludis/resolver/collect_depped_upon.hh b/paludis/resolver/collect_depped_upon.hh
index 0fb8348..78dd500 100644
--- a/paludis/resolver/collect_depped_upon.hh
+++ b/paludis/resolver/collect_depped_upon.hh
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2010 Ciaran McCreesh
+ * Copyright (c) 2010, 2011 Ciaran McCreesh
*
* This file is part of the Paludis package manager. Paludis is free software;
* you can redistribute it and/or modify it under the terms of the GNU General
@@ -21,5 +21,37 @@
#define PALUDIS_GUARD_PALUDIS_RESOLVER_COLLECT_DEPPED_UPON_HH 1
#include <paludis/resolver/collect_depped_upon-fwd.hh>
+#include <paludis/resolver/resolvent.hh>
+
+#include <paludis/util/sequence.hh>
+#include <paludis/util/wrapped_forward_iterator.hh>
+#include <paludis/util/named_value.hh>
+
+#include <paludis/package_id-fwd.hh>
+#include <paludis/serialise-fwd.hh>
+
+namespace paludis
+{
+ namespace n
+ {
+ typedef Name<struct name_package_id> package_id;
+ typedef Name<struct name_resolvent> resolvent;
+ }
+
+ namespace resolver
+ {
+ struct DependentPackageID
+ {
+ NamedValue<n::package_id, std::shared_ptr<const PackageID> > package_id;
+ NamedValue<n::resolvent, Resolvent> resolvent;
+
+ void serialise(Serialiser &) const;
+ static const DependentPackageID deserialise(Deserialisation &) PALUDIS_ATTRIBUTE((warn_unused_result));
+ };
+ }
+
+ extern template class Sequence<resolver::DependentPackageID>;
+ extern template class WrappedForwardIterator<Sequence<resolver::DependentPackageID>::ConstIteratorTag, const resolver::DependentPackageID>;
+}
#endif
diff --git a/paludis/resolver/decider.cc b/paludis/resolver/decider.cc
index c629959..9b916dd 100644
--- a/paludis/resolver/decider.cc
+++ b/paludis/resolver/decider.cc
@@ -231,8 +231,7 @@ Decider::_resolve_dependents()
if (! (*s)->supports_action(SupportsActionTest<UninstallAction>()))
continue;
- const std::shared_ptr<const ChangeByResolventSequence> dependent_upon_ids(dependent_upon(
- _imp->env, *s, changing.first, changing.second, staying));
+ auto dependent_upon_ids(dependent_upon(_imp->env, *s, changing.first, changing.second, staying));
if (dependent_upon_ids->empty())
continue;
@@ -245,9 +244,8 @@ Decider::_resolve_dependents()
if (remove && _imp->resolutions_by_resolvent->end() == _imp->resolutions_by_resolvent->find(resolvent))
changed = true;
- const std::shared_ptr<Resolution> resolution(_resolution_for_resolvent(resolvent, true));
- const std::shared_ptr<const ConstraintSequence> constraints(_imp->fns.get_constraints_for_dependent_fn()(
- resolution, *s, dependent_upon_ids));
+ auto resolution(_resolution_for_resolvent(resolvent, true));
+ auto constraints(_imp->fns.get_constraints_for_dependent_fn()(resolution, *s, dependent_upon_ids));
for (ConstraintSequence::ConstIterator c(constraints->begin()), c_end(constraints->end()) ;
c != c_end ; ++c)
_apply_resolution_constraint(resolution, *c);
diff --git a/paludis/resolver/get_constraints_for_dependent_helper.cc b/paludis/resolver/get_constraints_for_dependent_helper.cc
index 7264eed..5a008a4 100644
--- a/paludis/resolver/get_constraints_for_dependent_helper.cc
+++ b/paludis/resolver/get_constraints_for_dependent_helper.cc
@@ -73,7 +73,7 @@ const std::shared_ptr<ConstraintSequence>
GetConstraintsForDependentHelper::operator() (
const std::shared_ptr<const Resolution> &,
const std::shared_ptr<const PackageID> & id,
- const std::shared_ptr<const ChangeByResolventSequence> & dependent_upon_ids) const
+ const std::shared_ptr<const DependentPackageIDSequence> & dependent_upon_ids) const
{
auto result(std::make_shared<ConstraintSequence>());
diff --git a/paludis/resolver/get_constraints_for_dependent_helper.hh b/paludis/resolver/get_constraints_for_dependent_helper.hh
index a210d36..66d6636 100644
--- a/paludis/resolver/get_constraints_for_dependent_helper.hh
+++ b/paludis/resolver/get_constraints_for_dependent_helper.hh
@@ -24,11 +24,15 @@
#include <paludis/resolver/resolution-fwd.hh>
#include <paludis/resolver/change_by_resolvent-fwd.hh>
#include <paludis/resolver/constraint-fwd.hh>
+#include <paludis/resolver/collect_depped_upon-fwd.hh>
+
#include <paludis/util/pimp.hh>
#include <paludis/util/attributes.hh>
+
#include <paludis/dep_spec-fwd.hh>
#include <paludis/environment-fwd.hh>
#include <paludis/package_id-fwd.hh>
+
#include <memory>
namespace paludis
@@ -49,7 +53,7 @@ namespace paludis
const std::shared_ptr<ConstraintSequence> operator() (
const std::shared_ptr<const Resolution> &,
const std::shared_ptr<const PackageID> &,
- const std::shared_ptr<const ChangeByResolventSequence> &) const;
+ const std::shared_ptr<const DependentPackageIDSequence> &) const;
};
}
diff --git a/paludis/resolver/orderer.cc b/paludis/resolver/orderer.cc
index 59ef7b8..1f7381a 100644
--- a/paludis/resolver/orderer.cc
+++ b/paludis/resolver/orderer.cc
@@ -35,6 +35,8 @@
#include <paludis/resolver/orderer_notes.hh>
#include <paludis/resolver/change_by_resolvent.hh>
#include <paludis/resolver/labels_classifier.hh>
+#include <paludis/resolver/collect_depped_upon.hh>
+
#include <paludis/util/pimp-impl.hh>
#include <paludis/util/exception.hh>
#include <paludis/util/stringify.hh>
@@ -45,10 +47,12 @@
#include <paludis/util/visitor_cast.hh>
#include <paludis/util/tribool.hh>
#include <paludis/util/enum_iterator.hh>
+
#include <paludis/partially_made_package_dep_spec.hh>
#include <paludis/environment.hh>
#include <paludis/notifier_callback.hh>
#include <paludis/package_id.hh>
+
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
@@ -363,11 +367,11 @@ namespace
/* we may be constrained by a dep from a package that was changed
* from a non error decision to an unable to make decision */
if (ignore_dependencies_from_resolvents.end() != ignore_dependencies_from_resolvents.find(
- r.id_and_resolvent_being_removed().resolvent()))
+ r.dependent_upon().resolvent()))
return;
NAGIndex from(make_named_values<NAGIndex>(
- n::resolvent() = r.id_and_resolvent_being_removed().resolvent(),
+ n::resolvent() = r.dependent_upon().resolvent(),
n::role() = nir_done
));
diff --git a/paludis/resolver/reason.cc b/paludis/resolver/reason.cc
index 50977f4..c966b74 100644
--- a/paludis/resolver/reason.cc
+++ b/paludis/resolver/reason.cc
@@ -21,10 +21,13 @@
#include <paludis/resolver/resolvent.hh>
#include <paludis/resolver/sanitised_dependencies.hh>
#include <paludis/resolver/change_by_resolvent.hh>
+#include <paludis/resolver/collect_depped_upon.hh>
+
#include <paludis/util/stringify.hh>
#include <paludis/util/pimp-impl.hh>
#include <paludis/util/sequence-impl.hh>
#include <paludis/util/wrapped_forward_iterator-impl.hh>
+
#include <paludis/serialise-impl.hh>
#include <paludis/changed_choices.hh>
@@ -156,16 +159,16 @@ namespace paludis
template <>
struct Imp<DependentReason>
{
- const ChangeByResolvent id_being_removed;
+ const DependentPackageID dependent_upon;
- Imp(const ChangeByResolvent & i) :
- id_being_removed(i)
+ Imp(const DependentPackageID & i) :
+ dependent_upon(i)
{
}
};
}
-DependentReason::DependentReason(const ChangeByResolvent & i) :
+DependentReason::DependentReason(const DependentPackageID & i) :
_imp(i)
{
}
@@ -174,17 +177,17 @@ DependentReason::~DependentReason()
{
}
-const ChangeByResolvent
-DependentReason::id_and_resolvent_being_removed() const
+const DependentPackageID
+DependentReason::dependent_upon() const
{
- return _imp->id_being_removed;
+ return _imp->dependent_upon;
}
void
DependentReason::serialise(Serialiser & s) const
{
s.object("DependentReason")
- .member(SerialiserFlags<>(), "id_and_resolvent_being_removed", id_and_resolvent_being_removed())
+ .member(SerialiserFlags<>(), "dependent_upon", dependent_upon())
;
}
@@ -454,7 +457,7 @@ Reason::deserialise(Deserialisation & d)
{
Deserialisator v(d, "DependentReason");
return std::make_shared<DependentReason>(
- v.member<ChangeByResolvent>("id_and_resolvent_being_removed")
+ v.member<DependentPackageID>("dependent_upon")
);
}
else if (d.class_name() == "WasUsedByReason")
diff --git a/paludis/resolver/reason.hh b/paludis/resolver/reason.hh
index 0c6745b..de9f085 100644
--- a/paludis/resolver/reason.hh
+++ b/paludis/resolver/reason.hh
@@ -24,14 +24,18 @@
#include <paludis/resolver/resolvent-fwd.hh>
#include <paludis/resolver/sanitised_dependencies-fwd.hh>
#include <paludis/resolver/change_by_resolvent-fwd.hh>
+#include <paludis/resolver/collect_depped_upon-fwd.hh>
+
#include <paludis/util/pimp.hh>
#include <paludis/util/visitor.hh>
#include <paludis/util/type_list.hh>
#include <paludis/util/tribool.hh>
+
#include <paludis/name-fwd.hh>
#include <paludis/package_id-fwd.hh>
#include <paludis/serialise-fwd.hh>
#include <paludis/changed_choices-fwd.hh>
+
#include <memory>
namespace paludis
@@ -102,10 +106,10 @@ namespace paludis
Pimp<DependentReason> _imp;
public:
- DependentReason(const ChangeByResolvent &);
+ DependentReason(const DependentPackageID &);
~DependentReason();
- const ChangeByResolvent id_and_resolvent_being_removed() const;
+ const DependentPackageID dependent_upon() const;
virtual void serialise(Serialiser &) const;
};
diff --git a/paludis/resolver/resolver_functions.hh b/paludis/resolver/resolver_functions.hh
index 75a61b7..cbe8b0a 100644
--- a/paludis/resolver/resolver_functions.hh
+++ b/paludis/resolver/resolver_functions.hh
@@ -31,8 +31,11 @@
#include <paludis/resolver/constraint-fwd.hh>
#include <paludis/resolver/required_confirmations-fwd.hh>
#include <paludis/resolver/change_by_resolvent-fwd.hh>
+#include <paludis/resolver/collect_depped_upon-fwd.hh>
+
#include <paludis/util/named_value.hh>
#include <paludis/util/tribool-fwd.hh>
+
#include <paludis/filter-fwd.hh>
#include <paludis/name-fwd.hh>
#include <paludis/package_id-fwd.hh>
@@ -40,6 +43,7 @@
#include <paludis/dep_spec-fwd.hh>
#include <paludis/generator-fwd.hh>
#include <paludis/filtered_generator-fwd.hh>
+
#include <functional>
namespace paludis
@@ -113,7 +117,7 @@ namespace paludis
typedef std::function<std::shared_ptr<ConstraintSequence> (
const std::shared_ptr<const Resolution> &,
const std::shared_ptr<const PackageID> &,
- const std::shared_ptr<const ChangeByResolventSequence> &
+ const std::shared_ptr<const DependentPackageIDSequence> &
)> GetConstraintsForDependentFunction;
typedef std::function<std::shared_ptr<ConstraintSequence> (
diff --git a/src/clients/cave/cmd_display_resolution.cc b/src/clients/cave/cmd_display_resolution.cc
index 31c074a..fa1019f 100755
--- a/src/clients/cave/cmd_display_resolution.cc
+++ b/src/clients/cave/cmd_display_resolution.cc
@@ -25,7 +25,9 @@
#include "colour_pretty_printer.hh"
#include "format_user_config.hh"
#include "parse_spec_with_nice_error.hh"
+
#include <paludis/args/do_help.hh>
+
#include <paludis/util/safe_ifstream.hh>
#include <paludis/util/system.hh>
#include <paludis/util/destringify.hh>
@@ -42,6 +44,7 @@
#include <paludis/util/pretty_print.hh>
#include <paludis/util/make_null_shared_ptr.hh>
#include <paludis/util/enum_iterator.hh>
+
#include <paludis/resolver/resolutions_by_resolvent.hh>
#include <paludis/resolver/reason.hh>
#include <paludis/resolver/sanitised_dependencies.hh>
@@ -58,6 +61,8 @@
#include <paludis/resolver/change_by_resolvent.hh>
#include <paludis/resolver/match_qpns.hh>
#include <paludis/resolver/why_changed_choices.hh>
+#include <paludis/resolver/collect_depped_upon.hh>
+
#include <paludis/package_id.hh>
#include <paludis/version_spec.hh>
#include <paludis/metadata_key.hh>
@@ -236,7 +241,7 @@ namespace
std::pair<std::string, Tribool> visit(const DependentReason & r) const
{
- return std::make_pair("dependent upon " + stringify(*r.id_and_resolvent_being_removed().package_id()), true);
+ return std::make_pair("dependent upon " + stringify(*r.dependent_upon().package_id()), true);
}
std::pair<std::string, Tribool> visit(const WasUsedByReason & r) const
diff --git a/src/clients/cave/cmd_resolve_dump.cc b/src/clients/cave/cmd_resolve_dump.cc
index 469f182..d0becbd 100644
--- a/src/clients/cave/cmd_resolve_dump.cc
+++ b/src/clients/cave/cmd_resolve_dump.cc
@@ -1,7 +1,7 @@
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
/*
- * Copyright (c) 2009, 2010 Ciaran McCreesh
+ * Copyright (c) 2009, 2010, 2011 Ciaran McCreesh
*
* This file is part of the Paludis package manager. Paludis is free software;
* you can redistribute it and/or modify it under the terms of the GNU General
@@ -18,6 +18,7 @@
*/
#include "cmd_resolve_dump.hh"
+
#include <paludis/resolver/resolver.hh>
#include <paludis/resolver/resolvent.hh>
#include <paludis/resolver/sanitised_dependencies.hh>
@@ -28,11 +29,14 @@
#include <paludis/resolver/destination.hh>
#include <paludis/resolver/resolutions_by_resolvent.hh>
#include <paludis/resolver/change_by_resolvent.hh>
+#include <paludis/resolver/collect_depped_upon.hh>
+
#include <paludis/util/enum_iterator.hh>
#include <paludis/util/indirect_iterator-impl.hh>
#include <paludis/util/join.hh>
#include <paludis/util/stringify.hh>
#include <paludis/util/wrapped_forward_iterator.hh>
+
#include <iostream>
#include <sstream>
@@ -179,7 +183,7 @@ namespace
void visit(const DependentReason & r)
{
- str = "Dependent(" + stringify(*r.id_and_resolvent_being_removed().package_id()) + ")";
+ str = "Dependent(" + stringify(*r.dependent_upon().package_id()) + ")";
}
void visit(const WasUsedByReason & r)
diff --git a/src/clients/cave/resolve_common.cc b/src/clients/cave/resolve_common.cc
index 63087b1..3ddbddb 100644
--- a/src/clients/cave/resolve_common.cc
+++ b/src/clients/cave/resolve_common.cc
@@ -539,7 +539,7 @@ namespace
const std::string visit(const DependentReason & r) const
{
- return "from dependent " + stringify(*r.id_and_resolvent_being_removed().package_id());
+ return "from dependent " + stringify(*r.dependent_upon().package_id());
}
const std::string visit(const TargetReason & r) const