Author: mlschroe Date: Fri Oct 26 13:00:22 2007 New Revision: 7645 URL: http://svn.opensuse.org/viewcvs/zypp?rev=7645&view=rev Log: treat 'nothing provides' jobrules in a sane way Modified: trunk/sat-solver/src/solver.c Modified: trunk/sat-solver/src/solver.c URL: http://svn.opensuse.org/viewcvs/zypp/trunk/sat-solver/src/solver.c?rev=7645&r1=7644&r2=7645&view=diff ============================================================================== --- trunk/sat-solver/src/solver.c (original) +++ trunk/sat-solver/src/solver.c Fri Oct 26 13:00:22 2007 @@ -2762,26 +2762,25 @@ queuepush(&solv->ruletojob, i); break; case SOLVER_ERASE_SOLVABLE: - addrule(solv, -what, 0); /* remove by Id */ + addrule(solv, -what, 0); /* remove by Id */ queuepush(&solv->ruletojob, i); MAPSET(&noupdaterule, what); break; - case SOLVER_INSTALL_SOLVABLE_NAME: /* install by capability */ + case SOLVER_INSTALL_SOLVABLE_NAME: /* install by capability */ case SOLVER_INSTALL_SOLVABLE_PROVIDES: QUEUEEMPTY(&q); - FOR_PROVIDES(p, pp, what) /* check all providers */ + FOR_PROVIDES(p, pp, what) { - /* if by name, ensure that the name matches */ + /* if by name, ensure that the name matches */ if (how == SOLVER_INSTALL_SOLVABLE_NAME && pool->solvables[p].name != what) continue; queuepush(&q, p); } - if (!q.count) { /* no provider found -> abort */ - fprintf(stderr, "Nothing provides '%s'\n", id2str(pool, what)); - /* XXX make this a problem! */ - return; - abort(); - } + if (!q.count) + { + /* no provider, make this an impossible rule */ + queuepush(&q, -SYSTEMSOLVABLE); + } p = queueshift(&q); /* get first provider */ if (!q.count) -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org