lib/rpmds.h File Reference

Structure(s) used for dependency tag sets. More...

#include "rpmps.h"

Go to the source code of this file.

Defines

#define rpmdsUnlink(_ds, _msg)   XrpmdsUnlink(_ds, _msg, __FILE__, __LINE__)
#define rpmdsLink(_ds, _msg)   XrpmdsLink(_ds, _msg, __FILE__, __LINE__)

Functions

rpmds rpmdsUnlink (rpmds ds, const char *msg)
 Unreference a dependency set instance.
rpmds XrpmdsUnlink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds rpmdsLink (rpmds ds, const char *msg)
 Reference a dependency set instance.
rpmds XrpmdsLink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds rpmdsFree (rpmds ds)
 Destroy a dependency set.
rpmds rpmdsNew (Header h, rpmTag tagN, int flags)
 Create and load a dependency set.
char * rpmdsNewDNEVR (const char *dspfx, const rpmds ds)
 Return new formatted dependency string.
rpmds rpmdsThis (Header h, rpmTag tagN, int_32 Flags)
 Create, load and initialize a dependency for this header.
rpmds rpmdsSingle (rpmTag tagN, const char *N, const char *EVR, int_32 Flags)
 Create, load and initialize a dependency set of size 1.
int rpmdsCount (const rpmds ds)
 Return dependency set count.
int rpmdsIx (const rpmds ds)
 Return dependency set index.
int rpmdsSetIx (rpmds ds, int ix)
 Set dependency set index.
const char * rpmdsDNEVR (const rpmds ds)
 Return current formatted dependency string.
const char * rpmdsN (const rpmds ds)
 Return current dependency name.
const char * rpmdsEVR (const rpmds ds)
 Return current dependency epoch-version-release.
int_32 rpmdsFlags (const rpmds ds)
 Return current dependency flags.
rpmTag rpmdsTagN (const rpmds ds)
 Return current dependency type.
time_t rpmdsBT (const rpmds ds)
 Return dependency build time.
time_t rpmdsSetBT (const rpmds ds, time_t BT)
 Set dependency build time.
int rpmdsNoPromote (const rpmds ds)
 Return current "Don't promote Epoch:" flag.
int rpmdsSetNoPromote (rpmds ds, int nopromote)
 Set "Don't promote Epoch:" flag.
uint_32 rpmdsColor (const rpmds ds)
 Return current dependency color.
uint_32 rpmdsSetColor (const rpmds ds, uint_32 color)
 Return current dependency color.
int_32 rpmdsRefs (const rpmds ds)
 Return current dependency file refs.
int_32 rpmdsSetRefs (const rpmds ds, int_32 refs)
 Return current dependency color.
void rpmdsNotify (rpmds ds, const char *where, int rc)
 Notify of results of dependency match.
int rpmdsNext (rpmds ds)
 Return next dependency set iterator index.
rpmds rpmdsInit (rpmds ds)
 Initialize dependency set iterator.
int rpmdsFind (rpmds ds, const rpmds ods)
 Find a dependency set element using binary search.
int rpmdsMerge (rpmds *dsp, rpmds ods)
 Merge a dependency set maintaining (N,EVR,Flags) sorted order.
int rpmdsCompare (const rpmds A, const rpmds B)
 Compare two versioned dependency ranges, looking for overlap.
void rpmdsProblem (rpmps ps, const char *pkgNEVR, const rpmds ds, const fnpyKey *suggestedKeys, int adding)
 Report a Requires: or Conflicts: dependency problem.
int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package provides dependencies from header with a single dependency.
int rpmdsNVRMatchesDep (const Header h, const rpmds req, int nopromote)
 Compare package name-version-release from header with a single dependency.

Variables

int _rpmds_debug
int _rpmds_nopromote


Detailed Description

Structure(s) used for dependency tag sets.

Definition in file rpmds.h.


Define Documentation

#define rpmdsLink ( _ds,
_msg   )     XrpmdsLink(_ds, _msg, __FILE__, __LINE__)

Definition at line 98 of file rpmds.h.

