rpm  4.12.0.2
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 
88 
89 
97 
103 rpmds rpmdsLink(rpmds ds);
104 
110 rpmds rpmdsFree(rpmds ds);
111 
119 rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
120 
127 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
128 
136 rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
137 
146 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
147 
154 
161 int rpmdsPutToHeader(rpmds ds, Header h);
162 
168 int rpmdsCount(const rpmds ds);
169 
175 int rpmdsIx(const rpmds ds);
176 
183 int rpmdsSetIx(rpmds ds, int ix);
184 
190 const char * rpmdsDNEVR(const rpmds ds);
191 
197 char rpmdsD(const rpmds ds);
198 
204 rpmTagVal rpmdsDToTagN(char deptype);
205 
211 const char * rpmdsN(const rpmds ds);
212 
218 const char * rpmdsEVR(const rpmds ds);
219 
225 int rpmdsTi(const rpmds ds);
226 
232 rpmsenseFlags rpmdsFlags(const rpmds ds);
233 
239 rpmTagVal rpmdsTagN(const rpmds ds);
240 
246 rpmTagVal rpmdsTagEVR(const rpmds ds);
247 
253 rpmTagVal rpmdsTagF(const rpmds ds);
254 
260 rpmTagVal rpmdsTagTi(const rpmds ds);
261 
268 unsigned int rpmdsInstance(rpmds ds);
269 
283 int rpmdsNoPromote(const rpmds ds);
284 
291 int rpmdsSetNoPromote(rpmds ds, int nopromote);
292 
298 rpm_color_t rpmdsColor(const rpmds ds);
299 
306 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
307 
314 /* FIX: rpmMessage annotation is a lie */
315 void rpmdsNotify(rpmds ds, const char * where, int rc);
316 
322 int rpmdsNext(rpmds ds);
323 
329 rpmds rpmdsInit(rpmds ds);
330 
337 int rpmdsFind(rpmds ds, const rpmds ods);
338 
345 int rpmdsMerge(rpmds * dsp, rpmds ods);
346 
355 int rpmdsSearch(rpmds ds, rpmds ods);
356 
363 int rpmdsCompare(const rpmds A, const rpmds B);
364 
372 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
373 
382 int rpmdsMatchesDep (const Header h, int ix, const rpmds req, int nopromote);
383 
391 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
392 
399 int rpmdsRpmlib(rpmds * dsp, const void * tblp);
400 
409 rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags);
410 
420  Header h, rpmTagVal tagN, rpmsenseFlags Flags);
421 
432  const char * N, const char * EVR, rpmsenseFlags Flags);
433 
445  const char * N, const char * EVR,
446  rpmsenseFlags Flags, int triggerIndex);
447 
455 int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
456 
457 #ifdef __cplusplus
458 }
459 #endif
460 
461 #endif /* H_RPMDS */
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
Return new formatted dependency string.
rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
rpmTagVal rpmdsTagF(const rpmds ds)
Return current dependency type.
int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
rpmds rpmdsInit(rpmds ds)
Initialize dependency set iterator.
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package name-version-release from header with a single dependency.
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
int rpmdsSetIx(rpmds ds, int ix)
Set dependency set index.
rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
int rpmdsPutToHeader(rpmds ds, Header h)
Write content of the dependency set to the header.
rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
int rpmdsIx(const rpmds ds)
Return dependency set index.
rpmTagVal rpmdsTagEVR(const rpmds ds)
Return current dependency type.
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
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
int rpmdsRpmlib(rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
int rpmdsFind(rpmds ds, const rpmds ods)
Find a dependency set element using binary search.
int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
int rpmdsTi(const rpmds ds)
Return current dependency triggerindex.
int rpmdsCount(const rpmds ds)
Return dependency set count.
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:83
int rpmdsSearch(rpmds ds, rpmds ods)
Search a sorted dependency set for an element that overlaps.
int rpmdsCompare(const rpmds A, const rpmds B)
Compare two versioned dependency ranges, looking for overlap.
int rpmdsNoPromote(const rpmds ds)
Return current "Don&#39;t promote Epoch:" flag.
rpm_color_t rpmdsColor(const rpmds ds)
Return current dependency color.
rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags, int triggerIndex)
Create, load and initialize a trigger dependency set of size 1.
uint32_t rpmFlags
Definition: rpmtypes.h:42
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
rpmTagVal rpmdsDToTagN(char deptype)
Return matching tagN for one char dependency type description.
int _rpmds_nopromote
rpmds rpmdsLink(rpmds ds)
Reference a dependency set instance.
rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
rpmsenseFlags_e
Dependency Attributes.
Definition: rpmds.h:25
uint32_t rpm_color_t
Definition: rpmtypes.h:38
char rpmdsD(const rpmds ds)
Return one char indicating the type of the dependency.
rpmds rpmdsCurrent(rpmds ds)
Return a new dependency set of size 1 from the current iteration index.
rpmsenseFlags rpmdsFlags(const rpmds ds)
Return current dependency flags.
int rpmdsSetNoPromote(rpmds ds, int nopromote)
Set "Don&#39;t promote Epoch:" flag.
const char * rpmdsEVR(const rpmds ds)
Return current dependency epoch-version-release.
int rpmdsMerge(rpmds *dsp, rpmds ods)
Merge a dependency set maintaining (N,EVR,Flags) sorted order.
const char * rpmdsDNEVR(const rpmds ds)
Return current formatted dependency string.
rpmFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmFlags Flags)
Return only those flags allowed for given type of dependencies.
void rpmdsNotify(rpmds ds, const char *where, int rc)
Notify of results of dependency match.
int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
rpmTagVal rpmdsTagN(const rpmds ds)
Return current dependency type.
unsigned int rpmdsInstance(rpmds ds)
Return dependency header instance, ie whether the dependency comes from an installed header or not...
rpmTagVal rpmdsTagTi(const rpmds ds)
Return current dependency type.
rpmFlags rpmsenseFlags
Definition: rpmds.h:55
const char * rpmdsN(const rpmds ds)
Return current dependency name.
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
Return current dependency color.