10 #define _RPMEVR_INTERNAL 31 if (Flags & RPMSENSE_PROVIDES) {
35 extra = Flags & RPMSENSE_FIND_PROVIDES;
36 }
else if (Flags & RPMSENSE_OBSOLETES) {
40 }
else if (Flags & RPMSENSE_CONFLICTS) {
44 }
else if (Flags & RPMSENSE_TRIGGER) {
49 extra = Flags & RPMSENSE_TRIGGER;
51 #if defined(RPM_VENDOR_MANDRIVA) 52 if (!strcmp(N,
"/bin/sh") || !strcmp(N,
"/sbin/ldconfig")) {
53 rpmlog(
RPMLOG_DEBUG,
"%s will be satisfied by glibc or it's dependencies, won't add dependency to package\n", N);
60 extra = Flags & _ALL_REQUIRES_MASK;
67 #if defined(RPM_VENDOR_MANDRIVA) 75 NEVR =
headerSprintf(h,
"%{NAME}-%|EPOCH?{%{EPOCH}:}|%{VERSION}-%{RELEASE}", NULL, NULL, NULL);
76 duplicate = !strncmp(NEVR, N, len) && !strcmp(NEVR+len+1, EVR);
91 const char ** versions = NULL;
99 versions = he->
p.
argv;
112 if (strcmp(names[len], N))
115 #if defined(RPM_VENDOR_MANDRIVA) 120 if (Flags & RPMSENSE_TRIGGER)
123 if (flagtag && versions != NULL) {
124 int overlap = 0, res = 0;
125 rpmds old =
rpmdsSingle(flagtag, names[len], versions[len] ? versions[len] :
"", flags[len]);
131 #define RPMSENSE_SCRIPTS (RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_SCRIPT_VERIFY) 135 !(((Flags & RPMSENSE_GREATER) && (flags[len] & RPMSENSE_LESS)) ||
136 ((flags[len] & RPMSENSE_GREATER) && (Flags & RPMSENSE_LESS))) &&
138 !(((Flags & RPMSENSE_SCRIPTS) && !(flags[len] & RPMSENSE_SCRIPTS)) ||
139 ((flags[len] & RPMSENSE_SCRIPTS) && !(Flags & RPMSENSE_SCRIPTS))))
141 #undef RPMSENSE_SCRIPTS 147 if (!(Flags & RPMSENSE_MISSINGOK) || !(flags[len] & RPMSENSE_MISSINGOK)) {
148 flags[len] &= ~RPMSENSE_MISSINGOK;
149 Flags &= ~RPMSENSE_MISSINGOK;
153 newflags = ((flags[len]| Flags) & _ALL_REQUIRES_MASK);
158 rEVR->Flags = flags[len];
166 he->
tag = versiontag;
168 he->
p.
argv = versions;
173 else if (flags[len] != Flags) {
179 flags[len] |= newflags;
196 if (flagtag && versions != NULL &&
197 (strcmp(versions[len], EVR) || (
rpmsenseFlags)flags[len] != Flags))
201 if (indextag && indexes != NULL && indexes[len] != index)
210 names =
_free(names);
211 versions =
_free(versions);
212 flags =
_free(flags);
213 indexes =
_free(indexes);
229 he->
tag = versiontag;
239 he->
p.
ui32p = (
void *) &Flags;
260 char * reqname =
alloca(
sizeof(
"rpmlib()") + strlen(feature));
rpmds rpmdsSingle(rpmTag tagN, const char *N, const char *EVR, evrFlags Flags)
Create, load and initialize a dependency set of size 1.
#define RPMSENSE_SENSEMASK
int addReqProv(Spec spec, Header h, rpmTag tagN, const char *N, const char *EVR, rpmsenseFlags Flags, rpmuint32_t index)
Add dependency to header, filtering duplicates.
int rpmEVRparse(const char *evrstr, EVR_t evr)
Split EVR string into epoch, version, and release components.
static void rpmlog(int code, const char *fmt,...)
const char * rpmdsDNEVR(const rpmds ds)
Return current formatted dependency string.
struct rpmds_s * rpmds
Dependency tag sets from a header, so that a header can be discarded early.
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
char * headerSprintf(Header h, const char *fmt, headerTagTableEntry tags, headerSprintfExtension exts, errmsg_t *errmsg)
Return formatted output string from header tags.
int rpmEVRcompare(const EVR_t a, const EVR_t b)
Compare EVR containers for equality.
Yet Another syslog(3) API clone.
int rpmdsCompare(const rpmds A, const rpmds B)
Compare two versioned dependency ranges, looking for overlap.
enum evrFlags_e rpmsenseFlags
Structure(s) used for dependency tag sets.
The structure used to store values parsed from a spec file.
EVR_t rpmEVRnew(uint32_t Flags, int initialize)
Create a new EVR container.
EVR_t rpmEVRfree(EVR_t evr)
Destroy an EVR container.
This is the only module users of librpmbuild should need to include.
char * stpcpy(char *dest, const char *src)
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
int rpmlibNeedsFeature(Header h, const char *feature, const char *featureEVR)
Add rpmlib feature dependency.