Referenced by rpmalAdd(), rpmdsDup(), rpmdsFilter(), rpmdsNew(), rpmdsSingle(), rpmdsThis(), rpmte_DS(), and rpmtsAddInstallElement().

#define rpmdsUnlink ( _ds,
_msg   )     XrpmdsUnlink(_ds, _msg, __FILE__, __LINE__)

Definition at line 81 of file rpmds.h.

Referenced by rpmdsFree().


Function Documentation

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

Compare package provides dependencies from header with a single dependency.

Parameters:
h header
req dependency set
nopromote Don't promote Epoch: in comparison?
Returns:
1 if any dependency overlaps, 0 otherwise

Definition at line 1138 of file rpmds.c.

References rpmdsCompare(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), rpmdsSetNoPromote(), RPMSENSE_SENSEMASK, and RPMTAG_PROVIDENAME.

Referenced by handleOneTrigger(), rpmtsAddInstallElement(), rpmtsSolve(), and unsatisfiedDepend().

time_t rpmdsBT ( const rpmds  ds  ) 

Return dependency build time.

Parameters:
ds dependency set
Returns:
dependency build time, 0 on invalid

Definition at line 635 of file rpmds.c.

Referenced by rpmds_BT().

uint_32 rpmdsColor ( const rpmds  ds  ) 

Return current dependency color.

Parameters:
ds dependency set
Returns:
current dependency color

Definition at line 673 of file rpmds.c.

Referenced by checkPackageDeps(), rpmalAddProvides(), rpmds_Color(), and rpmtsAddInstallElement().

int rpmdsCompare ( const rpmds  A,
const rpmds  B 
)

Compare two versioned dependency ranges, looking for overlap.

Parameters:
A 1st dependency
B 2nd dependency
Returns:
1 if dependencies overlap, 0 otherwise

Definition at line 1018 of file rpmds.c.

References _, _free(), _noisy_range_comparison_debug_message, _rpmds_unspecified_epoch_noise, parseEVR(), RPMMESS_DEBUG, RPMMESS_WARNING, rpmMessage, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, rpmvercmp(), and xstrdup().

Referenced by ftsStashLatest(), rpmalAllSatisfiesDepend(), rpmCheckRpmlibProvides(), rpmds_richcompare(), rpmdsAnyMatchesDep(), rpmdsNVRMatchesDep(), and rpmtsAddInstallElement().

int rpmdsCount ( const rpmds  ds  ) 

Return dependency set count.

Parameters:
ds dependency set
Returns:
current count

Definition at line 553 of file rpmds.c.

Referenced by rpmalMakeIndex(), rpmds_Count(), rpmds_length(), rpmdsFilter(), rpmfcGenerateDepends(), rpmfcPrint(), and rpmteColorDS().

const char* rpmdsDNEVR ( const rpmds  ds  ) 

Return current formatted dependency string.

Parameters:
ds dependency set
Returns:
current dependency DNEVR, NULL on invalid

Definition at line 574 of file rpmds.c.

Referenced by printDeps(), rpmds_DNEVR(), rpmds_print(), rpmds_subscript(), rpmdsPrint(), rpmdsProblem(), rpmfcPrint(), rpmfiBuildFDeps(), rpmShowRpmlibProvides(), rpmts_SolveCallback(), rpmtsAddInstallElement(), and unsatisfiedDepend().

const char* rpmdsEVR ( const rpmds  ds  ) 

Return current dependency epoch-version-release.

Parameters:
ds dependency set
Returns:
current dependency EVR, NULL on invalid

Definition at line 600 of file rpmds.c.

