From 1eb7f65658a4d11fb9a3cebaefe71e5bce7ca7b0 Mon Sep 17 00:00:00 2001 From: Michael Andres Date: Thu, 2 Aug 2007 14:34:23 +0000 Subject: [PATCH] - Indicate changed pool content to the resolver. (required for #271912) --- VERSION.cmake | 2 +- devel/devel.ma/Basic.cc | 31 +++++++++++- devel/devel.ma/Parse.cc | 2 +- zypp/ResPool.cc | 3 ++ zypp/ResPool.h | 8 +++ zypp/pool/PoolImpl.cc | 12 ++++- zypp/pool/PoolImpl.h | 35 +++++++++---- zypp/solver/detail/Resolver.cc | 108 ++++++++++++++++++++++------------------- zypp/solver/detail/Resolver.h | 38 ++++++++------- 9 files changed, 155 insertions(+), 84 deletions(-) diff --git a/VERSION.cmake b/VERSION.cmake index 6846a4a..bf9c492 100644 --- a/VERSION.cmake +++ b/VERSION.cmake @@ -47,4 +47,4 @@ SET(LIBZYPP_MAJOR "3") SET(LIBZYPP_MINOR "13") SET(LIBZYPP_COMPATMINOR "13") -SET(LIBZYPP_PATCH "6") +SET(LIBZYPP_PATCH "7") diff --git a/devel/devel.ma/Basic.cc b/devel/devel.ma/Basic.cc index 512f560..f920c04 100644 --- a/devel/devel.ma/Basic.cc +++ b/devel/devel.ma/Basic.cc @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -29,6 +30,14 @@ int main( int argc, char * argv[] ) INT << "===[START]==========================================" << endl; ResPool pool( getZYpp()->pool() ); + SerialNumberWatcher poolchanged( pool.serial() ); + USR << pool << endl; + USR << poolchanged << endl; + + if ( poolchanged.remember( pool.serial() ) ) + { + SEC << "CHANGED" << endl; + } const char *const lines[] = { "@ package", @@ -41,11 +50,29 @@ int main( int argc, char * argv[] ) "@ fin" }; - //debug::addPool( lines, lines+(sizeof(lines)/sizeof(const char *const)) ); - debug::addPool( "/tmp/a" ); + debug::addPool( lines, lines+(sizeof(lines)/sizeof(const char *const)) ); + //debug::addPool( "/tmp/a" ); + USR << pool << endl; + if ( poolchanged.remember( pool.serial() ) ) + { + SEC << "CHANGED" << endl; + } USR << pool << endl; for_each( pool.begin(), pool.end(), chk ); + if ( poolchanged.remember( pool.serial() ) ) + { + SEC << "CHANGED" << endl; + } + if ( poolchanged.remember( pool.serial() ) ) + { + SEC << "CHANGED" << endl; + } + if ( poolchanged.remember( pool.serial() ) ) + { + SEC << "CHANGED" << endl; + } + INT << "===[END]============================================" << endl << endl; diff --git a/devel/devel.ma/Parse.cc b/devel/devel.ma/Parse.cc index 034fed2..a2939d4 100644 --- a/devel/devel.ma/Parse.cc +++ b/devel/devel.ma/Parse.cc @@ -345,7 +345,7 @@ int main( int argc, char * argv[] ) USR << "pool: " << pool << endl; SEC << pool.knownRepositoriesSize() << endl; - if ( 1 ) + if ( 0 ) { zypp::base::LogControl::TmpLineWriter shutUp; getZYpp()->initTarget( sysRoot ); diff --git a/zypp/ResPool.cc b/zypp/ResPool.cc index b71c667..5093ddb 100644 --- a/zypp/ResPool.cc +++ b/zypp/ResPool.cc @@ -14,6 +14,7 @@ #include "zypp/ResPool.h" #include "zypp/pool/PoolImpl.h" +#include "zypp/base/SerialNumber.h" using std::endl; @@ -111,6 +112,8 @@ namespace zypp ResPool::AdditionalCapSet & ResPool::additionaProvide() const { return _pimpl->additionaProvide(); } + const SerialNumber & ResPool::serial() const + { return _pimpl->serial(); } /****************************************************************** ** diff --git a/zypp/ResPool.h b/zypp/ResPool.h index 457bded..48ce7e7 100644 --- a/zypp/ResPool.h +++ b/zypp/ResPool.h @@ -22,6 +22,8 @@ namespace zypp { ///////////////////////////////////////////////////////////////// + class SerialNumber; + /////////////////////////////////////////////////////////////////// // // CLASS NAME : ResPool @@ -55,6 +57,12 @@ namespace zypp ~ResPool(); public: + /** The pools serial number. Changing whenever the + * whenever the content changes. (Resolvables or + * Dependencies). + */ + const SerialNumber & serial() const; + /** */ bool empty() const; /** */ diff --git a/zypp/pool/PoolImpl.cc b/zypp/pool/PoolImpl.cc index fa56e5c..8fba2a6 100644 --- a/zypp/pool/PoolImpl.cc +++ b/zypp/pool/PoolImpl.cc @@ -204,6 +204,17 @@ namespace zypp PoolImpl::~PoolImpl() {} + /////////////////////////////////////////////////////////////////// + // + // METHOD NAME : PoolImpl::serial + // METHOD TYPE : SerialNumber + // + const SerialNumber & PoolImpl::serial() const + { +#warning INCLUDE CHECK FOR CHANGED DEPENDENCIES + return _serial; + } + /****************************************************************** ** ** FUNCTION NAME : operator<< @@ -283,7 +294,6 @@ namespace zypp _poolImpl.invalidateProxy(); } - ///////////////////////////////////////////////////////////////// } // namespace pool /////////////////////////////////////////////////////////////////// diff --git a/zypp/pool/PoolImpl.h b/zypp/pool/PoolImpl.h index 04fe3f3..3d57919 100644 --- a/zypp/pool/PoolImpl.h +++ b/zypp/pool/PoolImpl.h @@ -16,6 +16,7 @@ #include #include "zypp/base/Easy.h" +#include "zypp/base/SerialNumber.h" #include "zypp/pool/PoolTraits.h" #include "zypp/ResPoolProxy.h" #include "zypp/ZYppFactory.h" @@ -277,7 +278,8 @@ namespace zypp /** */ void clear() - { _store.clear(); + { + _store.clear(); _caphash.clear(); _namehash.clear(); _additionalRequire.clear(); @@ -321,10 +323,18 @@ namespace zypp //@} public: - /** */ - ContainerT _store; - NameHash _namehash; - CapHash _caphash; + /** Serial number changing whenever the content + * (Resolvables or Dependencies) changes. */ + const SerialNumber & serial() const; + + private: + /** Serial number. */ + SerialNumber _serial; + + public: + ContainerT _store; + NameHash _namehash; + CapHash _caphash; mutable AdditionalCapSet _additionalRequire; mutable AdditionalCapSet _additionaConflict; mutable AdditionalCapSet _additionaProvide; @@ -336,19 +346,24 @@ namespace zypp _poolProxy.reset( new ResPoolProxy( self ) ); return *_poolProxy; } + + /** Invalidate all data we build on demand. + * To be called whenever the pools content changes + */ void invalidateProxy() { + _serial.setDirty(); _poolProxy.reset(); _knownRepositoriesPtr.reset(); } mutable shared_ptr _poolProxy; - private: - /** Set of known repositories built on demand. - * Invalidated on any Pool content change. Rebuilt on next access. - */ - mutable scoped_ptr _knownRepositoriesPtr; + private: + /** Set of known repositories built on demand. + * Invalidated on any Pool content change. Rebuilt on next access. + */ + mutable scoped_ptr _knownRepositoriesPtr; }; /////////////////////////////////////////////////////////////////// diff --git a/zypp/solver/detail/Resolver.cc b/zypp/solver/detail/Resolver.cc index 8a2964d..44ebca7 100644 --- a/zypp/solver/detail/Resolver.cc +++ b/zypp/solver/detail/Resolver.cc @@ -59,7 +59,7 @@ using namespace std; IMPL_PTR_TYPE(Resolver); static const unsigned MAX_SECOND_RUNS( 3 ); -static const unsigned MAX_VALID_SOLUTIONS( 50 ); +static const unsigned MAX_VALID_SOLUTIONS( 50 ); static const unsigned TIMOUT_SECOND_RUN( 30 ); static PoolItemSet triggeredSolution; // only the latest state of an item is interesting @@ -74,7 +74,7 @@ public: { return compareByNVRA(p1.resolvable(),p2.resolvable()) < 0; } }; - + std::ostream & Resolver::dumpOn( std::ostream & os ) const { @@ -107,6 +107,7 @@ void assertSystemResObjectInPool() Resolver::Resolver (const ResPool & pool) : _pool (pool) + , _poolchanged( _pool.serial() ) , _timeout_seconds (0) , _maxSolverPasses (0) , _verifying (false) @@ -120,8 +121,13 @@ Resolver::Resolver (const ResPool & pool) , _forceResolve (false) , _upgradeMode (false) , _preferHighestVersion (true) - -{} + +{ + //if ( _poolchanged.remember( _pool.serial() ) ) + //{ + // SEC << "CHANGED" << endl; + //} +} Resolver::~Resolver() @@ -169,7 +175,7 @@ Resolver::reset (bool resetValidResults, bool keepExtras ) if (resetValidResults) contextPool.reset(); - + } //-------------------------------------------------------------------------------------------------- @@ -190,7 +196,7 @@ collector_cb_needed (ResolverInfo_Ptr info, void *data) if (needed_by->items().size() >= 1) { PoolItem_Ref item = info->affected(); PoolItemList itemList = needed_by->items(); - + for (PoolItemList::const_iterator iter = itemList.begin(); iter != itemList.end(); iter++) { bool found = false; @@ -213,19 +219,19 @@ collector_cb_needed (ResolverInfo_Ptr info, void *data) && !found) { ItemCapKind capKind = pos->second; if (capKind.item == item) found = true; - pos++; - } + pos++; + } if (!found) { ItemCapKind capKindReverse( item, needed_by->capability(), needed_by->capKind(), needed_by->initialInstallation() ); collector->installs.insert (make_pair( *iter, capKindReverse)); } } - + } } } - -void + +void Resolver::collectResolverInfo(void) { ResolverContext_Ptr collectContext = context(); // best context or failed context @@ -243,7 +249,7 @@ Resolver::collectResolverInfo(void) const ItemCapKindList Resolver::isInstalledBy (const PoolItem_Ref item) { ItemCapKindList ret; collectResolverInfo(); - + for (ItemCapKindMap::const_iterator iter = _isInstalledBy.find(item); iter != _isInstalledBy.end();) { ItemCapKind info = iter->second; PoolItem_Ref iterItem = iter->first; @@ -253,7 +259,7 @@ const ItemCapKindList Resolver::isInstalledBy (const PoolItem_Ref item) { } else { // exit iter = _isInstalledBy.end(); - } + } } return ret; } @@ -261,7 +267,7 @@ const ItemCapKindList Resolver::isInstalledBy (const PoolItem_Ref item) { const ItemCapKindList Resolver::installs (const PoolItem_Ref item) { ItemCapKindList ret; collectResolverInfo(); - + for (ItemCapKindMap::const_iterator iter = _installs.find(item); iter != _installs.end();) { ItemCapKind info = iter->second; PoolItem_Ref iterItem = iter->first; @@ -271,9 +277,9 @@ const ItemCapKindList Resolver::installs (const PoolItem_Ref item) { } else { // exit iter = _installs.end(); - } + } } - return ret; + return ret; } @@ -350,7 +356,7 @@ Resolver::addPoolItemToRemove (PoolItem_Ref item) } if (!found) { _items_to_remove.push_back (item); - _items_to_remove.unique (); + _items_to_remove.unique (); } } @@ -512,7 +518,7 @@ bool Resolver::verifySystem (bool considerNewHardware) { UndoTransact resetting (ResStatus::APPL_HIGH); - + _DEBUG ("Resolver::verifySystem() " << (considerNewHardware ? "consider new hardware":"")); invokeOnEach ( _pool.begin(), _pool.end(), @@ -529,7 +535,7 @@ Resolver::verifySystem (bool considerNewHardware) invokeOnEach( pool().byKindBegin( ResTraits::kind ), pool().byKindEnd( ResTraits::kind ), resfilter::ByInstalled ( ), - functor::functorRef(info) ); + functor::functorRef(info) ); _verifying = true; @@ -547,9 +553,9 @@ Resolver::verifySystem (bool considerNewHardware) DoTransact setting (ResStatus::APPL_HIGH); invokeOnEach ( _pool.begin(), _pool.end(), - resfilter::ByTransact( ), - functor::functorRef(setting) ); - + resfilter::ByTransact( ), + functor::functorRef(setting) ); + return success; } @@ -571,7 +577,7 @@ solution_to_pool (PoolItem_Ref item, const ResStatus & status, void *data) // resetting transaction only item.status().resetTransact((data != NULL) ? ResStatus::APPL_LOW : ResStatus::SOLVER ); - + bool r; if (status.isToBeInstalled()) { @@ -649,7 +655,7 @@ Resolver::establishState( ResolverContext_Ptr context ) _ignoreInstalledItem, _ignoreArchitectureItem); context->setForceResolve( _forceResolve ); - context->setEstablishContext( _establish_context ); + context->setEstablishContext( _establish_context ); context->setPreferHighestVersion ( _preferHighestVersion ); context->setUpgradeMode( _upgradeMode ); @@ -689,7 +695,7 @@ Resolver::establishPool () ResolverContext_Ptr solution = bestContext(); if (solution) { // copy solution back to pool - triggeredSolution.clear(); + triggeredSolution.clear(); solution->foreachMarked (solution_to_pool, (void *)1); // as APPL_LOW } else { @@ -774,7 +780,7 @@ Resolver::freshenState( ResolverContext_Ptr context, _ignoreInstalledItem, _ignoreArchitectureItem ); context->setForceResolve( _forceResolve ); - context->setEstablishContext( _establish_context ); + context->setEstablishContext( _establish_context ); context->setPreferHighestVersion( _preferHighestVersion ); context->setUpgradeMode( _upgradeMode ); @@ -794,9 +800,9 @@ Resolver::freshenState( ResolverContext_Ptr context, // process the queue resolveDependencies( context ); - + if (resetAfterSolve) { - reset( false, true ); //resetValidResults,keepExtras + reset( false, true ); //resetValidResults,keepExtras context->setEstablishing( false ); _best_context = context; } @@ -891,7 +897,7 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) ignoreRequires.insert(make_pair(PoolItem_Ref(), *cit)); } } - + // Initialize all ignoring dependencies initial_queue->context()->setIgnoreCababilities (_ignoreConflicts, ignoreRequires, @@ -899,7 +905,7 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) _ignoreInstalledItem, _ignoreArchitectureItem); initial_queue->context()->setForceResolve( _forceResolve ); - initial_queue->context()->setEstablishContext( _establish_context ); + initial_queue->context()->setEstablishContext( _establish_context ); initial_queue->context()->setPreferHighestVersion( _preferHighestVersion ); initial_queue->context()->setUpgradeMode( _upgradeMode ); initial_queue->context()->setTryAllPossibilities( _tryAllPossibilities ); @@ -953,14 +959,14 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) for (CapSet::const_iterator iter = _extra_caps.begin(); iter != _extra_caps.end(); iter++) { initial_queue->addExtraCapability (*iter); } - + // adding "external" requires additionalCapSet = pool().additionalRequire(); for (ResPool::AdditionalCapSet::const_iterator it = additionalCapSet.begin(); it != additionalCapSet.end(); it++) { CapSet cset = it->second; for (CapSet::const_iterator cit = cset.begin(); cit != cset.end(); ++cit) { - initial_queue->addExtraCapability (*cit); + initial_queue->addExtraCapability (*cit); } } @@ -974,7 +980,7 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) it != additionalCapSet.end(); it++) { CapSet cset = it->second; for (CapSet::const_iterator cit = cset.begin(); cit != cset.end(); ++cit) { - initial_queue->addExtraConflict (*cit); + initial_queue->addExtraConflict (*cit); } } @@ -1030,7 +1036,7 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) << " ) reached -> exit" << endl; break; } - + ResolverQueue_Ptr queue = _pending_queues.front(); _pending_queues.pop_front(); ResolverContext_Ptr context = queue->context(); @@ -1093,7 +1099,7 @@ Resolver::resolveDependencies (const ResolverContext_Ptr context) << " / Prun " << (long) _pruned_queues.size() << " / Defr " << (long) _deferred_queues.size() << " / Invl " << (long) _invalid_queues.size() ); - + return _best_context && _best_context->isValid(); } @@ -1165,14 +1171,14 @@ struct CollectTransact : public resfilter::PoolItemFilterFunctor WAR << "Can't find " << item << " for re-installation" << endl; } } - + if (status.isLocked() && status.isUninstalled()) { // This item could be selected by solver in a former run. Now it // is locked. So we will have to evaluate a new solver run. resolver.addPoolItemToLockUninstalled (item); } - + return true; } }; @@ -1233,11 +1239,11 @@ Resolver::resolvePool( bool tryAllPossibilities ) << endl; MIL << "Solver run with ALL possibilities" << endl; - if (_maxSolverPasses <= 0) - _maxSolverPasses = MAX_SECOND_RUNS; - if (_timeout_seconds <= 0) + if (_maxSolverPasses <= 0) + _maxSolverPasses = MAX_SECOND_RUNS; + if (_timeout_seconds <= 0) _timeout_seconds = TIMOUT_SECOND_RUN; - + MIL << "But no longer than " << MAX_SECOND_RUNS << " runs or " << TIMOUT_SECOND_RUN << " seconds" << endl; MIL << "================================================================" << endl; @@ -1261,18 +1267,18 @@ Resolver::resolvePool( bool tryAllPossibilities ) PoolItemList _completeItems_to_install = _items_to_install; PoolItemList _completeItems_to_remove = _items_to_remove; PoolItemList _completeItems_to_lockUninstalled = _items_to_lockUninstalled; - + // We have to find a valid context in order to recycle it. saveContext = contextPool.findContext (_items_to_install, _items_to_remove, _items_to_lockUninstalled); // _items_to_install, _items_to_remove contains addition items which has been selected but are - // not solved with that context. They will be solved now. + // not solved with that context. They will be solved now. // If we have not found any former fitting context, saveContext is NULL. So the solver // make a complete run if (saveContext != NULL) { // create a new context in order not overwriting the old saveContext = new ResolverContext (saveContext->pool(), saveContext->architecture(), saveContext); - saveContext->setTryAllPossibilities( true ); + saveContext->setTryAllPossibilities( true ); } bool have_solution = resolveDependencies (saveContext); // resolve ! @@ -1280,7 +1286,7 @@ Resolver::resolvePool( bool tryAllPossibilities ) if (have_solution) { // copy solution back to pool MIL << "Have solution, copying back to pool" << endl; ResolverContext_Ptr solution = bestContext(); - triggeredSolution.clear(); + triggeredSolution.clear(); solution->foreachMarked (solution_to_pool, NULL); #if 1 _XDEBUG( "Pool after resolve" ); @@ -1288,7 +1294,7 @@ Resolver::resolvePool( bool tryAllPossibilities ) #endif // insert best_context in ContextPool for further solver runs contextPool.addContext( solution,_completeItems_to_install, _completeItems_to_remove, _completeItems_to_lockUninstalled); - + } else { MIL << "!!! Have NO solution !!! Additional solver information:" << endl; @@ -1298,17 +1304,17 @@ Resolver::resolvePool( bool tryAllPossibilities ) counter++; MIL << "-----------------------------------------------------------------" << endl; MIL << counter++ << ". failed queue:" << endl; - ResolverQueue_Ptr invalid = *iter; + ResolverQueue_Ptr invalid = *iter; // invalid->context()->spewInfo (); No additional information needed here MIL << *invalid->context() << endl; - MIL << "-----------------------------------------------------------------" << endl; + MIL << "-----------------------------------------------------------------" << endl; } } if (tryAllPossibilities) { _tryAllPossibilities = saveTryAllPossibilities; // reset to old value } - + return have_solution; } @@ -1343,7 +1349,7 @@ Resolver::transactResObject( ResObject::constPtr robj, bool install, { MIL << "transactResObject()" << endl; MIL << "is obsolete; use resolvePool() instead" << endl; - + return true; } @@ -1352,7 +1358,7 @@ bool Resolver::transactResKind( Resolvable::Kind kind ) { MIL << "transactResKind(" << kind << ")" << endl; - MIL << "is obsolete; use resolvePool() instead" << endl; + MIL << "is obsolete; use resolvePool() instead" << endl; return true; } diff --git a/zypp/solver/detail/Resolver.h b/zypp/solver/detail/Resolver.h index 1885b43..50a5177 100644 --- a/zypp/solver/detail/Resolver.h +++ b/zypp/solver/detail/Resolver.h @@ -31,6 +31,7 @@ #include "zypp/base/PtrTypes.h" #include "zypp/ResPool.h" +#include "zypp/base/SerialNumber.h" #include "zypp/solver/detail/Types.h" #include "zypp/solver/detail/ResolverQueue.h" @@ -54,7 +55,7 @@ namespace zypp ///////////////////////////////////////////////////////////////////// namespace detail { /////////////////////////////////////////////////////////////////// - + /////////////////////////////////////////////////////////////////// // // CLASS NAME : ItemCapKind @@ -77,7 +78,7 @@ namespace zypp { } }; typedef std::multimap ItemCapKindMap; - typedef std::list ItemCapKindList; + typedef std::list ItemCapKindList; /////////////////////////////////////////////////////////////////// // @@ -87,12 +88,13 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { private: ResPool _pool; + SerialNumberWatcher _poolchanged; unsigned _timeout_seconds; unsigned _maxSolverPasses; bool _verifying; bool _testing; - + // In order reducing solver time we are reducing the branches // by skipping resolvables which have worse architecture,edition // than a resolvable which provides the same cababilities. @@ -106,8 +108,8 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { PoolItemList _items_to_establish; PoolItemList _items_to_remove; PoolItemList _items_to_verify; - PoolItemList _items_to_lockUninstalled; - + PoolItemList _items_to_lockUninstalled; + // pool of valid contexts which are "recycled" in order to fasten the solver ContextPool contextPool; @@ -117,7 +119,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { // Additional information about the solverrun ItemCapKindMap _isInstalledBy; ItemCapKindMap _installs; - + CapSet _extra_caps; CapSet _extra_conflicts; @@ -125,17 +127,17 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { // These conflict should be ignored of the concering item IgnoreMap _ignoreConflicts; - // These requires should be ignored of the concering item + // These requires should be ignored of the concering item IgnoreMap _ignoreRequires; - // These obsoletes should be ignored of the concering item - IgnoreMap _ignoreObsoletes; + // These obsoletes should be ignored of the concering item + IgnoreMap _ignoreObsoletes; // Ignore architecture of the item PoolItemList _ignoreArchitecture; // Ignore the status "installed" of the item PoolItemList _ignoreInstalledItem; // Ignore the architecture of the item - PoolItemList _ignoreArchitectureItem; - + PoolItemList _ignoreArchitectureItem; + ResolverQueueList _pending_queues; ResolverQueueList _pruned_queues; @@ -147,7 +149,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { ResolverContext_Ptr _best_context; // Context of the last establishing call ( without any transaction ) - ResolverContext_Ptr _establish_context; + ResolverContext_Ptr _establish_context; bool _timed_out; std::set _subscribed; @@ -159,14 +161,14 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { // This behaviour is favourited by ZMD bool _upgradeMode; // Resolver has been called with doUpgrade bool _preferHighestVersion; // Prefer the result with the newest version - //if there are more solver results. + //if there are more solver results. // helpers bool doesObsoleteCapability (PoolItem_Ref candidate, const Capability & cap); bool doesObsoleteItem (PoolItem_Ref candidate, PoolItem_Ref installed); void collectResolverInfo (void); - + public: @@ -179,7 +181,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { friend std::ostream& operator<<(std::ostream& str, const Resolver & obj) { return obj.dumpOn (str); } void dumpTaskList(const PoolItemList &install, const PoolItemList &remove ); - + // ---------------------------------- accessors QueueItemList initialItems () const { return _initial_items; } @@ -231,7 +233,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { void addIgnoreObsoletes (const PoolItem_Ref item, const Capability & capability); void addIgnoreInstalledItem (const PoolItem_Ref item); - void addIgnoreArchitectureItem (const PoolItem_Ref item); + void addIgnoreArchitectureItem (const PoolItem_Ref item); void setForceResolve (const bool force) { _forceResolve = force; } const bool forceResolve() { return _forceResolve; } @@ -240,7 +242,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { void setTryAllPossibilities (const bool tryAllPossibilities) { _tryAllPossibilities = tryAllPossibilities; } const bool tryAllPossibilities () { return _tryAllPossibilities; }; - + bool verifySystem (bool considerNewHardware = false); void establishState (ResolverContext_Ptr context = NULL); bool establishPool (void); @@ -269,7 +271,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { // Get more information about the solverrun // Which item will be installed by another item or triggers an item for - // installation + // installation const ItemCapKindList isInstalledBy (const PoolItem_Ref item); const ItemCapKindList installs (const PoolItem_Ref item); -- 2.7.4