{ /////////////////////////////////////////////////////////////////
using namespace solver;
-
+
IMPL_PTR_TYPE(Resolver);
#if 0
Resolver_Ptr Resolver::_resolver = NULL;
bool Resolver::resolvePool ()
{ return _pimpl->resolvePool(); }
bool Resolver::resolveQueue (zypp::solver::detail::SolverQueueItemList & queue)
- { return _pimpl->resolveQueue(queue); }
+ { return _pimpl->resolveQueue(queue); }
void Resolver::undo()
{ _pimpl->undo(); }
ResolverProblemList Resolver::problems ()
{ return _pimpl->problems (); }
void Resolver::applySolutions( const ProblemSolutionList & solutions )
- { _pimpl->applySolutions (solutions); }
+ { _pimpl->applySolutions (solutions); }
bool Resolver::doUpgrade( UpgradeStatistics & opt_stats_r )
{ return _pimpl->doUpgrade(opt_stats_r); }
void Resolver::doUpdate()
- { _pimpl->doUpdate(); }
+ { _pimpl->doUpdate(); }
void Resolver::setForceResolve( const bool force )
{ _pimpl->setForceResolve( force ); }
bool Resolver::forceResolve()
(const bool ignoreAlreadyRecommended)
{ _pimpl->setIgnorealreadyrecommended (ignoreAlreadyRecommended); }
bool Resolver::ignoreAlreadyRecommended()
- { return _pimpl->ignorealreadyrecommended(); }
+ { return _pimpl->ignorealreadyrecommended(); }
void Resolver::setOnlyRequires( const bool onlyRequires )
{ onlyRequires ? _pimpl->setOnlyRequires( true ) : _pimpl->setOnlyRequires( false ); }
void Resolver::resetOnlyRequires()
- { _pimpl->setOnlyRequires( indeterminate ); }
+ { _pimpl->setOnlyRequires( indeterminate ); }
bool Resolver::onlyRequires()
{
- if (_pimpl->onlyRequires() == indeterminate)
+ if (indeterminate(_pimpl->onlyRequires()))
return ZConfig::instance().solver_onlyRequires();
else
return _pimpl->onlyRequires();
}
-
+
void Resolver::addRequire (const Capability & capability)
{ _pimpl->addExtraRequire( capability ); }
void Resolver::addConflict (const Capability & capability)
const CapabilitySet Resolver::getRequire ()
{ return _pimpl->extraRequires();}
const CapabilitySet Resolver::getConflict ()
- { return _pimpl->extraConflicts();}
+ { return _pimpl->extraConflicts();}
std::list<PoolItem> Resolver::problematicUpdateItems( void ) const
{ return _pimpl->problematicUpdateItems(); }
bool Resolver::createSolverTestcase (const std::string & dumpPath)
const solver::detail::ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item)
{ return _pimpl->satifiedByInstalled (item); }
const solver::detail::ItemCapKindList Resolver::installedSatisfied (const PoolItem item)
- { return _pimpl->installedSatisfied (item); }
-
+ { return _pimpl->installedSatisfied (item); }
+
/////////////////////////////////////////////////////////////////
, _testing(false)
, _forceResolve(false)
, _upgradeMode(false)
- , _updateMode(false)
+ , _updateMode(false)
, _verifying(false)
, _onlyRequires(indeterminate)
, _ignorealreadyrecommended(false)
void
Resolver::reset (bool keepExtras )
{
- _verifying = false;
+ _verifying = false;
if (!keepExtras) {
_extra_requires.clear();
if (!found) {
_added_queue_items.push_back (item);
_added_queue_items.unique ();
- }
+ }
}
void
UndoTransact resetting (ResStatus::APPL_HIGH);
_DEBUG ("Resolver::verifySystem() ");
-
- _verifying = true;
+
+ _verifying = true;
invokeOnEach ( _pool.begin(), _pool.end(),
resfilter::ByTransact( ), // Resetting all transcations
// Additional QueueItems which has to be regarded by the solver
_removed_queue_items.clear();
- _added_queue_items.clear();
+ _added_queue_items.clear();
return;
}
}
_satResolver->setFixsystem(false);
- _satResolver->setIgnorealreadyrecommended(false);
+ _satResolver->setIgnorealreadyrecommended(false);
_satResolver->setAllowdowngrade(false);
_satResolver->setAllowarchchange(false);
_satResolver->setAllowvendorchange(false);
_satResolver->setAllowvirtualconflicts(false);
_satResolver->setNoupdateprovide(false);
_satResolver->setDosplitprovides(false);
-
+
if (_upgradeMode) {
_satResolver->setAllowdowngrade(true);
_satResolver->setUpdatesystem(false); // not needed cause packages has already been evaluteted by distupgrade
if (_forceResolve)
_satResolver->setAllowuninstall(true);
-
- if (_onlyRequires == indeterminate)
+
+ if (indeterminate(_onlyRequires))
_satResolver->setOnlyRequires(ZConfig::instance().solver_onlyRequires());
else if (_onlyRequires)
_satResolver->setOnlyRequires(true);
_satResolver->setFixsystem(true);
if (_ignorealreadyrecommended)
- _satResolver->setIgnorealreadyrecommended(true);
+ _satResolver->setIgnorealreadyrecommended(true);
// Resetting additional solver information
_isInstalledBy.clear();
Resolver::resolveQueue(solver::detail::SolverQueueItemList & queue)
{
solverInit();
-
+
// add/remove additional SolverQueueItems
for (SolverQueueItemList::const_iterator iter = _removed_queue_items.begin();
iter != _removed_queue_items.end(); iter++) {
for (SolverQueueItemList::const_iterator iterQueue = queue.begin(); iterQueue != queue.end(); iterQueue++) {
- if ( (*iterQueue)->cmp(*iter) == 0) {
+ if ( (*iterQueue)->cmp(*iter) == 0) {
MIL << "remove from queue" << *iter;
queue.remove(*iterQueue);
break;
- }
+ }
}
}
if ( (*iterQueue)->cmp(*iter) == 0) {
found = true;
break;
- }
+ }
}
if (!found) {
- MIL << "add to queue" << *iter;
+ MIL << "add to queue" << *iter;
queue.push_back(*iter);
}
}
// give the user a chance for changing these decisions again.
_removed_queue_items.clear();
_added_queue_items.clear();
-
+
return _satResolver->resolveQueue(queue, _addWeak);
}
sat::WhatProvides possibleProviders(*capIt);
for_( iter, possibleProviders.begin(), possibleProviders.end() ) {
PoolItem provider = ResPool::instance().find( *iter );
-
+
// searching if this provider will already be installed
bool found = false;
bool alreadySetForInstallation = false;
_isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
} else {
// no initial installation cause it has been set be e.g. user
- ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::REQUIRES, false );
- _isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
+ ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::REQUIRES, false );
+ _isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
}
ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::REQUIRES, !alreadySetForInstallation );
- _installs.insert (make_pair( *instIter, capKindisInstalledBy));
+ _installs.insert (make_pair( *instIter, capKindisInstalledBy));
}
if (provider.status().staysInstalled()) { // Is already satisfied by an item which is installed
ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::REQUIRES, false );
_satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy));
- ItemCapKind installedSatisfied( *instIter, *capIt, Dep::REQUIRES, false );
- _installedSatisfied.insert (make_pair( provider, installedSatisfied));
+ ItemCapKind installedSatisfied( *instIter, *capIt, Dep::REQUIRES, false );
+ _installedSatisfied.insert (make_pair( provider, installedSatisfied));
}
}
}
sat::WhatProvides possibleProviders(*capIt);
for_( iter, possibleProviders.begin(), possibleProviders.end() ) {
PoolItem provider = ResPool::instance().find( *iter );
-
+
// searching if this provider will already be installed
bool found = false;
bool alreadySetForInstallation = false;
_isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
} else {
// no initial installation cause it has been set be e.g. user
- ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::RECOMMENDS, false );
- _isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
+ ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::RECOMMENDS, false );
+ _isInstalledBy.insert (make_pair( provider, capKindisInstalledBy));
}
ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::RECOMMENDS, !alreadySetForInstallation );
- _installs.insert (make_pair( *instIter, capKindisInstalledBy));
+ _installs.insert (make_pair( *instIter, capKindisInstalledBy));
}
if (provider.status().staysInstalled()) { // Is already satisfied by an item which is installed
ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::RECOMMENDS, false );
_satifiedByInstalled.insert (make_pair( *instIter, capKindisInstalledBy));
- ItemCapKind installedSatisfied( *instIter, *capIt, Dep::RECOMMENDS, false );
- _installedSatisfied.insert (make_pair( provider, installedSatisfied));
- }
+ ItemCapKind installedSatisfied( *instIter, *capIt, Dep::RECOMMENDS, false );
+ _installedSatisfied.insert (make_pair( provider, installedSatisfied));
+ }
}
}
_isInstalledBy.insert (make_pair( *instIter, capKindisInstalledBy));
} else {
// no initial installation cause it has been set be e.g. user
- ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::SUPPLEMENTS, false );
- _isInstalledBy.insert (make_pair( *instIter, capKindisInstalledBy));
+ ItemCapKind capKindisInstalledBy( provider, *capIt, Dep::SUPPLEMENTS, false );
+ _isInstalledBy.insert (make_pair( *instIter, capKindisInstalledBy));
}
ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::SUPPLEMENTS, !alreadySetForInstallation );
_installs.insert (make_pair( provider, capKindisInstalledBy));
ItemCapKind capKindisInstalledBy( *instIter, *capIt, Dep::SUPPLEMENTS, !alreadySetForInstallation );
_satifiedByInstalled.insert (make_pair( provider, capKindisInstalledBy));
- ItemCapKind installedSatisfied( provider, *capIt, Dep::SUPPLEMENTS, false );
- _installedSatisfied.insert (make_pair( *instIter, installedSatisfied));
+ ItemCapKind installedSatisfied( provider, *capIt, Dep::SUPPLEMENTS, false );
+ _installedSatisfied.insert (make_pair( *instIter, installedSatisfied));
}
}
}