From: Zdeněk Pavlas Date: Tue, 10 Apr 2012 13:21:40 +0000 (+0200) Subject: SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES X-Git-Tag: BASE-SuSE-Code-12_2-Branch~48^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=404b35043540d02c4f0e5b6c55a8f962145c09af;p=thirdparty%2Flibsolv.git SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES true: process explicit obsoletes in multiinstall. Defaults to 0. Needed for compatibility with 'yum'. --- diff --git a/src/rules.c b/src/rules.c index 00d5c332..bf98b180 100644 --- a/src/rules.c +++ b/src/rules.c @@ -665,7 +665,7 @@ solver_addrpmrulesforsolvable(Solver *solv, Solvable *s, Map *m) { int noobs = solv->noobsoletes.size && MAPTST(&solv->noobsoletes, n); int isinstalled = (installed && s->repo == installed); - if (s->obsoletes && !noobs) + if (s->obsoletes && (!noobs || solv->keepexplicitobsoletes)) { obsp = s->repo->idarraydata + s->obsoletes; /* foreach obsoletes */ diff --git a/src/solver.c b/src/solver.c index f19d7dac..ef116c28 100644 --- a/src/solver.c +++ b/src/solver.c @@ -1473,6 +1473,8 @@ solver_get_flag(Solver *solv, int flag) return solv->addalreadyrecommended; case SOLVER_FLAG_NO_INFARCHCHECK: return solv->noinfarchcheck; + case SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES: + return solv->keepexplicitobsoletes; default: break; } @@ -1515,6 +1517,9 @@ solver_set_flag(Solver *solv, int flag, int value) case SOLVER_FLAG_NO_INFARCHCHECK: solv->noinfarchcheck = value; break; + case SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES: + solv->keepexplicitobsoletes = value; + break; default: break; } diff --git a/src/solver.h b/src/solver.h index 84ffb8e2..ddab97bd 100644 --- a/src/solver.h +++ b/src/solver.h @@ -194,6 +194,7 @@ struct _Solver { int dontshowinstalledrecommended; /* true: do not show recommended packages that are already installed */ int noinfarchcheck; /* true: do not forbid inferior architectures */ + int keepexplicitobsoletes; /* true: honor obsoletes during multiinstall */ Map dupmap; /* dup these packages*/ @@ -283,6 +284,7 @@ typedef struct _Solver Solver; #define SOLVER_FLAG_ADD_ALREADY_RECOMMENDED 8 #define SOLVER_FLAG_NO_INFARCHCHECK 9 #define SOLVER_FLAG_ALLOW_NAMECHANGE 10 +#define SOLVER_FLAG_KEEP_EXPLICIT_OBSOLETES 11 extern Solver *solver_create(Pool *pool); extern void solver_free(Solver *solv);