rpm  4.11.90
rpmds.h
Go to the documentation of this file.
1 #ifndef H_RPMDS
2 #define H_RPMDS
3 
9 #include <time.h>
10 
11 #include <rpm/rpmtypes.h>
12 #include <rpm/rpmps.h>
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
20 extern int _rpmds_nopromote;
21 
27  RPMSENSE_LESS = (1 << 1),
28  RPMSENSE_GREATER = (1 << 2),
29  RPMSENSE_EQUAL = (1 << 3),
30  /* bit 4 unused */
31  RPMSENSE_POSTTRANS = (1 << 5),
32  RPMSENSE_PREREQ = (1 << 6), /* legacy prereq dependency */
33  RPMSENSE_PRETRANS = (1 << 7),
34  RPMSENSE_INTERP = (1 << 8),
35  RPMSENSE_SCRIPT_PRE = (1 << 9),
36  RPMSENSE_SCRIPT_POST = (1 << 10),
37  RPMSENSE_SCRIPT_PREUN = (1 << 11),
38  RPMSENSE_SCRIPT_POSTUN = (1 << 12),
39  RPMSENSE_SCRIPT_VERIFY = (1 << 13),
40  RPMSENSE_FIND_REQUIRES = (1 << 14),
41  RPMSENSE_FIND_PROVIDES = (1 << 15),
43  RPMSENSE_TRIGGERIN = (1 << 16),
44  RPMSENSE_TRIGGERUN = (1 << 17),
45  RPMSENSE_TRIGGERPOSTUN = (1 << 18),
46  RPMSENSE_MISSINGOK = (1 << 19),
47  /* bits 20-23 unused */
48  RPMSENSE_RPMLIB = (1 << 24),
49  RPMSENSE_TRIGGERPREIN = (1 << 25),
50  RPMSENSE_KEYRING = (1 << 26),
51  /* bit 27 unused */
52  RPMSENSE_CONFIG = (1 << 28)
53 };
54 
56 
57 #define RPMSENSE_SENSEMASK 15 /* Mask to get senses, ie serial, */
58  /* less, greater, equal. */
59 
60 #define RPMSENSE_TRIGGER \
61  (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
62 
63 #define _ALL_REQUIRES_MASK (\
64  RPMSENSE_INTERP | \
65  RPMSENSE_SCRIPT_PRE | \
66  RPMSENSE_SCRIPT_POST | \
67  RPMSENSE_SCRIPT_PREUN | \
68  RPMSENSE_SCRIPT_POSTUN | \
69  RPMSENSE_SCRIPT_VERIFY | \
70  RPMSENSE_FIND_REQUIRES | \
71  RPMSENSE_RPMLIB | \
72  RPMSENSE_KEYRING | \
73  RPMSENSE_PRETRANS | \
74  RPMSENSE_POSTTRANS | \
75  RPMSENSE_PREREQ | \
76  RPMSENSE_MISSINGOK)
77 
78 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
79 #define _INSTALL_ONLY_MASK \
80  _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS)
81 #define _ERASE_ONLY_MASK \
82  _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
83 
84 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
85 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
86 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
87 
94 
100 rpmds rpmdsFree(rpmds ds);
101 
109 rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
110 
117 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
118 
126 rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
127 
136 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
137 
144 
151 int rpmdsPutToHeader(rpmds ds, Header h);
152 
158 int rpmdsCount(const rpmds ds);
159 
165 int rpmdsIx(const rpmds ds);
166 
173 int rpmdsSetIx(rpmds ds, int ix);
174 
180 const char * rpmdsDNEVR(const rpmds ds);
181 
187 const char * rpmdsN(const rpmds ds);
188 
194 const char * rpmdsEVR(const rpmds ds);
195 
201 rpmsenseFlags rpmdsFlags(const rpmds ds);
202 
208 rpmTagVal rpmdsTagN(const rpmds ds);
209 
215 rpmTagVal rpmdsTagEVR(const rpmds ds);
216 
222 rpmTagVal rpmdsTagF(const rpmds ds);
223 
230 unsigned int rpmdsInstance(rpmds ds);
231 
245 int rpmdsNoPromote(const rpmds ds);
246 
253 int rpmdsSetNoPromote(rpmds ds, int nopromote);
254 
260 rpm_color_t rpmdsColor(const rpmds ds);
261 
268 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
269 
276 /* FIX: rpmMessage annotation is a lie */
277 void rpmdsNotify(rpmds ds, const char * where, int rc);
278 
284 int rpmdsNext(rpmds ds);
285 
291 rpmds rpmdsInit(rpmds ds);
292 
299 int rpmdsFind(rpmds ds, const rpmds ods);
300 
307 int rpmdsMerge(rpmds * dsp, rpmds ods);
308 
317 int rpmdsSearch(rpmds ds, rpmds ods);
318 
325 int rpmdsCompare(const rpmds A, const rpmds B);
326 
334 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
335 
344 int rpmdsMatchesDep (const Header h, int ix, const rpmds req, int nopromote);
345 
353 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
354 
361 int rpmdsRpmlib(rpmds * dsp, const void * tblp);
362 
371 rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags);
372 
382  Header h, rpmTagVal tagN, rpmsenseFlags Flags);
383 
394  const char * N, const char * EVR, rpmsenseFlags Flags);
395 
403 int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
404 
405 #ifdef __cplusplus
406 }
407 #endif
408 
409 #endif /* H_RPMDS */
rpmds rpmdsCurrent(rpmds ds)
Return a new dependency set of size 1 from the current iteration index.
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
rpmTagVal rpmdsTagN(const rpmds ds)
Return current dependency type.
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
Return new formatted dependency string.
int rpmdsFind(rpmds ds, const rpmds ods)
Find a dependency set element using binary search.
int rpmdsMerge(rpmds *dsp, rpmds ods)
Merge a dependency set maintaining (N,EVR,Flags) sorted order.
int rpmdsIx(const rpmds ds)
Return dependency set index.
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package name-version-release from header with a single dependency.
rpmds rpmdsLink(rpmds ds)
Reference a dependency set instance.
int rpmdsRpmlib(rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
rpmsenseFlags rpmdsFlags(const rpmds ds)
Return current dependency flags.
rpmsenseFlags_e
Dependency Attributes.
Definition: rpmds.h:25
void rpmdsNotify(rpmds ds, const char *where, int rc)
Notify of results of dependency match.
int rpmdsSetIx(rpmds ds, int ix)
Set dependency set index.
uint32_t rpmFlags
Definition: rpmtypes.h:42
rpmTagVal rpmdsTagEVR(const rpmds ds)
Return current dependency type.
const char * rpmdsN(const rpmds ds)
Return current dependency name.
int rpmdsSearch(rpmds ds, rpmds ods)
Search a sorted dependency set for an element that overlaps.
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:83
int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
int rpmdsNoPromote(const rpmds ds)
Return current "Don't promote Epoch:" flag.
uint32_t rpm_color_t
Definition: rpmtypes.h:38
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
int rpmdsCount(const rpmds ds)
Return dependency set count.
rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
rpmds rpmdsSingle(rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
struct rpmds_s * rpmds
Definition: rpmtypes.h:65
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
int _rpmds_nopromote
rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
rpm_color_t rpmdsColor(const rpmds ds)
Return current dependency color.
int rpmdsPutToHeader(rpmds ds, Header h)
Write content of the dependency set to the header.
int rpmdsCompare(const rpmds A, const rpmds B)
Compare two versioned dependency ranges, looking for overlap.
rpmTagVal rpmdsTagF(const rpmds ds)
Return current dependency type.
rpmds rpmdsInit(rpmds ds)
Initialize dependency set iterator.
const char * rpmdsEVR(const rpmds ds)
Return current dependency epoch-version-release.
const char * rpmdsDNEVR(const rpmds ds)
Return current formatted dependency string.
unsigned int rpmdsInstance(rpmds ds)
Return dependency header instance, ie whether the dependency comes from an installed header or not...
rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
Return current dependency color.
rpmFlags rpmsenseFlags
Definition: rpmds.h:55
int rpmdsSetNoPromote(rpmds ds, int nopromote)
Set "Don't promote Epoch:" flag.