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