rpm: Transaction Set API.

rpm 4.11.1-rc1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

Files | Typedefs | Enumerations | Functions
Transaction Set API.
Collaboration diagram for Transaction Set API.:

## Files
file | rpmte.h
| Structures used for an "rpmte" transaction element.
file | rpmts.h
| Structures and prototypes used for an "rpmts" transaction set.

## Typedefs
typedef enum rpmtsOpX_e | rpmtsOpX
| Indices for timestamps. More...

## Enumerations
enum | rpmtransFlags_e { RPMTRANS_FLAG_NONE = 0, RPMTRANS_FLAG_TEST = (1 << 0), RPMTRANS_FLAG_BUILD_PROBS = (1 << 1), RPMTRANS_FLAG_NOSCRIPTS = (1 << 2), RPMTRANS_FLAG_JUSTDB = (1 << 3), RPMTRANS_FLAG_NOTRIGGERS = (1 << 4), RPMTRANS_FLAG_NODOCS = (1 << 5), RPMTRANS_FLAG_ALLFILES = (1 << 6), RPMTRANS_FLAG_NOCONTEXTS = (1 << 8), RPMTRANS_FLAG_NOTRIGGERPREIN = (1 << 16), RPMTRANS_FLAG_NOPRE = (1 << 17), RPMTRANS_FLAG_NOPOST = (1 << 18), RPMTRANS_FLAG_NOTRIGGERIN = (1 << 19), RPMTRANS_FLAG_NOTRIGGERUN = (1 << 20), RPMTRANS_FLAG_NOPREUN = (1 << 21), RPMTRANS_FLAG_NOPOSTUN = (1 << 22), RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), RPMTRANS_FLAG_NOCOLLECTIONS = (1 << 26), RPMTRANS_FLAG_NOMD5 = (1 << 27), RPMTRANS_FLAG_NOFILEDIGEST = (1 << 27), RPMTRANS_FLAG_NOCONFIGS = (1 << 30), RPMTRANS_FLAG_DEPLOOPS = (1 << 31) }
| Bit(s) to control rpmtsRun() operation. More...
enum | rpmVSFlags_e { RPMVSF_DEFAULT = 0, RPMVSF_NOHDRCHK = (1 << 0), RPMVSF_NEEDPAYLOAD = (1 << 1), RPMVSF_NOSHA1HEADER = (1 << 8), RPMVSF_NOMD5HEADER = (1 << 9), RPMVSF_NODSAHEADER = (1 << 10), RPMVSF_NORSAHEADER = (1 << 11), RPMVSF_NOSHA1 = (1 << 16), RPMVSF_NOMD5 = (1 << 17), RPMVSF_NODSA = (1 << 18), RPMVSF_NORSA = (1 << 19) }
| Bit(s) to control digest and signature verification. More...
enum | rpmtsOpX_e { RPMTS_OP_TOTAL = 0, RPMTS_OP_CHECK = 1, RPMTS_OP_ORDER = 2, RPMTS_OP_FINGERPRINT = 3, RPMTS_OP_INSTALL = 5, RPMTS_OP_ERASE = 6, RPMTS_OP_SCRIPTLETS = 7, RPMTS_OP_COMPRESS = 8, RPMTS_OP_UNCOMPRESS = 9, RPMTS_OP_DIGEST = 10, RPMTS_OP_SIGNATURE = 11, RPMTS_OP_DBADD = 12, RPMTS_OP_DBREMOVE = 13, RPMTS_OP_DBGET = 14, RPMTS_OP_DBPUT = 15, RPMTS_OP_DBDEL = 16, RPMTS_OP_MAX = 17 }
| Indices for timestamps. More...

