rpm  4.8.1
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_debug;
21 
24 extern int _rpmds_nopromote;
25 
29 typedef enum rpmsenseFlags_e {
31  RPMSENSE_LESS = (1 << 1),
32  RPMSENSE_GREATER = (1 << 2),
33  RPMSENSE_EQUAL = (1 << 3),
34  RPMSENSE_PROVIDES = (1 << 4), /* only used internally by builds */
35  RPMSENSE_CONFLICTS = (1 << 5), /* only used internally by builds */
36  RPMSENSE_PREREQ = (1 << 6), /* legacy prereq dependency */
37  RPMSENSE_OBSOLETES = (1 << 7), /* only used internally by builds */
38  RPMSENSE_INTERP = (1 << 8),
39  RPMSENSE_SCRIPT_PRE = (1 << 9),
40  RPMSENSE_SCRIPT_POST = (1 << 10),
41  RPMSENSE_SCRIPT_PREUN = (1 << 11),
42  RPMSENSE_SCRIPT_POSTUN = (1 << 12),
43  RPMSENSE_SCRIPT_VERIFY = (1 << 13),
44  RPMSENSE_FIND_REQUIRES = (1 << 14),
45  RPMSENSE_FIND_PROVIDES = (1 << 15),
47  RPMSENSE_TRIGGERIN = (1 << 16),
48  RPMSENSE_TRIGGERUN = (1 << 17),
49  RPMSENSE_TRIGGERPOSTUN = (1 << 18),
50  RPMSENSE_MISSINGOK = (1 << 19),
51  RPMSENSE_SCRIPT_PREP = (1 << 20),
52  RPMSENSE_SCRIPT_BUILD = (1 << 21),
54  RPMSENSE_SCRIPT_CLEAN = (1 << 23),
55  RPMSENSE_RPMLIB = (1 << 24),
56  RPMSENSE_TRIGGERPREIN = (1 << 25),
57  RPMSENSE_KEYRING = (1 << 26),
58  RPMSENSE_PATCHES = (1 << 27),
59  RPMSENSE_CONFIG = (1 << 28)
61 
62 #define RPMSENSE_SENSEMASK 15 /* Mask to get senses, ie serial, */
63  /* less, greater, equal. */
64 
65 #define RPMSENSE_TRIGGER \
66  (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
67 
68 #define _ALL_REQUIRES_MASK (\
69  RPMSENSE_INTERP | \
70  RPMSENSE_SCRIPT_PRE | \
71  RPMSENSE_SCRIPT_POST | \
72  RPMSENSE_SCRIPT_PREUN | \
73  RPMSENSE_SCRIPT_POSTUN | \
74  RPMSENSE_SCRIPT_VERIFY | \
75  RPMSENSE_FIND_REQUIRES | \
76  RPMSENSE_SCRIPT_PREP | \
77  RPMSENSE_SCRIPT_BUILD | \
78  RPMSENSE_SCRIPT_INSTALL | \
79  RPMSENSE_SCRIPT_CLEAN | \
80  RPMSENSE_RPMLIB | \
81  RPMSENSE_KEYRING | \
82  RPMSENSE_PREREQ)
83 
84 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
85 #define _INSTALL_ONLY_MASK \
86  _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING)
87 #define _ERASE_ONLY_MASK \
88  _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
89 
90 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
91 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
92 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
93 
100 rpmds rpmdsUnlink (rpmds ds, const char * msg);
107 rpmds rpmdsLink (rpmds ds, const char * msg);
108 
114 rpmds rpmdsFree(rpmds ds);
122 rpmds rpmdsNew(Header h, rpmTag tagN, int flags);
123 
130 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
131 
139 rpmds rpmdsThis(Header h, rpmTag tagN, rpmsenseFlags Flags);
140 
149 rpmds rpmdsSingle(rpmTag tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
150 
156 int rpmdsCount(const rpmds ds);
157 
163 int rpmdsIx(const rpmds ds);
164 
171 int rpmdsSetIx(rpmds ds, int ix);
172 
178 const char * rpmdsDNEVR(const rpmds ds);
179 
185 const char * rpmdsN(const rpmds ds);
186 
192 const char * rpmdsEVR(const rpmds ds);
193 
199 rpmsenseFlags rpmdsFlags(const rpmds ds);
200 
206 rpmTag rpmdsTagN(const rpmds ds);
207 
213 time_t rpmdsBT(const rpmds ds);
214 
221 time_t rpmdsSetBT(const rpmds ds, time_t BT);
222 
236 int rpmdsNoPromote(const rpmds ds);
237 
244 int rpmdsSetNoPromote(rpmds ds, int nopromote);
245 
251 rpm_color_t rpmdsColor(const rpmds ds);
252 
259 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
260 
266 int32_t rpmdsRefs(const rpmds ds);
267 
274 int32_t rpmdsSetRefs(const rpmds ds, int32_t refs);
275 
282 /* FIX: rpmMessage annotation is a lie */
283 void rpmdsNotify(rpmds ds, const char * where, int rc);
284 
290 int rpmdsNext(rpmds ds);
291 
297 rpmds rpmdsInit(rpmds ds);
298 
305 int rpmdsFind(rpmds ds, const rpmds ods);
306 
313 int rpmdsMerge(rpmds * dsp, rpmds ods);
314 
323 int rpmdsSearch(rpmds ds, rpmds ods);
324 
325 
332 int rpmdsCompare(const rpmds A, const rpmds B);
333 
342 void rpmdsProblem(rpmps ps, const char * pkgNEVR, const rpmds ds,
343  const fnpyKey * suggestedKeys,
344  int adding);
345 
353 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
354 
362 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
363 
370 int rpmdsRpmlib(rpmds * dsp, void * tblp);
371 
372 #ifdef __cplusplus
373 }
374 #endif
375 
376 #endif /* H_RPMDS */
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
Return new formatted dependency string.
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, rpmTag tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
int32_t rpmdsSetRefs(const rpmds ds, int32_t refs)
Return current dependency color.
time_t rpmdsSetBT(const rpmds ds, time_t BT)
Set dependency build time.
int rpmdsSetIx(rpmds ds, int ix)
Set dependency set index.
enum rpmTag_e rpmTag
Tags identify data in package headers.
int rpmdsIx(const rpmds ds)
Return dependency set index.
struct rpmps_s * rpmps
Transaction problems found while processing a transaction set/.
Definition: rpmps.h:42
struct rpmds_s * rpmds
Definition: rpmtypes.h:61
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
rpmds rpmdsUnlink(rpmds ds, const char *msg)
Unreference a dependency set instance.
int32_t rpmdsRefs(const rpmds ds)
Return current dependency file refs.
int rpmdsFind(rpmds ds, const rpmds ods)
Find a dependency set element using binary search.
int _rpmds_debug
int rpmdsCount(const rpmds ds)
Return dependency set count.
rpmTag rpmdsTagN(const rpmds ds)
Return current dependency type.
int rpmdsSearch(rpmds ds, rpmds ods)
Search a sorted dependency set for an element that overlaps.
rpmds rpmdsNew(Header h, rpmTag tagN, int flags)
Create and load a dependency set.
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.
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
int _rpmds_nopromote
int rpmdsRpmlib(rpmds *dsp, void *tblp)
Load rpmlib provides into a dependency set.
rpmds rpmdsLink(rpmds ds, const char *msg)
Reference a dependency set instance.
rpmsenseFlags_e
Dependency Attributes.
Definition: rpmds.h:29
uint32_t rpm_color_t
Definition: rpmtypes.h:36
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.
time_t rpmdsBT(const rpmds ds)
Return dependency build time.
rpmds rpmdsSingle(rpmTag tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
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.
const void * fnpyKey
Definition: rpmtypes.h:65
void rpmdsProblem(rpmps ps, const char *pkgNEVR, const rpmds ds, const fnpyKey *suggestedKeys, int adding)
Report a Requires: or Conflicts: dependency problem.
const char * rpmdsN(const rpmds ds)
Return current dependency name.
enum rpmsenseFlags_e rpmsenseFlags
Dependency Attributes.
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.