rpm  5.4.14
Files | Typedefs | Functions | Variables
RPM Dependency Set API (RPMDS)
Collaboration diagram for RPM Dependency Set API (RPMDS):

Files

file  rpmds.c
 
file  rpmds.h
 Structure(s) used for dependency tag sets.
 
file  rpmlib.h
 In Memoriam: Steve Taylor stayl.nosp@m.or@r.nosp@m.edhat.nosp@m..com was here, now he's not.
 
file  rpmevr.c
 
file  rpmds.c
 

Typedefs

typedef struct rpmds_s * rpmds
 Dependency tag sets from a header, so that a header can be discarded early. More...
 
typedef struct rpmPRCO_s * rpmPRCO
 Container for commonly extracted dependency set(s). More...
 

Functions

int dpkgEVRcmp (const char *a, const char *b)
 Segmented string compare. More...
 
int dpkgEVRparse (const char *evrstr, EVR_t evr)
 Split EVR string into epoch, version, and release components. More...
 
int dpkgEVRcompare (const EVR_t a, const EVR_t b)
 Compare EVR containers. More...
 
EVR_t rpmEVRnew (uint32_t Flags, int initialize)
 Create a new EVR container. More...
 
int rpmEVRcmp (const char *a, const char *b)
 Segmented string compare. More...
 
int rpmEVRparse (const char *evrstr, EVR_t evr)
 Split EVR string into epoch, version, and release components. More...
 
int rpmEVRcompare (const EVR_t a, const EVR_t b)
 Compare EVR containers for equality. More...
 
int rpmEVRoverlap (EVR_t a, EVR_t b)
 Compare EVR containers for overlap. More...
 
nsType rpmnsArch (const char *str)
 Is string a known arch suffix? More...
 
nsType rpmnsProbe (const char *s, size_t slen)
 Is string a known probe namespace? More...
 
nsType rpmnsClassify (const char *s, size_t slen)
 Classify a string as a dependency type. More...
 
int rpmnsParse (const char *str, rpmns ns)
 Expand and split NS(N).A string into namespace, name and arch components. More...
 

Variables

int _rpmds_debug
 
const char * _sysinfo_path
 
int _rpmds_nopromote
 
int(* rpmvercmp )(const char *a, const char *b)
 Segmented string compare vector. More...
 

RPMDS

rpmds rpmdsUnlink (rpmds ds, const char *msg)
 Unreference a dependency set instance. More...
 
rpmds rpmdsLink (rpmds ds, const char *msg)
 Reference a dependency set instance. More...
 
rpmds rpmdsFree (rpmds ds)
 Destroy a dependency set. More...
 
rpmds rpmdsNew (Header h, rpmTag tagN, int flags)
 Create and load a dependency set. More...
 
const char * rpmdsNewN (rpmds ds)
 Return N string, expanded if necessary. More...
 
char * rpmdsNewDNEVR (const char *dspfx, rpmds ds)
 Return new formatted dependency string. More...
 
rpmds rpmdsThis (Header h, rpmTag tagN, evrFlags Flags)
 Create, load and initialize a dependency for this header. More...
 
rpmds rpmdsSingle (rpmTag tagN, const char *N, const char *EVR, evrFlags Flags)
 Create, load and initialize a dependency set of size 1. More...
 
int rpmdsCount (const rpmds ds)
 Return dependency set count. More...
 
int rpmdsIx (const rpmds ds)
 Return dependency set index. More...
 
int rpmdsSetIx (rpmds ds, int ix)
 Set dependency set index. More...
 
const char * rpmdsDNEVR (const rpmds ds)
 Return current formatted dependency string. More...
 
const char * rpmdsN (rpmds ds)
 Return current dependency name. More...
 
const char * rpmdsEVR (const rpmds ds)
 Return current dependency epoch-version-release. More...
 
evrFlags rpmdsFlags (const rpmds ds)
 Return current dependency flags. More...
 
rpmTag rpmdsTagN (const rpmds ds)
 Return current dependency type. More...
 
const char * rpmdsA (const rpmds ds)
 Return current dependency arch. More...
 
time_t rpmdsBT (const rpmds ds)
 Return dependency build time. More...
 
time_t rpmdsSetBT (const rpmds ds, time_t BT)
 Set dependency build time. More...
 
nsType rpmdsNSType (const rpmds ds)
 Return dependency class type. More...
 
int rpmdsNoPromote (const rpmds ds)
 Return current "Don't promote Epoch:" flag. More...
 
int rpmdsSetNoPromote (rpmds ds, int nopromote)
 Set "Don't promote Epoch:" flag. More...
 
voidrpmdsSetEVRparse (rpmds ds, int(*EVRparse)(const char *everstr, EVR_t evr))
 Set EVR parsing function. More...
 
voidrpmdsSetEVRcmp (rpmds ds, int(*EVRcmp)(const char *a, const char *b))
 Set EVR comparison function. More...
 
rpmuint32_t rpmdsColor (const rpmds ds)
 Return current dependency color. More...
 
rpmuint32_t rpmdsSetColor (const rpmds ds, rpmuint32_t color)
 Set current dependency color. More...
 
voidrpmdsExclude (const rpmds ds)
 Return dependency exclude patterns. More...
 
int rpmdsNExclude (const rpmds ds)
 Return no. More...
 
voidrpmdsInclude (const rpmds ds)
 Return dependency include patterns. More...
 
int rpmdsNInclude (const rpmds ds)
 Return no. More...
 
rpmuint32_t rpmdsRefs (const rpmds ds)
 Return current dependency file refs. More...
 
