rpm  4.8.1
Files | Typedefs | Enumerations | Functions
Problem Set API.

Files

file  rpmps.h
 

Structures and prototypes used for an "rpmps" problem set.


Typedefs

typedef enum rpmprobFilterFlags_e rpmprobFilterFlags
typedef struct rpmps_s * rpmps
 Transaction problems found while processing a transaction set/.
typedef enum rpmProblemType_e rpmProblemType
 Enumerate transaction set problem types.

Enumerations

enum  rpmprobFilterFlags_e {
  RPMPROB_FILTER_NONE = 0, RPMPROB_FILTER_IGNOREOS = (1 << 0), RPMPROB_FILTER_IGNOREARCH = (1 << 1), RPMPROB_FILTER_REPLACEPKG = (1 << 2),
  RPMPROB_FILTER_FORCERELOCATE = (1 << 3), RPMPROB_FILTER_REPLACENEWFILES = (1 << 4), RPMPROB_FILTER_REPLACEOLDFILES = (1 << 5), RPMPROB_FILTER_OLDPACKAGE = (1 << 6),
  RPMPROB_FILTER_DISKSPACE = (1 << 7), RPMPROB_FILTER_DISKNODES = (1 << 8)
}
enum  rpmProblemType_e {
  RPMPROB_BADARCH, RPMPROB_BADOS, RPMPROB_PKG_INSTALLED, RPMPROB_BADRELOCATE,
  RPMPROB_REQUIRES, RPMPROB_CONFLICT, RPMPROB_NEW_FILE_CONFLICT, RPMPROB_FILE_CONFLICT,
  RPMPROB_OLDPACKAGE, RPMPROB_DISKSPACE, RPMPROB_DISKNODES
}
 Enumerate transaction set problem types. More...

Functions

rpmProblem rpmProblemCreate (rpmProblemType type, const char *pkgNEVR, fnpyKey key, const char *dn, const char *bn, const char *altNEVR, uint64_t number)
 Create a problem item.
rpmProblem rpmProblemFree (rpmProblem prob)
 Destroy a problem item.
rpmProblem rpmProblemLink (rpmProblem prob)
 Reference an rpmProblem instance.
rpmProblem rpmProblemUnlink (rpmProblem prob)
 Unreference an rpmProblem instance.
const char * rpmProblemGetPkgNEVR (const rpmProblem prob)
 Return package NEVR.
