[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