- remove old sat transaction argument in Transaction constructor. Cleanup code.
authorMichael Schroeder <mls@suse.de>
Tue, 10 Jan 2012 13:25:30 +0000 (14:25 +0100)
committerMichael Schroeder <mls@suse.de>
Tue, 10 Jan 2012 13:26:32 +0000 (14:26 +0100)
zypp/sat/Transaction.cc
zypp/sat/Transaction.h
zypp/solver/detail/Resolver.cc
zypp/solver/detail/SATResolver.cc
zypp/solver/detail/SATResolver.h

index ca8e5ad..a153f12 100644 (file)
@@ -11,6 +11,7 @@
 extern "C"
 {
 #include <solv/transaction.h>
+#include <solv/solver.h>
 #include <solv/bitmap.h>
 }
 #include <iostream>
@@ -69,11 +70,7 @@ namespace zypp
        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 )
        {
@@ -85,9 +82,18 @@ namespace zypp
            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
@@ -292,11 +298,7 @@ namespace zypp
     ///////////////////////////////////////////////////////////////////
 
     Transaction::Transaction()
-      : _pimpl( Impl::nullimpl() )
-    {}
-
-    Transaction::Transaction( ::_Transaction & trans_r )
-      : _pimpl( new Impl( trans_r ) )
+      : _pimpl( new Impl() )
     {}
 
     Transaction::~Transaction()
index 7fc6319..adf6aba 100644 (file)
@@ -83,12 +83,9 @@ namespace zypp
        ZYPP_DECLARE_FLAGS(StepStages,StepStage);
 
      public:
-        /** Default ctor: empty transaction. */
+        /** Ctor: create transaction from ResPool. */
         Transaction();
 
-        /** Ctor cloning a sat transaction. */
-        Transaction( ::_Transaction & trans_r );
-
         /** Dtor */
         ~Transaction();
 
index ff9a75f..4957540 100644 (file)
@@ -365,7 +365,10 @@ bool Resolver::resolveQueue( solver::detail::SolverQueueItemList & queue )
 }
 
 sat::Transaction Resolver::getTransaction()
-{ return _satResolver->getTransaction(); }
+{
+    return sat::Transaction();
+}
+
 
 //----------------------------------------------------------------------------
 // Getting more information about the solve results
index 0559a5b..ca35b77 100644 (file)
@@ -162,17 +162,6 @@ SATResolver::~SATResolver()
 
 //---------------------------------------------------------------------------
 
-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
 {
index df136dd..7aaef03 100644 (file)
@@ -159,9 +159,6 @@ class SATResolver : public base::ReferenceCounted, private base::NonCopyable {
     ResolverProblemList problems ();
     void applySolutions (const ProblemSolutionList &solutions);
 
-    // Return the Transaction computed by the last solver run.
-    sat::Transaction getTransaction();
-
     void addPoolItemToInstall (PoolItem item);
     void addPoolItemsToInstallFromList (PoolItemList & rl);