13 #include <solv/transaction.h> 14 #include <solv/solver.h> 19 #include <zypp-core/base/DefaultIntegral> 55 using set_type = std::unordered_set<detail::IdType>;
56 using map_type = std::unordered_map<detail::IdType, detail::IdType>;
65 ,
_arch( solv_r.arch() )
72 using pmmap_type = std::unordered_map<detail::IdType, PostMortem>;
88 if ( ! pi.status().transacts() )
90 decisionq.
push( pi.isSystem() ? -pi.id() : pi.id() );
95 noobsq.
push( SOLVER_NOOBSOLETES | SOLVER_SOLVABLE );
96 noobsq.
push( solv.id() );
99 ::solver_calculate_noobsmap(
myPool().getPool(), noobsq, noobsmap );
100 _trans = ::transaction_create_decisionq(
myPool().getPool(), decisionq, noobsmap );
132 { ::transaction_free(
_trans ); }
148 ::transaction_order(
_trans, SOLVER_TRANSACTION_KEEP_ORDERDATA );
154 int ret = transaction_order_add_choices(
_trans, chosen, choices );
155 MIL << ret <<
": " << chosen <<
": " << choices << endl;
164 ::transaction_order(
_trans, 0 );
171 {
return(
_trans->steps.count == 0 ); }
174 {
return _trans->steps.count; }
193 { return ::transaction_installedresult(
_trans, result_r ); }
210 switch( ::transaction_type(
_trans, solv_r.
id(), SOLVER_TRANSACTION_RPM_ONLY ) )
228 pmmap_type::const_iterator it(
_pmMap.find( solv_r.
id() ) );
229 return( it ==
_pmMap.end() ? _none : it->second );
235 map_type::const_iterator res(
_linkMap.find( solv_r.
id() ) );
236 return( res ==
_linkMap.end() ? solv_r.
id() : res->second );
240 {
return( set_r.find( sid_r ) != set_r.end() ); }
254 if ( stage != newval_r )
271 if ( solv_r &&
_trans->steps.elements )
299 static shared_ptr<Impl> _nullimpl(
new Impl );
307 return str <<
"Transaction: " << obj.
size() <<
" (" << (obj.
valid()?
"valid":
"INVALID") <<
")";
317 : _pimpl(
Impl::nullimpl() )
321 : _pimpl( new
Impl( loadFromPool ) )
422 #define OUTS(E,S) case Transaction::E: return str << #S; break 436 #define OUTS(E,S) case Transaction::E: return str << #S; break 442 return str <<
"[??]";
453 Transaction_const_iterator::Transaction_const_iterator()
459 , _pimpl( iter_r._pimpl )
int installedResult(Queue &result_r) const
Simple serial number watcher.
A Solvable object within the sat Pool.
IdType id() const
Expert backdoor.
Transaction const_iterator.
[M] Install(multiversion) item (
Solvable satSolvable() const
Return the corresponding Solvable.
const_iterator find(const sat::Solvable &solv_r) const
Return iterator pointing to solv_r or end.
iterator find(const RW_pointer< Transaction::Impl > &self_r, const sat::Solvable &solv_r)
std::unordered_map< detail::IdType, detail::IdType > map_type
bool operator==(const Map &lhs, const Map &rhs)
const MultiversionList & multiversionList() const
size_t size() const
Number of steps in transaction steps.
StepStage stepStage() const
Step action result.
std::ostream & operator<<(std::ostream &str, const FileConflicts &obj)
StepType stepType(Solvable solv_r) const
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
String related utilities and Regular expression matching.
StepStage
Step action result.
bool valid() const
Whether transaction actually contains data and also fits the current pools content.
Transaction()
Default ctor: empty transaction.
bool isKind(const ResKind &kind_r) const
Test whether a Solvable is of a certain ResKind.
sat::Solvable buddy() const
Return the buddy we share our status object with.
const_iterator find(const RW_pointer< Transaction::Impl > &self_r, const sat::Solvable &solv_r) const
int IdType
Generic Id type.
Access to the sat-pools string space.
Libsolv transaction wrapper.
Edition represents [epoch:]version[-release]
std::ostream & operator<<(std::ostream &str, const Transaction::Impl &obj)
const_iterator end() const
Iterator behind the last TransactionStep.
iterator begin(const RW_pointer< Transaction::Impl > &self_r)
const_iterator end(const RW_pointer< Transaction::Impl > &self_r) const
StepStage stepStage(detail::IdType sid_r) const
std::unordered_map< detail::IdType, PostMortem > pmmap_type
StringQueue autoInstalled() const
Return the ident strings of all packages that would be auto-installed after the transaction is run...
[ ] Nothing (includes implicit deletes due to obsoletes and non-package actions)
void push(value_type val_r)
Push a value to the end off the Queue.
void stepStage(detail::IdType sid_r, StepStage newval_r)
PostMortem(const sat::Solvable &solv_r)
value_type pop_front()
Pop and return the 1st Id from the queue or 0 if empty.
Backlink to the associated PoolImpl.
RW_pointer< Impl > _pimpl
Pointer to implementation.
mutable ::Transaction * _trans
friend std::ostream & operator<<(std::ostream &str, const Transaction &obj)
A single step within a Transaction.
SerialNumberWatcher _watcher
detail::IdType * _find(const sat::Solvable &solv_r) const
void autoInstalled(const StringQueue &queue_r)
Transaction implementation.
int installedResult(Queue &result_r) const
Return all packages that would be installed after the transaction is run.
Transaction_const_iterator()
bool order()
Order transaction steps for commit.
static PoolImpl & myPool()
std::ostream & dumpOn(std::ostream &str, const LocaleSupport &obj)
bool isIn(const set_type &set_r, detail::IdType sid_r) const
const_iterator begin(const RW_pointer< Transaction::Impl > &self_r) const
bool isSystem() const
Return whether this Solvable belongs to the system repo.
detail::Transaction_const_iterator const_iterator
static constexpr LoadFromPoolType loadFromPool
Libsolv Id queue wrapper.
StepType
Type of (rpm) action to perform in a Step.
DefaultIntegral< bool, false > _ordered
const PostMortem & pmdata(Solvable solv_r) const
StringQueue autoInstalled() const
const_iterator begin() const
Iterator to the first TransactionStep.
StepType stepType() const
Type of action to perform in this step.
static shared_ptr< Impl > nullimpl()
Offer default Impl.
bool empty() const
Whether the transaction contains any steps.
int erase(const Pathname &path)
Erase whatever happens to be located at path (file or directory).
bool isClean(unsigned serial_r) const
Return whether serial_r is still unchanged.
detail::IdType resolve(const Solvable &solv_r) const
Wrapper for const correct access via Smart pointer types.
friend std::ostream & operator<<(std::ostream &str, const Impl &obj)
StepStage stepStage(Solvable solv_r) const
Combining sat::Solvable and ResStatus.
Impl & operator=(const Impl &)=delete
iterator end(const RW_pointer< Transaction::Impl > &self_r)
Libsolv (bit)Map wrapper.
Easy-to use interface to the ZYPP dependency resolver.
detail::Transaction_iterator iterator
std::unordered_set< detail::IdType > set_type
void stepStage(Solvable solv_r, StepStage newval_r)
StringQueue _autoInstalled
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
static ResPool instance()
Singleton ctor.