return solv->job.elements[idx];
}
+Id
+solver_rule2solvable(Solver *solv, Id rid)
+{
+ if (rid >= solv->updaterules && rid < solv->updaterules_end)
+ return rid - solv->updaterules;
+ if (rid >= solv->featurerules && rid < solv->featurerules_end)
+ return rid - solv->featurerules;
+ return 0;
+}
+
/* check if the newest versions of pi still provides the dependency we're looking for */
static int
solver_choicerulecheck(Solver *solv, Id pi, Rule *r, Map *m)
extern void solver_ruleliterals(struct _Solver *solv, Id rid, Queue *q);
extern int solver_rule2jobidx(struct _Solver *solv, Id rid);
extern Id solver_rule2job(struct _Solver *solv, Id rid, Id *whatp);
+extern Id solver_rule2solvable(struct _Solver *solv, Id rid);
#ifdef __cplusplus
if (i < solv->decisioncnt_update)
{
if (i == 0)
- {
- if (infop)
- *infop = SYSTEMSOLVABLE;
- return SOLVER_REASON_KEEP_INSTALLED;
- }
+ return SOLVER_REASON_KEEP_INSTALLED;
if (infop)
*infop = why;
return SOLVER_REASON_RESOLVE_JOB;
if (why == 0 && pp < 0)
return SOLVER_REASON_CLEANDEPS_ERASE;
if (infop)
- {
- if (why >= solv->updaterules && why < solv->updaterules_end)
- *infop = why - solv->updaterules;
- else if (why >= solv->featurerules && why < solv->featurerules_end)
- *infop = why - solv->featurerules;
- }
+ *infop = why;
return SOLVER_REASON_UPDATE_INSTALLED;
}
if (i < solv->decisioncnt_resolve)
if (why == 0 && pp < 0)
return SOLVER_REASON_CLEANDEPS_ERASE;
if (infop)
- {
- if (why >= solv->updaterules && why < solv->updaterules_end)
- *infop = why - solv->updaterules;
- else if (why >= solv->featurerules && why < solv->featurerules_end)
- *infop = why - solv->featurerules;
- }
+ *infop = why;
return SOLVER_REASON_KEEP_INSTALLED;
}
if (i < solv->decisioncnt_weak)