## Functions
int | rpmtsCheck (rpmts ts)
| Perform dependency resolution on the transaction set. More...
int | rpmtsOrder (rpmts ts)
| Determine package order in a transaction set according to dependencies. More...
int | rpmtsRun (rpmts ts, rpmps okProbs, rpmprobFilterFlags ignoreSet)
| Process all package elements in a transaction set. More...
rpmts | rpmtsLink (rpmts ts)
| Reference a transaction set instance. More...
int | rpmtsCloseDB (rpmts ts)
| Close the database used by the transaction. More...
int | rpmtsOpenDB (rpmts ts, int dbmode)
| Open the database used by the transaction. More...
int | rpmtsInitDB (rpmts ts, int dbmode)
| Initialize the database used by the transaction. More...
int | rpmtsGetDBMode (rpmts ts)
| Return the transaction database mode. More...
int | rpmtsSetDBMode (rpmts ts, int dbmode)
| Set the transaction database mode. More...
int | rpmtsRebuildDB (rpmts ts)
| Rebuild the database used by the transaction. More...
int | rpmtsVerifyDB (rpmts ts)
| Verify the database used by the transaction. More...
rpmdbMatchIterator | rpmtsInitIterator (const rpmts ts, rpmDbiTagVal rpmtag, const void *keyp, size_t keylen)
| Return transaction database iterator. More...
rpmRC | rpmtsImportPubkey (rpmts ts, const unsigned char *pkt, size_t pktlen)
| Import public key packet(s). More...
rpmKeyring | rpmtsGetKeyring (rpmts ts, int autoload)
| Retrieve handle for keyring used for this transaction set. More...
int | rpmtsSetKeyring (rpmts ts, rpmKeyring keyring)
| Set keyring to use for this transaction set. More...
int | rpmtsSetSolveCallback (rpmts ts, int(*solve)(rpmts ts, rpmds ds, const void *data), const void *solveData)
| Set dependency solver callback. More...
rpmps | rpmtsProblems (rpmts ts)
| Return current transaction set problems. More...
void | rpmtsCleanProblems (rpmts ts)
| Clean current transaction problem set. More...
void | rpmtsClean (rpmts ts)
| Free memory needed only for dependency checks and ordering. More...
void | rpmtsEmpty (rpmts ts)
| Re-create an empty transaction set. More...
rpmts | rpmtsFree (rpmts ts)
| Destroy transaction set, closing the database as well. More...
rpmVSFlags | rpmtsVSFlags (rpmts ts)
| Get verify signatures flag(s). More...
rpmVSFlags | rpmtsSetVSFlags (rpmts ts, rpmVSFlags vsflags)
| Set verify signatures flag(s). More...
const char * | rpmtsRootDir (rpmts ts)
| Get transaction rootDir, i.e. More...
int | rpmtsSetRootDir (rpmts ts, const char *rootDir)
| Set transaction rootDir, i.e. More...
FD_t | rpmtsScriptFd (rpmts ts)
| Get transaction script file handle, i.e. More...
void | rpmtsSetScriptFd (rpmts ts, FD_t scriptFd)
| Set transaction script file handle, i.e. More...
rpm_tid_t | rpmtsGetTid (rpmts ts)
| Get transaction id, i.e. More...
rpm_tid_t | rpmtsSetTid (rpmts ts, rpm_tid_t tid)
| Set transaction id, i.e. More...
rpmdb | rpmtsGetRdb (rpmts ts)
| Get transaction set database handle. More...
void * | rpmtsNotify (rpmts ts, rpmte te, rpmCallbackType what, rpm_loff_t amount, rpm_loff_t total)
| Perform transaction progress notify callback. More...
int | rpmtsNElements (rpmts ts)
| Return number of (ordered) transaction set elements. More...
rpmte | rpmtsElement (rpmts ts, int ix)
| Return (ordered) transaction set element. More...
rpmprobFilterFlags | rpmtsFilterFlags (rpmts ts)
| Get problem ignore bit mask, i.e. More...
rpmtransFlags | rpmtsFlags (rpmts ts)
| Get transaction flags, i.e. More...
rpmtransFlags | rpmtsSetFlags (rpmts ts, rpmtransFlags transFlags)
| Set transaction flags, i.e. More...
rpm_color_t | rpmtsColor (rpmts ts)
| Retrieve color bits of transaction set. More...
rpm_color_t | rpmtsPrefColor (rpmts ts)
| Retrieve preferred file color. More...
rpm_color_t | rpmtsSetColor (rpmts ts, rpm_color_t color)
| Set color bits of transaction set. More...
rpm_color_t | rpmtsSetPrefColor (rpmts ts, rpm_color_t color)
| Set preferred file color. More...
rpmop | rpmtsOp (rpmts ts, rpmtsOpX opx)
| Retrieve operation timestamp from a transaction set. More...
rpmPlugins | rpmtsPlugins (rpmts ts)
| Get the plugins associated with a transaction set. More...
int | rpmtsSetNotifyCallback (rpmts ts, rpmCallbackFunction notify, rpmCallbackData notifyData)
| Set transaction notify callback function and argument. More...
rpmts | rpmtsCreate (void)
| Create an empty transaction set. More...
int | rpmtsAddInstallElement (rpmts ts, Header h, const fnpyKey key, int upgrade, rpmRelocation *relocs)
| Add package to be installed to transaction set. More...
int | rpmtsAddEraseElement (rpmts ts, Header h, int dboffset)
| Add package to be erased to transaction set. More...

