rpm  4.8.1
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/rpmps.h>
13 #include <rpm/rpmsw.h>
14 #include <rpm/rpmpgp.h>
15 #include <rpm/rpmfi.h>
16 #include <rpm/rpmcallback.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
22 extern int _rpmts_debug;
23 extern int _rpmts_stats;
24 
28 typedef enum rpmtransFlags_e {
30  RPMTRANS_FLAG_TEST = (1 << 0),
33  RPMTRANS_FLAG_JUSTDB = (1 << 3),
35  RPMTRANS_FLAG_NODOCS = (1 << 5),
43  RPMTRANS_FLAG_PKGUNDO = (1 << 12),
44  RPMTRANS_FLAG_COMMIT = (1 << 13),
45  RPMTRANS_FLAG_UNDO = (1 << 14),
46  RPMTRANS_FLAG_REVERSE = (1 << 15),
47 
49  RPMTRANS_FLAG_NOPRE = (1 << 17),
50  RPMTRANS_FLAG_NOPOST = (1 << 18),
53  RPMTRANS_FLAG_NOPREUN = (1 << 21),
54  RPMTRANS_FLAG_NOPOSTUN = (1 << 22),
58 
59  RPMTRANS_FLAG_NOMD5 = (1 << 27),
66 
67 #define _noTransScripts \
68  ( RPMTRANS_FLAG_NOPRE | \
69  RPMTRANS_FLAG_NOPOST | \
70  RPMTRANS_FLAG_NOPREUN | \
71  RPMTRANS_FLAG_NOPOSTUN \
72  )
73 
74 #define _noTransTriggers \
75  ( RPMTRANS_FLAG_NOTRIGGERPREIN | \
76  RPMTRANS_FLAG_NOTRIGGERIN | \
77  RPMTRANS_FLAG_NOTRIGGERUN | \
78  RPMTRANS_FLAG_NOTRIGGERPOSTUN \
79  )
80 
84 typedef enum rpmVSFlags_e {
86  RPMVSF_NOHDRCHK = (1 << 0),
87  RPMVSF_NEEDPAYLOAD = (1 << 1),
88  /* bit(s) 2-7 unused */
89  RPMVSF_NOSHA1HEADER = (1 << 8),
90  RPMVSF_NOMD5HEADER = (1 << 9), /* unimplemented */
91  RPMVSF_NODSAHEADER = (1 << 10),
92  RPMVSF_NORSAHEADER = (1 << 11), /* unimplemented */
93  /* bit(s) 12-15 unused */
94  RPMVSF_NOSHA1 = (1 << 16), /* unimplemented */
95  RPMVSF_NOMD5 = (1 << 17),
96  RPMVSF_NODSA = (1 << 18),
97  RPMVSF_NORSA = (1 << 19)
98  /* bit(s) 16-31 unused */
99 } rpmVSFlags;
100 
101 #define _RPMVSF_NODIGESTS \
102  ( RPMVSF_NOSHA1HEADER | \
103  RPMVSF_NOMD5HEADER | \
104  RPMVSF_NOSHA1 | \
105  RPMVSF_NOMD5 )
106 
107 #define _RPMVSF_NOSIGNATURES \
108  ( RPMVSF_NODSAHEADER | \
109  RPMVSF_NORSAHEADER | \
110  RPMVSF_NODSA | \
111  RPMVSF_NORSA )
112 
113 #define _RPMVSF_NOHEADER \
114  ( RPMVSF_NOSHA1HEADER | \
115  RPMVSF_NOMD5HEADER | \
116  RPMVSF_NODSAHEADER | \
117  RPMVSF_NORSAHEADER )
118 
119 #define _RPMVSF_NOPAYLOAD \
120  ( RPMVSF_NOSHA1 | \
121  RPMVSF_NOMD5 | \
122  RPMVSF_NODSA | \
123  RPMVSF_NORSA )
124 
128 typedef enum rpmtsOpX_e {
146 } rpmtsOpX;
147 
158 int rpmtsCheck(rpmts ts);
159 
176 int rpmtsOrder(rpmts ts);
177 
195 int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet);
196 
204  const char * msg);
205 
212 rpmts rpmtsLink (rpmts ts, const char * msg);
213 
219 int rpmtsCloseDB(rpmts ts);
220 
227 int rpmtsOpenDB(rpmts ts, int dbmode);
228 
236 int rpmtsInitDB(rpmts ts, int dbmode);
237 
243 int rpmtsGetDBMode(rpmts ts);
244 
252 int rpmtsSetDBMode(rpmts ts, int dbmode);
253 
259 int rpmtsRebuildDB(rpmts ts);
260 
266 int rpmtsVerifyDB(rpmts ts);
267 
277  const void * keyp, size_t keylen);
278 
286 
295 rpmRC rpmtsImportPubkey(rpmts ts, const unsigned char * pkt, size_t pktlen);
296 
303 rpmKeyring rpmtsGetKeyring(rpmts ts, int autoload);
304 
313 int rpmtsSetKeyring(rpmts ts, rpmKeyring keyring);
314 
323  int (*solve) (rpmts ts, rpmds ds, const void * data),
324  const void * solveData);
325 
332 
337 void rpmtsCleanProblems(rpmts ts);
338 
343 void rpmtsClean(rpmts ts);
344 
349 void rpmtsEmpty(rpmts ts);
350 
356 rpmts rpmtsFree(rpmts ts);
357 
364 
372 
378 const char * rpmtsRootDir(rpmts ts);
379 
386 int rpmtsSetRootDir(rpmts ts, const char * rootDir);
387 
393 const char * rpmtsCurrDir(rpmts ts);
394 
400 void rpmtsSetCurrDir(rpmts ts, const char * currDir);
401 
408 
414 void rpmtsSetScriptFd(rpmts ts, FD_t scriptFd);
415 
421 int rpmtsSELinuxEnabled(rpmts ts);
422 
428 int rpmtsChrootDone(rpmts ts);
429 
436 int rpmtsSetChrootDone(rpmts ts, int chrootDone);
437 
444 
452 
459 
469 void * rpmtsNotify(rpmts ts, rpmte te,
470  rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total);
471 
477 int rpmtsNElements(rpmts ts);
478 
485 rpmte rpmtsElement(rpmts ts, int ix);
486 
493 
500 
508 
515 
523 
530 
537 
545 
553 
560 rpmop rpmtsOp(rpmts ts, rpmtsOpX opx);
561 
574  rpmCallbackFunction notify,
575  rpmCallbackData notifyData);
576 
581 rpmts rpmtsCreate(void);
582 
597  const fnpyKey key, int upgrade,
598  rpmRelocation * relocs);
599 
607 int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset);
608 
609 #ifdef __cplusplus
610 }
611 #endif
612 
613 
614 #endif /* H_RPMTS */
int rpmtsSetKeyring(rpmts ts, rpmKeyring keyring)
Set keyring to use for this transaction set.
int rpmtsSetRootDir(rpmts ts, const char *rootDir)
Set transaction rootDir, i.e.
enum rpmCallbackType_e rpmCallbackType
Bit(s) to identify progress callbacks.
void *(* rpmCallbackFunction)(const void *h, const rpmCallbackType what, const rpm_loff_t amount, const rpm_loff_t total, fnpyKey key, rpmCallbackData data)
Definition: rpmcallback.h:38
int rpmtsGetDBMode(rpmts ts)
Return the transaction database mode.
int _rpmts_debug
int rpmtsInitDB(rpmts ts, int dbmode)
Initialize the database used by the transaction.
int rpmtsSetDBMode(rpmts ts, int dbmode)
Set the transaction database mode.
int rpmtsCheck(rpmts ts)
Perform dependency resolution on the transaction set.
rpmts rpmtsUnlink(rpmts ts, const char *msg)
Unreference a transaction instance.
struct _FD_s * FD_t
RPM IO file descriptor type.
Definition: rpmtypes.h:82
void * rpmtsNotify(rpmts ts, rpmte te, rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total)
Perform transaction progress notify callback.
rpm_tid_t rpmtsSetTid(rpmts ts, rpm_tid_t tid)
Set transaction id, i.e.
rpmps rpmtsProblems(rpmts ts)
Return current transaction set problems.
enum rpmprobFilterFlags_e rpmprobFilterFlags
int rpmtsCloseDB(rpmts ts)
Close the database used by the transaction.
rpm_tid_t rpmtsGetTid(rpmts ts)
Get transaction id, i.e.
rpmRC rpmtsFindPubkey(rpmts ts, pgpDig dig) RPM_GNUC_DEPRECATED
Retrieve pubkey from rpm database.
struct pgpDig_s * pgpDig
Definition: rpmpgp.h:30
enum rpmTag_e rpmTag
Tags identify data in package headers.
rpmSpec rpmtsSpec(rpmts ts)
Get spec control structure from transaction set.
rpmop rpmtsOp(rpmts ts, rpmtsOpX opx)
Retrieve operation timestamp from a transaction set.
enum rpmtsOpX_e rpmtsOpX
Indices for timestamps.
int rpmtsSetSolveCallback(rpmts ts, int(*solve)(rpmts ts, rpmds ds, const void *data), const void *solveData)
Set dependency solver callback.
struct rpmps_s * rpmps
Transaction problems found while processing a transaction set/.
Definition: rpmps.h:42
const char * rpmtsRootDir(rpmts ts)
Get transaction rootDir, i.e.
rpmts rpmtsLink(rpmts ts, const char *msg)
Reference a transaction set instance.
struct rpmds_s * rpmds
Definition: rpmtypes.h:61
#define RPM_GNUC_DEPRECATED
Definition: rpmutil.h:80
int rpmtsOpenDB(rpmts ts, int dbmode)
Open the database used by the transaction.
void rpmtsCleanProblems(rpmts ts)
Clean current transaction problem set.
struct rpmte_s * rpmte
Definition: rpmtypes.h:60
int rpmtsSetChrootDone(rpmts ts, int chrootDone)
Set chrootDone flag, i.e.
rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag, const void *keyp, size_t keylen)
Return transaction database iterator.
We pass these around as an array with a sentinel.
Definition: rpmfi.h:94
rpmRC rpmtsImportPubkey(rpmts ts, const unsigned char *pkt, size_t pktlen)
Import public key packet(s).
void rpmtsEmpty(rpmts ts)
Re-create an empty transaction set.
struct rpmKeyring_s * rpmKeyring
Definition: rpmtypes.h:70
int rpmtsChrootDone(rpmts ts)
Get chrootDone flag, i.e.
The structure used to store values parsed from a spec file.
Definition: rpmspec.h:94
int _rpmts_stats
int rpmtsRun(rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
Process all package elements in a transaction set.
struct rpmdbMatchIterator_s * rpmdbMatchIterator
Definition: rpmtypes.h:64
const char * rpmtsCurrDir(rpmts ts)
Get transaction currDir, i.e.
rpmtransFlags rpmtsFlags(rpmts ts)
Get transaction flags, i.e.
int rpmtsVerifyDB(rpmts ts)
Verify the database used by the transaction.
enum rpmVSFlags_e rpmVSFlags
Bit(s) to control digest and signature verification.
uint64_t rpm_loff_t
Definition: rpmtypes.h:47
int rpmtsOrder(rpmts ts)
Determine package order in a transaction set according to dependencies.
rpmprobFilterFlags rpmtsFilterFlags(rpmts ts)
Get problem ignore bit mask, i.e.
rpmVSFlags_e
Bit(s) to control digest and signature verification.
Definition: rpmts.h:84
struct rpmdb_s * rpmdb
Definition: rpmtypes.h:63
int rpmtsAddEraseElement(rpmts ts, Header h, int dboffset)
Add package to be erased to transaction set.
rpmte rpmtsElement(rpmts ts, int ix)
Return (ordered) transaction set element.
void * rpmCallbackData
Definition: rpmtypes.h:66
int rpmtsAddInstallElement(rpmts ts, Header h, const fnpyKey key, int upgrade, rpmRelocation *relocs)
Add package to be installed to transaction set.
Cumulative statistics for an operation.
Definition: rpmsw.h:40
rpmSpec rpmtsSetSpec(rpmts ts, rpmSpec spec)
Set a spec control structure in transaction set.
rpmdb rpmtsGetRdb(rpmts ts)
Get transaction set database handle.
rpm_color_t rpmtsSetColor(rpmts ts, rpm_color_t color)
Set color bits of transaction set.
rpm_color_t rpmtsPrefColor(rpmts ts)
Retrieve prefered file color.
void rpmtsSetCurrDir(rpmts ts, const char *currDir)
Set transaction currDir, i.e.
int rpmtsNElements(rpmts ts)
Return number of (ordered) transaction set elements.
rpmts rpmtsFree(rpmts ts)
Destroy transaction set, closing the database as well.
enum rpmtransFlags_e rpmtransFlags
Bit(s) to control rpmtsRun() operation.
rpmVSFlags rpmtsSetVSFlags(rpmts ts, rpmVSFlags vsflags)
Set verify signatures flag(s).
struct rpmts_s * rpmts
The main types involved in transaction manipulation.
Definition: rpmtypes.h:59
void rpmtsSetScriptFd(rpmts ts, FD_t scriptFd)
Set transaction script file handle, i.e.
uint32_t rpm_color_t
Definition: rpmtypes.h:36
rpmKeyring rpmtsGetKeyring(rpmts ts, int autoload)
Retrieve handle for keyring used for this transaction set.
FD_t rpmtsScriptFd(rpmts ts)
Get transaction script file handle, i.e.
rpmtransFlags_e
Bit(s) to control rpmtsRun() operation.
Definition: rpmts.h:28
rpmtsOpX_e
Indices for timestamps.
Definition: rpmts.h:128
rpmVSFlags rpmtsVSFlags(rpmts ts)
Get verify signatures flag(s).
int rpmtsRebuildDB(rpmts ts)
Rebuild the database used by the transaction.
enum rpmRC_e rpmRC
Package read return codes.
void rpmtsClean(rpmts ts)
Free memory needed only for dependency checks and ordering.
rpm_color_t rpmtsSetPrefColor(rpmts ts, rpm_color_t color)
Set prefered file color.
uint32_t rpm_tid_t
Definition: rpmtypes.h:38
const void * fnpyKey
Definition: rpmtypes.h:65
rpmtransFlags rpmtsSetFlags(rpmts ts, rpmtransFlags transFlags)
Set transaction flags, i.e.
rpm_color_t rpmtsColor(rpmts ts)
Retrieve color bits of transaction set.
rpmts rpmtsCreate(void)
Create an empty transaction set.
int rpmtsSetNotifyCallback(rpmts ts, rpmCallbackFunction notify, rpmCallbackData notifyData)
Set transaction notify callback function and argument.
int rpmtsSELinuxEnabled(rpmts ts)
Get selinuxEnabled flag, i.e.
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24