rpm  4.8.1
Typedefs | Enumerations | Functions | Variables
rpmps.h File Reference

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

#include <stdio.h>
#include <rpm/rpmtypes.h>
Include dependency graph for rpmps.h:

Go to the source code of this file.

Typedefs

typedef enum rpmprobFilterFlags_e rpmprobFilterFlags
 
typedef struct rpmProblem_s * rpmProblem
 Raw data for an element of a problem set. More...
 
typedef struct rpmps_s * rpmps
 Transaction problems found while processing a transaction set/. More...
 
typedef struct rpmpsi_s * rpmpsi
 
typedef enum rpmProblemType_e rpmProblemType
 Enumerate transaction set problem types. More...
 

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

Variables

int _rpmps_debug
 

Detailed Description

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

Definition in file rpmps.h.

Typedef Documentation

◆ rpmprobFilterFlags

Todo:
Generalize filter mechanism.

◆ rpmProblem

typedef struct rpmProblem_s* rpmProblem

Raw data for an element of a problem set.

Definition at line 37 of file rpmps.h.

◆ rpmProblemType

Enumerate transaction set problem types.

◆ rpmps

typedef struct rpmps_s* rpmps

Transaction problems found while processing a transaction set/.

Definition at line 42 of file rpmps.h.

◆ rpmpsi

typedef struct rpmpsi_s* rpmpsi

Definition at line 44 of file rpmps.h.

Enumeration Type Documentation

◆ rpmprobFilterFlags_e

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.

◆ rpmProblemType_e

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

◆ rpmProblemCreate()

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

◆ rpmProblemFree()

rpmProblem rpmProblemFree ( rpmProblem  prob)

Destroy a problem item.

Parameters
probrpm problem
Returns
rpm problem (NULL)

◆ rpmProblemGetAltNEVR()

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

◆ rpmProblemGetDiskNeed()

rpm_loff_t rpmProblemGetDiskNeed ( const rpmProblem  prob)

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

◆ rpmProblemGetKey()

fnpyKey rpmProblemGetKey ( const rpmProblem  prob)

Return filename or python object address of a problem.

Parameters
probrpm problem
Returns
filename or python object address

◆ rpmProblemGetPkgNEVR()

const char* rpmProblemGetPkgNEVR ( const rpmProblem  prob)

Return package NEVR.

Parameters
probrpm problem
Returns
package NEVR

◆ rpmProblemGetStr()

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

◆ rpmProblemGetType()

rpmProblemType rpmProblemGetType ( const rpmProblem  prob)

Return type of problem (dependency, diskpace etc)

Parameters
probrpm problem
Returns
type of problem

◆ rpmProblemLink()

rpmProblem rpmProblemLink ( rpmProblem  prob)

Reference an rpmProblem instance.

Parameters
probrpm problem
Returns
rpm problem

◆ rpmProblemString()

char* rpmProblemString ( const rpmProblem  prob)

Return formatted string representation of a problem.

Parameters
probrpm problem
Returns
formatted string (malloc'd)

◆ rpmProblemUnlink()

rpmProblem rpmProblemUnlink ( rpmProblem  prob)

Unreference an rpmProblem instance.

Parameters
probrpm problem
Returns
rpm problem

◆ rpmpsAppend()

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

◆ rpmpsAppendProblem()

void rpmpsAppendProblem ( rpmps  ps,
rpmProblem  prob 
)

Append a problem to current set of problems.

Parameters
psproblem set
probrpmProblem

◆ rpmpsCreate()

rpmps rpmpsCreate ( void  )

Create a problem set.

Returns
new problem set

◆ rpmpsFree()

rpmps rpmpsFree ( rpmps  ps)

Destroy a problem set.

Parameters
psproblem set
Returns
NULL always

Referenced by checkSpec().

◆ rpmpsFreeIterator()

rpmpsi rpmpsFreeIterator ( rpmpsi  psi)

Destroy problem set iterator.

Parameters
psiproblem set iterator
Returns
problem set iterator (NULL)

◆ rpmpsGetProblem()

rpmProblem rpmpsGetProblem ( rpmpsi  psi)

Return current problem from problem set.

Parameters
psiproblem set iterator
Returns
current rpmProblem

◆ rpmpsInitIterator()

rpmpsi rpmpsInitIterator ( rpmps  ps)

Initialize problem set iterator.

Parameters
psproblem set
Returns
problem set iterator

◆ rpmpsLink()

rpmps rpmpsLink ( rpmps  ps,
const char *  msg 
)

Reference a problem set instance.

Parameters
pstransaction set
msg
Returns
new transaction set reference

◆ rpmpsNextIterator()

int rpmpsNextIterator ( rpmpsi  psi)

Return next problem set iterator index.

Parameters
psiproblem set iterator
Returns
iterator index, -1 on termination

◆ rpmpsNumProblems()

int rpmpsNumProblems ( rpmps  ps)

Return number of problems in set.

Parameters
psproblem set
Returns
number of problems

Referenced by checkSpec().

◆ rpmpsPrint()

void rpmpsPrint ( FILE *  fp,
rpmps  ps 
)

Print problems to file handle.

Parameters
fpfile handle (NULL uses stderr)
psproblem set

Referenced by checkSpec().

◆ rpmpsTrim()

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

◆ rpmpsUnlink()

rpmps rpmpsUnlink ( rpmps  ps,
const char *  msg 
)

Unreference a problem set instance.

Parameters
psproblem set
msg
Returns
problem set

Variable Documentation

◆ _rpmps_debug

int _rpmps_debug