## Detailed Description

## Typedef Documentation

typedef enum rpmtsOpX_e rpmtsOpX

Indices for timestamps.

## Enumeration Type Documentation

enum rpmtransFlags_e

Bit(s) to control rpmtsRun() operation.

Enumerator
RPMTRANS_FLAG_NONE |
RPMTRANS_FLAG_TEST | from –test
RPMTRANS_FLAG_BUILD_PROBS | don't process payload
RPMTRANS_FLAG_NOSCRIPTS | from –noscripts
RPMTRANS_FLAG_JUSTDB | from –justdb
RPMTRANS_FLAG_NOTRIGGERS | from –notriggers
RPMTRANS_FLAG_NODOCS | from –excludedocs
RPMTRANS_FLAG_ALLFILES | from –allfiles
RPMTRANS_FLAG_NOCONTEXTS | from –nocontexts
RPMTRANS_FLAG_NOTRIGGERPREIN | from –notriggerprein
RPMTRANS_FLAG_NOPRE | from –nopre
RPMTRANS_FLAG_NOPOST | from –nopost
RPMTRANS_FLAG_NOTRIGGERIN | from –notriggerin
RPMTRANS_FLAG_NOTRIGGERUN | from –notriggerun
RPMTRANS_FLAG_NOPREUN | from –nopreun
RPMTRANS_FLAG_NOPOSTUN | from –nopostun
RPMTRANS_FLAG_NOTRIGGERPOSTUN | from –notriggerpostun
RPMTRANS_FLAG_NOCOLLECTIONS | from –nocollections
RPMTRANS_FLAG_NOMD5 | from –nomd5
RPMTRANS_FLAG_NOFILEDIGEST | from –nofiledigest (alias to –nomd5)
RPMTRANS_FLAG_NOCONFIGS | from –noconfigs
RPMTRANS_FLAG_DEPLOOPS | from –deploops

Definition at line 28 of file rpmts.h.

enum rpmtsOpX_e

Indices for timestamps.

Enumerator
RPMTS_OP_TOTAL |
RPMTS_OP_CHECK |
RPMTS_OP_ORDER |
RPMTS_OP_FINGERPRINT |
RPMTS_OP_INSTALL |
RPMTS_OP_ERASE |
RPMTS_OP_SCRIPTLETS |
RPMTS_OP_COMPRESS |
RPMTS_OP_UNCOMPRESS |
RPMTS_OP_DIGEST |
RPMTS_OP_SIGNATURE |
RPMTS_OP_DBADD |
RPMTS_OP_DBREMOVE |
RPMTS_OP_DBGET |
RPMTS_OP_DBPUT |
RPMTS_OP_DBDEL |
RPMTS_OP_MAX |

Definition at line 136 of file rpmts.h.

enum rpmVSFlags_e

Bit(s) to control digest and signature verification.

Enumerator
RPMVSF_DEFAULT |
RPMVSF_NOHDRCHK |
RPMVSF_NEEDPAYLOAD |
RPMVSF_NOSHA1HEADER |
RPMVSF_NOMD5HEADER |
RPMVSF_NODSAHEADER |
RPMVSF_NORSAHEADER |
RPMVSF_NOSHA1 |
RPMVSF_NOMD5 |
RPMVSF_NODSA |
RPMVSF_NORSA |

Definition at line 90 of file rpmts.h.

## Function Documentation

int rpmtsAddEraseElement | ( | rpmts | ts,
|  | Header | h,
|  | int | dboffset
| ) |  |