rpmuint32_t rpmdsSetRefs (const rpmds ds, rpmuint32_t refs)
 Set current dependency file refs. More...
 
rpmint32_t rpmdsResult (const rpmds ds)
 Return current dependency comparison result. More...
 
rpmint32_t rpmdsSetResult (const rpmds ds, rpmint32_t result)
 Set current dependency comparison result. More...
 
void rpmdsNotify (rpmds ds, const char *where, int rc)
 Notify of results of dependency match. More...
 
int rpmdsNext (rpmds ds)
 Return next dependency set iterator index. More...
 
rpmds rpmdsInit (rpmds ds)
 Initialize dependency set iterator. More...
 
int rpmdsFind (rpmds ds, const rpmds ods)
 Find a dependency set element using binary search. More...
 
int rpmdsMerge (rpmds *dsp, rpmds ods)
 Merge a dependency set maintaining (N,EVR,Flags) sorted order. More...
 
int rpmdsSearch (rpmds ds, rpmds ods)
 Search a sorted dependency set for an element that overlaps. More...
 
int rpmdsCpuinfo (rpmds *dsp, const char *fn)
 Load /proc/cpuinfo provides into a dependency set. More...
 
int rpmdsRpmlib (rpmds *dsp, void *tblp)
 Load rpmlib provides into a dependency set. More...
 
int rpmdsSysinfo (rpmPRCO PRCO, const char *fn)
 Load sysinfo dependencies into a dependency set. More...
 
int rpmdsGetconf (rpmds *dsp, const char *path)
 Load getconf provides into a dependency set. More...
 
int rpmdsMergePRCO (void *context, rpmds ds)
 Merge provides/requires/conflicts/obsoletes dependencies. More...
 
rpmPRCO rpmdsFreePRCO (rpmPRCO PRCO)
 Free dependency set(s) container. More...
 
rpmPRCO rpmdsNewPRCO (Header h)
 Create dependency set(s) container. More...
 
rpmds rpmdsFromPRCO (rpmPRCO PRCO, rpmTag tagN)
 Retrieve a dependency set from container. More...
 
int rpmdsELF (const char *fn, int flags, int(*add)(void *context, rpmds ds), void *context)
 Extract ELF dependencies from a file. More...
 
int rpmdsLdconfig (rpmPRCO PRCO, const char *fn)
 Load /etc/ld.so.cache provides into a dependency set. More...
 
int rpmdsPipe (rpmds *dsp, rpmTag tagN, const char *cmd)
 Load provides from a pipe into a dependency set. More...
 
int rpmdsCompare (const rpmds A, const rpmds B)
 Compare two versioned dependency ranges, looking for overlap. More...
 
int rpmdsMatch (const rpmds A, rpmds B)
 Compare A against every member of B, looking for 1st match. More...
 
void rpmdsProblem (rpmps ps, const char *pkgNEVR, const rpmds ds, const fnpyKey *suggestedKeys, int adding)
 Report a Requires: or Conflicts: dependency problem. More...
 
int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package provides dependencies from header with a single dependency. More...
 
int rpmdsNVRMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package name-version-release from header with a single dependency. More...
 
int rpmdsNegateRC (const rpmds ds, int rc)
 Negate return code for negated comparisons. More...
 
const char * rpmdsType (const rpmds ds)
 Return current dependency type name. More...
 
static int rpmdsPrint (rpmds ds, FILE *fp)
 Print current dependency set contents. More...
 
static int rpmdsPrintResults (rpmds ds, FILE *fp)
 Print current dependency set results. More...
 
static int rpmdsPrintClosure (rpmds P, rpmds R, FILE *fp)
 Check Provides: against Requires: and print closure results. More...
 

Detailed Description

Typedef Documentation

typedef struct rpmds_s* rpmds

Dependency tag sets from a header, so that a header can be discarded early.

Definition at line 28 of file rpmtypes.h.

typedef struct rpmPRCO_s* rpmPRCO

Container for commonly extracted dependency set(s).

Definition at line 33 of file rpmtypes.h.

Function Documentation

int dpkgEVRcmp ( const char *  a,
const char *  b 
)

Segmented string compare.

Parameters
a1st string
b2nd string
Returns
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 33 of file rpmdpkg.c.

References dpkgEVRctype(), int, NULL, rc, and xisdigit().

Referenced by dpkgEVRcompare().

int dpkgEVRcompare ( const EVR_t  a,
const EVR_t  b 
)

Compare EVR containers.

Parameters
a1st EVR container
b2nd EVR container
Returns
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 66 of file rpmdpkg.c.

References dpkgEVRcmp().

int dpkgEVRparse ( const char *  evrstr,
EVR_t  evr 
)

Split EVR string into epoch, version, and release components.

Parameters
evrstr[epoch:]version[-release] string
Return values
*evrparse results
Returns
0 always

Definition at line 61 of file rpmdpkg.c.

References rpmEVRparse().

const char* rpmdsA ( const rpmds  ds)

Return current dependency arch.

Parameters
dsdependency set
Returns
current dependency arch, NULL on invalid

Definition at line 711 of file rpmds.c.

References A, and NULL.

int rpmdsAnyMatchesDep ( const Header  h,
const rpmds  req,
int  nopromote 
)

Compare package provides dependencies from header with a single dependency.

Parameters
hheader
reqdependency set
nopromoteDon't promote Epoch: in comparison?
Returns
1 if any dependency overlaps, 0 otherwise

Definition at line 4209 of file rpmds.c.

References assert(), exit, NULL, result, rpmdsCompare(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), rpmdsSetNoPromote(), RPMNS_TYPE_ARCH, RPMSENSE_SENSEMASK, RPMTAG_PROVIDENAME, and void.

