rpm  4.5
Macros | Functions | Variables
rpmts.c File Reference

Routine(s) to handle a "rpmts" transaction sets. More...

#include "system.h"
#include "rpmio_internal.h"
#include <rpmlib.h>
#include <rpmmacro.h>
#include "rpmdb.h"
#include "rpmevr.h"
#include "rpmal.h"
#include "rpmds.h"
#include "rpmfi.h"
#include "rpmlock.h"
#include "rpmns.h"
#include "rpmte.h"
#include "rpmts.h"
#include "fs.h"
#include "debug.h"
Include dependency graph for rpmts.c:

Go to the source code of this file.

Macros

#define _RPMDB_INTERNAL   /* XXX almost opaque sigh */
 
#define _RPMEVR_INTERNAL   /* XXX RPMSENSE_KEYRING */
 
#define _RPMTE_INTERNAL   /* XXX te->h */
 
#define _RPMTS_INTERNAL
 
#define ST_RDONLY   1
 

Functions

rpmts XrpmtsUnlink (rpmts ts, const char *msg, const char *fn, unsigned ln)
 
rpmts XrpmtsLink (rpmts ts, const char *msg, const char *fn, unsigned ln)
 
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 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, rpmTag rpmtag, const void *keyp, size_t keylen)
 Return transaction database iterator. More...
 
rpmRC rpmtsFindPubkey (rpmts ts)
 Retrieve pubkey from rpm database. More...
 
int rpmtsCloseSDB (rpmts ts)
 Close the database used by the transaction to solve dependencies. More...
 
int rpmtsOpenSDB (rpmts ts, int dbmode)
 Open the database used by the transaction to solve dependencies. More...
 
static int sugcmp (const void *a, const void *b)
 Compare suggested package resolutions (qsort/bsearch). More...
 
int rpmtsSolve (rpmts ts, rpmds ds, const void *data)
 Attempt to solve a needed dependency using the solve database. More...
 
int rpmtsAvailable (rpmts ts, const rpmds ds)
 Attempt to solve a needed dependency using memory resident tables. More...
 
int rpmtsSetSolveCallback (rpmts ts, int(*solve)(rpmts ts, rpmds key, const void *data), const void *solveData)
 
rpmps rpmtsProblems (rpmts ts)
 Return current transaction set problems. More...
 
void rpmtsCleanDig (rpmts ts)
 Free signature verification data. 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...
 
static void rpmtsPrintStat (const char *name, struct rpmop_s *op)
 
static void rpmtsPrintStats (rpmts ts)
 
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...
 
rpmTSType rpmtsType (rpmts ts)
 Return the type of a transaction. More...
 
void rpmtsSetType (rpmts ts, rpmTSType type)
 Set transaction type. More...
 
uint_32 rpmtsARBGoal (rpmts ts)
 Return the autorollback goal. More...
 
void rpmtsSetARBGoal (rpmts ts, uint_32 goal)
 Set autorollback goal. More...
 
int rpmtsUnorderedSuccessors (rpmts ts, int first)
 Set index of 1st element of successors. More...
 
const char * rpmtsRootDir (rpmts ts)
 Get transaction rootDir, i.e. More...
 
void rpmtsSetRootDir (rpmts ts, const char *rootDir)
 Set transaction rootDir, i.e. More...
 
const char * rpmtsCurrDir (rpmts ts)
 Get transaction currDir, i.e. More...
 
void rpmtsSetCurrDir (rpmts ts, const char *currDir)
 Set transaction currDir, 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...
 
int rpmtsSELinuxEnabled (rpmts ts)
 Get selinuxEnabled flag, i.e. More...
 
int rpmtsChrootDone (rpmts ts)
 Get chrootDone flag, i.e. More...
 
int rpmtsSetChrootDone (rpmts ts, int chrootDone)
 Set chrootDone flag, i.e. More...
 
rpmsx rpmtsREContext (rpmts ts)
 Get file security context patterns. More...
 
int rpmtsSetREContext (rpmts ts, rpmsx sx)
 Get file security context patterns. More...
 
int_32 rpmtsGetTid (rpmts ts)
 Get transaction id, i.e. More...
 
int_32 rpmtsSetTid (rpmts ts, int_32 tid)
 Set transaction id, i.e. More...
 
int_32 rpmtsSigtag (const rpmts ts)
 Get signature tag. More...
 
int_32 rpmtsSigtype (const rpmts ts)
 Get signature tag type. More...
 
const void * rpmtsSig (const rpmts ts)
 Get signature tag data, i.e. More...
 
