From: Michael Schroeder Date: Thu, 23 Feb 2012 14:49:19 +0000 (+0100) Subject: - improve cleandeps for opensuse a bit by marking installed visible patterns as useri... X-Git-Tag: BASE-SuSE-Code-12_2-Branch~136 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8cb846a1caf8a833dc28364dff679556617997dd;p=platform%2Fupstream%2Flibsolv.git - improve cleandeps for opensuse a bit by marking installed visible patterns as userinstalled --- diff --git a/src/rules.c b/src/rules.c index b03b91f..67e3126 100644 --- a/src/rules.c +++ b/src/rules.c @@ -2357,6 +2357,37 @@ solver_createcleandepsmap(Solver *solv) MAPSET(&userinstalled, p - installed->start); } } + + /* also add visible patterns to userinstalled for openSUSE */ + if (1) + { + Dataiterator di; + dataiterator_init(&di, pool, 0, 0, SOLVABLE_ISVISIBLE, 0, 0); + while (dataiterator_step(&di)) + { + Id *dp; + if (di.solvid <= 0) + continue; + s = pool->solvables + di.solvid; + if (!s->requires) + continue; + if (!pool_installable(pool, s)) + continue; + if (strncmp(pool_id2str(pool, s->name), "pattern:", 8) != 0) + continue; + dp = s->repo->idarraydata + s->requires; + for (dp = s->repo->idarraydata + s->requires; *dp; dp++) + FOR_PROVIDES(p, pp, *dp) + if (pool->solvables[p].repo == installed) + { + if (strncmp(pool_id2str(pool, pool->solvables[p].name), "pattern", 7) != 0) + continue; + MAPSET(&userinstalled, p - installed->start); + } + } + dataiterator_free(&di); + } + /* add all positive elements (e.g. locks) to "userinstalled" */ for (rid = solv->jobrules; rid < solv->jobrules_end; rid++) {