Referenced by rpmds_compare(), rpmds_EVR(), rpmds_iternext(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmts_SolveCallback(), and rpmtsAddInstallElement().

int rpmdsFind ( rpmds  ds,
const rpmds  ods 
)

Find a dependency set element using binary search.

Parameters:
ds dependency set to search
ods dependency set element to find.
Returns:
dependency index (or -1 if not found)

Definition at line 857 of file rpmds.c.

Referenced by rpmds_Find(), rpmdsMerge(), and rpmfcApply().

int_32 rpmdsFlags ( const rpmds  ds  ) 

Return current dependency flags.

Parameters:
ds dependency set
Returns:
current dependency flags, 0 on invalid

Definition at line 613 of file rpmds.c.

Referenced by handleOneTrigger(), printDeps(), rpmds_Flags(), rpmds_iternext(), rpmfcFileDep(), rpmts_SolveCallback(), rpmtsOrder(), unsatisfiedDepend(), and zapRelation().

rpmds rpmdsFree ( rpmds  ds  ) 

Destroy a dependency set.

Parameters:
ds dependency set
Returns:
NULL always

Definition at line 54 of file rpmds.c.

References _free(), _rpmds_debug, headerFree(), headerFreeData(), rpmdsUnlink, RPMTAG_CONFLICTFLAGS, RPMTAG_CONFLICTNAME, RPMTAG_CONFLICTVERSION, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERNAME, and RPMTAG_TRIGGERVERSION.

Referenced by checkPackageSet(), ensureOlder(), freeItem(), freePackage(), ftsStashLatest(), handleOneTrigger(), printDeps(), rpmalFree(), rpmCheckRpmlibProvides(), rpmds_dealloc(), rpmds_free(), rpmdsAnyMatchesDep(), rpmdsFilter(), rpmdsNVRMatchesDep(), rpmfcApply(), rpmfcELF(), rpmfcFree(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcSCRIPT(), rpmfcSYMLINK(), rpmfiBuildFDeps(), rpmInstall(), rpmShowRpmlibProvides(), rpmteCleanDS(), rpmtsAddAvailableElement(), and rpmtsAddInstallElement().

rpmds rpmdsInit ( rpmds  ds  ) 

Initialize dependency set iterator.

Parameters:
ds dependency set
Returns:
dependency set

Definition at line 771 of file rpmds.c.

Referenced by checkPackageDeps(), handleOneTrigger(), printDeps(), rpmalAddProvides(), rpmds_iternext(), rpmds_print(), rpmdsAnyMatchesDep(), rpmdsFilter(), rpmdsMerge(), rpmdsPrint(), rpmteColorDS(), rpmtsAddInstallElement(), rpmtsCheck(), and rpmtsOrder().

int rpmdsIx ( const rpmds  ds  ) 

Return dependency set index.

Parameters:
ds dependency set
Returns:
current index

Definition at line 558 of file rpmds.c.

Referenced by addRelation(), rpmalAddProvides(), rpmds_Find(), and rpmds_Ix().

rpmds rpmdsLink ( rpmds  ds,
const char *  msg 
)

Reference a dependency set instance.

Parameters:
ds dependency set
msg 
Returns:
new dependency set reference

int rpmdsMerge ( rpmds dsp,
rpmds  ods 
)

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

Return values:
*dsp (merged) dependency set
Parameters:
ods dependency set to merge
Returns:
(merged) dependency index

Definition at line 889 of file rpmds.c.

References _free(), rpmdsDup(), rpmdsDupArgv(), rpmdsFind(), rpmdsInit(), rpmdsNext(), save, and xmalloc().

Referenced by rpmds_Merge(), rpmfcELF(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcSCRIPT(), and rpmfcSYMLINK().

const char* rpmdsN ( const rpmds  ds  ) 

Return current dependency name.

Parameters:
ds dependency set
Returns:
current dependency name, NULL on invalid

Definition at line 587 of file rpmds.c.

Referenced by addRelation(), checkPackageDeps(), cmpItem(), handleOneTrigger(), rpmalAddProvides(), rpmalAllFileSatisfiesDepend(), rpmalAllSatisfiesDepend(), rpmds_iternext(), rpmds_N(), rpmdsFilter(), rpmdsProblem(), rpmfcFileDep(), rpmfcGenerateDepends(), rpmts_SolveCallback(), rpmtsAddInstallElement(), rpmtsCheck(), rpmtsSolve(), and unsatisfiedDepend().

rpmds rpmdsNew ( Header  h,
rpmTag  tagN,
int  flags 
)

Create and load a dependency set.

Deprecated:
Only scareMem = 0 will be permitted.
Parameters:
h header
tagN type of dependency
flags scareMem(0x1), nofilter(0x2)
Returns:
new dependency set

Definition at line 282 of file rpmds.c.

References _rpmds_debug, _rpmds_nopromote, beehiveToken, headerGetEntry(), headerGetEntryMinMemory(), headerLink(), RPM_INT32_TYPE, rpmdsFilter(), rpmdsLink, RPMTAG_BUILDTIME, RPMTAG_CONFLICTFLAGS, RPMTAG_CONFLICTNAME, RPMTAG_CONFLICTVERSION, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERNAME, RPMTAG_TRIGGERVERSION, xcalloc(), and xmalloc().

Referenced by addTE(), checkPackageSet(), handleOneTrigger(), hdr_dsFromHeader(), printDeps(), rpmds_init(), rpmdsAnyMatchesDep(), rpmfcGenerateDepends(), rpmfiBuildFDeps(), and rpmtsAddAvailableElement().

char* rpmdsNewDNEVR ( const char *  dspfx,
const rpmds  ds 
)

Return new formatted dependency string.

Parameters:
dspfx formatted dependency string prefix
ds dependency set
Returns:
new formatted dependency (malloc'ed)

Definition at line 373 of file rpmds.c.

References RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, stpcpy(), and xmalloc().

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

int rpmdsNext ( rpmds  ds  ) 

Return next dependency set iterator index.

Parameters:
ds dependency set
Returns:
dependency set iterator index, -1 on termination

Definition at line 742 of file rpmds.c.

References _free(), _rpmds_debug, and rpmdsNewDNEVR().

Referenced by checkPackageDeps(), handleOneTrigger(), printDeps(), rpmalAddProvides(), rpmalAllSatisfiesDepend(), rpmds_iternext(), rpmds_print(), rpmds_subscript(), rpmdsAnyMatchesDep(), rpmdsFilter(), rpmdsMerge(), rpmdsPrint(), rpmfcPrint(), rpmfiBuildFDeps(), rpmteColorDS(), rpmtsAddInstallElement(), rpmtsCheck(), and rpmtsOrder().

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:
ds dependency set
Returns:
current "Don't promote Epoch:" flag

Definition at line 653 of file rpmds.c.

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

Notify of results of dependency match.

Parameters:
ds dependency set
where where dependency was resolved (or NULL)
rc 0 == YES, otherwise NO

Definition at line 729 of file rpmds.c.

References _, RPMMESS_DEBUG, and rpmMessage.

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

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

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

Parameters:
h header
req dependency set
nopromote Don't promote Epoch: in comparison?
Returns:
1 if dependency overlaps, 0 otherwise

Definition at line 1193 of file rpmds.c.

References alloca(), headerGetEntryMinMemory(), headerNVR(), rpmdsCompare(), rpmdsFree(), rpmdsSetNoPromote(), rpmdsSingle(), RPMSENSE_EQUAL, RPMSENSE_SENSEMASK, RPMTAG_EPOCH, RPMTAG_PROVIDENAME, and stpcpy().

Referenced by ensureOlder().

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

Report a Requires: or Conflicts: dependency problem.

Parameters:
ps transaction set problems
pkgNEVR package name/epoch/version/release
ds dependency set
suggestedKeys filename or python object address
adding dependency problem is from added package set?

Definition at line 1108 of file rpmds.c.

References _, rpmdsDNEVR(), rpmdsEVR(), rpmdsN(), RPMMESS_DEBUG, rpmMessage, RPMPROB_CONFLICT, RPMPROB_REQUIRES, and rpmpsAppend().

Referenced by checkPackageDeps().

int_32 rpmdsRefs ( const rpmds  ds  ) 

Return current dependency file refs.

Parameters:
ds dependency set
Returns:
current dependency file refs, -1 on global

Definition at line 701 of file rpmds.c.

Referenced by rpmds_Refs().

time_t rpmdsSetBT ( const rpmds  ds,
time_t  BT 
)

Set dependency build time.

Parameters:
ds dependency set
BT build time
Returns:
dependency build time, 0 on invalid

Definition at line 643 of file rpmds.c.

uint_32 rpmdsSetColor ( const rpmds  ds,
uint_32  color 
)

Return current dependency color.

Parameters:
ds dependency set
color new dependency color
Returns:
previous dependency color

Definition at line 686 of file rpmds.c.

Referenced by rpmteColorDS().

int rpmdsSetIx ( rpmds  ds,
int  ix 
)

Set dependency set index.

Parameters:
ds dependency set
ix new index
Returns:
current index

Definition at line 563 of file rpmds.c.

Referenced by rpmalAllSatisfiesDepend(), rpmds_Find(), rpmds_subscript(), rpmfcPrint(), rpmfiBuildFDeps(), and zapRelation().

int rpmdsSetNoPromote ( rpmds  ds,
int  nopromote 
)

Set "Don't promote Epoch:" flag.

Parameters:
ds dependency set
nopromote Should an unspecified Epoch: be treated as Epoch: 0?
Returns:
previous "Don't promote Epoch:" flag

Definition at line 662 of file rpmds.c.

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

int_32 rpmdsSetRefs ( const rpmds  ds,
int_32  refs 
)

Return current dependency color.

Parameters:
ds dependency set
refs new dependency refs
Returns:
previous dependency refs

Definition at line 714 of file rpmds.c.

Referenced by rpmteColorDS().

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

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

Parameters:
tagN type of dependency
N name
EVR epoch:version-release
Flags comparison flags
Returns:
new dependency set

Definition at line 501 of file rpmds.c.

References rpmdsLink, rpmdsNewDNEVR(), RPMTAG_CONFLICTNAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, xcalloc(), and xmalloc().

Referenced by ensureOlder(), rpmCheckRpmlibProvides(), rpmds_iternext(), rpmds_Single(), rpmdsNVRMatchesDep(), rpmfcApply(), rpmfcELF(), rpmfcGenerateDepends(), rpmfcHelper(), rpmfcSCRIPT(), rpmfcSYMLINK(), rpmInstall(), and rpmShowRpmlibProvides().

rpmTag rpmdsTagN ( const rpmds  ds  ) 

Return current dependency type.

Parameters:
ds dependency set
Returns:
current dependency type, 0 on invalid

Definition at line 626 of file rpmds.c.

Referenced by rpmds_iternext(), rpmds_TagN(), rpmfcFileDep(), rpmts_SolveCallback(), and rpmtsSolve().

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

Create, load and initialize a dependency for this header.

Parameters:
h header
tagN type of dependency
Flags comparison flags
Returns:
new dependency set

Definition at line 421 of file rpmds.c.

References headerGetEntryMinMemory(), headerNVR(), rpmdsLink, rpmdsNewDNEVR(), RPMTAG_CONFLICTNAME, RPMTAG_EPOCH, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, stpcpy(), xcalloc(), and xmalloc().

Referenced by addTE(), ftsStashLatest(), hdr_dsOfHeader(), parseSpec(), and rpmtsAddInstallElement().

rpmds rpmdsUnlink ( rpmds  ds,
const char *  msg 
)

Unreference a dependency set instance.

Parameters:
ds dependency set
msg 
Returns:
NULL always

rpmds XrpmdsLink ( rpmds  ds,
const char *  msg,
const char *  fn,
unsigned  ln 
)

Todo:
Remove debugging entry from the ABI.

Definition at line 41 of file rpmds.c.

References _rpmds_debug.

rpmds XrpmdsUnlink ( rpmds  ds,
const char *  msg,
const char *  fn,
unsigned  ln 
)

Todo:
Remove debugging entry from the ABI.

Definition at line 30 of file rpmds.c.

References _rpmds_debug.


Variable Documentation

int _rpmds_debug

Definition at line 20 of file rpmds.c.

int _rpmds_nopromote

Definition at line 23 of file rpmds.c.


Generated on Fri Oct 12 08:44:55 2007 for rpm by  doxygen 1.5.2