int_32 rpmtsSiglen (const rpmts ts)
 Get signature tag data length, i.e. More...
 
int rpmtsSetSig (rpmts ts, int_32 sigtag, int_32 sigtype, const void *sig, int_32 siglen)
 Set signature tag info, i.e. More...
 
pgpDig rpmtsDig (rpmts ts)
 Get OpenPGP packet parameters, i.e. More...
 
pgpDigParams rpmtsSignature (const rpmts ts)
 Get OpenPGP signature constants. More...
 
pgpDigParams rpmtsPubkey (const rpmts ts)
 Get OpenPGP pubkey constants. More...
 
rpmdb rpmtsGetRdb (rpmts ts)
 Get transaction set database handle. More...
 
rpmPRCO rpmtsPRCO (rpmts ts)
 Get transaction set dependencies. More...
 
int rpmtsInitDSI (const rpmts ts)
 Initialize disk space info for each and every mounted file systems. More...
 
void rpmtsUpdateDSI (const rpmts ts, dev_t dev, uint_32 fileSize, uint_32 prevSize, uint_32 fixupSize, fileAction action)
 Update disk space info for a file. More...
 
void rpmtsCheckDSIProblems (const rpmts ts, const rpmte te)
 Check a transaction element for disk space problems. More...
 
void * rpmtsNotify (rpmts ts, rpmte te, rpmCallbackType what, unsigned long long amount, unsigned long long 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...
 
rpmdepFlags rpmtsDFlags (rpmts ts)
 Get dependency flags, i.e. More...
 
rpmdepFlags rpmtsSetDFlags (rpmts ts, rpmdepFlags depFlags)
 Set dependency flags, i.e. More...
 
Spec rpmtsSpec (rpmts ts)
 Get spec control structure from transaction set. More...
 
Spec rpmtsSetSpec (rpmts ts, Spec spec)
 Set a spec control structure in transaction set. More...
 
rpmte rpmtsRelocateElement (rpmts ts)
 Get current relocate transaction element. More...
 
rpmte rpmtsSetRelocateElement (rpmts ts, rpmte relocateElement)
 Set current relocate transaction element. More...
 
uint_32 rpmtsColor (rpmts ts)
 Retrieve color bits of transaction set. More...
 
uint_32 rpmtsSetColor (rpmts ts, uint_32 color)
 Set color bits of transaction set. More...
 
uint_32 rpmtsPrefColor (rpmts ts)
 Retrieve prefered file color. More...
 
rpmop rpmtsOp (rpmts ts, rpmtsOpX opx)
 Retrieve operation timestamp from 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...
 

Variables

int _rpmts_debug = 0
 
int _rpmts_stats = 0
 

Detailed Description

Routine(s) to handle a "rpmts" transaction sets.

Definition in file rpmts.c.

Macro Definition Documentation

#define _RPMDB_INTERNAL   /* XXX almost opaque sigh */

Definition at line 11 of file rpmts.c.

#define _RPMEVR_INTERNAL   /* XXX RPMSENSE_KEYRING */

Definition at line 14 of file rpmts.c.

#define _RPMTE_INTERNAL   /* XXX te->h */

Definition at line 23 of file rpmts.c.

#define _RPMTS_INTERNAL

Definition at line 26 of file rpmts.c.

#define ST_RDONLY   1

Function Documentation

uint_32 rpmtsARBGoal ( rpmts  ts)

Return the autorollback goal.

Parameters
tstransaction set
Returns
autorollback goal

Definition at line 868 of file rpmts.c.

Referenced by rpmtsRollback().

int rpmtsAvailable ( rpmts  ts,
const rpmds  ds 
)

Attempt to solve a needed dependency using memory resident tables.

Deprecated:
This function will move from rpmlib to the python bindings.
Parameters
tstransaction set
dsdependency set
Returns
0 if resolved (and added to ts), 1 not found

Definition at line 615 of file rpmts.c.

References _free(), rpmalAllSatisfiesDepend(), and xrealloc().

uint_32 rpmtsColor ( rpmts  ts)
rpmte rpmtsElement ( rpmts  ts,
int  ix 
)

Return (ordered) transaction set element.

Parameters
tstransaction set
ixtransaction element index
Returns
transaction element (or NULL)

Definition at line 1362 of file rpmts.c.

Referenced by rpmInstallSourcePackage(), rpmtsiFi(), and rpmtsiNextElement().

rpmRC rpmtsFindPubkey ( rpmts  ts)
int rpmtsNElements ( rpmts  ts)

Return number of (ordered) transaction set elements.

Parameters
tstransaction set
Returns
no. of transaction set elements

Definition at line 1353 of file rpmts.c.

Referenced by rpmtsiNextElement(), rpmtsRun(), and XrpmtsiInit().

void* rpmtsNotify ( rpmts  ts,
rpmte  te,
rpmCallbackType  what,
unsigned long long  amount,
unsigned long long  total 
)

Perform transaction progress notify callback.

Warning
This function's args have changed, so the function cannot be used portably
Parameters
tstransaction set
tecurrent transaction element
whattype of call back
amountcurrent value
totalfinal value
Returns
callback dependent pointer

Definition at line 1337 of file rpmts.c.

References rpmteKey(), and TR_ADDED.

Referenced by fsmSetup(), fsmStage(), and rpmpsmStage().

rpmop rpmtsOp ( rpmts  ts,
rpmtsOpX  opx 
)

Retrieve operation timestamp from a transaction set.

Parameters
tstransaction set
opxoperation timestamp index
Returns
pointer to operation timestamp.

Definition at line 1461 of file rpmts.c.

References RPMTS_OP_MAX.

Referenced by fsmStage(), headerCheck(), psmWait(), rpmpsmStage(), rpmReadPackageFile(), rpmtsCheck(), rpmtsCloseDB(), rpmtsCloseSDB(), rpmtsCreate(), rpmtsOrder(), rpmtsPrintStats(), rpmtsRun(), verifyDSASignature(), verifyMD5Signature(), verifyRSASignature(), and verifySHA1Signature().

uint_32 rpmtsPrefColor ( rpmts  ts)

Retrieve prefered file color.

Parameters
tstransaction set
Returns
color bits

Definition at line 1456 of file rpmts.c.

Referenced by handleInstInstalledFiles(), handleOverlappedFiles(), and rpmtsOrder().

static void rpmtsPrintStat ( const char *  name,
struct rpmop_s op 
)
static

Definition at line 730 of file rpmts.c.

References rpmop_s::bytes, rpmop_s::count, and rpmop_s::usecs.

Referenced by rpmtsPrintStats().

static void rpmtsPrintStats ( rpmts  ts)
static
rpmps rpmtsProblems ( rpmts  ts)
void rpmtsSetARBGoal ( rpmts  ts,
uint_32  goal 
)

Set autorollback goal.

Parameters
tstransaction set
goalautorollback goal

Definition at line 873 of file rpmts.c.

Referenced by rpmErase(), and rpmInstall().

uint_32 rpmtsSetColor ( rpmts  ts,
uint_32  color 
)

Set color bits of transaction set.

Parameters
tstransaction set
colornew color bits
Returns
previous color bits

Definition at line 1446 of file rpmts.c.

Referenced by rpmts_SetColor().

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

Definition at line 641 of file rpmts.c.

Referenced by rpmts_Check().

void rpmtsSetType ( rpmts  ts,
rpmTSType  type 
)

Set transaction type.

Allowed types are: RPMTRANS_TYPE_NORMAL RPMTRANS_TYPE_ROLLBACK RPMTRANS_TYPE_AUTOROLLBACK

Parameters
tstransaction set
typetransaction type

Definition at line 862 of file rpmts.c.

Referenced by rpmRollback().

int rpmtsSolve ( rpmts  ts,
rpmds  ds,
const void *  data 
)
rpmTSType rpmtsType ( rpmts  ts)

Return the type of a transaction.

Parameters
tstransaction set
Returns
transaction type, 0 on unknown

Definition at line 857 of file rpmts.c.

Referenced by populateInstallHeader(), rpmpsmStage(), rpmtsRollback(), and rpmtsRun().

static int sugcmp ( const void *  a,
const void *  b 
)
static

Compare suggested package resolutions (qsort/bsearch).

Parameters
a1st instance address
b2nd instance address
Returns
result of comparison

Definition at line 443 of file rpmts.c.

Referenced by rpmtsSolve().

rpmts XrpmtsLink ( rpmts  ts,
const char *  msg,
const char *  fn,
unsigned  ln 
)
Todo:
Remove debugging entry from the ABI.

Definition at line 88 of file rpmts.c.

References _rpmts_debug.

rpmts XrpmtsUnlink ( rpmts  ts,
const char *  msg,
const char *  fn,
unsigned  ln 
)
Todo:
Remove debugging entry from the ABI.

Definition at line 78 of file rpmts.c.

References _rpmts_debug.

Variable Documentation

int _rpmts_debug = 0
int _rpmts_stats = 0

Definition at line 76 of file rpmts.c.

Referenced by rpmtsFree(), and setStats().