[zypp-commit] r8695 - in /branches/tmp/ma/jump_sat/libzypp/zypp: sat/SATResolver.cc sat/SATResolver.h solver/detail/Resolver.cc solver/detail/ResolverUpgrade.cc
![](https://seccdn.libravatar.org/avatar/b2c8050acc12d6c8fc86d8342006391c.jpg?s=120&d=mm&r=g)
Author: schubi2
Date: Thu Feb 14 18:10:55 2008
New Revision: 8695
URL: http://svn.opensuse.org/viewcvs/zypp?rev=8695&view=rev
Log:
rename packages works for update now
Modified:
branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.cc
branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.h
branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/Resolver.cc
branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/ResolverUpgrade.cc
Modified: branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.cc?rev=8695&r1=8694&r2=8695&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.cc (original)
+++ branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.cc Thu Feb 14 18:10:55 2008
@@ -227,6 +227,48 @@
return;
}
+
+//----------------------------------------------------------------------------
+// helper functions for distupgrade
+//----------------------------------------------------------------------------
+
+PoolItemList SATResolver::whoProvides(Capability cap) {
+ PoolItemList itemList;
+ Id p, *pp;
+ Repo *installedRepo = sat::Pool::instance().systemRepo().get();
+ for (pp = pool_whatprovides(_SATPool, cap.id()) ; (p = *pp++) != 0; ) {
+ Solvable *solvable = _SATPool->solvables + p;
+ PoolItem item = _pool.find (sat::Solvable(p));
+ if (item &&
+ (!installedRepo || solvable->repo != installedRepo) ) {
+ itemList.push_back (item);
+ MIL << item << " provides " << cap << endl;
+ }
+ }
+ return itemList;
+}
+
+bool SATResolver::doesObsoleteItem (PoolItem candidate, PoolItem installed) {
+ Solvable *sCandidate = _SATPool->solvables + candidate.satSolvable().id();
+ Repo *installedRepo = sat::Pool::instance().systemRepo().get();
+
+ Id p, *pp, obsolete, *obsoleteIt;
+
+ if ((!installedRepo || sCandidate->repo != installedRepo) && sCandidate->obsoletes) {
+ obsoleteIt = sCandidate->repo->idarraydata + sCandidate->obsoletes;
+ while ((obsolete = *obsoleteIt++) != 0)
+ {
+ for (pp = pool_whatprovides(_SATPool, obsolete) ; (p = *pp++) != 0; ) {
+ if (p > 0 && installed.satSolvable().id() == (sat::detail::SolvableIdType)p) {
+ MIL << candidate << " obsoletes " << installed << endl;
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// resolvePool
Modified: branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.h
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.h?rev=8695&r1=8694&r2=8695&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.h (original)
+++ branches/tmp/ma/jump_sat/libzypp/zypp/sat/SATResolver.h Thu Feb 14 18:10:55 2008
@@ -136,6 +136,9 @@
bool dosplitprovides () const {return _dosplitprovides;}
void setDosplitprovides ( const bool dosplitprovides) { _dosplitprovides = dosplitprovides;}
+
+ PoolItemList whoProvides(Capability cap);
+ bool doesObsoleteItem (PoolItem candidate, PoolItem installed);
};
///////////////////////////////////////////////////////////////////
Modified: branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/Resolver.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/Resolver.cc?rev=8695&r1=8694&r2=8695&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/Resolver.cc (original)
+++ branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/Resolver.cc Thu Feb 14 18:10:55 2008
@@ -72,7 +72,10 @@
, _verifying(false)
{
-
+ Testcase testcase("/var/log/YaST2/autoTestcase");
+ sat::Pool satPool( sat::Pool::instance() );
+ _satResolver = new SATResolver(_pool, satPool.get());
+ testcase.createTestcase (*this, true, false); // create pool, do not solver
}
@@ -249,13 +252,8 @@
// Solving with the satsolver
MIL << "-------------- Calling SAT Solver -------------------" << endl;
Testcase testcase("/var/log/YaST2/autoTestcase");
- if ( !_satResolver ) {
- sat::Pool satPool( sat::Pool::instance() );
- _satResolver = new SATResolver(_pool, satPool.get());
- testcase.createTestcase (*this, true, false); // create pool, do not solver
- } else {
- testcase.createTestcase (*this, false, false); // write control file only
- }
+ testcase.createTestcase (*this, false, false); // write control file only
+
#if 0
MIL << "------SAT-Pool------" << endl;
for (sat::Pool::SolvableIterator i = satPool.solvablesBegin();
Modified: branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/ResolverUpgrade.cc
URL: http://svn.opensuse.org/viewcvs/zypp/branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/ResolverUpgrade.cc?rev=8695&r1=8694&r2=8695&view=diff
==============================================================================
--- branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/ResolverUpgrade.cc (original)
+++ branches/tmp/ma/jump_sat/libzypp/zypp/solver/detail/ResolverUpgrade.cc Thu Feb 14 18:10:55 2008
@@ -56,6 +56,7 @@
#include "zypp/solver/detail/Resolver.h"
#include "zypp/solver/detail/Testcase.h"
#include "zypp/Target.h"
+#include "zypp/sat/SATResolver.h"
/////////////////////////////////////////////////////////////////////////
namespace zypp
@@ -140,113 +141,14 @@
}
-
-struct FindObsoletes
-{
- bool obsoletes;
-
- FindObsoletes ()
- : obsoletes (false)
- { }
-
- bool operator()( const CapAndItem & cai )
- {
- obsoletes = true; // we have a match
- return false; // stop looping here
- }
-};
-
-
-// does the candidate obsolete the capability ?
-
-bool
-Resolver::doesObsoleteCapability (PoolItem candidate, const Capability & cap)
-{
- _DEBUG("doesObsoleteCapability " << candidate << ", " << cap);
-
- Dep dep (Dep::OBSOLETES);
- FindObsoletes info;
- invokeOnEach( _pool.byCapabilityIndexBegin( cap.index(), dep ),
- _pool.byCapabilityIndexEnd( cap.index(), dep ),
- resfilter::ByCapMatch( cap ),
- functor::functorRef
participants (1)
-
schubi2@svn.opensuse.org