_context->addInfo (misc_info);
}
- _XDEBUG("because: '" << conflicting_item << "' provides " << conflicting_cap);
+ _XDEBUG("because: '" << conflicting_item << "'conflicts " << conflicting_cap);
QueueItemUninstall_Ptr uninstall_qitem = new QueueItemUninstall (_context->pool(), conflicting_item, QueueItemUninstall::CONFLICT);
uninstall_qitem->setDueToConflict ();
if (!_upgrades) {
- _XDEBUG("simple install of " << _item);
- context->install (_item, context->verifying() || _soft, _other_penalty);
+ _XDEBUG("trying simple install of " << _item);
+ if (!context->install (_item, context->verifying() || _soft, _other_penalty))
+ goto finished;
}
else {
QueueItemUninstall_Ptr uninstall_item;
- _XDEBUG("upgrade install of " << _item);
+ _XDEBUG("trying upgrade install of " << _item);
- context->upgrade (_item, _upgrades, context->verifying() || _soft, _other_penalty);
+ if (!context->upgrade (_item, _upgrades, context->verifying() || _soft, _other_penalty)) {
+ // invalid solution
+ ResolverInfo_Ptr info = new ResolverInfoMisc (RESOLVER_INFO_TYPE_INVALID_SOLUTION, PoolItem_Ref(), RESOLVER_INFO_PRIORITY_VERBOSE);
+ context->addError (info);
+ goto finished;
+ }
// the upgrade will uninstall the installed one, take care of this
ResStatus
ResolverContext::getStatus (PoolItem_Ref item)
{
-_XDEBUG( "[" << this << "]getStatus(" << item << ")" );
+//_XDEBUG( "[" << this << "]getStatus(" << item << ")" );
if (item == _last_checked_item) return _last_checked_status;
it = context->_context.find(item); // part of local context ?
if (it != context->_context.end()) {
-_XDEBUG( "[" << context << "]:" << it->second );
+//_XDEBUG( "[" << context << "]:" << it->second );
_last_checked_status = it->second;
return it->second; // Y: return
}
status = ResStatus::uninstalled; // return _is_ state, not _to be_ state
_last_checked_status = status;
- _XDEBUG( "[NULL]:" << status );
+// _XDEBUG( "[NULL]:" << status );
#else
_last_checked_status = item.status();
#endif
if (status.isToBeUninstalled()
|| status.isImpossible())
return false;
-
+
if (status.isToBeInstalled())
return true;
-
+
if (is_soft) {
setStatus (item, ResStatus::toBeInstalledSoft);
}
else {
setStatus (item, ResStatus::toBeInstalled);
}
-
+
Resolvable::constPtr res = old_item.resolvable();
Package::constPtr pkg = asKind<Package>(res); // try to access it as a package
if (pkg) { // if its !=NULL, get size information