Avoid looking up files or directories that this package provides
Included upstream
diff -u --new-file --recursive rpm-5.2.0_vanilla/lib/depends.c rpm-5.2.0_parentdir-vs-requires/lib/depends.c
--- rpm-5.2.0_vanilla/lib/depends.c	2009-05-23 01:23:46.000000000 +0000
+++ rpm-5.2.0_parentdir-vs-requires/lib/depends.c	2009-09-22 17:00:24.880956271 +0000
@@ -2095,6 +2095,7 @@
     rpmtsi qi; rpmte q;
     tsortInfo tsi;
     nsType NSType = rpmdsNSType(requires);
+    const char * N = rpmdsN(requires);
     fnpyKey key;
     int teType = rpmteType(p);
     alKey pkgKey;
@@ -2128,6 +2129,23 @@
 	break;
     }
 
+    /* Avoid looking up files/directories that are "owned" by _THIS_ package. */
+    if (*N == '/') {
+    rpmfi fi = rpmteFI(p, RPMTAG_BASENAMES);
+    int bingo = 0;
+
+    fi = rpmfiInit(fi, 0);
+    while (rpmfiNext(fi) >= 0) {
+        const char * fn = rpmfiFN(fi);
+        if (strcmp(N, fn))
+        continue;
+        bingo = 1;
+        break;
+    }
+    if (bingo)
+        return 0;
+    }
+
     pkgKey = RPMAL_NOMATCH;
     key = rpmalSatisfiesDepend(al, requires, &pkgKey);
 
