00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #include <iostream> 00013 00014 #include "zypp/Resolver.h" 00015 #include "zypp/ZConfig.h" 00016 #include "zypp/TriBool.h" 00017 #include "zypp/solver/detail/Resolver.h" 00018 #include "zypp/solver/detail/Testcase.h" 00019 00020 using namespace std; 00021 00023 namespace zypp 00024 { 00025 00026 using namespace solver; 00027 00028 IMPL_PTR_TYPE(Resolver); 00029 00031 // 00032 // METHOD NAME : Resolver::Resolver 00033 // METHOD TYPE : Ctor 00034 // 00035 Resolver::Resolver( const ResPool & pool ) 00036 : _pimpl( new Impl(pool) ) 00037 {} 00038 00040 // 00041 // METHOD NAME : Resolver::~Resolver 00042 // METHOD TYPE : Dtor 00043 // 00044 Resolver::~Resolver() 00045 {} 00046 00048 // 00049 // Resolver interface forwarded to implementation 00050 // 00052 bool Resolver::verifySystem () 00053 { return _pimpl->verifySystem(); } 00054 00055 bool Resolver::resolvePool () 00056 { return _pimpl->resolvePool(); } 00057 00058 bool Resolver::resolveQueue( solver::detail::SolverQueueItemList & queue ) 00059 { return _pimpl->resolveQueue(queue); } 00060 00061 void Resolver::undo() 00062 { _pimpl->undo(); } 00063 00064 ResolverProblemList Resolver::problems () 00065 { return _pimpl->problems (); } 00066 00067 void Resolver::applySolutions( const ProblemSolutionList & solutions ) 00068 { _pimpl->applySolutions (solutions); } 00069 00070 bool Resolver::doUpgrade() 00071 { return _pimpl->doUpgrade(); } 00072 00073 void Resolver::doUpdate() 00074 { _pimpl->doUpdate(); } 00075 00076 void Resolver::setForceResolve( bool yesno_r ) { _pimpl->setForceResolve( yesno_r ); } 00077 bool Resolver::forceResolve() const { return _pimpl->forceResolve(); } 00078 00079 void Resolver::setIgnoreAlreadyRecommended( bool yesno_r) { _pimpl->setIgnoreAlreadyRecommended( yesno_r ); } 00080 bool Resolver::ignoreAlreadyRecommended() const { return _pimpl->ignoreAlreadyRecommended(); } 00081 00082 void Resolver::setOnlyRequires( bool yesno_r ) { _pimpl->setOnlyRequires( yesno_r ); } 00083 void Resolver::resetOnlyRequires() { _pimpl->setOnlyRequires( indeterminate ); } 00084 bool Resolver::onlyRequires() const { return _pimpl->onlyRequires(); } 00085 00086 bool Resolver::upgradeMode() const { return _pimpl->isUpgradeMode(); } 00087 00088 void Resolver::setAllowVendorChange( bool yesno_r ) { _pimpl->setAllowVendorChange( yesno_r ); } 00089 void Resolver::setDefaultAllowVendorChange() { _pimpl->setAllowVendorChange( indeterminate ); } 00090 bool Resolver::allowVendorChange() const { return _pimpl->allowVendorChange(); } 00091 00092 void Resolver::setSystemVerification( bool yesno_r ) { _pimpl->setVerifyingMode( yesno_r ); } 00093 void Resolver::setDefaultSystemVerification() { _pimpl->setVerifyingMode( indeterminate ); } 00094 bool Resolver::systemVerification() const { return _pimpl->isVerifyingMode(); } 00095 00096 void Resolver::setSolveSrcPackages( bool yesno_r ) { _pimpl->setSolveSrcPackages( yesno_r ); } 00097 void Resolver::setDefaultSolveSrcPackages() { _pimpl->setSolveSrcPackages( indeterminate ); } 00098 bool Resolver::solveSrcPackages() const { return _pimpl->solveSrcPackages(); } 00099 00100 void Resolver::setCleandepsOnRemove( bool yesno_r ) { _pimpl->setCleandepsOnRemove( yesno_r ); } 00101 void Resolver::setDefaultCleandepsOnRemove() { _pimpl->setCleandepsOnRemove( indeterminate ); } 00102 bool Resolver::cleandepsOnRemove() const { return _pimpl->cleandepsOnRemove(); } 00103 00104 void Resolver::addUpgradeRepo( Repository repo_r ) { _pimpl->addUpgradeRepo( repo_r ); } 00105 bool Resolver::upgradingRepo( Repository repo_r ) const { return _pimpl->upgradingRepo( repo_r ); } 00106 void Resolver::removeUpgradeRepo( Repository repo_r ) { _pimpl->removeUpgradeRepo( repo_r ); } 00107 void Resolver::removeUpgradeRepos() { _pimpl->removeUpgradeRepos(); } 00108 00109 void Resolver::addRequire( const Capability & capability ) { _pimpl->addExtraRequire( capability ); } 00110 void Resolver::addConflict( const Capability & capability ) { _pimpl->addExtraConflict( capability ); } 00111 void Resolver::removeRequire( const Capability & capability ) { _pimpl->removeExtraRequire( capability ); } 00112 void Resolver::removeConflict( const Capability & capability ){ _pimpl->removeExtraConflict( capability ); } 00113 00114 CapabilitySet Resolver::getRequire() const { return _pimpl->extraRequires(); } 00115 CapabilitySet Resolver::getConflict() const { return _pimpl->extraConflicts(); } 00116 00117 std::list<PoolItem> Resolver::problematicUpdateItems() const 00118 { return _pimpl->problematicUpdateItems(); } 00119 00120 bool Resolver::createSolverTestcase( const std::string & dumpPath, bool runSolver ) 00121 { 00122 solver::detail::Testcase testcase (dumpPath); 00123 return testcase.createTestcase(*_pimpl, true, runSolver); 00124 } 00125 00126 solver::detail::ItemCapKindList Resolver::isInstalledBy( const PoolItem & item ) 00127 { return _pimpl->isInstalledBy (item); } 00128 00129 solver::detail::ItemCapKindList Resolver::installs( const PoolItem & item ) 00130 { return _pimpl->installs (item); } 00131 00132 solver::detail::ItemCapKindList Resolver::satifiedByInstalled( const PoolItem & item ) 00133 { return _pimpl->satifiedByInstalled (item); } 00134 00135 solver::detail::ItemCapKindList Resolver::installedSatisfied( const PoolItem & item ) 00136 { return _pimpl->installedSatisfied (item); } 00137 00138 void Resolver::reset() 00139 { _pimpl->reset( false ); /* Do not keep extra requires/conflicts */ } 00140 00141 std::ostream & operator<<( std::ostream & str, const Resolver & obj ) 00142 { return str << *obj._pimpl; } 00143 00145 } // namespace zypp