Add package to be erased to transaction set.

Parameters

  ts | transaction set
  h | header
  dboffset | ununsed

Returns
  0 on success, 1 on error (not installed)

int rpmtsAddInstallElement | ( | rpmts | ts,
|  | Header | h,
|  | const fnpyKey | key,
|  | int | upgrade,
|  | rpmRelocation * | relocs
| ) |  |

Add package to be installed to transaction set.

The transaction set is checked for duplicate package names. If found, the package with the "newest" EVR will be replaced.

Parameters

  ts | transaction set
  h | header
  key | package retrieval key (e.g. file name)
  upgrade | is package being upgraded?
  relocs | package file relocations

Returns
  0 on success, 1 on I/O error, 2 needs capabilities

int rpmtsCheck | ( | rpmts | ts | ) |

Perform dependency resolution on the transaction set.

Any problems found by rpmtsCheck() can be examined by retrieving the problem set with rpmtsProblems(), success here only means that the resolution was successfully attempted for all packages in the set.

Parameters

  ts | transaction set

Returns
  0 on success

void rpmtsClean | ( | rpmts | ts | ) |

Free memory needed only for dependency checks and ordering.

Parameters

  ts | transaction set

void rpmtsCleanProblems | ( | rpmts | ts | ) |

Clean current transaction problem set.

Parameters

  ts | transaction set

int rpmtsCloseDB | ( | rpmts | ts | ) |

Close the database used by the transaction.

Parameters

  ts | transaction set

Returns
  0 on success

rpm_color_t rpmtsColor | ( | rpmts | ts | ) |

Retrieve color bits of transaction set.

Parameters

  ts | transaction set

Returns
  color bits

rpmts rpmtsCreate | ( | void |  | ) |

Create an empty transaction set.

Returns
  new transaction set

Referenced by main().

rpmte rpmtsElement | ( | rpmts | ts,
|  | int | ix
| ) |  |

Return (ordered) transaction set element.

Parameters

  ts | transaction set
  ix | transaction element index

Returns
  transaction element (or NULL)

void rpmtsEmpty | ( | rpmts | ts | ) |

Re-create an empty transaction set.

Parameters

  ts | transaction set

rpmprobFilterFlags rpmtsFilterFlags | ( | rpmts | ts | ) |

Get problem ignore bit mask, i.e.

bits to filter encountered problems.

Parameters

  ts | transaction set

Returns
  ignore bit mask

rpmtransFlags rpmtsFlags | ( | rpmts | ts | ) |

Get transaction flags, i.e.

bits that control rpmtsRun().

Parameters

  ts | transaction set

Returns
  transaction flags

Referenced by main().

rpmts rpmtsFree | ( | rpmts | ts | ) |

Destroy transaction set, closing the database as well.

Parameters

  ts | transaction set

Returns
  NULL always

Referenced by main().

int rpmtsGetDBMode | ( | rpmts | ts | ) |

Return the transaction database mode.

Parameters

  ts | transaction set

Returns
  O_RDONLY, O_RDWR or -1 (lazy opens disabled)

rpmKeyring rpmtsGetKeyring | ( | rpmts | ts,
|  | int | autoload
| ) |  |

Retrieve handle for keyring used for this transaction set.

Parameters

  ts | transaction set
  autoload | load default keyring if keyring is not set

Returns
  keyring handle (or NULL)

rpmdb rpmtsGetRdb | ( | rpmts | ts | ) |

Get transaction set database handle.

Parameters

  ts | transaction set

Returns
  transaction database handle

rpm_tid_t rpmtsGetTid | ( | rpmts | ts | ) |

Get transaction id, i.e.

transaction time stamp.

Parameters

  ts | transaction set

Returns
  transaction id

rpmRC rpmtsImportPubkey | ( | rpmts | ts,
|  | const unsigned char * | pkt,
|  | size_t | pktlen
| ) |  |

Import public key packet(s).

Todo:
  Implicit –update policy for gpg-pubkey headers.

Parameters

  ts | transaction set
  pkt | pgp pubkey packet(s)
  pktlen | pgp pubkey length

Returns
  RPMRC_OK/RPMRC_FAIL