const char * rpmProblemGetAltNEVR (const rpmProblem prob)
 Return related (e.g.
rpmProblemType rpmProblemGetType (const rpmProblem prob)
 Return type of problem (dependency, diskpace etc)
fnpyKey rpmProblemGetKey (const rpmProblem prob)
 Return filename or python object address of a problem.
const char * rpmProblemGetStr (const rpmProblem prob)
 Return a generic data string from a problem.
rpm_loff_t rpmProblemGetDiskNeed (const rpmProblem prob)
 Return disk requirement (needed disk space / number of inodes) depending on problem type.
char * rpmProblemString (const rpmProblem prob)
 Return formatted string representation of a problem.
rpmps rpmpsUnlink (rpmps ps, const char *msg)
 Unreference a problem set instance.
rpmps rpmpsLink (rpmps ps, const char *msg)
 Reference a problem set instance.
int rpmpsNumProblems (rpmps ps)
 Return number of problems in set.
rpmpsi rpmpsInitIterator (rpmps ps)
 Initialize problem set iterator.
rpmpsi rpmpsFreeIterator (rpmpsi psi)
 Destroy problem set iterator.
int rpmpsNextIterator (rpmpsi psi)
 Return next problem set iterator index.
rpmProblem rpmpsGetProblem (rpmpsi psi)
 Return current problem from problem set.
rpmps rpmpsCreate (void)
 Create a problem set.
rpmps rpmpsFree (rpmps ps)
 Destroy a problem set.
void rpmpsPrint (FILE *fp, rpmps ps)
 Print problems to file handle.
void rpmpsAppendProblem (rpmps ps, rpmProblem prob)
 Append a problem to current set of problems.
void rpmpsAppend (rpmps ps, rpmProblemType type, const char *pkgNEVR, fnpyKey key, const char *dn, const char *bn, const char *altNEVR, uint64_t number)
 Append a problem to current set of problems.
int rpmpsTrim (rpmps ps, rpmps filter)
 Filter a problem set.

Typedef Documentation

Todo:
Generalize filter mechanism.

Enumerate transaction set problem types.

typedef struct rpmps_s* rpmps

Transaction problems found while processing a transaction set/.

Definition at line 42 of file rpmps.h.


Enumeration Type Documentation

Todo:
Generalize filter mechanism.
Enumerator:
RPMPROB_FILTER_NONE 
RPMPROB_FILTER_IGNOREOS 

from --ignoreos

RPMPROB_FILTER_IGNOREARCH 

from --ignorearch

RPMPROB_FILTER_REPLACEPKG 

from --replacepkgs

RPMPROB_FILTER_FORCERELOCATE 

from --badreloc

RPMPROB_FILTER_REPLACENEWFILES 

from --replacefiles

RPMPROB_FILTER_REPLACEOLDFILES 

from --replacefiles

RPMPROB_FILTER_OLDPACKAGE 

from --oldpackage

RPMPROB_FILTER_DISKSPACE 

from --ignoresize

RPMPROB_FILTER_DISKNODES 

from --ignoresize

Definition at line 21 of file rpmps.h.

Enumerate transaction set problem types.

Enumerator:
RPMPROB_BADARCH 

package ... is for a different architecture

RPMPROB_BADOS 

package ... is for a different operating system

RPMPROB_PKG_INSTALLED 

package ... is already installed

RPMPROB_BADRELOCATE 

path ... is not relocatable for package ...

RPMPROB_REQUIRES 

package ... has unsatisfied Requires: ...

RPMPROB_CONFLICT 

package ... has unsatisfied Conflicts: ...

RPMPROB_NEW_FILE_CONFLICT 

file ... conflicts between attemped installs of ...

RPMPROB_FILE_CONFLICT 

file ... from install of ... conflicts with file from package ...

RPMPROB_OLDPACKAGE 

package ... (which is newer than ...) is already installed

RPMPROB_DISKSPACE 

installing package ... needs ... on the ... filesystem

RPMPROB_DISKNODES 

installing package ... needs ... on the ... filesystem

Definition at line 49 of file rpmps.h.


Function Documentation

rpmProblem rpmProblemCreate ( rpmProblemType  type,
const char *  pkgNEVR,
fnpyKey  key,
const char *  dn,
const char *  bn,
const char *  altNEVR,
uint64_t  number 
)

Create a problem item.

Parameters:
typetype of problem
pkgNEVRpackage name
keyfilename or python object address
dndirectory name
bnfile base name
altNEVRrelated (e.g. through a dependency) package name
numbergeneric number attribute
Returns:
rpmProblem

Destroy a problem item.

Parameters:
probrpm problem
Returns:
rpm problem (NULL)
const char* rpmProblemGetAltNEVR ( const rpmProblem  prob)

Return related (e.g.

through a dependency) package NEVR

Parameters:
probrpm problem
Returns:
related (e.g. through a dependency) package NEVR

Return disk requirement (needed disk space / number of inodes) depending on problem type.

On problem types other than RPMPROB_DISKSPACE and RPMPROB_DISKNODES return value is undefined.

Parameters:
probrpm problem
Returns:
disk requirement

Return filename or python object address of a problem.

Parameters:
probrpm problem
Returns:
filename or python object address
const char* rpmProblemGetPkgNEVR ( const rpmProblem  prob)

Return package NEVR.

Parameters:
probrpm problem
Returns:
package NEVR
const char* rpmProblemGetStr ( const rpmProblem  prob)

Return a generic data string from a problem.

Parameters:
probrpm problem
Returns:
a generic data string
Todo:
needs a better name

Return type of problem (dependency, diskpace etc)

Parameters:
probrpm problem
Returns:
type of problem

Reference an rpmProblem instance.

Parameters:
probrpm problem
Returns:
rpm problem
char* rpmProblemString ( const rpmProblem  prob)

Return formatted string representation of a problem.

Parameters:
probrpm problem
Returns:
formatted string (malloc'd)

Unreference an rpmProblem instance.

Parameters:
probrpm problem
Returns:
rpm problem
void rpmpsAppend ( rpmps  ps,
rpmProblemType  type,
const char *  pkgNEVR,
fnpyKey  key,
const char *  dn,
const char *  bn,
const char *  altNEVR,
uint64_t  number 
)

Append a problem to current set of problems.

Parameters:
psproblem set
typetype of problem
pkgNEVRpackage name
keyfilename or python object address
dndirectory name
bnfile base name
altNEVRrelated (e.g. through a dependency) package name
numbergeneric number attribute
void rpmpsAppendProblem ( rpmps  ps,
rpmProblem  prob 
)

Append a problem to current set of problems.

Parameters:
psproblem set
probrpmProblem
rpmps rpmpsCreate ( void  )

Create a problem set.

Returns:
new problem set

Destroy a problem set.

Parameters:
psproblem set
Returns:
NULL always

Referenced by checkSpec().

Destroy problem set iterator.

Parameters:
psiproblem set iterator
Returns:
problem set iterator (NULL)

Return current problem from problem set.

Parameters:
psiproblem set iterator
Returns:
current rpmProblem

Initialize problem set iterator.

Parameters:
psproblem set
Returns:
problem set iterator
rpmps rpmpsLink ( rpmps  ps,
const char *  msg 
)

Reference a problem set instance.

Parameters:
pstransaction set
msg
Returns:
new transaction set reference
int rpmpsNextIterator ( rpmpsi  psi)

Return next problem set iterator index.

Parameters:
psiproblem set iterator
Returns:
iterator index, -1 on termination
int rpmpsNumProblems ( rpmps  ps)

Return number of problems in set.

Parameters:
psproblem set
Returns:
number of problems

Referenced by checkSpec().

void rpmpsPrint ( FILE *  fp,
rpmps  ps 
)

Print problems to file handle.

Parameters:
fpfile handle (NULL uses stderr)
psproblem set

Referenced by checkSpec().

int rpmpsTrim ( rpmps  ps,
rpmps  filter 
)

Filter a problem set.

As the problem sets are generated in an order solely dependent on the ordering of the packages in the transaction, and that ordering can't be changed, the problem sets must be parallel to one another. Additionally, the filter set must be a subset of the target set, given the operations available on transaction set. This is good, as it lets us perform this trim in linear time, rather then logarithmic or quadratic.

Parameters:
psproblem set
filterproblem filter (or NULL)
Returns:
0 no problems, 1 if problems remain
rpmps rpmpsUnlink ( rpmps  ps,
const char *  msg 
)

Unreference a problem set instance.

Parameters:
psproblem set
msg
Returns:
problem set