rpm 4.10.0

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

## 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 prefered 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 prefered 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 main(), and build().

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