22 #ifndef ZYPP_SOLVER_DETAIL_SAT_RESOLVER_H 23 #define ZYPP_SOLVER_DETAIL_SAT_RESOLVER_H 24 #ifndef ZYPP_USE_RESOLVER_INTERNALS 25 #error Do not directly include this file! 29 #include <solv/solver.h> 30 #include <solv/pool.h> 65 class SATResolver :
public base::ReferenceCounted,
private base::NonCopyable,
private sat::detail::PoolMember
75 PoolItemList _problem_items;
78 PoolItemList _items_to_install;
79 PoolItemList _items_to_remove;
80 PoolItemList _items_to_lock;
81 PoolItemList _items_to_keep;
84 PoolItemList _result_items_to_install;
85 PoolItemList _result_items_to_remove;
90 bool _allowdowngrade:1;
91 bool _allownamechange:1;
92 bool _allowarchchange:1;
94 bool _allowuninstall:1;
96 bool _noupdateprovide:1;
97 bool _dosplitprovides:1;
99 bool _ignorealreadyrecommended:1;
101 bool _distupgrade_removeunsupported:1;
106 bool _solveSrcPackages:1;
107 bool _cleandepsOnRemove:1;
111 std::string SATprobleminfoString (Id problem, std::string &detail, Id &ignoreId);
112 std::string SATproblemRuleInfoString (Id rule, std::string &detail, Id &ignoreId);
113 std::vector<std::string> SATgetCompleteProblemInfoStrings ( Id problem );
114 void resetItemTransaction (PoolItem item);
117 void solverInit(
const PoolItemList & weakItems);
126 void setSystemRequirements();
134 sat::Solvable mapSolvable (
const Id &
id);
135 PoolItem mapItem (
const PoolItem &item);
140 virtual ~SATResolver();
144 virtual std::ostream &
dumpOn( std::ostream &
str )
const;
145 friend std::ostream&
operator<<(std::ostream&
str,
const SATResolver & obj)
146 {
return obj.dumpOn (
str); }
148 ResPool pool (
void)
const;
149 void setPool (
const ResPool & pool) { _pool = pool; }
154 const PoolItemList & weakItems,
155 const std::set<Repository> & upgradeRepos
159 const PoolItemList & weakItems
167 bool fixsystem ()
const {
return _fixsystem;}
168 void setFixsystem (
const bool fixsystem) { _fixsystem = fixsystem;}
170 bool ignorealreadyrecommended ()
const {
return _ignorealreadyrecommended;}
171 void setIgnorealreadyrecommended (
const bool ignorealreadyrecommended) { _ignorealreadyrecommended = ignorealreadyrecommended;}
173 bool distupgrade ()
const {
return _distupgrade;}
174 void setDistupgrade (
const bool distupgrade) { _distupgrade = distupgrade;}
176 bool distupgrade_removeunsupported ()
const {
return _distupgrade_removeunsupported;}
177 void setDistupgrade_removeunsupported (
const bool distupgrade_removeunsupported) { _distupgrade_removeunsupported = distupgrade_removeunsupported;}
179 bool allowdowngrade ()
const {
return _allowdowngrade;}
180 void setAllowdowngrade (
const bool allowdowngrade) { _allowdowngrade = allowdowngrade;}
182 bool allowarchchange ()
const {
return _allowarchchange;}
183 void setAllowarchchange (
const bool allowarchchange) { _allowarchchange = allowarchchange;}
186 void setAllowvendorchange (
const bool allowvendorchange) {
_allowvendorchange = allowvendorchange;}
188 bool allowuninstall ()
const {
return _allowuninstall;}
189 void setAllowuninstall (
const bool allowuninstall) { _allowuninstall = allowuninstall;}
191 bool updatesystem ()
const {
return _updatesystem;}
192 void setUpdatesystem (
const bool updatesystem) { _updatesystem = updatesystem;}
194 bool noupdateprovide ()
const {
return _noupdateprovide;}
195 void setNoupdateprovide (
const bool noupdateprovide) { _noupdateprovide = noupdateprovide;}
197 bool dosplitprovides ()
const {
return _dosplitprovides;}
198 void setDosplitprovides (
const bool dosplitprovides) { _dosplitprovides = dosplitprovides;}
200 bool onlyRequires ()
const {
return _onlyRequires;}
201 void setOnlyRequires (
const bool onlyRequires) { _onlyRequires = onlyRequires;}
203 bool solveSrcPackages()
const {
return _solveSrcPackages; }
204 void setSolveSrcPackages(
bool state_r ) { _solveSrcPackages = state_r; }
206 bool cleandepsOnRemove()
const {
return _cleandepsOnRemove; }
207 void setCleandepsOnRemove(
bool state_r ) { _cleandepsOnRemove = state_r; }
209 PoolItemList problematicUpdateItems(
void )
const {
return _problem_items; }
210 PoolItemList problematicUpdateItems() {
return _problem_items; }
212 PoolItemList resultItemsToInstall () {
return _result_items_to_install; }
213 PoolItemList resultItemsToRemove () {
return _result_items_to_remove; }
232 #endif // ZYPP_USE_RESOLVER_INTERNALS 233 #endif // ZYPP_SOLVER_DETAIL_SAT_RESOLVER_H std::list< ProblemSolution_Ptr > ProblemSolutionList
Common types used in the Resolver public API and need to be passed down to the details tree...
ResolverFocus
The resolvers general attitude.
String related utilities and Regular expression matching.
std::list< SolverQueueItem_Ptr > SolverQueueItemList
Queue StringQueue
Queue with String ids.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
std::list< ResolverProblem_Ptr > ResolverProblemList
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
::s_Pool CPool
Wrapped libsolv C data type exposed as backdoor.
std::unordered_set< Capability > CapabilitySet
::s_Solver CSolver
Wrapped libsolv C data type exposed as backdoor.
std::ostream & operator<<(std::ostream &os, const SolutionActionList &actionlist)
::s_Queue CQueue
Wrapped libsolv C data type exposed as backdoor.
Easy-to use interface to the ZYPP dependency resolver.