|
|
2ff057 |
/** \ingroup rpmbuild
|
|
|
2ff057 |
* \file build/reqprov.c
|
|
|
2ff057 |
* Add dependency tags to package header(s).
|
|
|
2ff057 |
*/
|
|
|
2ff057 |
|
|
|
2ff057 |
#include "system.h"
|
|
|
2ff057 |
|
|
|
2ff057 |
#include <rpm/header.h>
|
|
|
2ff057 |
#include <rpm/rpmstring.h>
|
|
|
2ff057 |
#include <rpm/rpmlog.h>
|
|
|
2ff057 |
#include "build/rpmbuild_internal.h"
|
|
|
2ff057 |
#include "debug.h"
|
|
|
2ff057 |
|
|
|
2ff057 |
int addReqProv(Package pkg, rpmTagVal tagN,
|
|
|
2ff057 |
const char * N, const char * EVR, rpmsenseFlags Flags,
|
|
|
2ff057 |
uint32_t index)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
rpmds newds, *dsp = NULL;
|
|
|
2ff057 |
|
|
|
2ff057 |
dsp = packageDependencies(pkg, tagN);
|
|
|
2ff057 |
|
|
|
2ff057 |
/* rpmlib() dependency sanity: only requires permitted, ensure sense bit */
|
|
|
2ff057 |
if (rstreqn(N, "rpmlib(", sizeof("rpmlib(")-1)) {
|
|
|
2ff057 |
if (tagN != RPMTAG_REQUIRENAME) return 1;
|
|
|
2ff057 |
Flags |= RPMSENSE_RPMLIB;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
newds = rpmdsSinglePoolTix(pkg->pool, tagN, N, EVR,
|
|
|
2ff057 |
rpmSanitizeDSFlags(tagN, Flags), index);
|
|
|
2ff057 |
|
|
|
2ff057 |
rpmdsMerge(dsp, newds);
|
|
|
2ff057 |
rpmdsFree(newds);
|
|
|
2ff057 |
|
|
|
2ff057 |
return 0;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
rpmRC addReqProvPkg(void *cbdata, rpmTagVal tagN,
|
|
|
2ff057 |
const char * N, const char *EVR, rpmsenseFlags Flags,
|
|
|
2ff057 |
int index)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
Package pkg = cbdata;
|
|
|
2ff057 |
return addReqProv(pkg, tagN, N, EVR, Flags, index) ? RPMRC_FAIL : RPMRC_OK;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
int rpmlibNeedsFeature(Package pkg, const char * feature, const char * featureEVR)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
char *reqname = NULL;
|
|
|
2ff057 |
int res;
|
|
|
2ff057 |
|
|
|
2ff057 |
rasprintf(&reqname, "rpmlib(%s)", feature);
|
|
|
2ff057 |
|
|
|
2ff057 |
res = addReqProv(pkg, RPMTAG_REQUIRENAME, reqname, featureEVR,
|
|
|
2ff057 |
RPMSENSE_RPMLIB|(RPMSENSE_LESS|RPMSENSE_EQUAL), 0);
|
|
|
2ff057 |
|
|
|
2ff057 |
free(reqname);
|
|
|
2ff057 |
|
|
|
2ff057 |
return res;
|
|
|
2ff057 |
}
|