return pool_tmpjoin(pool, "problem with installed package ", pool_solvid2str(pool, source), 0);
case SOLVER_RULE_JOB:
return "conflicting requests";
+ case SOLVER_RULE_JOB_UNSUPPORTED:
+ return "unsupported request";
case SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP:
return pool_tmpjoin(pool, "nothing provides requested ", pool_dep2str(pool, dep), 0);
+ case SOLVER_RULE_JOB_UNKNOWN_PACKAGE:
+ return pool_tmpjoin(pool, "package ", pool_dep2str(pool, dep), " does not exist");
case SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM:
return pool_tmpjoin(pool, pool_dep2str(pool, dep), " is provided by the system", 0);
case SOLVER_RULE_RPM:
*depp = solv->job.elements[jidx + 1];
if ((r->d == 0 || r->d == -1) && r->w2 == 0 && r->p == -SYSTEMSOLVABLE)
{
- if ((solv->job.elements[jidx] & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_INSTALL|SOLVER_SOLVABLE_NAME))
+ Id how = solv->job.elements[jidx];
+ if ((how & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_INSTALL|SOLVER_SOLVABLE_NAME))
+ return SOLVER_RULE_JOB_UNKNOWN_PACKAGE;
+ if ((how & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_INSTALL|SOLVER_SOLVABLE_PROVIDES))
return SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP;
- if ((solv->job.elements[jidx] & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_INSTALL|SOLVER_SOLVABLE_PROVIDES))
- return SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP;
- if ((solv->job.elements[jidx] & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_ERASE|SOLVER_SOLVABLE_NAME))
+ if ((how & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_ERASE|SOLVER_SOLVABLE_NAME))
return SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM;
- if ((solv->job.elements[jidx] & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_ERASE|SOLVER_SOLVABLE_PROVIDES))
+ if ((how & (SOLVER_JOBMASK|SOLVER_SELECTMASK)) == (SOLVER_ERASE|SOLVER_SOLVABLE_PROVIDES))
return SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM;
+ return SOLVER_RULE_JOB_UNSUPPORTED;
}
return SOLVER_RULE_JOB;
}
SOLVER_RULE_JOB = 0x400,
SOLVER_RULE_JOB_NOTHING_PROVIDES_DEP,
SOLVER_RULE_JOB_PROVIDED_BY_SYSTEM,
+ SOLVER_RULE_JOB_UNKNOWN_PACKAGE,
+ SOLVER_RULE_JOB_UNSUPPORTED,
SOLVER_RULE_DISTUPGRADE = 0x500,
SOLVER_RULE_INFARCH = 0x600,
SOLVER_RULE_CHOICE = 0x700,
queue_push(&q, p);
if (!q.count)
{
- /* no candidate found, make this an impossible rule */
+ if (select == SOLVER_SOLVABLE_ONE_OF)
+ break; /* ignore empty installs */
+ /* no candidate found or unsupported, make this an impossible rule */
queue_push(&q, -SYSTEMSOLVABLE);
}
p = queue_shift(&q); /* get first candidate */