_upgrades = Helper::findInstalledItem (pool, item);
}
- DBG << "QueueItemInstall::QueueItemInstall(" << item << ") upgrades " << _upgrades << endl;
+ _DEBUG("QueueItemInstall::QueueItemInstall(" << item << (soft?", soft":"") << ") upgrades " << _upgrades);
}
bool operator()( PoolItem_Ref provider, const Capability & match )
{
- DBG << "EstablishFreshens (" << provider << ", " << match << ")" << endl;
+ _DEBUG("EstablishFreshens (" << provider << ", " << match << ")");
QueueItemEstablish_Ptr establish_item = new QueueItemEstablish (pool, provider);
qil.push_front (establish_item);
{
ResStatus status = context->getStatus(_item);
- DBG << "QueueItemInstall::process(" << *this << "):" << status << endl;
+ _DEBUG( "QueueItemInstall::process(" << *this << "):" << status);
/* If we are trying to upgrade item A with item B and they both have the
same version number, do nothing. This shouldn't happen in general with
{
ResolverInfo_Ptr info;
- DBG << "install upgrades itself, skipping" << endl;
+ _DEBUG("install upgrades itself, skipping");
info = new ResolverInfoMisc (RESOLVER_INFO_TYPE_SKIPPING, _item, RESOLVER_INFO_PRIORITY_VERBOSE);
context->addInfo (info);
if (!_needed_by.empty()) {
bool still_needed = false;
- DBG << "still needed " << endl;
+ _DEBUG( "still needed ");
for (PoolItemList::const_iterator iter = _needed_by.begin(); iter != _needed_by.end() && !still_needed; ++iter) {
ResStatus status = iter->status();
- DBG << "by: [status: " << status << "] " << *iter << endl;
+ _DEBUG("by: [status: " << status << "] " << *iter);
if (! status.isToBeUninstalled()) {
still_needed = true;
}
if (!_upgrades) {
- DBG << "simple install of " << _item << endl;
+ _DEBUG("simple install of " << _item);
context->install (_item, context->verifying() /* is_soft */, _other_penalty);
}
QueueItemUninstall_Ptr uninstall_item;
- DBG << "upgrade install of " << _item << endl;
+ _DEBUG("upgrade install of " << _item);
context->upgrade (_item, _upgrades, context->verifying() /* is_soft */, _other_penalty);
|| status.isIncomplete()
|| status.isSatisfied()))
{
- DBG << "status " << status << " -> finished" << endl;
+ _DEBUG("status " << status << " -> finished");
goto finished;
}
- DBG << "status " << status << " -> NOT finished" << endl;
+ _DEBUG("status " << status << " -> NOT finished");
{ // just a block for local initializers, the goto above makes this necessary
ResolverInfoMisc_Ptr misc_info;
for (CapSet::const_iterator iter = caps.begin(); iter != caps.end(); iter++) {
const Capability cap = *iter;
- DBG << "this requires " << cap << endl;
+ _DEBUG("this requires " << cap);
if (!context->requirementIsMet (cap)) {
- DBG << "this requirement is still unfulfilled" << endl;
+ _DEBUG("this requirement is still unfulfilled");
QueueItemRequire_Ptr req_item = new QueueItemRequire (pool(), cap, _soft);
req_item->addPoolItem (_item);
qil.push_front (req_item);
for (CapSet::const_iterator iter = caps.begin(); iter != caps.end(); iter++) {
const Capability cap = *iter;
- DBG << "this recommends " << cap << endl;
+ _DEBUG("this recommends " << cap);
if (!context->requirementIsMet (cap)) {
- DBG << "this recommends is still unfulfilled" << endl;
+ _DEBUG("this recommends is still unfulfilled");
QueueItemRequire_Ptr req_item = new QueueItemRequire (pool(), cap, true); // this is a soft requires
req_item->addPoolItem (_item);
qil.push_front (req_item);
for (CapSet::const_iterator iter = caps.begin(); iter != caps.end(); iter++) {
const Capability cap = *iter;
- DBG << "this conflicts with '" << cap << "'" << endl;
+ _DEBUG("this conflicts with '" << cap << "'");
QueueItemConflict_Ptr conflict_item = new QueueItemConflict (pool(), cap, _item, _soft);
qil.push_front (conflict_item);
for (CapSet::const_iterator iter = caps.begin(); iter != caps.end(); iter++) {
const Capability cap = *iter;
- DBG << "this obsoletes " << cap << endl;
+ _DEBUG("this obsoletes " << cap);
QueueItemConflict_Ptr conflict_item = new QueueItemConflict (pool(), cap, _item, _soft);
conflict_item->setActuallyAnObsolete();
qil.push_front (conflict_item);
continue;
}
- DBG << "because: '" << conflicting_item << "'" << endl;
+ _DEBUG("because: '" << conflicting_item << "'");
uninstall_item = new QueueItemUninstall (pool(), conflicting_item, QueueItemUninstall::CONFLICT, _soft);
uninstall_item->setDueToConflict ();
//---------------------------------------------------------------------------
-QueueItemRequire::QueueItemRequire (const ResPool & pool, const Capability & dep, bool soft)
+QueueItemRequire::QueueItemRequire (const ResPool & pool, const Capability & cap, bool soft)
: QueueItem (QUEUE_ITEM_TYPE_REQUIRE, pool)
- , _capability (dep)
+ , _capability (cap)
, _soft (soft)
, _remove_only (false)
, _is_child (false)
{
+ _DEBUG("QueueItemRequire::QueueItemRequire(" << cap << (soft?", soft":"") << ")");
}
bool
QueueItemRequire::process (ResolverContext_Ptr context, QueueItemList & new_items)
{
- DBG << "QueueItemRequire::process(" << *this << ")" << endl;
+ MIL << "QueueItemRequire::process(" << *this << ")" << endl;
if (context->requirementIsMet (_capability, _is_child)) {
DBG << "requirement is already met in current context" << endl;
num_providers = info.providers.size();
- DBG << "requirement is met by " << num_providers << " resolvable";
+ _DEBUG( "requirement is met by " << num_providers << " resolvable");
}
//
if (_soft) goto finished; // don't care for soft requires
- DBG << "Unfulfilled requirement, try different solution" << endl;
+ _DEBUG( "Unfulfilled requirement, try different solution");
QueueItemUninstall_Ptr uninstall_item = NULL;
QueueItemBranch_Ptr branch_item = NULL;
else if (num_providers == 1) {
- DBG << "Found exactly one resolvable, installing it." << endl;
+ _DEBUG( "Found exactly one resolvable, installing it.");
QueueItemInstall_Ptr install_item = new QueueItemInstall (pool(), info.providers.front(), _soft);
install_item->addDependency (_capability);
else if (num_providers > 1) {
- DBG << "Found more than one resolvable, branching." << endl;
+ _DEBUG( "Found more than one resolvable, branching.");
// ERR << "Found more than one item, branching." << endl;
QueueItemBranch_Ptr branch_item = new QueueItemBranch (pool());
, _verifying (false)
, _invalid (false)
{
-DBG << "ResolverContext[" << this << "]::ResolverContext(" << parent << ")" << endl;
+_DEBUG( "ResolverContext[" << this << "]::ResolverContext(" << parent << ")" );
if (parent != NULL) {
_pool = parent->_pool;
_download_size = parent->_download_size;
ResStatus
ResolverContext::getStatus (PoolItem_Ref item) const
{
-DBG << "[" << this << "]getStatus(" << item << ")" << endl;
+_DEBUG( "[" << this << "]getStatus(" << item << ")" );
Context::const_iterator it;
ResolverContext_constPtr context = this;
it = context->_context.find(item); // part of local context ?
if (it != context->_context.end()) {
-DBG << "[" << context << "]:" << it->second << endl;
+_DEBUG( "[" << context << "]:" << it->second );
return it->second; // Y: return
}
context = context->_parent; // N: go up the chain
}
-DBG << "[NULL]:" << item.status() << endl;
+_DEBUG( "[NULL]:" << item.status() );
return item.status(); // Not part of context, return Pool status
}
ResolverContext::setStatus (PoolItem_Ref item, const ResStatus & status)
{
if (_invalid) return;
-DBG << "[" << this << "]setStatus(" << item << ", " << status << ")" << endl;
+_DEBUG( "[" << this << "]setStatus(" << item << ", " << status << ")" );
if (status == item.status()) { // same as original status
Context::iterator it;
it = _context.find(item); // part of local context ?
if (it != _context.end()) {
-DBG << "UNMARK" << endl;
+_DEBUG( "UNMARK" );
_context.erase (it); // erase it !
}
}
ResStatus old_status = getStatus (item);
if (old_status != status) { // new status ?
-DBG << "MARK" << endl;
+_DEBUG( "MARK" );
_context[item] = status; // set it !
}
}
std::string msg;
status = getStatus(item);
- DBG << "ResolverContext[" << this << "]::install(<" << status << "> " << item << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::install(<" << status << "> " << item << ")" );
if (status.isToBeUninstalled()
&& !status.isToBeUninstalledDueToUnlink()) {
{
ResStatus status;
- DBG << "ResolverContext[" << this << "]::upgrade(" << item << " upgrades " << old_item << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::upgrade(" << item << " upgrades " << old_item << ")" );
status = getStatus(item);
ResStatus status, new_status;
std::string msg;
- DBG << "ResolverContext[" << this << "]::uninstall("
+ _DEBUG( "ResolverContext[" << this << "]::uninstall("
<< item << " " << (part_of_upgrade ? "part_of_upgrade" : "") << " "
<< (due_to_obsolete ? "due_to_obsolete": "") << " "
- << (due_to_unlink ? "due_to_unlink" : "") << ")" << endl;
+ << (due_to_unlink ? "due_to_unlink" : "") << ")" );
assert (! (due_to_obsolete && due_to_unlink));
{
ResStatus status;
- DBG << "ResolverContext[" << this << "]::unneeded(" << item << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::unneeded(" << item << ")" );
status = getStatus(item);
status = getStatus(item);
- DBG << "ResolverContext[" << this << "]::satisfy(" << item << ":" << status << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::satisfy(" << item << ":" << status << ")" );
if (status.isInstalled()) {
setStatus (item, ResStatus::complete);
bool
ResolverContext::incomplete (PoolItem_Ref item, int other_penalty)
{
- DBG << "ResolverContext[" << this << "]::incomplete(" << item << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::incomplete(" << item << ")" );
ResStatus status;
status = getStatus(item);
void
ResolverContext::addInfo (ResolverInfo_Ptr info)
{
- DBG << "ResolverContext[" << this << "]::addInfo(" << *info << ")" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::addInfo(" << *info << ")" );
_log.push_back (info);
// _propagated_importance = false;
void
ResolverContext::spewInfo (void) const
{
- DBG << "ResolverContext[" << this << "]::spewInfo" << endl;
+ _DEBUG( "ResolverContext[" << this << "]::spewInfo" );
foreachInfo (PoolItem_Ref(), -1, spew_info_cb, NULL);
}
return 0;
cmp = partialCompare (context);
-MIL << "partialCompare " << cmp << endl;
if (cmp)
return cmp;
/* High numbers are bad. Smaller downloads are best. */
cmp = rev_num_cmp (_download_size, context->_download_size);
-MIL << "download size " << cmp << endl;
if (cmp)
return cmp;
/* High numbers are bad. Less disk space consumed is good. */
cmp = rev_num_cmp (_install_size, context->_install_size);
-MIL << "install size " << cmp << endl;
if (cmp)
return cmp;
typedef std::list <zypp::PoolItem> PoolItemList;
typedef std::set <zypp::PoolItem> PoolItemSet;
+#define _DEBUG(x) DBG << x
/////////////////////////////////////////////////////////////////////////
namespace zypp