diff options
Diffstat (limited to 'src/solver_private.h')
-rw-r--r-- | src/solver_private.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/solver_private.h b/src/solver_private.h index f8df8c7..fe80881 100644 --- a/src/solver_private.h +++ b/src/solver_private.h @@ -27,7 +27,23 @@ solver_dep_fulfilled(Solver *solv, Id dep) if (ISRELDEP(dep)) { Reldep *rd = GETRELDEP(pool, dep); - if (rd->flags == REL_AND || rd->flags == REL_COND) + if (rd->flags == REL_COND) + { + if (ISRELDEP(rd->evr)) + { + Reldep *rd2 = GETRELDEP(pool, rd->evr); + if (rd2->flags == REL_ELSE) + { + if (solver_dep_fulfilled(solv, rd2->name)) + return solver_dep_fulfilled(solv, rd->name); + return solver_dep_fulfilled(solv, rd2->evr); + } + } + if (solver_dep_fulfilled(solv, rd->name)) + return 1; + return !solver_dep_fulfilled(solv, rd->evr); + } + if (rd->flags == REL_AND) { if (!solver_dep_fulfilled(solv, rd->name)) return 0; |