int rpmtsInitDB | ( | rpmts | ts,
|  | int | dbmode
| ) |  |

Initialize the database used by the transaction.

Deprecated:
  An explicit rpmdbInit() is almost never needed.

Parameters

  ts | transaction set
  dbmode | O_RDONLY or O_RDWR

Returns
  0 on success

Referenced by main().

rpmdbMatchIterator rpmtsInitIterator | ( | const rpmts | ts,
|  | rpmDbiTagVal | rpmtag,
|  | const void * | keyp,
|  | size_t | keylen
| ) |  |

Return transaction database iterator.

Parameters

  ts | transaction set
  rpmtag | database index tag
  keyp | key data (NULL for sequential access)
  keylen | key data length (0 will use strlen(keyp))

Returns
  NULL on failure

rpmts rpmtsLink | ( | rpmts | ts | ) |

Reference a transaction set instance.

Parameters

  ts | transaction set

Returns
  new transaction set reference

int rpmtsNElements | ( | rpmts | ts | ) |

Return number of (ordered) transaction set elements.

Parameters

  ts | transaction set

Returns
  no. of transaction set elements

void* rpmtsNotify | ( | rpmts | ts,
|  | rpmte | te,
|  | rpmCallbackType | what,
|  | rpm_loff_t | amount,
|  | rpm_loff_t | total
| ) |  |

Perform transaction progress notify callback.

Parameters

  ts | transaction set
  te | current transaction element
  what | type of call back
  amount | current value
  total | final value

Returns
  callback dependent pointer

rpmop rpmtsOp | ( | rpmts | ts,
|  | rpmtsOpX | opx
| ) |  |

Retrieve operation timestamp from a transaction set.

Parameters

  ts | transaction set
  opx | operation timestamp index

Returns
  pointer to operation timestamp.

int rpmtsOpenDB | ( | rpmts | ts,
|  | int | dbmode
| ) |  |

Open the database used by the transaction.

Parameters

  ts | transaction set
  dbmode | O_RDONLY or O_RDWR

Returns
  0 on success

int rpmtsOrder | ( | rpmts | ts | ) |

Determine package order in a transaction set according to dependencies.

Order packages, returning error if circular dependencies cannot be eliminated by removing Requires's from the loop(s). Only dependencies from added or removed packages are used to determine ordering using a topological sort (Knuth vol. 1, p. 262). Use rpmtsCheck() to verify that all dependencies can be resolved.

The final order ends up as installed packages followed by removed packages, with packages removed for upgrades immediately following the new package to be installed.

Parameters

  ts | transaction set

Returns
  no. of (added) packages that could not be ordered

rpmPlugins rpmtsPlugins | ( | rpmts | ts | ) |

Get the plugins associated with a transaction set.

Parameters

  ts | transaction set

Returns
  plugins

rpm_color_t rpmtsPrefColor | ( | rpmts | ts | ) |

Retrieve preferred file color.

Parameters

  ts | transaction set

Returns
  color bits

rpmps rpmtsProblems | ( | rpmts | ts | ) |

Return current transaction set problems.

Parameters

  ts | transaction set

Returns
  current problem set (or NULL if no problems)

int rpmtsRebuildDB | ( | rpmts | ts | ) |

Rebuild the database used by the transaction.

Parameters

  ts | transaction set

Returns
  0 on success

Referenced by main().

const char* rpmtsRootDir | ( | rpmts | ts | ) |

Get transaction rootDir, i.e.

path to chroot(2).

Parameters

  ts | transaction set

Returns
  transaction rootDir

Referenced by buildForTarget().

int rpmtsRun | ( | rpmts | ts,
|  | rpmps | okProbs,
|  | rpmprobFilterFlags | ignoreSet
| ) |  |

Process all package elements in a transaction set.

Before calling rpmtsRun be sure to have:

- setup the rpm root dir via rpmtsSetRoot().
- setup the rpm notify callback via rpmtsSetNotifyCallback().
- setup the rpm transaction flags via rpmtsSetFlags().

Additionally, though not required you may want to:

- setup the rpm verify signature flags via rpmtsSetVSFlags().

Parameters

  ts | transaction set
  okProbs | unused
  ignoreSet | bits to filter problem types

