[Aptitude-svn-commit] r3960 - in branches/aptitude-0.3/aptitude: . src/generic

Daniel Burrows dburrows at costa.debian.org
Fri Aug 26 00:27:57 UTC 2005


Author: dburrows
Date: Fri Aug 26 00:27:53 2005
New Revision: 3960

Modified:
   branches/aptitude-0.3/aptitude/ChangeLog
   branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver_universe.cc
Log:
Strictly produce exactly one dependency for each provider of a conflicted package.

Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog	(original)
+++ branches/aptitude-0.3/aptitude/ChangeLog	Fri Aug 26 00:27:53 2005
@@ -2,6 +2,14 @@
 
 	* src/generic/aptitude_resolver_universe.cc:
 
+	  Give in and strictly conform to the providedness rule (i.e.,
+	  dependencies that represent conflicts-through-provides are
+	  exactly tuned to a single Provides relationship).  It's not
+	  clear how to validate the reverse connectivity of the dependency
+	  graph without this change.
+
+	* src/generic/aptitude_resolver_universe.cc:
+
 	  Set 'provides_open' to true before calling applicable(), so that
 	  versioned reverse dependencies on a provided package are
 	  correctly handled.  Also, remove a bunch of redundant

Modified: branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver_universe.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver_universe.cc	(original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver_universe.cc	Fri Aug 26 00:27:53 2005
@@ -201,21 +201,7 @@
 	{
 	  while(!ver_lst.end())
 	    {
-	      bool ver_matches=false;
-
-	      // Does this version Provide something that hits
-	      // the conflict?
-	      for(pkgCache::PrvIterator prv2=ver_lst.ProvidesList();
-		  !ver_matches && !prv2.end(); ++prv2)
-		if(prv2.ParentPkg()==dep_lst.TargetPkg())
-		  ver_matches=(!dep_lst.TargetVer()) ||
-		    (prv2.ProvideVersion() &&
-		     _system->VS->CheckDep(prv2.ProvideVersion(),
-					   dep_lst->CompareOp,
-					   dep_lst.TargetVer()));
-
-	      // If not, it can resolve the conflict.
-	      if(!ver_matches)
+	      if(ver_lst != prv_lst.OwnerVer())
 		return;
 
 	      ++ver_lst;
@@ -305,24 +291,7 @@
       // objects for versioned dependencies that go through Provides.
       assert(!d.TargetVer());
 
-      if(v.get_pkg() != const_cast<pkgCache::PrvIterator &>(prv).OwnerPkg())
-	return false;
-      else
-	{
-	  // See whether the version provides this package.  We do
-	  // this instead of just checking whether it's the owner of
-	  // the provides in order to be consistent with the
-	  // solver_iterator, which screens out any version that
-	  // provides the target package name.  Of course, this means
-	  // generating duplicate deps, but that's a small cost
-	  // compared to narrowing the branching factor.
-	  for(pkgCache::PrvIterator p2 = v.get_ver().ProvidesList();
-	      !p2.end(); ++p2)
-	    if(p2.ParentPkg() == d.TargetPkg())
-	      return false;
-
-	  return true;
-	}
+      return v.get_ver() != const_cast<pkgCache::PrvIterator &>(prv).OwnerVer();
     }
 }
 



More information about the Aptitude-svn-commit mailing list