22#ifndef ZYPP_SOLVER_DETAIL_RESOLVER_H
23#define ZYPP_SOLVER_DETAIL_RESOLVER_H
24#ifndef ZYPP_USE_RESOLVER_INTERNALS
25#error Do not directly include this file!
33#include <zypp/solver/Types.h>
50 typedef std::list<PoolItem> PoolItemList;
51 typedef std::set<PoolItem> PoolItemSet;
65 typedef std::multimap<PoolItem,ItemCapKind> ItemCapKindMap;
68 SATResolver *_satResolver;
73 std::set<Repository> _upgradeRepos;
76 PoolItemList _addWeak;
83 bool _solveSrcPackages:1;
84 bool _ignoreAlreadyRecommended:1;
92 bool _applyDefault_focus:1;
93 bool _applyDefault_forceResolve:1;
94 bool _applyDefault_cleandepsOnRemove:1;
95 bool _applyDefault_onlyRequires:1;
96 bool _applyDefault_allowDowngrade:1;
97 bool _applyDefault_allowNameChange:1;
98 bool _applyDefault_allowArchChange:1;
99 bool _applyDefault_allowVendorChange:1;
100 bool _applyDefault_dupAllowDowngrade:1;
101 bool _applyDefault_dupAllowNameChange:1;
102 bool _applyDefault_dupAllowArchChange:1;
103 bool _applyDefault_dupAllowVendorChange:1;
112 ItemCapKindMap _isInstalledBy;
113 ItemCapKindMap _installs;
114 ItemCapKindMap _satifiedByInstalled;
115 ItemCapKindMap _installedSatisfied;
118 void collectResolverInfo();
123 bool checkUnmaintainedItems ();
134 std::ostream &
dumpOn( std::ostream &
str )
const;
142 void setPool(
const ResPool & pool ) { _pool = pool; }
153 void setDefaultSolverFlags(
bool all_r );
155 void addUpgradeRepo(
Repository repo_r ) {
if ( repo_r && ! repo_r.
isSystemRepo() ) _upgradeRepos.insert( repo_r ); }
156 bool upgradingRepo(
Repository repo_r )
const {
return( _upgradeRepos.find( repo_r ) != _upgradeRepos.end() ); }
157 void removeUpgradeRepo(
Repository repo_r ) { _upgradeRepos.erase( repo_r ); }
158 void removeUpgradeRepos() { _upgradeRepos.clear(); }
159 const std::set<Repository> & upgradeRepos()
const {
return _upgradeRepos; }
161 void addExtraRequire(
const Capability & capability );
162 void removeExtraRequire(
const Capability & capability );
163 void addExtraConflict(
const Capability & capability );
164 void removeExtraConflict(
const Capability & capability );
166 void removeQueueItem( SolverQueueItem_Ptr item );
167 void addQueueItem( SolverQueueItem_Ptr item );
169 CapabilitySet extraRequires()
const {
return _extra_requires; }
170 CapabilitySet extraConflicts()
const {
return _extra_conflicts; }
172 void addWeak(
const PoolItem & item );
180 PoolItemList problematicUpdateItems()
const;
184 bool ignoreAlreadyRecommended()
const {
return _ignoreAlreadyRecommended; }
185 void setIgnoreAlreadyRecommended(
bool yesno_r ) { _ignoreAlreadyRecommended = yesno_r; }
187 bool isUpgradeMode()
const {
return _upgradeMode; }
188 void setUpgradeMode(
bool yesno_r ) { _upgradeMode = yesno_r; }
190 bool isUpdateMode()
const {
return _updateMode; }
191 void setUpdateMode(
bool yesno_r ) { _updateMode = yesno_r; }
193 bool isVerifyingMode()
const {
return _verifying; }
194 void setVerifyingMode(
TriBool state_r ) { _verifying = indeterminate(state_r) ? false :
bool(state_r); }
196 bool solveSrcPackages()
const {
return _solveSrcPackages; }
197 void setSolveSrcPackages(
TriBool state_r ) { _solveSrcPackages = indeterminate(state_r) ? false :
bool(state_r); }
203#define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER ) \
204 void ZSETTER( TriBool state_r ); \
205 bool ZGETTER() const; \
218#undef ZOLV_FLAG_TRIBOOL
231 void reset(
bool keepExtras =
false );
Combining sat::Solvable and ResStatus.
Class representing one possible solution to a problem found during resolving.
bool isSystemRepo() const
Return whether this is the system repository.
Dependency resolver interface.
Simple serial number watcher.
virtual std::ostream & dumpOn(std::ostream &str) const
Overload to realize std::ostream & operator<<.
Libsolv transaction wrapper.
boost::logic::tribool TriBool
3-state boolean logic (true, false and indeterminate).
String related utilities and Regular expression matching.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
::s_Solver CSolver
Wrapped libsolv C data type exposed as backdoor.
std::list< ItemCapKind > ItemCapKindList
_onlyRequires dupAllowDowngrade
std::list< SolverQueueItem_Ptr > SolverQueueItemList
std::ostream & operator<<(std::ostream &os, const SolutionActionList &actionlist)
_onlyRequires _dup_allowdowngrade dupAllowArchChange
Easy-to use interface to the ZYPP dependency resolver.
std::unordered_set< Capability > CapabilitySet
ResolverFocus
The resolver's general attitude.
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
std::list< ResolverProblem_Ptr > ResolverProblemList
std::list< ProblemSolution_Ptr > ProblemSolutionList
#define ZOLV_FLAG_TRIBOOL(ZSETTER, ZDEFAULT, ZGETTER)