Returns
  0 on success, -1 on error, >0 with newProbs set

FD_t rpmtsScriptFd | ( | rpmts | ts | ) |

Get transaction script file handle, i.e.

stdout/stderr on scriptlet execution

Parameters

  ts | transaction set

Returns
  transaction script file handle

rpm_color_t rpmtsSetColor | ( | rpmts | ts,
|  | rpm_color_t | color
| ) |  |

Set color bits of transaction set.

Parameters

  ts | transaction set
  color | new color bits

Returns
  previous color bits

int rpmtsSetDBMode | ( | rpmts | ts,
|  | int | dbmode
| ) |  |

Set the transaction database mode.

Only permitted when when backing database hasn't been opened yet (ie rpmtsGetRdb(ts) == NULL)

Parameters

  ts | transaction set
  dbmode | O_RDONLY, O_RDWR or -1 (disable lazy opens)

Returns
  0 on success, 1 on error

rpmtransFlags rpmtsSetFlags | ( | rpmts | ts,
|  | rpmtransFlags | transFlags
| ) |  |

Set transaction flags, i.e.

bits that control rpmtsRun().

Parameters

  ts | transaction set
  transFlags | new transaction flags

Returns
  previous transaction flags

Referenced by main().

int rpmtsSetKeyring | ( | rpmts | ts,
|  | rpmKeyring | keyring
| ) |  |

Set keyring to use for this transaction set.

Keyring can be only changed while the underlying rpm database is not yet open.

Parameters

  ts | transaction set
  keyring | keyring handle (NULL to free current keyring)

Returns
  0 on success, -1 on error

int rpmtsSetNotifyCallback | ( | rpmts | ts,
|  | rpmCallbackFunction | notify,
|  | rpmCallbackData | notifyData
| ) |  |

Set transaction notify callback function and argument.

Warning
  This call must be made before rpmtsRun() for install/upgrade/freshen to function correctly.

Parameters

  ts | transaction set
  notify | progress callback
  notifyData | progress callback private data

Returns
  0 on success

rpm_color_t rpmtsSetPrefColor | ( | rpmts | ts,
|  | rpm_color_t | color
| ) |  |

Set preferred file color.

Parameters

  ts | transaction set
  color | new color bits

Returns
  previous color bits

int rpmtsSetRootDir | ( | rpmts | ts,
|  | const char * | rootDir
| ) |  |

Set transaction rootDir, i.e.

path to chroot(2).

Parameters

  ts | transaction set
  rootDir | new transaction rootDir (or NULL)

Returns
  0 on success, -1 on error (invalid rootDir)

Referenced by main().

void rpmtsSetScriptFd | ( | rpmts | ts,
|  | FD_t | scriptFd
| ) |  |

Set transaction script file handle, i.e.

stdout/stderr on scriptlet execution

Parameters

  ts | transaction set
  scriptFd | new script file handle (or NULL)

int rpmtsSetSolveCallback | ( | rpmts | ts,
|  | int(*)(rpmts ts, rpmds ds, const void *data) | solve,
|  | const void * | solveData
| ) |  |

Set dependency solver callback.

Parameters

  ts | transaction set
  (*solve) | dependency solver callback
  solveData | dependency solver callback data (opaque)

Returns
  0 on success

rpm_tid_t rpmtsSetTid | ( | rpmts | ts,
|  | rpm_tid_t | tid
| ) |  |

Set transaction id, i.e.

transaction time stamp.

Parameters

  ts | transaction set
  tid | new transaction id

Returns
  previous transaction id

rpmVSFlags rpmtsSetVSFlags | ( | rpmts | ts,
|  | rpmVSFlags | vsflags
| ) |  |

Set verify signatures flag(s).

Parameters

  ts | transaction set
  vsflags | new verify signatures flags

Returns
  previous value

Referenced by build(), and main().

int rpmtsVerifyDB | ( | rpmts | ts | ) |

Verify the database used by the transaction.

Parameters

  ts | transaction set

Returns
  0 on success

Referenced by main().

rpmVSFlags rpmtsVSFlags | ( | rpmts | ts | ) |

Get verify signatures flag(s).

Parameters

  ts | transaction set

Returns
  verify signatures flags