From: Michael Schroeder Date: Mon, 2 Jun 2025 09:30:59 +0000 (+0200) Subject: Transaction ordering: Allow more uninst->uninst edges X-Git-Tag: 0.7.33~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f721a4c9fc5006b41f74b1b69cf3b372e126f09e;p=thirdparty%2Flibsolv.git Transaction ordering: Allow more uninst->uninst edges Only skip uninst->uninst edges if both elements are build to inst elements. --- diff --git a/src/order.c b/src/order.c index 753ce2c0..de29ab4f 100644 --- a/src/order.c +++ b/src/order.c @@ -407,10 +407,11 @@ addsolvableedges(struct orderdata *od, Solvable *s) if (s->repo != installed) continue; /* no inst->uninst edges, please! */ - /* uninst -> uninst edge. Those make trouble. Only add if we must */ - if (trans->transaction_installed[p - installed->start] && !havescripts(pool, p, &ignoreinst)) + /* uninst -> uninst edge. Those can make trouble, as uninst elements are often bound to + * inst elements which use the opposite order. */ + if (trans->transaction_installed[p2 - installed->start] && trans->transaction_installed[p - installed->start] && !havescripts(pool, p, &ignoreinst)) { - /* p is obsoleted by another package and has no scripts */ + /* both p and p2 are bound to inst elements and p has no scripts */ /* we assume that the obsoleter is good enough to replace p */ continue; }