Fixed pools package index wrongly including source packages.
authorMichael Andres <ma@suse.de>
Thu, 17 Apr 2008 14:31:59 +0000 (14:31 +0000)
committerMichael Andres <ma@suse.de>
Thu, 17 Apr 2008 14:31:59 +0000 (14:31 +0000)
VERSION.cmake
devel/devel.ma/NewPool.cc
package/libzypp.changes
zypp/Resolvable.h
zypp/sat/Solvable.cc

index 5b6ceb8c5abbeda618f6da6e3d26524ba9227986..05e93927145cbf56231e33bfc833680c1d0a1e0b 100644 (file)
@@ -47,4 +47,4 @@
 SET(LIBZYPP_MAJOR "4")
 SET(LIBZYPP_MINOR "13")
 SET(LIBZYPP_COMPATMINOR "13")
-SET(LIBZYPP_PATCH "1")
+SET(LIBZYPP_PATCH "2")
index 6abc4199e31758f9d4c48941d6dfd357dddd283b..4fd2357efad98e7574919863dbab199e1b6d7b87 100644 (file)
@@ -512,33 +512,61 @@ namespace zypp
   }
 }
 
-void dit( const Pattern::Contents & c_r )
+template <class _Res>
+void ttest( const PoolItem & pi_r )
 {
+  MIL << pi_r  << endl;
+  if ( ! pi_r.resolvable() )
   {
-  sat::WhatProvides c( Capability("amarok") );
-  dumpRange( MIL, c.solvableBegin(), c.solvableEnd() ) << endl;
-  dumpRange( MIL, c.poolItemBegin(), c.poolItemEnd() ) << endl;
-  dumpRange( MIL, c.selectableBegin(), c.selectableEnd() ) << endl;
+    ERR << "NO ResObj Ptr" << endl;
+    return;
   }
-  if(0){
-  const Pattern::Contents & c( c_r );
-  dumpRange( MIL, c.solvableBegin(), c.solvableEnd() ) << endl;
-  dumpRange( WAR, c.poolItemBegin(), c.poolItemEnd() ) << endl;
-  dumpRange( ERR, c.selectableBegin(), c.selectableEnd() ) << endl;
+  typename _Res::constPtr p = boost::dynamic_pointer_cast<const _Res>( pi_r.resolvable() );
+  if ( ! p )
+  {
+    ERR << "Kind cast missmatch " << pi_r << endl;
+  }
+  ResKind k = pi_r->kind();
+  if ( k != ResTraits<_Res>::kind )
+  {
+    ERR << "Kind traits missmatch " << k << " <> " << ResTraits<_Res>::kind << endl;
+  }
+  if ( ! pi_r->isKind( ResTraits<_Res>::kind ) )
+  {
+    ERR << "IsKind missmatch " << k << " <> " << ResTraits<_Res>::kind << endl;
   }
 }
-
-void ditest( sat::Solvable slv_r )
+void ditest( const PoolItem & pi_r )
 {
-  MIL << slv_r << endl;
-  Package::Ptr   pkg( make<Package>( slv_r ) );
-  dumpRange( DBG, pkg->keywords().begin(), pkg->keywords().end() ) << endl;
+  ttest<Package>( pi_r );
   return;
-}
 
-void ditest( const PoolItem & pi_r )
-{
-  ditest( pi_r.satSolvable() );
+  ResKind kind( pi_r->kind() );
+  if ( kind == ResKind::package )
+  {
+    ttest<Package>( pi_r );
+  }
+  else if ( kind == ResKind::pattern )
+  {
+    ttest<Pattern>( pi_r );
+  }
+  else if ( kind == ResKind::patch )
+  {
+    ttest<Patch>( pi_r );
+  }
+  else if ( kind == ResKind::product )
+  {
+    ttest<Product>( pi_r );
+  }
+  else if ( kind == ResKind::srcpackage )
+  {
+    ttest<SrcPackage>( pi_r );
+  }
+  else
+  {
+    if ( kind != ResKind::atom )
+    ERR << "Unknown kind " << kind << endl;
+  }
 }
 
 
@@ -559,7 +587,7 @@ try {
   ResPool   pool( ResPool::instance() );
   USR << "pool: " << pool << endl;
 
-  if ( 0 )
+  if ( 1 )
   {
     RepoManager repoManager( makeRepoManager( sysRoot ) );
     RepoInfoList repos = repoManager.knownRepositories();
@@ -639,6 +667,13 @@ try {
   ///////////////////////////////////////////////////////////////////
   ///////////////////////////////////////////////////////////////////
 
+  //std::for_each( pool.begin(), pool.end(), &ditest );
+  std::for_each( pool.byKindBegin<Package>(), pool.byKindEnd<Package>(), &ditest );
+
+  ///////////////////////////////////////////////////////////////////
+  INT << "===[END]============================================" << endl << endl;
+  zypp::base::LogControl::instance().logNothing();
+  return 0;
   //vdumpPoolStats( USR << "Pool:"<< endl, pool.begin(), pool.end() ) << endl;
 
   if ( !pool.empty() )
index 0f4ce616436d1a67631ff2e91f08d9eb81b84caa..aac9b119c6e5461b2263e3ee0be9215cd9088ca8 100644 (file)
@@ -1,3 +1,10 @@
+-------------------------------------------------------------------
+Thu Apr 17 16:29:15 CEST 2008 - ma@suse.de
+
+- Fixed pools package index wrongly including source packages. (bnc #380283)
+- version 4.13.2
+- revision 9683
+
 -------------------------------------------------------------------
 Wed Apr 16 15:00:19 CEST 2008 - ma@suse.de
 
index f45348fed26aedad794a0ec3583e7366a8bab72c..347c0099573e883a3cf1062799109b8c966d4e40 100644 (file)
@@ -60,6 +60,7 @@ namespace zypp
     using sat::Solvable::ident;
 
     using sat::Solvable::kind;
+    using sat::Solvable::isKind;
     using sat::Solvable::name;
     using sat::Solvable::edition;
     using sat::Solvable::arch;
index 025e979eb6e6b303c022e53b49cdfa7ddec2ee08..69c755d986061688a5e56a6c167c3f72ff2c1b45 100644 (file)
@@ -253,9 +253,12 @@ namespace zypp
       NO_SOLVABLE_RETURN( false );
 
       // detect srcpackages by 'arch'
-      if ( kind_r == ResKind::srcpackage )
+      switch ( _solvable->arch )
       {
-        return( _solvable->arch == ARCH_SRC || _solvable->arch == ARCH_NOSRC );
+        case ARCH_SRC:
+        case ARCH_NOSRC:
+          return( kind_r == ResKind::srcpackage );
+          break;
       }
 
       // no ':' in package names (hopefully)