Referenced by rpmtsAddObsoletes(), rpmtsSolve(), and unsatisfiedDepend().

time_t rpmdsBT ( const rpmds  ds)

Return dependency build time.

Parameters
dsdependency set
Returns
dependency build time, 0 on invalid

Definition at line 720 of file rpmds.c.

References NULL.

Referenced by rpmds_BT_get(), and rpmds_BT_set().

rpmuint32_t rpmdsColor ( const rpmds  ds)

Return current dependency color.

Parameters
dsdependency set
Returns
current dependency color (0 if not set)

Definition at line 789 of file rpmds.c.

References NULL.

Referenced by checkPackageDeps(), rpmalAddProvides(), rpmds_Color_get(), rpmds_Color_set(), and rpmtsAddObsoletes().

int rpmdsCompare ( const rpmds  A,
const rpmds  B 
)

Compare two versioned dependency ranges, looking for overlap.

Parameters
A1st dependency
B2nd dependency
Returns
1 if dependencies overlap, 0 otherwise

Definition at line 4025 of file rpmds.c.

References _, _free(), alloca(), assert(), b, D_, exit, for(), int, ix, memset(), result, rpmdsEVRorder(), rpmdsFlags(), rpmdsNAcmp(), rpmEVRparse(), rpmlog(), RPMLOG_DEBUG, RPMLOG_WARNING, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_NOTEQUAL, RPMSENSE_SENSEMASK, rpmvercmp, s, strcmp(), xstrdup(), and xx.

Referenced by cacheStashLatest(), rpmalAllSatisfiesDepend(), rpmdsAnyMatchesDep(), rpmdsMatch(), rpmdsNVRMatchesDep(), rpmdsSearch(), rpmHeadersIdentical(), rpmtsAddInstallElement(), and switch().

int rpmdsCount ( const rpmds  ds)

Return dependency set count.

Parameters
dsdependency set
Returns
current count

Definition at line 636 of file rpmds.c.

References NULL.

Referenced by main(), rpmalMakeIndex(), rpmds_Count_get(), rpmfcGenerateDepends(), rpmfcPrint(), and rpmteColorDS().

int rpmdsCpuinfo ( rpmds dsp,
const char *  fn 
)

Load /proc/cpuinfo provides into a dependency set.

Return values
*dsp(loaded) depedency set
Parameters
fnpath to file (NULL uses /proc/cpuinfo)
Returns
0 on success

Definition at line 1316 of file rpmds.c.

References _cpuinfo_path, _free(), _isspace, _PROC_CPUINFO, av, cpuinfo_s::done, exit, f, fe, g, ge, i, cpuinfo_s::name, NULL, rc, rpmdsCpuinfoCtagFlags(), rpmdsNSAdd(), rpmExpand(), rpmiobFree(), rpmiobSlurp(), RPMSENSE_EQUAL, strcmp(), t, xstrdup(), and xx.

Referenced by main(), rpmShowRC(), and unsatisfiedDepend().

const char* rpmdsDNEVR ( const rpmds  ds)

Return current formatted dependency string.

Parameters
dsdependency set
Returns
current dependency DNEVR, NULL on invalid

Definition at line 657 of file rpmds.c.

References NULL.

Referenced by missingokTag(), printDeps(), removeSillyDeps(), rpmdepPrint(), rpmds_DNEVR_get(), rpmdsPrint(), rpmdsPrintResults(), rpmdsProblem(), rpmfcPrint(), rpmfiBuildFDeps(), rpmShowRC(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), and unsatisfiedDepend().

