4.4.9 -> 4.5: + - jbj: add a relation to to force install-before-erase. + - jbj: display dependency loops as an error for now. - glen: do not skip %clean from spec file - robert: install rpmdeps and debugedit to pkglibdir as on HEAD - jbj: fix: python ts.hdrFromFdno(fdno) segfault. --- rpm-4.5/lib/depends.c~ 2008/10/26 18:29:50 1.327.2.10 +++ rpm-4.5/lib/depends.c 2008-10-27 14:42:52.984295775 +0200 @@ -1936,7 +1936,7 @@ return 0; /* Avoid certain dependency relations. */ - if (teType == TR_ADDED && ignoreDep(ts, p, q)) + if (ignoreDep(ts, p, q)) return 0; /* Avoid redundant relations. */ @@ -2191,6 +2191,25 @@ } } + + /* Ensure that erasures follow installs during upgrades. */ + if (rpmteType(p) == TR_REMOVED && p->flink.Pkgid && p->flink.Pkgid[0]) { + + qi = rpmtsiInit(ts); + while ((q = rpmtsiNext(qi, TR_ADDED)) != NULL) { + if (strcmp(q->pkgid, p->flink.Pkgid[0])) + continue; + requires = rpmdsFromPRCO(q->PRCO, RPMTAG_NAME); + if (requires != NULL) { + /* XXX disable erased arrow reversal. */ + p->type = TR_ADDED; + (void) addRelation(ts, p, selected, requires); + p->type = TR_REMOVED; + } + } + qi = rpmtsiFree(qi); + } + if (_autobits != 0xffffffff) { @@ -2401,7 +2420,7 @@ const char * dp; char buf[4096]; int msglvl = (anaconda || (rpmtsDFlags(ts) & RPMDEPS_FLAG_DEPLOOPS)) - ? RPMMESS_WARNING : RPMMESS_DEBUG; + ? RPMMESS_WARNING : RPMMESS_ERROR; ; /* Unchain predecessor loop. */