diff -p -up rpm-4.4.2.2/lib/transaction.c.pix rpm-4.4.2.2/lib/transaction.c --- rpm-4.4.2.2/lib/transaction.c.pix 2007-09-11 06:28:15.000000000 +0000 +++ rpm-4.4.2.2/lib/transaction.c 2008-01-22 15:41:21.000000000 +0000 @@ -104,6 +104,22 @@ static int sharedCmp(const void * one, c return 0; } +static int is_a_doc_conflict(rpmfi fi) +{ + const char *ignorelist[] = { + "/usr/share/man/", + "/usr/share/gtk-doc/html/", + "/usr/share/gnome/html/", + NULL + }; + const char *fn = rpmfiFN(fi); + const char **dnp; + for (dnp = ignorelist; *dnp != NULL; dnp++) + if (strstr(fn, *dnp) == fn) return 1; + + return 0; +} + /** * @param ts transaction set * @param p @@ -212,6 +228,13 @@ static int handleInstInstalledFiles(cons } } + /* HACK: always install latest (arch-independent) man + pages and gtk/gnome html doc files. */ + if (rConflicts && is_a_doc_conflict(fi)) { + fi->actions[fileNum] = FA_CREATE; + rConflicts = 0; + } + if (rConflicts) { rpmpsAppend(ps, RPMPROB_FILE_CONFLICT, rpmteNEVR(p), rpmteKey(p), @@ -601,6 +624,13 @@ assert(otherFi != NULL); done = 1; } + /* HACK: always install latest (arch-independent) man + pages and gtk/gnome html doc files. */ + if (rConflicts && is_a_doc_conflict(fi)) { + fi->actions[i] = FA_CREATE; + rConflicts = 0; + } + if (rConflicts) { rpmpsAppend(ps, RPMPROB_NEW_FILE_CONFLICT, rpmteNEVR(p), rpmteKey(p),