static const int SOLVER_FLAG_NEED_UPDATEPROVIDE = SOLVER_FLAG_NEED_UPDATEPROVIDE;
static const int SOLVER_FLAG_FOCUS_BEST = SOLVER_FLAG_FOCUS_BEST;
static const int SOLVER_FLAG_STRONG_RECOMMENDS = SOLVER_FLAG_STRONG_RECOMMENDS;
+ static const int SOLVER_FLAG_INSTALL_ALSO_UPDATES = SOLVER_FLAG_INSTALL_ALSO_UPDATES;
static const int SOLVER_REASON_UNRELATED = SOLVER_REASON_UNRELATED;
static const int SOLVER_REASON_UNIT_RULE = SOLVER_REASON_UNIT_RULE;
{ SOLVER_FLAG_URPM_REORDER, "urpmreorder", 0 },
{ SOLVER_FLAG_FOCUS_BEST, "focusbest", 0 },
{ SOLVER_FLAG_STRONG_RECOMMENDS, "strongrecommends", 0 },
+ { SOLVER_FLAG_INSTALL_ALSO_UPDATES, "installalsoupdates", 0 },
{ 0, 0, 0 }
};
return solv->urpmreorder;
case SOLVER_FLAG_STRONG_RECOMMENDS:
return solv->strongrecommends;
+ case SOLVER_FLAG_INSTALL_ALSO_UPDATES:
+ return solv->install_also_updates;
default:
break;
}
case SOLVER_FLAG_STRONG_RECOMMENDS:
solv->strongrecommends = value;
break;
+ case SOLVER_FLAG_INSTALL_ALSO_UPDATES:
+ solv->install_also_updates = value;
+ break;
default:
break;
}
continue;
/* prune to installed if not updating */
if (dq->count > 1 && solv->installed && !solv->updatemap_all &&
+ !solv->install_also_updates &&
!(solv->job.elements[solv->ruletojob.elements[i - solv->jobrules]] & SOLVER_ORUPDATE))
{
- int j, k;
- for (j = k = 0; j < dq->count; j++)
+ int j = dq->count, k;
+ if (solv->updatemap.size)
{
- Solvable *s = pool->solvables + dq->elements[j];
- if (s->repo == solv->installed)
- {
- dq->elements[k++] = dq->elements[j];
- if (solv->updatemap.size && MAPTST(&solv->updatemap, dq->elements[j] - solv->installed->start))
- {
- k = 0; /* package wants to be updated, do not prune */
- break;
- }
- }
+ /* do not prune if an installed package wants to be updated */
+ for (j = 0; j < dq->count; j++)
+ if (pool->solvables[dq->elements[j]].repo == solv->installed
+ && MAPTST(&solv->updatemap, dq->elements[j] - solv->installed->start))
+ break;
+ }
+ if (j == dq->count)
+ {
+ for (j = k = 0; j < dq->count; j++)
+ if (pool->solvables[dq->elements[j]].repo == solv->installed)
+ dq->elements[k++] = dq->elements[j];
+ if (k)
+ dq->count = k;
}
- if (k)
- dq->count = k;
}
olevel = level;
level = selectandinstall(solv, level, dq, disablerules, i, SOLVER_REASON_RESOLVE_JOB);
int do_yum_obsoletes; /* true: add special yumobs rules */
int urpmreorder; /* true: do special urpm package reordering */
int strongrecommends; /* true: create weak rules for recommends */
+ int install_also_updates; /* true: do not prune install job rules to installed packages */
Map dupmap; /* dup these packages*/
int dupmap_all; /* dup all packages */
#define SOLVER_FLAG_URPM_REORDER 23
#define SOLVER_FLAG_FOCUS_BEST 24
#define SOLVER_FLAG_STRONG_RECOMMENDS 25
+#define SOLVER_FLAG_INSTALL_ALSO_UPDATES 26
#define GET_USERINSTALLED_NAMES (1 << 0) /* package names instead of ids */
#define GET_USERINSTALLED_INVERTED (1 << 1) /* autoinstalled */