ret += item._resItem->asString();
ret += " ("; ret += item._reason; ret += ")";
- if (item._dep_leading_to_uninstall != NULL) {
+ if (item._dep_leading_to_uninstall != Capability()) {
ret += ", Triggered By ";
- ret += item._dep_leading_to_uninstall->asString();
+ ret += item._dep_leading_to_uninstall.asString();
}
if (item._upgraded_to != NULL) {
ret += ", Upgraded To ";
: QueueItem (QUEUE_ITEM_TYPE_UNINSTALL, world)
, _resItem (resItem)
, _reason (reason)
- , _dep_leading_to_uninstall (NULL)
+ , _dep_leading_to_uninstall (Capability())
, _upgraded_to (NULL)
, _explicitly_requested (false)
, _remove_only (false)
info.cancel_unlink = false;
CapSet provides = _resItem->provides();
- for (Capset::const_iterator iter = provides.begin(); iter != provides.end() && ! info.cancel_unlink; iter++) {
+ for (CapSet::const_iterator iter = provides.begin(); iter != provides.end() && ! info.cancel_unlink; iter++) {
world()->foreachRequiringResItem (*iter, unlink_check_cb, &info);
}
this->logInfo (context);
- if (_dep_leading_to_uninstall
+ if (_dep_leading_to_uninstall != Capability()
&& !_due_to_conflict
&& !_due_to_obsolete)
{
void
Resolver::addExtraDependency (const Capability & dependency)
{
- _extra_deps.push_front (dependency);
+ _extra_deps.insert (dependency);
}
void
Resolver::addExtraConflict (const Capability & dependency)
{
- _extra_conflicts.push_front (dependency);
+ _extra_conflicts.insert (dependency);
}
void addResItemToVerify (constResItemPtr resItem);
- void addExtraDependency (const CapSet & dependency);
- void addExtraConflict (const CapSet & dependency);
+ void addExtraDependency (const Capability & dependency);
+ void addExtraConflict (const Capability & dependency);
void verifySystem (void);
void resolveDependencies (void);
typedef struct {
ResolverContextPtr context;
- constSpecPtr dep;
+ const Capability *dep;
bool flag;
} RequirementMetInfo;
static bool
- requirement_met_cb (constResItemPtr resItem, constSpecPtr spec, void *data)
+ requirement_met_cb (constResItemPtr resItem, const Capability & cap, void *data)
{
RequirementMetInfo *info = (RequirementMetInfo *)data;
// info->dep is set for resItem set children. If it is set, query the
// exact version only.
- if ((info->dep == NULL || info->dep->equals(spec))
+ if ((info->dep == NULL
+ || *(info->dep) == cap)
&& info->context->resItemIsPresent (resItem))
{
info->flag = true;
}
- //fprintf (stderr, "requirement_met_cb(%s, %s) [info->dep %s] -> %s\n", resItem->asString().c_str(), spec->asString().c_str(), info->dep != NULL ? info->dep->asString().c_str() : "(none)", info->flag ? "true" : "false");
+ //fprintf (stderr, "requirement_met_cb(%s, %s) [info->dep %s] -> %s\n", resItem->asString().c_str(), cap.asString().c_str(), info->dep != NULL ? info->dep->asString().c_str() : "(none)", info->flag ? "true" : "false");
return ! info->flag;
}
RequirementMetInfo info;
info.context = this;
- info.dep = is_child ? dependency : NULL;
+ info.dep = is_child ? &dependency : NULL;
info.flag = false;
world()->foreachProvidingResItem (dependency, requirement_met_cb, (void *)&info);
//---------------------------------------------------------------------------
static bool
- requirement_possible_cb (constResItemPtr resItem, constSpecPtr spec, void *data)
+ requirement_possible_cb (constResItemPtr resItem, const Capability & cap, void *data)
{
RequirementMetInfo *info = (RequirementMetInfo *)data;
string res;
res += ResolverInfo::toString (missing);
- res += string ("missing requirement ") + missing._missing_req->asString();
+ res += string ("missing requirement ") + missing._missing_req.asString();
return res;
}