summaryrefslogtreecommitdiff
path: root/package/rpm/rpm-5.2.0_parentdir-vs-requires.patch
blob: 309ab254e06633306f9944ce26b2f8f8615fe728 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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);