rpm  4.16.1.2
rpmts.h
Go to the documentation of this file.
1 #ifndef H_RPMTS
2 #define H_RPMTS
3 
9 #include <sys/types.h>
10 
11 #include <rpm/rpmtypes.h>
12 #include <rpm/rpmte.h>
13 #include <rpm/rpmps.h>
14 #include <rpm/rpmsw.h>
15 #include <rpm/rpmpgp.h>
16 #include <rpm/rpmfi.h>
17 #include <rpm/rpmcallback.h>
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 extern int _rpmts_stats;
24 
30  RPMTRANS_FLAG_TEST = (1 << 0),
33  RPMTRANS_FLAG_JUSTDB = (1 << 3),
35  RPMTRANS_FLAG_NODOCS = (1 << 5),
39  RPMTRANS_FLAG_NOCAPS = (1 << 9),
40  /* bits 10-15 unused */
42  RPMTRANS_FLAG_NOPRE = (1 << 17),
43  RPMTRANS_FLAG_NOPOST = (1 << 18),
46  RPMTRANS_FLAG_NOPREUN = (1 << 21),
47  RPMTRANS_FLAG_NOPOSTUN = (1 << 22),
51  /* bit 26 unused */
52  RPMTRANS_FLAG_NOMD5 = (1 << 27),
54  /* bit 28 unused */
58 };
59 
61 
62 #define _noTransScripts \
63  ( RPMTRANS_FLAG_NOPRE | \
64  RPMTRANS_FLAG_NOPOST | \
65  RPMTRANS_FLAG_NOPREUN | \
66  RPMTRANS_FLAG_NOPOSTUN | \
67  RPMTRANS_FLAG_NOPRETRANS | \
68  RPMTRANS_FLAG_NOPOSTTRANS \
69  )
70 
71 #define _noTransTriggers \
72  ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
73  RPMTRANS_FLAG_NOTRIGGERIN | \
74  RPMTRANS_FLAG_NOTRIGGERUN | \
75  RPMTRANS_FLAG_NOTRIGGERPOSTUN \
76  )
77 
78 /* Avoid unnecessary breakage for stuff referring to these unused flags */
79 #define RPMTRANS_FLAG_NOPAYLOAD 0
80 #define RPMTRANS_FLAG_APPLYONLY 0
81 #define RPMTRANS_FLAG_KEEPOBSOLETE 0
82 #define RPMTRANS_FLAG_DIRSTASH 0
83 #define RPMTRANS_FLAG_REPACKAGE 0
84 #define RPMTRANS_FLAG_PKGCOMMIT 0
85 #define RPMTRANS_FLAG_PKGUNDO 0
86 #define RPMTRANS_FLAG_COMMIT 0
87 #define RPMTRANS_FLAG_UNDO 0
88 #define RPMTRANS_FLAG_REVERSE 0
89 #define RPMTRANS_FLAG_NOSUGGEST 0
90 #define RPMTRANS_FLAG_ADDINDEPS 0
91 
97  RPMVSF_NOHDRCHK = (1 << 0),
98  RPMVSF_NEEDPAYLOAD = (1 << 1),
99  /* bit(s) 2-7 unused */
102  RPMVSF_NODSAHEADER = (1 << 10),
103  RPMVSF_NORSAHEADER = (1 << 11),
104  /* bit(s) 12-15 unused */
105  RPMVSF_NOPAYLOAD = (1 << 16),
106  RPMVSF_NOMD5 = (1 << 17),
107  RPMVSF_NODSA = (1 << 18),
108  RPMVSF_NORSA = (1 << 19)
109  /* bit(s) 16-31 unused */
110 };
111 
113 
114 #define RPMVSF_MASK_NODIGESTS \
115  ( RPMVSF_NOSHA1HEADER | \
116  RPMVSF_NOSHA256HEADER | \
117  RPMVSF_NOPAYLOAD | \
118  RPMVSF_NOMD5 )
119 #define _RPMVSF_NODIGESTS RPMVSF_MASK_NODIGESTS
120 
121 #define RPMVSF_MASK_NOSIGNATURES \
122  ( RPMVSF_NODSAHEADER | \
123  RPMVSF_NORSAHEADER | \
124  RPMVSF_NODSA | \
125  RPMVSF_NORSA )
126 #define _RPMVSF_NOSIGNATURES RPMVSF_MASK_NOSIGNATURES
127 
128 #define RPMVSF_MASK_NOHEADER \
129  ( RPMVSF_NOSHA1HEADER | \
130  RPMVSF_NOSHA256HEADER | \
131  RPMVSF_NODSAHEADER | \
132  RPMVSF_NORSAHEADER )
133 #define _RPMVSF_NOHEADER RPMVSF_MASK_NOHEADER
134 
135 #define RPMVSF_MASK_NOPAYLOAD \
136  ( RPMVSF_NOMD5 | \
137  RPMVSF_NOPAYLOAD | \
138  RPMVSF_NODSA | \
139  RPMVSF_NORSA )
140 #define _RPMVSF_NOPAYLOAD RPMVSF_MASK_NOPAYLOAD
141 
142 enum {
144  RPMSIG_DIGEST_TYPE = (1 << 0),
146  RPMSIG_OTHER_TYPE = (1 << 2),
147 };
148 
149 #define RPMSIG_VERIFIABLE_TYPE (RPMSIG_DIGEST_TYPE|RPMSIG_SIGNATURE_TYPE)
150 #define RPMSIG_UNVERIFIED_TYPE (1 << 30)
151 
155 typedef enum rpmtsOpX_e {
174 } rpmtsOpX;
175 
177  RPMTXN_READ = (1 << 0),
178  RPMTXN_WRITE = (1 << 1),
179 };
181 
192 int rpmtsCheck(rpmts ts);
193 
210 int rpmtsOrder(rpmts ts);
211 
229 int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
230 
236 rpmts rpmtsLink (rpmts ts);
237 
243 int rpmtsCloseDB(rpmts ts);
244 
251 int rpmtsOpenDB(rpmts ts, int dbmode);
252 
260 int rpmtsInitDB(rpmts ts, int dbmode);
261 
267 int rpmtsGetDBMode(rpmts ts);
268 
276 int rpmtsSetDBMode(rpmts ts, int dbmode);
277 
283 int rpmtsRebuildDB(rpmts ts);
284 
290 int rpmtsVerifyDB(rpmts ts);
291 
301  const void * keyp, size_t keylen);
302 
311 
320 rpmRC rpmtsImportPubkey(rpmts ts, const unsigned char * pkt, size_t pktlen);
321 
328 rpmKeyring rpmtsGetKeyring(rpmts ts, int autoload);
329 
338 int rpmtsSetKeyring(rpmts ts, rpmKeyring keyring);
339 
348  int (*solve) (rpmts ts, rpmds ds, const void * data),
349  const void * solveData);
350 
357 
362 void rpmtsCleanProblems(rpmts ts);
363 
368 void rpmtsClean(rpmts ts);
369 
374 void rpmtsEmpty(rpmts ts);
375 
381 rpmts rpmtsFree(rpmts ts);
382 
388 rpmVSFlags rpmtsVSFlags(rpmts ts);
389 
396 rpmVSFlags rpmtsSetVSFlags(rpmts ts, rpmVSFlags vsflags);
397 
403 rpmVSFlags rpmtsVfyFlags(rpmts ts);
404 
411 rpmVSFlags rpmtsSetVfyFlags(rpmts ts, rpmVSFlags vfyflags);
412 
418 int rpmtsVfyLevel(rpmts ts);
419 
426 int rpmtsSetVfyLevel(rpmts ts, int vfylevel);
427 
433 const char * rpmtsRootDir(rpmts ts);
434 
441 int rpmtsSetRootDir(rpmts ts, const char * rootDir);
442 
449 
455 void rpmtsSetScriptFd(rpmts ts, FD_t scriptFd);
456 
463 
471 
478 
488 void * rpmtsNotify(rpmts ts, rpmte te,
489  rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total);
490 
496 int rpmtsNElements(rpmts ts);
497 
504 rpmte rpmtsElement(rpmts ts, int ix);
505 
512 
518 rpmtransFlags rpmtsFlags(rpmts ts);
519 
526 rpmtransFlags rpmtsSetFlags(rpmts ts, rpmtransFlags transFlags);
527 
534 
541 
549 
557 
564 rpmop rpmtsOp(rpmts ts, rpmtsOpX opx);
565 
572 
585  rpmCallbackFunction notify,
586  rpmCallbackData notifyData);
587 
592 rpmts rpmtsCreate(void);
593 
608  const fnpyKey key, int upgrade,
609  rpmRelocation * relocs);
610 
619 int rpmtsAddReinstallElement(rpmts ts, Header h, const fnpyKey key);
620 
628 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset);
629 
636 rpmtxn rpmtxnBegin(rpmts ts, rpmtxnFlags flags);
637 
643 rpmtxn rpmtxnEnd(rpmtxn txn);
644 
651 
658 
666 
667 #ifdef __cplusplus
668 }
669 #endif
670 
671 
672 #endif /* H_RPMTS */
int rpmtsSetNotifyCallback(rpmts ts, rpmCallbackFunction notify, rpmCallbackData notifyData)
Set transaction notify callback function and argument.
enum rpmCallbackType_e rpmCallbackType
Bit(s) to identify progress callbacks.
rpmRC rpmtsImportPubkey(rpmts ts, const unsigned char *pkt, size_t pktlen)
Import public key packet(s).
struct rpmdbMatchIterator_s * rpmdbMatchIterator
Definition: rpmtypes.h:69
rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
Retrieve operation timestamp from a transaction set.
rpmprobFilterFlags rpmtsFilterFlags(rpmts ts)
Get problem ignore bit mask, i.e.
rpmtxn rpmtxnEnd(rpmtxn txn)
Destroy transaction (lock) handle.
struct rpmps_s * rpmps
Definition: rpmtypes.h:71
struct rpmtxn_s * rpmtxn
Definition: rpmtypes.h:72
rpm_color_t rpmtsSetColor(rpmts ts, rpm_color_t color)
Set color bits of transaction set.
struct rpmtsi_s * rpmtsi
Definition: rpmtypes.h:70
rpmtransFlags rpmtsSetFlags(rpmts ts, rpmtransFlags transFlags)
Set transaction flags, i.e.
rpmdb rpmtsGetRdb(rpmts ts)
Get transaction set database handle.
rpmts rpmtsFree(rpmts ts)
Destroy transaction set, closing the database as well.
rpmPlugins rpmtsPlugins(rpmts ts)
Get the plugins associated with a transaction set.
rpmts rpmtsLink(rpmts ts)
Reference a transaction set instance.
rpmFlags rpmtxnFlags
Definition: rpmts.h:180
int rpmtsRebuildDB(rpmts ts)
Rebuild the database used by the transaction.
rpm_tid_t rpmtsGetTid(rpmts ts)
Get transaction id, i.e.
void rpmtsEmpty(rpmts ts)
Re-create an empty transaction set.
int rpmtsSetKeyring(rpmts ts, rpmKeyring keyring)
Set keyring to use for this transaction set.
void * rpmtsNotify(rpmts ts, rpmte te, rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total)
Perform transaction progress notify callback.
struct rpmts_s * rpmts
The main types involved in transaction manipulation.
Definition: rpmtypes.h:63
void * rpmCallbackData
Definition: rpmtypes.h:77
rpm_color_t rpmtsColor(rpmts ts)
Retrieve color bits of transaction set.
rpm_color_t rpmtsPrefColor(rpmts ts)
Retrieve preferred file color.
rpmFlags rpmprobFilterFlags
Definition: rpmprob.h:35
int rpmtsAddInstallElement(rpmts ts, Header h, const fnpyKey key, int upgrade, rpmRelocation *relocs)
Add package to be installed to transaction set.
We pass these around as an array with a sentinel.
Definition: rpmfiles.h:127
int rpmtsSetSolveCallback(rpmts ts, int(*solve)(rpmts ts, rpmds ds, const void *data), const void *solveData)
Set dependency solver callback.
FD_t rpmtsScriptFd(rpmts ts)
Get transaction script file handle, i.e.
rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmDbiTagVal rpmtag, const void *keyp, size_t keylen)
Return transaction database iterator.
struct rpmKeyring_s * rpmKeyring
Definition: rpmtypes.h:81
void *(* rpmCallbackFunction)(const void *h, const rpmCallbackType what, const rpm_loff_t amount, const rpm_loff_t total, fnpyKey key, rpmCallbackData data)
Function pointer type for rpmtsSetNotifyCallback() triggered by rpmtsNotify()
Definition: rpmcallback.h:61
rpmts rpmtsCreate(void)
Create an empty transaction set.
struct rpmPlugins_s * rpmPlugins
Definition: rpmtypes.h:87
int _rpmts_stats
uint32_t rpmFlags
Definition: rpmtypes.h:42
int rpmtsAddReinstallElement(rpmts ts, Header h, const fnpyKey key)
Add package to be reinstalled to transaction set.
int rpmtsInitDB(rpmts ts, int dbmode)
Initialize the database used by the transaction.
struct rpmdb_s * rpmdb
Definition: rpmtypes.h:68
rpmtransFlags_e
Bit(s) to control rpmtsRun() operation.
Definition: rpmts.h:28
enum rpmtsOpX_e rpmtsOpX
Indices for timestamps.
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:99
int rpmtsVerifyDB(rpmts ts)
Verify the database used by the transaction.
uint32_t rpm_color_t
Definition: rpmtypes.h:38
int rpmtsCloseDB(rpmts ts)
Close the database used by the transaction.
rpmVSFlags rpmtsSetVfyFlags(rpmts ts, rpmVSFlags vfyflags)
Set package verify flag(s).
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
rpmVSFlags_e
Bit(s) to control digest and signature verification.
Definition: rpmts.h:95
int rpmtsSetVfyLevel(rpmts ts, int vfylevel)
Set enforced package verify level.
const char * rpmtsRootDir(rpmts ts)
Get transaction rootDir, i.e.
const void * fnpyKey
Definition: rpmtypes.h:76
rpmFlags rpmVSFlags
Definition: rpmts.h:112
struct rpmds_s * rpmds
Definition: rpmtypes.h:65
int rpmtsOpenDB(rpmts ts, int dbmode)
Open the database used by the transaction.
rpmtsi rpmtsiFree(rpmtsi tsi)
Destroy transaction element iterator.
rpmte rpmtsElement(rpmts ts, int ix)
Return (ordered) transaction set element.
rpmte rpmtsiNext(rpmtsi tsi, rpmElementTypes types)
Return next transaction element of type.
int rpmtsSetDBMode(rpmts ts, int dbmode)
Set the transaction database mode.
rpmtxnFlags_e
Definition: rpmts.h:176
struct rpmte_s * rpmte
Definition: rpmtypes.h:64
Cumulative statistics for an operation.
Definition: rpmsw.h:42
rpmRC rpmtsImportHeader(rpmtxn txn, Header h, rpmFlags flags)
Import a header into the rpmdb.
rpmVSFlags rpmtsSetVSFlags(rpmts ts, rpmVSFlags vsflags)
Set verify signatures flag(s).
rpmKeyring rpmtsGetKeyring(rpmts ts, int autoload)
Retrieve handle for keyring used for this transaction set.
uint32_t rpm_tid_t
Definition: rpmtypes.h:40
int rpmtsOrder(rpmts ts)
Determine package order in a transaction set according to dependencies.
void rpmtsClean(rpmts ts)
Free memory needed only for dependency checks and ordering.
rpm_tag_t rpmDbiTagVal
Definition: rpmtypes.h:31
int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset)
Add package to be erased to transaction set.
int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
Process all package elements in a transaction set.
int rpmtsGetDBMode(rpmts ts)
Return the transaction database mode.
int rpmtsNElements(rpmts ts)
Return number of (ordered) transaction set elements.
rpmtransFlags rpmtsFlags(rpmts ts)
Get transaction flags, i.e.
rpmVSFlags rpmtsVfyFlags(rpmts ts)
Get package verify flag(s).
rpmFlags rpmElementTypes
Definition: rpmte.h:25
rpmVSFlags rpmtsVSFlags(rpmts ts)
Get verify signatures flag(s).
rpm_color_t rpmtsSetPrefColor(rpmts ts, rpm_color_t color)
Set preferred file color.
rpmFlags rpmtransFlags
Definition: rpmts.h:60
int rpmtsSetRootDir(rpmts ts, const char *rootDir)
Set transaction rootDir, i.e.
int rpmtsVfyLevel(rpmts ts)
Get enforced package verify level.
void rpmtsSetScriptFd(rpmts ts, FD_t scriptFd)
Set transaction script file handle, i.e.
rpmtsOpX_e
Indices for timestamps.
Definition: rpmts.h:155
int rpmtsCheck(rpmts ts)
Perform dependency resolution on the transaction set.
uint64_t rpm_loff_t
Definition: rpmtypes.h:51
void rpmtsCleanProblems(rpmts ts)
Clean current transaction problem set.
rpmtsi rpmtsiInit(rpmts ts)
Create transaction element iterator.
enum rpmRC_e rpmRC
Package read return codes.
rpmtxn rpmtxnBegin(rpmts ts, rpmtxnFlags flags)
Create a transaction (lock) handle.
rpmps rpmtsProblems(rpmts ts)
Return current transaction set problems.
rpm_tid_t rpmtsSetTid(rpmts ts, rpm_tid_t tid)
Set transaction id, i.e.