From b0311bcc438c05a82e0e1d30a32068c7188e561f Mon Sep 17 00:00:00 2001 From: Michael Andres Date: Wed, 27 May 2009 13:55:20 +0200 Subject: [PATCH] New Resolver interface to turn vendor checks on/off. - New setAllowVendorChange/setDefaultAllowVendorChange/allowVendorChange - Cleanup Resolvers argument and return value types. Missing references, missing/superfluous const. --- zypp/Resolver.cc | 105 +++++++++++++------------ zypp/Resolver.h | 56 ++++++++------ zypp/VendorAttr.h | 7 +- zypp/solver/detail/Resolver.cc | 169 +++++++++++++++++------------------------ zypp/solver/detail/Resolver.h | 99 +++++++++++++----------- zypp/solver/detail/Testcase.cc | 6 +- 6 files changed, 213 insertions(+), 229 deletions(-) diff --git a/zypp/Resolver.cc b/zypp/Resolver.cc index ba3bfa0..055dcc1 100644 --- a/zypp/Resolver.cc +++ b/zypp/Resolver.cc @@ -27,16 +27,7 @@ namespace zypp using namespace solver; IMPL_PTR_TYPE(Resolver); -#if 0 - Resolver_Ptr Resolver::_resolver = NULL; - Resolver_Ptr Resolver::resolver() - { - if (_resolver == NULL) { - _resolver = new Resolver(); - } - return _resolver; - } -#endif + /////////////////////////////////////////////////////////////////// // // METHOD NAME : Resolver::Resolver @@ -62,75 +53,81 @@ namespace zypp /////////////////////////////////////////////////////////////////// bool Resolver::verifySystem () { return _pimpl->verifySystem(); } + bool Resolver::resolvePool () { return _pimpl->resolvePool(); } - bool Resolver::resolveQueue (zypp::solver::detail::SolverQueueItemList & queue) + + bool Resolver::resolveQueue( solver::detail::SolverQueueItemList & 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); } + bool Resolver::doUpgrade( UpgradeStatistics & opt_stats_r ) { return _pimpl->doUpgrade(opt_stats_r); } + void Resolver::doUpdate() { _pimpl->doUpdate(); } - void Resolver::setForceResolve( const bool force ) - { _pimpl->setForceResolve( force ); } - bool Resolver::forceResolve() - { return _pimpl->forceResolve(); } - void Resolver::setIgnoreAlreadyRecommended - (const bool ignoreAlreadyRecommended) - { _pimpl->setIgnorealreadyrecommended (ignoreAlreadyRecommended); } - bool Resolver::ignoreAlreadyRecommended() - { return _pimpl->ignorealreadyrecommended(); } - void Resolver::setOnlyRequires( const bool onlyRequires ) - { onlyRequires ? _pimpl->setOnlyRequires( true ) : _pimpl->setOnlyRequires( false ); } - void Resolver::resetOnlyRequires() - { _pimpl->setOnlyRequires( indeterminate ); } - bool Resolver::onlyRequires() - { - if (indeterminate(_pimpl->onlyRequires())) - return ZConfig::instance().solver_onlyRequires(); - else - return _pimpl->onlyRequires(); - } + + void Resolver::setForceResolve( bool yesno_r ) { _pimpl->setForceResolve( yesno_r ); } + bool Resolver::forceResolve() { return _pimpl->forceResolve(); } + + void Resolver::setIgnoreAlreadyRecommended( bool yesno_r) { _pimpl->setIgnoreAlreadyRecommended( yesno_r ); } + bool Resolver::ignoreAlreadyRecommended() { return _pimpl->ignoreAlreadyRecommended(); } + + void Resolver::setOnlyRequires( bool yesno_r ) { _pimpl->setOnlyRequires( yesno_r ); } + void Resolver::resetOnlyRequires() { _pimpl->setOnlyRequires( indeterminate ); } + bool Resolver::onlyRequires() { return _pimpl->onlyRequires(); } + + void Resolver::setAllowVendorChange( bool yesno_r ) { _pimpl->setAllowVendorChange( yesno_r ); } + void Resolver::setDefaultAllowVendorChange() { _pimpl->setAllowVendorChange( indeterminate ); } + bool Resolver::allowVendorChange() const { return _pimpl->allowVendorChange(); } void Resolver::setSystemVerification( bool yesno_r ) { _pimpl->setVerifyingMode( yesno_r ); } - void Resolver::setDefaultSystemVerification() { _pimpl->setVerifyingMode(indeterminate ); } + void Resolver::setDefaultSystemVerification() { _pimpl->setVerifyingMode( indeterminate ); } bool Resolver::systemVerification() const { return _pimpl->isVerifyingMode(); } void Resolver::setSolveSrcPackages( bool yesno_r ) { _pimpl->setSolveSrcPackages( yesno_r ); } - void Resolver::setDefaultSolveSrcPackages() { _pimpl->setSolveSrcPackages(indeterminate ); } + void Resolver::setDefaultSolveSrcPackages() { _pimpl->setSolveSrcPackages( indeterminate ); } bool Resolver::solveSrcPackages() const { return _pimpl->solveSrcPackages(); } - void Resolver::addRequire (const Capability & capability) - { _pimpl->addExtraRequire( capability ); } - void Resolver::addConflict (const Capability & capability) - { _pimpl->addExtraConflict( capability ); } - void Resolver::removeRequire (const Capability & capability) - { _pimpl->removeExtraRequire( capability ); } - void Resolver::removeConflict (const Capability & capability) - { _pimpl->removeExtraConflict( capability ); } - const CapabilitySet Resolver::getRequire () - { return _pimpl->extraRequires();} - const CapabilitySet Resolver::getConflict () - { return _pimpl->extraConflicts();} - std::list Resolver::problematicUpdateItems( void ) const + + void Resolver::addRequire( const Capability & capability ) { _pimpl->addExtraRequire( capability ); } + void Resolver::addConflict( const Capability & capability ) { _pimpl->addExtraConflict( capability ); } + void Resolver::removeRequire( const Capability & capability ) { _pimpl->removeExtraRequire( capability ); } + void Resolver::removeConflict( const Capability & capability ){ _pimpl->removeExtraConflict( capability ); } + + CapabilitySet Resolver::getRequire() { return _pimpl->extraRequires(); } + CapabilitySet Resolver::getConflict() { return _pimpl->extraConflicts(); } + + std::list Resolver::problematicUpdateItems() const { return _pimpl->problematicUpdateItems(); } - bool Resolver::createSolverTestcase (const std::string & dumpPath) - { solver::detail::Testcase testcase (dumpPath); - return testcase.createTestcase(*_pimpl);} - const solver::detail::ItemCapKindList Resolver::isInstalledBy (const PoolItem item) + + bool Resolver::createSolverTestcase( const std::string & dumpPath ) + { + solver::detail::Testcase testcase (dumpPath); + return testcase.createTestcase(*_pimpl); + } + + solver::detail::ItemCapKindList Resolver::isInstalledBy( const PoolItem & item ) { return _pimpl->isInstalledBy (item); } - const solver::detail::ItemCapKindList Resolver::installs (const PoolItem item) + + solver::detail::ItemCapKindList Resolver::installs( const PoolItem & item ) { return _pimpl->installs (item); } - const solver::detail::ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item) + + solver::detail::ItemCapKindList Resolver::satifiedByInstalled( const PoolItem & item ) { return _pimpl->satifiedByInstalled (item); } - const solver::detail::ItemCapKindList Resolver::installedSatisfied (const PoolItem item) + + solver::detail::ItemCapKindList Resolver::installedSatisfied( const PoolItem & item ) { return _pimpl->installedSatisfied (item); } - void Resolver::reset () + + void Resolver::reset() { _pimpl->reset( false ); /* Do not keep extra requires/conflicts */ } diff --git a/zypp/Resolver.h b/zypp/Resolver.h index 01e94d0..4b422ed 100644 --- a/zypp/Resolver.h +++ b/zypp/Resolver.h @@ -58,7 +58,7 @@ namespace zypp * * Call \ref setSystemVerification to turn of this mode. **/ - bool verifySystem (); + bool verifySystem(); /** @@ -75,7 +75,7 @@ namespace zypp * the latter case, use problems() and later applySolutions() * below. **/ - bool resolvePool (void); + bool resolvePool(); /** @@ -95,18 +95,18 @@ namespace zypp * to e.g. the selectables. * **/ - bool resolveQueue (solver::detail::SolverQueueItemList & queue); + bool resolveQueue( solver::detail::SolverQueueItemList & queue ); /* * Undo solver changes done in resolvePool() * Throwing away all ignored dependencies. */ - void undo( void ); + void undo(); /* * Resets solver information and verify option. */ - void reset( void ); + void reset(); /** @@ -144,7 +144,7 @@ namespace zypp * Return the list of deleted items. * Note : This list is valid after the call doUpgrade() only. **/ - std::list problematicUpdateItems( void ) const; + std::list problematicUpdateItems() const; /** * Return the dependency problems found by the last call to @@ -166,14 +166,14 @@ namespace zypp * have unfulfilled requirements. * This behaviour is favourited by ZMD. **/ - void setForceResolve (const bool force); + void setForceResolve( bool force ); bool forceResolve(); /** * Ignore recommended packages that were already recommended by * the installed packages **/ - void setIgnoreAlreadyRecommended (const bool ignoreAlreadyRecommended); + void setIgnoreAlreadyRecommended( bool yesno_r ); bool ignoreAlreadyRecommended(); /** @@ -181,11 +181,23 @@ namespace zypp * So recommended packages, language packages and packages which depend * on hardware (modalias) will not be regarded. **/ - void setOnlyRequires (const bool onlyRequires); + void setOnlyRequires( bool yesno_r ); void resetOnlyRequires(); // set back to default (described in zypp.conf) bool onlyRequires(); /** + * Setting whether the solver should allow or disallow vendor changes. + * + * If OFF (the default) the solver will replace packages with packages + * of the same (or equivalent) vendor ony. + * + * \see \ref VendorAttr for definition of vendor equivalence. + **/ + void setAllowVendorChange( bool yesno_r ); + void setDefaultAllowVendorChange(); // set back to default (in zypp.conf) + bool allowVendorChange() const; + + /** * System verification mode also monitors and repairs dependencies * of already installed packages. * \see \ref verifySystem @@ -211,37 +223,37 @@ namespace zypp * Adding additional requirement * */ - void addRequire (const Capability & capability); + void addRequire( const Capability & capability ); /** * Adding additional conflict * */ - void addConflict (const Capability & capability); + void addConflict( const Capability & capability ); /** * Remove the additional requirement set by \ref addRequire(Capability). * */ - void removeRequire (const Capability & capability); + void removeRequire( const Capability & capability ); /** * Remove the additional conflict set by \ref addConflict(Capability). * */ - void removeConflict (const Capability & capability); + void removeConflict( const Capability & capability ); /** * Get all the additional requirements set by \ref addRequire(Capability). * */ - const CapabilitySet getRequire (); + CapabilitySet getRequire(); /** * Get all the additional conflicts set by \ref addConflict(Capability). * */ - const CapabilitySet getConflict(); + CapabilitySet getConflict(); /** * Generates a solver Testcase of the current state @@ -249,7 +261,7 @@ namespace zypp * \parame dumpPath destination directory of the created directory * \return true if it was successful */ - bool createSolverTestcase (const std::string & dumpPath = "/var/log/YaST2/solverTestcase"); + bool createSolverTestcase( const std::string & dumpPath = "/var/log/YaST2/solverTestcase" ); /** * Gives information about WHO has pused an installation of an given item. @@ -265,7 +277,7 @@ namespace zypp * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. * */ - const solver::detail::ItemCapKindList isInstalledBy (const PoolItem item); + solver::detail::ItemCapKindList isInstalledBy( const PoolItem & item ); /** * Gives information about WHICH additional items will be installed due the installation of an item. @@ -281,7 +293,7 @@ namespace zypp * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. * */ - const solver::detail::ItemCapKindList installs (const PoolItem item); + solver::detail::ItemCapKindList installs( const PoolItem & item ); /** * Gives information about WHICH installed items are requested by the installation of an item. @@ -292,12 +304,12 @@ namespace zypp * initialInstallation This item has triggered the installation * Not already fullfilled requierement only. * cap Capability which has triggerd this installation - * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) + * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) * * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. * */ - const solver::detail::ItemCapKindList satifiedByInstalled(const PoolItem item); + solver::detail::ItemCapKindList satifiedByInstalled( const PoolItem & item ); /** @@ -309,12 +321,12 @@ namespace zypp * initialInstallation This item has triggered the installation * Not already fullfilled requierement only. * cap Capability which has triggerd this installation - * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) + * capKind Kind of that capability (e.g. Dep::REQUIRES,Dep::RECOMMENDS,... ) * * Note: In order to have a result start a solver run before. Not matter if it is valid or invalid. * */ - const solver::detail::ItemCapKindList installedSatisfied(const PoolItem item); + solver::detail::ItemCapKindList installedSatisfied( const PoolItem & item ); diff --git a/zypp/VendorAttr.h b/zypp/VendorAttr.h index 75528ff..55f0408 100644 --- a/zypp/VendorAttr.h +++ b/zypp/VendorAttr.h @@ -16,7 +16,6 @@ #include #include -#include "zypp/base/NonCopyable.h" #include "zypp/PathInfo.h" #include "zypp/Vendor.h" @@ -31,11 +30,9 @@ namespace zypp { * * Per default vendor strings starting with \c "suse' or \c 'opensuse" * are treated equivalent. This may be changed by providing customized - * vendor description files in /etc/zypp/vendors.d. - * - * \todo remove superfluous base::NonCopyable + * vendor description files in \c /etc/zypp/vendors.d. */ -class VendorAttr : private base::NonCopyable +class VendorAttr { public: typedef std::vector VendorList; diff --git a/zypp/solver/detail/Resolver.cc b/zypp/solver/detail/Resolver.cc index e6da90e..d980dee 100644 --- a/zypp/solver/detail/Resolver.cc +++ b/zypp/solver/detail/Resolver.cc @@ -56,8 +56,7 @@ IMPL_PTR_TYPE(Resolver); //--------------------------------------------------------------------------- -std::ostream & -Resolver::dumpOn( std::ostream & os ) const +std::ostream & Resolver::dumpOn( std::ostream & os ) const { return os << ""; } @@ -69,14 +68,14 @@ Resolver::Resolver (const ResPool & pool) : _pool(pool) , _satResolver(NULL) , _poolchanged(_pool.serial() ) - , _testing(false) - , _forceResolve(false) - , _upgradeMode(false) - , _updateMode(false) - , _verifying(false) - , _onlyRequires(indeterminate) - , _solveSrcPackages( false ) - , _ignorealreadyrecommended(false) + , _forceResolve (false) + , _upgradeMode (false) + , _updateMode (false) + , _verifying (false) + , _onlyRequires ( ZConfig::instance().solver_onlyRequires() ) + , _allowVendorChange ( ZConfig::instance().solver_allowVendorChange() ) + , _solveSrcPackages ( false ) + , _ignoreAlreadyRecommended (false) { sat::Pool satPool( sat::Pool::instance() ); @@ -91,14 +90,22 @@ Resolver::~Resolver() //--------------------------------------------------------------------------- -ResPool -Resolver::pool (void) const +void Resolver::setAllowVendorChange( TriBool state_r ) { - return _pool; + _allowVendorChange = indeterminate(state_r) ? ZConfig::instance().solver_allowVendorChange() : bool(state_r); } -void -Resolver::reset (bool keepExtras ) +void Resolver::setOnlyRequires( TriBool state_r ) +{ + _onlyRequires = indeterminate(state_r) ? ZConfig::instance().solver_onlyRequires() : bool(state_r); +} + +//--------------------------------------------------------------------------- + +ResPool Resolver::pool() const +{ return _pool; } + +void Resolver::reset( bool keepExtras ) { _verifying = false; @@ -113,8 +120,7 @@ Resolver::reset (bool keepExtras ) _installedSatisfied.clear(); } -void -Resolver::doUpdate() +void Resolver::doUpdate() { _updateMode = true; return _satResolver->doUpdate(); @@ -123,31 +129,19 @@ Resolver::doUpdate() PoolItemList Resolver::problematicUpdateItems() const { return _satResolver->problematicUpdateItems(); } -void -Resolver::addExtraRequire (const Capability & capability) -{ - _extra_requires.insert (capability); -} +void Resolver::addExtraRequire( const Capability & capability ) +{ _extra_requires.insert (capability); } -void -Resolver::removeExtraRequire (const Capability & capability) -{ - _extra_requires.erase (capability); -} +void Resolver::removeExtraRequire( const Capability & capability ) +{ _extra_requires.erase (capability); } -void -Resolver::addExtraConflict (const Capability & capability) -{ - _extra_conflicts.insert (capability); -} +void Resolver::addExtraConflict( const Capability & capability ) +{ _extra_conflicts.insert (capability); } -void -Resolver::removeExtraConflict (const Capability & capability) -{ - _extra_conflicts.erase (capability); -} +void Resolver::removeExtraConflict( const Capability & capability ) +{ _extra_conflicts.erase (capability); } -void Resolver::removeQueueItem (const SolverQueueItem_Ptr item) +void Resolver::removeQueueItem( SolverQueueItem_Ptr item ) { bool found = false; for (SolverQueueItemList::const_iterator iter = _added_queue_items.begin(); @@ -163,7 +157,8 @@ void Resolver::removeQueueItem (const SolverQueueItem_Ptr item) _removed_queue_items.unique (); } } -void Resolver::addQueueItem (const SolverQueueItem_Ptr item) + +void Resolver::addQueueItem( SolverQueueItem_Ptr item ) { bool found = false; for (SolverQueueItemList::const_iterator iter = _removed_queue_items.begin(); @@ -180,11 +175,8 @@ void Resolver::addQueueItem (const SolverQueueItem_Ptr item) } } -void -Resolver::addWeak (const PoolItem item) -{ - _addWeak.push_back (item); -} +void Resolver::addWeak( const PoolItem & item ) +{ _addWeak.push_back( item ); } //--------------------------------------------------------------------------- @@ -218,8 +210,7 @@ struct DoTransact : public resfilter::PoolItemFilterFunctor }; -bool -Resolver::verifySystem () +bool Resolver::verifySystem() { UndoTransact resetting (ResStatus::APPL_HIGH); @@ -238,8 +229,7 @@ Resolver::verifySystem () //---------------------------------------------------------------------------- // undo -void -Resolver::undo(void) +void Resolver::undo() { UndoTransact info(ResStatus::APPL_LOW); MIL << "*** undo ***" << endl; @@ -256,8 +246,7 @@ Resolver::undo(void) return; } -void -Resolver::solverInit() +void Resolver::solverInit() { // Solving with the satsolver static bool poolDumped = false; @@ -272,49 +261,30 @@ Resolver::solverInit() } } - _satResolver->setFixsystem(false); - _satResolver->setIgnorealreadyrecommended(false); - _satResolver->setAllowdowngrade(false); - _satResolver->setAllowarchchange(false); - _satResolver->setAllowvendorchange(false); - _satResolver->setAllowuninstall(false); - _satResolver->setUpdatesystem(false); - _satResolver->setAllowvirtualconflicts(false); - _satResolver->setNoupdateprovide(false); - _satResolver->setDosplitprovides(false); - _satResolver->setSolveSrcPackages( solveSrcPackages() ); + _satResolver->setFixsystem ( isVerifyingMode() ); + _satResolver->setIgnorealreadyrecommended ( ignoreAlreadyRecommended() ); + _satResolver->setOnlyRequires ( onlyRequires() ); + _satResolver->setAllowdowngrade (false); + _satResolver->setAllowarchchange (false); + _satResolver->setAllowvendorchange ( allowVendorChange() ); + _satResolver->setAllowuninstall ( forceResolve() ); + _satResolver->setUpdatesystem (false); + _satResolver->setAllowvirtualconflicts (false); + _satResolver->setNoupdateprovide (false); + _satResolver->setDosplitprovides (false); + _satResolver->setSolveSrcPackages ( solveSrcPackages() ); if (_upgradeMode) { - _satResolver->setAllowdowngrade(true); - _satResolver->setUpdatesystem(false); // not needed cause packages has already been evaluteted by distupgrade - _satResolver->setDosplitprovides(true); - if ( !getenv("ZYPP_NO_SAT_UPDATE") ) { - MIL << "-------------- Calling SAT Solver in distupgrade mode -------------------" << endl; - // SAT solver will do the dist update - _satResolver->setAllowarchchange(true); - _satResolver->setAllowvendorchange(true); - _satResolver->setUpdatesystem(true); - _satResolver->setDistupgrade(true); - _satResolver->setDistupgrade_removeunsupported(false); - } + // may overwrite some settings + _satResolver->setDistupgrade (true); + _satResolver->setDistupgrade_removeunsupported (false); + _satResolver->setUpdatesystem (true); + _satResolver->setAllowdowngrade (true); + _satResolver->setAllowarchchange (true); + _satResolver->setAllowvendorchange (true); + _satResolver->setDosplitprovides (true); } - if (_forceResolve) - _satResolver->setAllowuninstall(true); - - if (indeterminate(_onlyRequires)) - _satResolver->setOnlyRequires(ZConfig::instance().solver_onlyRequires()); - else if (_onlyRequires) - _satResolver->setOnlyRequires(true); - else - _satResolver->setOnlyRequires(false); - - if (_verifying) - _satResolver->setFixsystem(true); - - if (_ignorealreadyrecommended) - _satResolver->setIgnorealreadyrecommended(true); - // Resetting additional solver information _isInstalledBy.clear(); _installs.clear(); @@ -322,15 +292,13 @@ Resolver::solverInit() _installedSatisfied.clear(); } -bool -Resolver::resolvePool() +bool Resolver::resolvePool() { solverInit(); return _satResolver->resolvePool(_extra_requires, _extra_conflicts, _addWeak); } -bool -Resolver::resolveQueue(solver::detail::SolverQueueItemList & queue) +bool Resolver::resolveQueue( solver::detail::SolverQueueItemList & queue ) { solverInit(); @@ -374,8 +342,7 @@ Resolver::resolveQueue(solver::detail::SolverQueueItemList & queue) // Getting more information about the solve results -void -Resolver::collectResolverInfo(void) +void Resolver::collectResolverInfo() { if ( _satResolver && _isInstalledBy.empty() @@ -523,7 +490,8 @@ Resolver::collectResolverInfo(void) } -const ItemCapKindList Resolver::isInstalledBy (const PoolItem item) { +ItemCapKindList Resolver::isInstalledBy( const PoolItem & item ) +{ ItemCapKindList ret; collectResolverInfo(); @@ -541,7 +509,8 @@ const ItemCapKindList Resolver::isInstalledBy (const PoolItem item) { return ret; } -const ItemCapKindList Resolver::installs (const PoolItem item) { +ItemCapKindList Resolver::installs( const PoolItem & item ) +{ ItemCapKindList ret; collectResolverInfo(); @@ -559,7 +528,8 @@ const ItemCapKindList Resolver::installs (const PoolItem item) { return ret; } -const ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item) { +ItemCapKindList Resolver::satifiedByInstalled( const PoolItem & item ) +{ ItemCapKindList ret; collectResolverInfo(); @@ -577,7 +547,8 @@ const ItemCapKindList Resolver::satifiedByInstalled (const PoolItem item) { return ret; } -const ItemCapKindList Resolver::installedSatisfied (const PoolItem item) { +ItemCapKindList Resolver::installedSatisfied( const PoolItem & item ) +{ ItemCapKindList ret; collectResolverInfo(); diff --git a/zypp/solver/detail/Resolver.h b/zypp/solver/detail/Resolver.h index ae04208..0b8836a 100644 --- a/zypp/solver/detail/Resolver.h +++ b/zypp/solver/detail/Resolver.h @@ -102,18 +102,22 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { // Regard dependencies of the item weak onl PoolItemList _addWeak; + /** \name Solver flags */ + //@{ bool _forceResolve; // remove items which are conflicts with others or // have unfulfilled requirements. // This behaviour is favourited by ZMD bool _upgradeMode; // Resolver has been called with doUpgrade bool _updateMode; // Resolver has been called with doUpdate bool _verifying; // The system will be checked - TriBool _onlyRequires; // do install required resolvables only + bool _onlyRequires; // do install required resolvables only // no recommended resolvables, language // packages, hardware packages (modalias) + bool _allowVendorChange; // whether the solver should allow or disallow vendor changes. bool _solveSrcPackages; // whether to generate solver jobs for selected source packges. - bool _ignorealreadyrecommended; //ignore recommended packages that have already been recommended by the installed packages + bool _ignoreAlreadyRecommended; //ignore recommended packages that have already been recommended by the installed packages + //@} // Additional QueueItems which has to be regarded by the solver // This will be used e.g. by solution actions @@ -127,7 +131,7 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { ItemCapKindMap _installedSatisfied; // helpers - void collectResolverInfo (void); + void collectResolverInfo(); // Unmaintained packages which does not fit to the updated system // (broken dependencies) will be deleted. @@ -138,78 +142,81 @@ class Resolver : public base::ReferenceCounted, private base::NonCopyable { public: - Resolver (const ResPool & pool); + Resolver( const ResPool & pool ); virtual ~Resolver(); // ---------------------------------- I/O virtual std::ostream & dumpOn( std::ostream & str ) const; - friend std::ostream& operator<<(std::ostream& str, const Resolver & obj) + friend std::ostream& operator<<( std::ostream& str, const Resolver & obj ) { return obj.dumpOn (str); } // ---------------------------------- methods - ResPool pool (void) const; - void setPool (const ResPool & pool) { _pool = pool; } + ResPool pool() const; + void setPool( const ResPool & pool ) { _pool = pool; } - void addExtraRequire (const Capability & capability); - void removeExtraRequire (const Capability & capability); - void addExtraConflict (const Capability & capability); - void removeExtraConflict (const Capability & capability); + void addExtraRequire( const Capability & capability ); + void removeExtraRequire( const Capability & capability ); + void addExtraConflict( const Capability & capability ); + void removeExtraConflict( const Capability & capability ); - void removeQueueItem (const SolverQueueItem_Ptr item); - void addQueueItem (const SolverQueueItem_Ptr item); + void removeQueueItem( SolverQueueItem_Ptr item ); + void addQueueItem( SolverQueueItem_Ptr item ); - const CapabilitySet extraRequires () { return _extra_requires; } - const CapabilitySet extraConflicts () { return _extra_conflicts; } + CapabilitySet extraRequires() { return _extra_requires; } + CapabilitySet extraConflicts() { return _extra_conflicts; } - void addWeak (const PoolItem item); + void addWeak( const PoolItem & item ); - void setForceResolve (const bool force) { _forceResolve = force; } - bool forceResolve() { return _forceResolve; } - - void setIgnorealreadyrecommended (const bool ignorealreadyrecommended) - { _ignorealreadyrecommended = ignorealreadyrecommended; } - bool ignorealreadyrecommended() { return _ignorealreadyrecommended; } - - void setOnlyRequires (const TriBool state) - { _onlyRequires = state; } - TriBool onlyRequires () { return _onlyRequires; } - - bool verifySystem (); + bool verifySystem(); bool resolvePool(); - bool resolveQueue(solver::detail::SolverQueueItemList & queue); + bool resolveQueue( SolverQueueItemList & queue ); void doUpdate(); bool doUpgrade( zypp::UpgradeStatistics & opt_stats_r ); - PoolItemList problematicUpdateItems( void ) const; + PoolItemList problematicUpdateItems() const; + + /** \name Solver flags */ + //@{ + bool ignoreAlreadyRecommended() const { return _ignoreAlreadyRecommended; } + void setIgnoreAlreadyRecommended( bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; } + + bool onlyRequires () const { return _onlyRequires; } + void setOnlyRequires( TriBool state_r ); - bool isUpgradeMode() const { return _upgradeMode;};// Resolver has been called with doUpgrade - bool isUpdateMode() const { return _updateMode;}; // Resolver has been called with doUpdate - bool isVerifyingMode() const { return _verifying;}; // The system will be checked - void setVerifyingMode( TriBool state_r ) { _verifying = ( state_r == indeterminate ) ? false : bool(state_r); } + bool forceResolve() const { return _forceResolve; } + void setForceResolve( TriBool state_r ) { _forceResolve = indeterminate(state_r) ? false : bool(state_r); } + + bool isUpgradeMode() const { return _upgradeMode; }// Resolver has been called with doUpgrade + + bool isUpdateMode() const { return _updateMode; } // Resolver has been called with doUpdate + + bool isVerifyingMode() const { return _verifying; } // The system will be checked + void setVerifyingMode( TriBool state_r ) { _verifying = indeterminate(state_r) ? false : bool(state_r); } + + bool allowVendorChange() const { return _allowVendorChange; } + void setAllowVendorChange( TriBool state_r ); bool solveSrcPackages() const { return _solveSrcPackages; } - void setSolveSrcPackages( TriBool state_r ) { _solveSrcPackages = ( state_r == indeterminate ) ? false : bool(state_r); } + void setSolveSrcPackages( TriBool state_r ) { _solveSrcPackages = indeterminate(state_r) ? false : bool(state_r); } + //@} - ResolverProblemList problems () const; - void applySolutions (const ProblemSolutionList &solutions); + ResolverProblemList problems() const; + void applySolutions( const ProblemSolutionList & solutions ); // reset all SOLVER transaction in pool - void undo(void); - - void reset (bool keepExtras = false ); + void undo(); - bool testing(void) const { return _testing; } - void setTesting( bool testing ) { _testing = testing; } + void reset( bool keepExtras = false ); // Get more information about the solverrun // Which item will be installed by another item or triggers an item for // installation - const ItemCapKindList isInstalledBy (const PoolItem item); - const ItemCapKindList installs (const PoolItem item); - const ItemCapKindList satifiedByInstalled (const PoolItem item); - const ItemCapKindList installedSatisfied (const PoolItem item); + ItemCapKindList isInstalledBy( const PoolItem & item ); + ItemCapKindList installs( const PoolItem & item ); + ItemCapKindList satifiedByInstalled (const PoolItem & item ); + ItemCapKindList installedSatisfied( const PoolItem & item ); }; diff --git a/zypp/solver/detail/Testcase.cc b/zypp/solver/detail/Testcase.cc index e57c174..ab2607a 100644 --- a/zypp/solver/detail/Testcase.cc +++ b/zypp/solver/detail/Testcase.cc @@ -352,7 +352,7 @@ bool Testcase::createTestcase(Resolver & resolver, bool dumpPool, bool runSolver "solver-system.xml.gz", resolver.forceResolve(), resolver.onlyRequires(), - resolver.ignorealreadyrecommended() ); + resolver.ignoreAlreadyRecommended() ); for (PoolItemList::const_iterator iter = items_to_install.begin(); iter != items_to_install.end(); iter++) { control.installResolvable (iter->resolvable(), iter->status()); @@ -450,7 +450,7 @@ HelixControl::HelixControl(const std::string & controlPath, *file << TAB << "first.id()) << "-package.xml.gz\" name=\"" << repo.alias() << "\"" - << " priority=\"" << repo.priority() + << " priority=\"" << repo.priority() << "\" />" << endl << endl; } for (LocaleSet::const_iterator iter = languages.begin(); iter != languages.end(); iter++) { @@ -465,7 +465,7 @@ HelixControl::HelixControl(const std::string & controlPath, if (ignorealreadyrecommended) *file << TAB << "" << endl; - + *file << "" << endl << "" << endl; } -- 2.7.4