[zypp-commit] r10894 - in /branches/SuSE-Linux-11_0-Branch/sat-solver: src/solver.c testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution
Author: mlschroe Date: Mon Aug 25 12:55:03 2008 New Revision: 10894 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10894&view=rev Log: - also check obsoletes when disabling update rules Modified: branches/SuSE-Linux-11_0-Branch/sat-solver/src/solver.c branches/SuSE-Linux-11_0-Branch/sat-solver/testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution Modified: branches/SuSE-Linux-11_0-Branch/sat-solver/src/solver.c URL: http://svn.opensuse.org/viewcvs/zypp/branches/SuSE-Linux-11_0-Branch/sat-solver/src/solver.c?rev=10894&r1=10893&r2=10894&view=diff ============================================================================== --- branches/SuSE-Linux-11_0-Branch/sat-solver/src/solver.c (original) +++ branches/SuSE-Linux-11_0-Branch/sat-solver/src/solver.c Mon Aug 25 12:55:03 2008 @@ -910,9 +910,23 @@ s = pool->solvables + what; if (solv->noobsoletes.size && MAPTST(&solv->noobsoletes, what)) break; + if (s->obsoletes) + { + Id obs, *obsp; + obsp = s->repo->idarraydata + s->obsoletes; + while ((obs = *obsp++) != 0) + FOR_PROVIDES(p, pp, obs) + { + if (pool->solvables[p].repo != installed) + continue; + if (!solv->obsoleteusesprovides && !pool_match_nevr(pool, pool->solvables + p, obs)) + continue; + MAPSET(&solv->noupdate, p - installed->start); + } + } FOR_PROVIDES(p, pp, s->name) { - if (pool->solvables[p].name != s->name) + if (!solv->implicitobsoleteusesprovides && pool->solvables[p].name != s->name) continue; if (pool->solvables[p].repo == installed) MAPSET(&solv->noupdate, p - installed->start); @@ -949,9 +963,33 @@ { case SOLVER_INSTALL_SOLVABLE: s = pool->solvables + what; + if (s->obsoletes) + { + Id obs, *obsp; + obsp = s->repo->idarraydata + s->obsoletes; + while ((obs = *obsp++) != 0) + FOR_PROVIDES(p, pp, obs) + { + if (pool->solvables[p].repo != installed) + continue; + if (!solv->obsoleteusesprovides && !pool_match_nevr(pool, pool->solvables + p, obs)) + continue; + if (MAPTST(&solv->noupdate, p - installed->start)) + continue; + r = solv->rules + solv->updaterules + (p - installed->start); + if (r->d >= 0) + continue; + enablerule(solv, r); + IF_POOLDEBUG (SAT_DEBUG_SOLUTIONS) + { + POOL_DEBUG(SAT_DEBUG_SOLUTIONS, "@@@ re-enabling "); + solver_printrule(solv, SAT_DEBUG_SOLUTIONS, r); + } + } + } FOR_PROVIDES(p, pp, s->name) { - if (pool->solvables[p].name != s->name) + if (!solv->implicitobsoleteusesprovides && pool->solvables[p].name != s->name) continue; if (pool->solvables[p].repo != installed) continue; Modified: branches/SuSE-Linux-11_0-Branch/sat-solver/testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution URL: http://svn.opensuse.org/viewcvs/zypp/branches/SuSE-Linux-11_0-Branch/sat-solver/testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution?rev=10894&r1=10893&r2=10894&view=diff ============================================================================== --- branches/SuSE-Linux-11_0-Branch/sat-solver/testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution (original) +++ branches/SuSE-Linux-11_0-Branch/sat-solver/testsuite/data.libzypp/yast-tests/exercise-kdelibsobs-test.solution Mon Aug 25 12:55:03 2008 @@ -8,9 +8,8 @@ Problem 2: ==================================== -nothing provides kdelibs3 = 3.1 needed by kdelibs3-devel-<NULL>.noarch +package kdelibs-devel-2.0.1-4.noarch requires kdesupport-devel, but none of the providers can be installed -- allow deinstallation of kdesupport-devel-2.0.1-5.noarch - allow deinstallation of kdelibs-devel-2.0.1-4.noarch - do not install kdelibs3-<NULL>.noarch -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org
participants (1)
-
mlschroe@svn.opensuse.org