buildroot/package/rpm/rpm-5.2.0_ordering-fix.patch
2009-12-25 10:29:22 +00:00

46 lines
1.3 KiB
Diff

Included upstream
--- x/lib/depends.c 2009/05/15 13:40:58 1.445
+++ y/lib/depends.c 2009/08/22 22:12:02 1.446
@@ -2216,9 +2216,6 @@
{
rpmte q, qprev;
- /* Mark the package as queued. */
- rpmteTSI(p)->tsi_queued = 1;
-
if ((*rp) == NULL) { /* 1st element */
/*@-dependenttrans@*/ /* FIX: double indirection */
(*rp) = (*qp) = p;
@@ -2238,6 +2235,12 @@
/* XXX Insure removed after added. */
if (rpmteType(p) == TR_REMOVED && rpmteType(p) != rpmteType(q))
continue;
+
+ /* XXX Follow all previous generations in the queue. */
+ if (rpmteTSI(p)->tsi_queued > rpmteTSI(q)->tsi_queued)
+ continue;
+
+ /* XXX Within a generation, queue behind more "important". */
if (rpmteTSI(q)->tsi_qcnt <= rpmteTSI(p)->tsi_qcnt)
break;
}
@@ -2521,6 +2524,9 @@
if (rpmteTSI(p)->tsi_count != 0)
continue;
+
+ /* Mark the package as queued. */
+ rpmteTSI(p)->tsi_queued = orderingCount + 1;
rpmteTSI(p)->tsi_suc = NULL;
addQ(p, &q, &r, prefcolor);
qlen++;
@@ -2584,6 +2590,8 @@
(void) rpmteSetParent(p, q);
(void) rpmteSetDegree(q, rpmteDegree(q)+1);
+ /* Mark the package as queued. */
+ rpmteTSI(p)->tsi_queued = orderingCount + 1;
/* XXX TODO: add control bit. */
rpmteTSI(p)->tsi_suc = NULL;
/*@-nullstate@*/ /* XXX FIX: rpmteTSI(q)->tsi_suc can be NULL. */