[zypp-commit] r11947 - /trunk/sat-solver/src/pool.c
Author: mlschroe Date: Thu Dec 18 12:17:46 2008 New Revision: 11947 URL: http://svn.opensuse.org/viewcvs/zypp?rev=11947&view=rev Log: - handle patch conflicts different also in trivial_installable Modified: trunk/sat-solver/src/pool.c Modified: trunk/sat-solver/src/pool.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/pool.c?rev=11947&r1=11946&r2=11947&view=diff ============================================================================== --- trunk/sat-solver/src/pool.c (original) +++ trunk/sat-solver/src/pool.c Thu Dec 18 12:17:46 2008 @@ -1387,7 +1387,7 @@ return dep; } -static inline int providedbyinstalled(Pool *pool, unsigned char *map, Id dep) +static inline int providedbyinstalled(Pool *pool, unsigned char *map, Id dep, int ispatch) { Id p, pp; int r = 0; @@ -1395,6 +1395,8 @@ { if (p == SYSTEMSOLVABLE) return 1; /* always boring, as never constraining */ + if (ispatch && !pool_match_nevr(pool, pool->solvables + p, dep)) + continue; if ((map[p] & 9) == 9) return 9; r |= map[p] & 17; @@ -1462,7 +1464,7 @@ { if (req == SOLVABLE_PREREQMARKER) continue; - r = providedbyinstalled(pool, map, req); + r = providedbyinstalled(pool, map, req, 0); if (!r) { /* decided and miss */ @@ -1478,10 +1480,14 @@ } if (s->conflicts) { + int ispatch = 0; /* see solver.c patch handling */ + + if (!strncmp("patch:", id2str(pool, s->name), 6)) + ispatch = 1; conp = s->repo->idarraydata + s->conflicts; while ((con = *conp++) != 0) { - if ((providedbyinstalled(pool, map, con) & 1) != 0) + if ((providedbyinstalled(pool, map, con, ispatch) & 1) != 0) { map[p] = 2; break; @@ -1489,7 +1495,7 @@ if ((m == 1 || m == 17) && ISRELDEP(con)) { con = dep2name(pool, con); - if ((providedbyinstalled(pool, map, con) & 1) != 0) + if ((providedbyinstalled(pool, map, con, ispatch) & 1) != 0) m = 9; } } @@ -1506,7 +1512,7 @@ obsp = s->repo->idarraydata + s->obsoletes; while ((obs = *obsp++) != 0) { - if ((providedbyinstalled(pool, map, obs) & 1) != 0) + if ((providedbyinstalled(pool, map, obs, 0) & 1) != 0) { map[p] = 2; break; -- 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