extern "C"
{
#include <solv/transaction.h>
+#include <solv/solver.h>
#include <solv/bitmap.h>
}
#include <iostream>
typedef std::tr1::unordered_map<detail::IdType,PostMortem> pmmap_type;
public:
- Impl()
- : _trans( ::transaction_create( nullptr ) )
- { memset( _trans, 0, sizeof(_trans) ); }
-
- Impl( ::_Transaction & trans_r )
+ Impl( )
: _watcher( myPool().serial() )
, _trans( nullptr )
{
sat::Solvable solv( (*it).satSolvable() );
decisionq.push( solv.isSystem() ? -solv.id() : solv.id() );
}
- if ( trans_r.noobsmap.size )
- ::map_grow( &trans_r.noobsmap, myPool()->nsolvables );
- _trans = ::transaction_create_decisionq( myPool().getPool(), decisionq, &trans_r.noobsmap );
+ Queue noobsq;
+ for_( it, sat::Pool::instance().multiversionBegin(), sat::Pool::instance().multiversionEnd() )
+ {
+ noobsq.push( SOLVER_NOOBSOLETES | SOLVABLE_NAME );
+ noobsq.push( it->id() );
+ }
+ Map noobsmap;
+ ::map_init( &noobsmap, 0 );
+ ::solver_calculate_noobsmap( myPool().getPool(), noobsq, &noobsmap );
+
+ _trans = ::transaction_create_decisionq( myPool().getPool(), decisionq, &noobsmap );
+ ::map_free( &noobsmap );
// NOTE: package/product buddies share the same ResStatus
// so we also link the buddies stepStages. This assumes
///////////////////////////////////////////////////////////////////
Transaction::Transaction()
- : _pimpl( Impl::nullimpl() )
- {}
-
- Transaction::Transaction( ::_Transaction & trans_r )
- : _pimpl( new Impl( trans_r ) )
+ : _pimpl( new Impl() )
{}
Transaction::~Transaction()
//---------------------------------------------------------------------------
-sat::Transaction SATResolver::getTransaction()
-{
- if ( !_solv )
- return sat::Transaction();
-
- ::Transaction * sattrans = ::solver_create_transaction( _solv );
- sat::Transaction ret ( *sattrans );
- ::transaction_free( sattrans );
- return ret;
-}
-
ResPool
SATResolver::pool (void) const
{