Ensure rpmlib() dependency sanity on build
authorPanu Matilainen <pmatilai@redhat.com>
Wed, 21 Oct 2009 09:23:50 +0000 (12:23 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Wed, 21 Oct 2009 09:23:50 +0000 (12:23 +0300)
- only requires on rpmlib(foo) are allowed
- make sure any rpmlib() foo dependencies have RPMSENSE_RPMLIB bit set,
  rpmdeps as external dependency generator can create rpmlib() dependencies
  without the bit set, and also any manual rpmlib() deps wont have it

build/reqprov.c
build/rpmbuild.h

index a57c6ae..9c48b11 100644 (file)
@@ -82,6 +82,12 @@ int addReqProv(rpmSpec spec, Header h, rpmTag tagN,
        extra = Flags & _ALL_REQUIRES_MASK;
     }
 
+    /* rpmlib() dependency sanity: only requires permitted, ensure sense bit */
+    if (rstreqn(N, "rpmlib(", sizeof("rpmlib(")-1)) {
+       if (nametag != RPMTAG_REQUIRENAME) return 1;
+       extra |= RPMSENSE_RPMLIB;
+    }
+
     Flags = (Flags & RPMSENSE_SENSEMASK) | extra;
 
     if (EVR == NULL)
index 6b3d765..c7d0da3 100644 (file)
@@ -343,7 +343,7 @@ Package  freePackage(Package pkg);
  * @param EVR          (e.g. Requires: foo < 0:1.2-3, "0:1.2-3")
  * @param Flags                (e.g. Requires: foo < 0:1.2-3, both "Requires:" and "<")
  * @param index                (0 always)
- * @return             0 always
+ * @return             0 on success, 1 on error
  */
 int addReqProv(rpmSpec spec, Header h, rpmTag tagN,
                const char * N, const char * EVR, rpmsenseFlags Flags,