int rpmdsELF ( const char *  fn,
int  flags,
int(*)(void *context, rpmds ds add,
void context 
)

Extract ELF dependencies from a file.

Parameters
fnfile name
flags1: skip provides 2: skip requires
*addadd(arg, ds) saves next provide/require elf dependency.
contextadd() callback context
Returns
0 on success

Extract ELF dependencies from a file.

Return values
tsoname dependency
Parameters
self string (NULL uses "")
isElf64is this an ELF64 symbol?

Definition at line 2935 of file rpmds.c.

References _free(), assert(), buf, ds, DT_GNU_HASH, exit, fdno, fn, fprintf(), i, int, memchr(), name, NULL, offset, rpmdsFree(), rpmdsSingle(), RPMELF_FLAG_SKIPPROVIDES, RPMELF_FLAG_SKIPREQUIRES, rpmExpandNumeric(), RPMSENSE_EQUAL, RPMTAG_PROVIDENAME, RPMTAG_PROVIDES, RPMTAG_REQUIRENAME, s, st, stpcpy(), strcmp(), t, unsigned, void, xstrdup(), and xx.

Referenced by main(), rpmdsLdconfig(), rpmfcELF(), and unsatisfiedDepend().

const char* rpmdsEVR ( const rpmds  ds)

Return current dependency epoch-version-release.

Parameters
dsdependency set
Returns
current dependency EVR, NULL on invalid

Definition at line 680 of file rpmds.c.

References EVR, and NULL.

Referenced by _rpmtsCheck(), rpmds_EVR_get(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmfcHelper(), rpmtsAddObsoletes(), rpmtsSolve(), runImmedTriggers(), and unsatisfiedDepend().

void* rpmdsExclude ( const rpmds  ds)

Return dependency exclude patterns.

Parameters
dsdependency set
Returns
dependency exclude patterns (NULL if not set)

Definition at line 819 of file rpmds.c.

References NULL.

int rpmdsFind ( rpmds  ds,
const rpmds  ods 
)

Find a dependency set element using binary search.

Parameters
dsdependency set to search
odsdependency set element to find.
Returns
dependency index (or -1 if not found)

Definition at line 998 of file rpmds.c.

References NULL, and strcmp().

Referenced by rpmdsMerge(), and rpmfcApply().

evrFlags rpmdsFlags ( const rpmds  ds)

Return current dependency flags.

Parameters
dsdependency set
Returns
current dependency flags, 0 on invalid

Definition at line 691 of file rpmds.c.

References Flags, and NULL.

Referenced by handleOneTrigger(), missingokTag(), printDeps(), rpmds_Flags_get(), rpmdsAnyMatchesDep(), rpmdsCompare(), rpmdsNVRMatchesDep(), rpmfcFileDep(), rpmfcHelper(), rpmtsSolve(), runImmedTriggers(), and unsatisfiedDepend().

rpmds rpmdsFree ( rpmds  ds)
rpmPRCO rpmdsFreePRCO ( rpmPRCO  PRCO)

Free dependency set(s) container.

Parameters
PRCOdependency set(s) container
Returns
NULL

Definition at line 2841 of file rpmds.c.

References _free(), memset(), NULL, rpmdsFree(), and void.

Referenced by main(), rpmShowRC(), rpmteCleanDS(), rpmtsFini(), and unsatisfiedDepend().

rpmds rpmdsFromPRCO ( rpmPRCO  PRCO,
rpmTag  tagN 
)

Retrieve a dependency set from container.

Parameters
PRCOdependency set(s) container
tagNtype of dependency set
Returns
dependency set (or NULL)

Definition at line 2891 of file rpmds.c.

References NULL, RPMTAG_CONFLICTNAME, RPMTAG_DIRNAMES, RPMTAG_FILELINKTOS, RPMTAG_NAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and RPMTAG_TRIGGERNAME.

Referenced by _rpmtsCheck(), main(), rpmShowRC(), rpmteDS(), and unsatisfiedDepend().

int rpmdsGetconf ( rpmds dsp,
const char *  path 
)

Load getconf provides into a dependency set.

Return values
*dsp(loaded) depedency set
Parameters
pathgetconf path (NULL uses /)
Returns
0 on success

Referenced by main(), rpmShowRC(), and unsatisfiedDepend().

void* rpmdsInclude ( const rpmds  ds)

Return dependency include patterns.

Parameters
dsdependency set
Returns
dependency include patterns (NULL if not set)

Definition at line 829 of file rpmds.c.

References NULL.

rpmds rpmdsInit ( rpmds  ds)
int rpmdsIx ( const rpmds  ds)

Return dependency set index.

Parameters
dsdependency set
Returns
current index

Definition at line 641 of file rpmds.c.

References NULL.

Referenced by rpmalAddProvides(), rpmalAllSatisfiesDepend(), rpmdepPrint(), rpmds_Ix_get(), rpmds_Ix_set(), rpmdsPrint(), rpmdsPrintResults(), and rpmdsSearch().

int rpmdsLdconfig ( rpmPRCO  PRCO,
const char *  fn 
)

Load /etc/ld.so.cache provides into a dependency set.

Todo:
Add dependency colors, and attach to file.
Return values
*PRCOprovides/requires/conflicts/obsoletes depedency set(s)
Parameters
fncache file name (NULL uses /etc/ld.so.cache)
Returns
0 on success

Definition at line 3491 of file rpmds.c.

References _free(), _isspace, _LD_SO_CACHE, _ldconfig_cache, _SBIN_LDCONFIG_P, ds, EVR, exit, f, fe, fprintf(), g, ge, N, NULL, pclose(), rc, rpmdsELF(), rpmdsFree(), rpmdsMerge(), rpmdsMergePRCO(), rpmdsSingle(), rpmExpand(), RPMTAG_PROVIDENAME, t, void, xstrdup(), and xx.

Referenced by main().

rpmds rpmdsLink ( rpmds  ds,
const char *  msg 
)

Reference a dependency set instance.

Parameters
dsdependency set
msg
Returns
new dependency set reference

Referenced by handleOneTrigger(), main(), rpmalAdd(), rpmdsDup(), rpmdsNew(), rpmdsSingle(), rpmdsThis(), rpmShowRC(), rpmtsAddObsoletes(), and runImmedTriggers().

int rpmdsMatch ( const rpmds  A,
rpmds  B 
)

Compare A against every member of B, looking for 1st match.

Parameters
A1st dependency
B2nd dependency
Returns
1 if some dependency overlaps, 0 otherwise

Definition at line 4169 of file rpmds.c.

References result, rpmdsCompare(), rpmdsInit(), and rpmdsNext().

Referenced by handleOneTrigger(), and removeSillyDeps().

int rpmdsMerge ( rpmds dsp,
rpmds  ods 
)

Merge a dependency set maintaining (N,EVR,Flags) sorted order.

Return values
*dsp(merged) dependency set
Parameters
odsdependency set to merge
Returns
0 on success

Definition at line 1030 of file rpmds.c.

References _free(), assert(), ds, EVR, Flags, j, N, NULL, rpmdsDup(), rpmdsDupArgv(), rpmdsFind(), rpmdsInit(), rpmdsNext(), and xmalloc.

Referenced by rpmdsLdconfig(), rpmdsMergePRCO(), rpmdsNSAdd(), rpmdsPipe(), rpmdsRpmlib(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().

int rpmdsMergePRCO ( void context,
rpmds  ds 
)

Merge provides/requires/conflicts/obsoletes dependencies.

Parameters
contextmerge dependency set(s) container
dsdependency set to merge
Returns
0 on success

Definition at line 2804 of file rpmds.c.

References fprintf(), PRCO, rc, rpmdsMerge(), rpmdsTagN(), rpmdsTagName(), RPMTAG_CONFLICTNAME, RPMTAG_DIRNAMES, RPMTAG_FILELINKTOS, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and RPMTAG_TRIGGERNAME.

Referenced by main(), rpmdsLdconfig(), rpmdsSysinfoFile(), and unsatisfiedDepend().

const char* rpmdsN ( rpmds  ds)

Return current dependency name.

Parameters
dsdependency set
Returns
current dependency name, NULL on invalid

Definition at line 668 of file rpmds.c.

References N, NULL, and rpmdsNewN().

Referenced by _rpmtsCheck(), checkPackageDeps(), cmpItem(), handleOneTrigger(), rpmalAllFileSatisfiesDepend(), rpmalAllSatisfiesDepend(), rpmds_N_get(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmtsAddObsoletes(), rpmtsSolve(), runImmedTriggers(), runTriggersLoop(), and unsatisfiedDepend().

int rpmdsNegateRC ( const rpmds  ds,
int  rc 
)

Negate return code for negated comparisons.

Parameters
dsdependency set
rcpositive return code
Returns
return code

Definition at line 4342 of file rpmds.c.

References rc.

Referenced by _rpmtsCheck(), handleOneTrigger(), and unsatisfiedDepend().

rpmds rpmdsNew ( Header  h,
rpmTag  tagN,
int  flags 
)
char* rpmdsNewDNEVR ( const char *  dspfx,
rpmds  ds 
)

Return new formatted dependency string.

Parameters
dspfxformatted dependency string prefix
dsdependency set
Returns
new formatted dependency (malloc'ed)

Definition at line 434 of file rpmds.c.

References _rpmns_N_at_A, A, N, nb, NS, NULL, rpmdsNewN(), RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_NOTEQUAL, RPMSENSE_SENSEMASK, stpcpy(), t, tbuf, and xmalloc.

Referenced by rpmdsNext(), rpmdsSingle(), and rpmdsThis().

const char* rpmdsNewN ( rpmds  ds)

Return N string, expanded if necessary.

Parameters
dsdependency set
Returns
new N string (malloc'ed)

Definition at line 421 of file rpmds.c.

References ns, rpmnsParse(), and xx.

Referenced by rpmdsN(), and rpmdsNewDNEVR().

rpmPRCO rpmdsNewPRCO ( Header  h)

Create dependency set(s) container.

Parameters
hheader
Returns
0 on success

Definition at line 2866 of file rpmds.c.

References PRCO, rpmdsNew(), RPMTAG_CONFLICTNAME, RPMTAG_DIRNAMES, RPMTAG_FILELINKTOS, RPMTAG_NAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, and xcalloc().

Referenced by addTE(), main(), rpmShowRC(), rpmtsPRCO(), and unsatisfiedDepend().

int rpmdsNExclude ( const rpmds  ds)

Return no.

of dependency exclude patterns.

Parameters
dsdependency set
Returns
dependency exclude patterns (0 if not set)

Definition at line 824 of file rpmds.c.

References NULL.

int rpmdsNext ( rpmds  ds)
int rpmdsNInclude ( const rpmds  ds)

Return no.

of dependency include patterns.

Parameters
dsdependency set
Returns
dependency include patterns (0 if not set)

Definition at line 834 of file rpmds.c.

References NULL.

int rpmdsNoPromote ( const rpmds  ds)

Return current "Don't promote Epoch:" flag.

This flag controls for Epoch: promotion when a dependency set is compared. If the flag is set (for already installed packages), then an unspecified value will be treated as Epoch: 0. Otherwise (for added packages), the Epoch: portion of the comparison is skipped if the value is not specified, i.e. an unspecified Epoch: is assumed to be equal in dependency comparisons.

Parameters
dsdependency set
Returns
current "Don't promote Epoch:" flag

Definition at line 746 of file rpmds.c.

References NULL.

Referenced by rpmds_NoPromote_get(), and rpmds_NoPromote_set().

void rpmdsNotify ( rpmds  ds,
const char *  where,
int  rc 
)

Notify of results of dependency match.

Parameters
dsdependency set
wherewhere dependency was resolved (or NULL)
rc0 == YES, otherwise NO

Definition at line 899 of file rpmds.c.

References _, NULL, rpmdsTagName(), rpmlog(), RPMLOG_DEBUG, and strcmp().

Referenced by rpmalAllFileSatisfiesDepend(), rpmalAllSatisfiesDepend(), and unsatisfiedDepend().

nsType rpmdsNSType ( const rpmds  ds)

Return dependency class type.

Parameters
dsdependency set
Returns
dependency class type

Definition at line 738 of file rpmds.c.

References NULL, and RPMNS_TYPE_UNKNOWN.

Referenced by _rpmtsCheck(), checkPackageDeps(), and unsatisfiedDepend().

int rpmdsNVRMatchesDep ( const Header  h,
const rpmds  req,
int  nopromote 
)

Compare package name-version-release from header with a single dependency.

Parameters
hheader
reqdependency set
nopromoteDon't promote Epoch: in comparison?
Returns
1 if dependency overlaps, 0 otherwise

Definition at line 4262 of file rpmds.c.

References _free(), alloca(), assert(), exit, headerGet(), headerNEVRA(), memset(), nb, NULL, _HE_s::p, rpmDataType_u::ptr, result, rpmdsCompare(), rpmdsFlags(), rpmdsFree(), rpmdsSetNoPromote(), rpmdsSingle(), RPMSENSE_EQUAL, RPMSENSE_SENSEMASK, RPMTAG_DISTEPOCH, RPMTAG_EPOCH, RPMTAG_PROVIDENAME, sprintf(), stpcpy(), rpmDataType_u::str, t, _HE_s::tag, rpmDataType_u::ui32p, void, and xstrdup().

Referenced by ensureOlder().

int rpmdsPipe ( rpmds dsp,
rpmTag  tagN,
const char *  cmd 
)

Load provides from a pipe into a dependency set.

Return values
*dsp(loaded) depedency set
Parameters
tagNrpmds tag (0 uses RPMTAG_PROVIDENAME).
cmdpopen cmd to run (NULL loads perl provides)
Returns
0 on success

Definition at line 3839 of file rpmds.c.

References _, _free(), _isspace, _PERL_PROVIDES, _perldeps_cmd, buf, ds, EVR, exit, f, fe, fprintf(), g, ge, N, NULL, pclose(), rc, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmEVRflags(), rpmExpand(), RPMTAG_PROVIDENAME, void, xisalnum(), xstrdup(), and xx.

Referenced by main().

static int rpmdsPrint ( rpmds  ds,
FILE *  fp 
)
inlinestatic

Print current dependency set contents.

Parameters
dsdependency set
fpfile handle (NULL uses stderr)
Returns
0 always

Definition at line 764 of file rpmds.h.

References fprintf(), NULL, rpmdsDNEVR(), rpmdsInit(), rpmdsIx(), rpmdsNext(), and rpmdsType().

static int rpmdsPrintClosure ( rpmds  P,
rpmds  R,
FILE *  fp 
)
inlinestatic

Check Provides: against Requires: and print closure results.

Parameters
PProvides: dependency set
RRequires: dependency set
fpfile handle (NULL uses stderr)
Returns
0 always

Definition at line 808 of file rpmds.h.

References rc, rpmdsInit(), rpmdsNext(), rpmdsPrintResults(), rpmdsSearch(), rpmdsSetResult(), and void.

Referenced by main().

static int rpmdsPrintResults ( rpmds  ds,
FILE *  fp 
)
inlinestatic

Print current dependency set results.

Parameters
dsdependency set
fpfile handle (NULL uses stderr)
Returns
0 always

Definition at line 783 of file rpmds.h.

References fprintf(), NULL, rc, rpmdsDNEVR(), rpmdsInit(), rpmdsIx(), rpmdsNext(), rpmdsResult(), and rpmdsType().

Referenced by rpmdsPrintClosure().

void rpmdsProblem ( rpmps  ps,
const char *  pkgNEVR,
const rpmds  ds,
const fnpyKey suggestedKeys,
int  adding 
)

Report a Requires: or Conflicts: dependency problem.

Parameters
pstransaction set problems
pkgNEVRpackage name/epoch/version/release
dsdependency set
suggestedKeysfilename or python object address
addingdependency problem is from added package set?

Definition at line 4181 of file rpmds.c.

References D_, key, NULL, rpmdsDNEVR(), rpmdsEVR(), rpmdsN(), rpmlog(), RPMLOG_DEBUG, RPMPROB_CONFLICT, RPMPROB_REQUIRES, rpmpsAppend(), and type.

Referenced by checkPackageDeps().

rpmuint32_t rpmdsRefs ( const rpmds  ds)

Return current dependency file refs.

Parameters
dsdependency set
Returns
current dependency file refs (0 if not set)

Definition at line 839 of file rpmds.c.

References NULL.

rpmint32_t rpmdsResult ( const rpmds  ds)

Return current dependency comparison result.

Parameters
dsdependency set
Returns
current dependency result (0 if not set)

Definition at line 869 of file rpmds.c.

References NULL, and result.

Referenced by rpmdsPrintResults().

int rpmdsRpmlib ( rpmds dsp,
void tblp 
)

Load rpmlib provides into a dependency set.

Return values
*dsp(loaded) depedency set
Parameters
tblprpmlib provides table (NULL uses internal table)
Returns
0 on success

Definition at line 1577 of file rpmds.c.

References rpmlibProvides_s::featureEVR, rpmlibProvides_s::featureFlags, rpmlibProvides_s::featureName, NULL, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmlibProvides, RPMTAG_PROVIDENAME, void, and xx.

Referenced by main(), rpmds_new(), rpmShowRC(), and unsatisfiedDepend().

int rpmdsSearch ( rpmds  ds,
rpmds  ods 
)

Search a sorted dependency set for an element that overlaps.

A boolean result is saved (if allocated) and accessible through rpmdsResult(ods) afterwards.

Parameters
dsdependency set to search
odsdependency set element to find.
Returns
dependency index (or -1 if not found)

Definition at line 1108 of file rpmds.c.

References i, NULL, rpmdsCompare(), rpmdsIx(), rpmdsNext(), rpmdsSetIx(), rpmdsSetResult(), strcmp(), u, and void.

Referenced by rpmdsPrintClosure(), rpmfcHelper(), and unsatisfiedDepend().

time_t rpmdsSetBT ( const rpmds  ds,
time_t  BT 
)

Set dependency build time.

Parameters
dsdependency set
BTbuild time
Returns
dependency build time, 0 on invalid

Definition at line 728 of file rpmds.c.

References NULL.

Referenced by rpmds_BT_set().

rpmuint32_t rpmdsSetColor ( const rpmds  ds,
rpmuint32_t  color 
)

Set current dependency color.

Parameters
dsdependency set
colornew dependency color
Returns
previous dependency color

Definition at line 800 of file rpmds.c.

References NULL, and xcalloc().

Referenced by rpmds_Color_set(), and rpmteColorDS().

void* rpmdsSetEVRcmp ( rpmds  ds,
int(*)(const char *a, const char *b EVRcmp 
)

Set EVR comparison function.

Parameters
dsdependency set
EVRcmpEVR comparison function (NULL uses default)
Returns
previous EVR comparison function

Definition at line 778 of file rpmds.c.

References NULL.

void* rpmdsSetEVRparse ( rpmds  ds,
int(*)(const char *everstr, EVR_t evr)  EVRparse 
)

Set EVR parsing function.

Parameters
dsdependency set
EVRparseEVR parsing function (NULL uses default)
Returns
previous EVR parsing function
int rpmdsSetIx ( rpmds  ds,
int  ix 
)

Set dependency set index.

Parameters
dsdependency set
ixnew index
Returns
current index

Definition at line 646 of file rpmds.c.

References i, ix, and NULL.

Referenced by rpmalAllSatisfiesDepend(), rpmds_Ix_set(), rpmdsSearch(), rpmfcHelper(), rpmfcPrint(), and rpmfiBuildFDeps().

int rpmdsSetNoPromote ( rpmds  ds,
int  nopromote 
)

Set "Don't promote Epoch:" flag.

Parameters
dsdependency set
nopromoteShould an unspecified Epoch: be treated as Epoch: 0?
Returns
previous "Don't promote Epoch:" flag

Definition at line 755 of file rpmds.c.

References NULL.

Referenced by checkPackageSet(), handleOneTrigger(), rpmds_NoPromote_set(), rpmdsAnyMatchesDep(), and rpmdsNVRMatchesDep().

rpmuint32_t rpmdsSetRefs ( const rpmds  ds,
rpmuint32_t  refs 
)

Set current dependency file refs.

Parameters
dsdependency set
refsnew dependency refs
Returns
previous dependency refs

Definition at line 850 of file rpmds.c.

References NULL, and xcalloc().

Referenced by rpmteColorDS().

rpmint32_t rpmdsSetResult ( const rpmds  ds,
rpmint32_t  result 
)

Set current dependency comparison result.

Parameters
dsdependency set
resultnew dependency result
Returns
previous dependency result

Definition at line 880 of file rpmds.c.

References NULL, result, and xcalloc().

Referenced by rpmdsPrintClosure(), and rpmdsSearch().

rpmds rpmdsSingle ( rpmTag  tagN,
const char *  N,
const char *  EVR,
evrFlags  Flags 
)

Create, load and initialize a dependency set of size 1.

Parameters
tagNtype of dependency
Nname
EVRepoch:version-release
Flagscomparison/context flags
Returns
new dependency set

Definition at line 609 of file rpmds.c.

References ds, EVR, Flags, N, NULL, rpmdsGetPool(), rpmdsLink(), rpmdsNewDNEVR(), rpmdsTagName(), t, xcalloc(), and xmalloc.

Referenced by ensureOlder(), removeSillyDeps(), rpmds_Single(), rpmdsELF(), rpmdsLdconfig(), rpmdsNSAdd(), rpmdsNVRMatchesDep(), rpmdsPipe(), rpmdsRpmlib(), rpmdsSysinfoFile(), rpmfcApply(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcSCRIPT(), and unsatisfiedDepend().

int rpmdsSysinfo ( rpmPRCO  PRCO,
const char *  fn 
)

Load sysinfo dependencies into a dependency set.

Return values
*PRCOprovides/requires/conflicts/obsoletes depedency set(s)
Parameters
fnpath to file (NULL uses /etc/rpm/sysinfo)
Returns
0 on success

Definition at line 1746 of file rpmds.c.

References _ETC_RPM_SYSINFO, _free(), _sysinfo_path, alloca(), av, exit, fn, memset(), rc, rpmdsSysinfoFile(), rpmExpand(), rpmGetPath(), RPMTAG_PROVIDENAME, st, Stat(), tagValue(), xstrdup(), and xx.

Referenced by main(), rpmShowRC(), and rpmtsPRCO().

rpmTag rpmdsTagN ( const rpmds  ds)

Return current dependency type.

Parameters
dsdependency set
Returns
current dependency type, 0 on invalid

Definition at line 702 of file rpmds.c.

References NULL.

Referenced by rpmdsMergePRCO(), rpmdsType(), rpmfcFileDep(), rpmfcMergePR(), rpmtsSolve(), and unsatisfiedDepend().

rpmds rpmdsThis ( Header  h,
rpmTag  tagN,
evrFlags  Flags 
)

Create, load and initialize a dependency for this header.

Parameters
hheader
tagNtype of dependency
Flagscomparison flags
Returns
new dependency set

Definition at line 513 of file rpmds.c.

References _free(), alloca(), ds, EVR, Flags, headerGet(), headerNEVRA(), memset(), N, nb, NULL, _HE_s::p, rpmDataType_u::ptr, rpmdsGetPool(), rpmdsLink(), rpmdsNewDNEVR(), rpmdsTagName(), RPMTAG_ARCH, RPMTAG_BUILDTIME, RPMTAG_DISTEPOCH, RPMTAG_EPOCH, RPMTAG_NAME, RPMTAG_PROVIDENAME, sprintf(), stpcpy(), rpmDataType_u::str, t, _HE_s::tag, rpmDataType_u::ui32p, xmalloc, xstrdup(), and xx.

Referenced by cacheStashLatest(), hdr_dsOfHeader(), parseSpec(), rpmdsNew(), rpmHeadersIdentical(), and rpmtsAddInstallElement().

const char* rpmdsType ( const rpmds  ds)

Return current dependency type name.

Parameters
dsdependency set
Returns
current dependency type name

Definition at line 162 of file rpmds.c.

References rpmdsTagN(), and rpmdsTagName().

Referenced by rpmdepPrint(), rpmds_Type_get(), rpmdsPrint(), and rpmdsPrintResults().

rpmds rpmdsUnlink ( rpmds  ds,
const char *  msg 
)

Unreference a dependency set instance.

Parameters
dsdependency set
msg
Returns
NULL on last dereference
int rpmEVRcmp ( const char *  a,
const char *  b 
)

Segmented string compare.

Parameters
a1st string
b2nd string
Returns
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 87 of file rpmevr.c.

References _invert_digits_alphas_comparison, assert(), b, be, int, MAX, NULL, rc, xisdigit(), and xisrpmalpha().

int rpmEVRcompare ( const EVR_t  a,
const EVR_t  b 
)

Compare EVR containers for equality.

Parameters
a1st EVR container
b2nd EVR container
Returns
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 280 of file rpmevr.c.

References _, assert(), compare_values(), ix, NULL, rc, rpmEVRorder(), rpmlog(), RPMLOG_WARNING, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, and s.

Referenced by evrCompare(), labelCompare(), pointRpmEVR(), rpmEVRoverlap(), and rpmfcHelper().

EVR_t rpmEVRnew ( uint32_t  Flags,
int  initialize 
)

Create a new EVR container.

Parameters
FlagsEVR inequality flags
initializeShould empty defaults be initialized?
Returns
initialized EVR container

Definition at line 31 of file rpmevr.c.

References xcalloc().

Referenced by addReqProv(), evrCompare(), evrSplit(), labelCompare(), nwlookupTag(), PRCOsqlTag(), rpmfcHelper(), and wnlookupTag().

int rpmEVRoverlap ( EVR_t  a,
EVR_t  b 
)

Compare EVR containers for overlap.

Parameters
a1st EVR container
b2nd EVR container
Returns
1 if EVR inequalities overlap, 0 otherwise

Definition at line 339 of file rpmevr.c.

References NULL, result, rpmEVRcompare(), RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, and RPMSENSE_NOTEQUAL.

Referenced by addReqProv(), nwlookupTag(), and wnlookupTag().

int rpmEVRparse ( const char *  evrstr,
EVR_t  evr 
)

Split EVR string into epoch, version, and release components.

Parameters
evrstr[epoch:]version[-release] string
Return values
*evrparse results
Returns
0 always

Definition at line 181 of file rpmevr.c.

References assert(), i, ix, memset(), mireRegexec(), mireSetEOptions(), nb, NULL, rpmEVRmire(), te, xstrdup(), and xx.

Referenced by addReqProv(), dpkgEVRparse(), evrCompare(), evrSplit(), nwlookupTag(), parseRCPOT(), pointRpmEVR(), PRCOsqlTag(), rpmdsCompare(), rpmfcHelper(), and wnlookupTag().

nsType rpmnsArch ( const char *  str)

Is string a known arch suffix?

Parameters
strstring
Returns
RPMNS_TYPE_ARCH if known arch, else RPMNS_TYPE_UNKNOWN

Definition at line 70 of file rpmns.c.

References _free(), av, NULL, p, rc, rpmExpand(), RPMNS_TYPE_ARCH, RPMNS_TYPE_UNKNOWN, strcmp(), t, and xisspace().

Referenced by rpmnsClassify().

nsType rpmnsClassify ( const char *  s,
size_t  slen 
)

Classify a string as a dependency type.

Parameters
sstring like "bing(bang).boom"
slenstring length (0 uses strlen(s))
Returns
dependency type

Definition at line 197 of file rpmns.c.

References RPMNS_TYPE_ARCH, RPMNS_TYPE_COMPOUND, RPMNS_TYPE_DSO, RPMNS_TYPE_FUNCTION, RPMNS_TYPE_NAMESPACE, RPMNS_TYPE_PATH, RPMNS_TYPE_STRING, RPMNS_TYPE_UNKNOWN, RPMNS_TYPE_VERSION, rpmnsArch(), rpmnsProbe(), se, _rpmnsProbes_s::Type, and xisdigit().

Referenced by rpmnsParse().

int rpmnsParse ( const char *  str,
rpmns  ns 
)
nsType rpmnsProbe ( const char *  s,
size_t  slen 
)

Is string a known probe namespace?

Parameters
sstring
slenstring length (0 uses strlen(s))
Returns
nsType if known probe, else RPMNS_TYPE_UNKNOWN

Definition at line 170 of file rpmns.c.

References av, i, _rpmnsProbes_s::NS, _rpmnsProbes_s::NSlen, NULL, rc, RPMNS_TYPE_UNKNOWN, rpmnsProbes, rpmnsProbesCount, se, _rpmnsProbes_s::Type, and u.

Referenced by rpmnsClassify().

Variable Documentation

int _rpmds_debug

Definition at line 123 of file rpmds.c.

int _rpmds_nopromote

Definition at line 126 of file rpmds.c.

const char* _sysinfo_path

Definition at line 1731 of file rpmds.c.

Referenced by rpmdsSysinfo(), rpmnsClean(), and rpmShowRC().

int(* rpmvercmp)(const char *a, const char *b)

Segmented string compare vector.

Parameters
a1st string
b2nd string
Returns
+1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 379 of file rpmevr.c.

Referenced by compare_values(), rpmdsCompare(), and rpmVersionCompare().