2 * \file build/reqprov.c
3 * Add dependency tags to package header(s).
8 #include <rpm/header.h>
9 #include <rpm/rpmstring.h>
10 #include <rpm/rpmlog.h>
11 #include "build/rpmbuild_internal.h"
14 int addReqProv(Package pkg, rpmTagVal tagN,
15 const char * N, const char * EVR, rpmsenseFlags Flags,
18 rpmds newds, *dsp = NULL;
20 dsp = packageDependencies(pkg, tagN);
22 /* rpmlib() dependency sanity: only requires permitted, ensure sense bit */
23 if (rstreqn(N, "rpmlib(", sizeof("rpmlib(")-1)) {
24 if (tagN != RPMTAG_REQUIRENAME) return 1;
25 Flags |= RPMSENSE_RPMLIB;
28 newds = rpmdsSinglePoolTix(pkg->pool, tagN, N, EVR,
29 rpmSanitizeDSFlags(tagN, Flags), index);
31 rpmdsMerge(dsp, newds);
37 rpmRC addReqProvPkg(void *cbdata, rpmTagVal tagN,
38 const char * N, const char *EVR, rpmsenseFlags Flags,
42 return addReqProv(pkg, tagN, N, EVR, Flags, index) ? RPMRC_FAIL : RPMRC_OK;
45 int rpmlibNeedsFeature(Package pkg, const char * feature, const char * featureEVR)
50 rasprintf(&reqname, "rpmlib(%s)", feature);
52 res = addReqProv(pkg, RPMTAG_REQUIRENAME, reqname, featureEVR,
53 RPMSENSE_RPMLIB|(RPMSENSE_LESS|RPMSENSE_EQUAL), 0);