Author: mlschroe Date: Fri Jul 11 22:11:42 2008 New Revision: 10549 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10549&view=rev Log: - disallow arch/vendor changes even if the package name changes Modified: trunk/sat-solver/src/policy.c Modified: trunk/sat-solver/src/policy.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/policy.c?rev=10549&r1=10548&r2=10549&view=diff ============================================================================== --- trunk/sat-solver/src/policy.c (original) +++ trunk/sat-solver/src/policy.c Fri Jul 11 22:11:42 2008 @@ -404,7 +404,6 @@ Id p, *pp, n, p2, *pp2; Id obs, *obsp; Solvable *ps; - Id vendormask; queue_empty(qs); @@ -418,7 +417,6 @@ * n = solvable Id */ n = s - pool->solvables; - vendormask = pool_vendor2mask(pool, s->vendor); /* * look for updates for s @@ -431,15 +429,8 @@ ps = pool->solvables + p; if (s->name == ps->name) /* name match */ { - if (!allow_all) - { - if (!solv->allowdowngrade && evrcmp(pool, s->evr, ps->evr, EVRCMP_MATCH_RELEASE) > 0) - continue; - if (!solv->allowarchchange && s->arch != ps->arch && policy_illegal_archchange(solv, s, ps)) - continue; - if (!solv->allowvendorchange && s->vendor != ps->vendor && policy_illegal_vendorchange(solv, s, ps)) - continue; - } + if (!allow_all && !solv->allowdowngrade && evrcmp(pool, s->evr, ps->evr, EVRCMP_MATCH_RELEASE) > 0) + continue; } else if (!solv->noupdateprovide && ps->obsoletes) /* provides/obsoletes combination ? */ { @@ -464,12 +455,23 @@ } else continue; + if (!allow_all && !solv->allowarchchange && s->arch != ps->arch && policy_illegal_archchange(solv, s, ps)) + continue; + if (!allow_all && !solv->allowvendorchange && s->vendor != ps->vendor && policy_illegal_vendorchange(solv, s, ps)) + continue; queue_push(qs, p); } if (solv->noupdateprovide && solv->obsoletes && solv->obsoletes[n - solv->installed->start]) { for (pp = solv->obsoletes_data + solv->obsoletes[n - solv->installed->start]; (p = *pp++) != 0;) - queue_push(qs, p); + { + ps = pool->solvables + p; + if (!allow_all && !solv->allowarchchange && s->arch != ps->arch && policy_illegal_archchange(solv, s, ps)) + continue; + if (!allow_all && !solv->allowvendorchange && s->vendor != ps->vendor && policy_illegal_vendorchange(solv, s, ps)) + continue; + queue_push(qs, p); + } } } -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org