Main Page Modules Data Structures File List Data Fields Globals Related Pages

# lib/rpmds.c File Reference

More...

`#include "system.h"`
`#include <rpmlib.h>`
`#include "rpmds.h"`
`#include "debug.h"`

Go to the source code of this file.

## Defines

#define | _RPMDS_INTERNAL

## Functions

rpmds | XrpmdsUnlink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds | XrpmdsLink (rpmds ds, const char *msg, const char *fn, unsigned ln)
rpmds | rpmdsFree (rpmds ds)
| Destroy a dependency set. More...
rpmds | rpmdsNew (Header h, rpmTag tagN, int scareMem)
| Create and load a dependency set. More...
char * | rpmdsNewDNEVR (const char *dspfx, const rpmds ds)
| Return new formatted dependency string. More...
rpmds | rpmdsThis (Header h, rpmTag tagN, int_32 Flags)
| Create, load and initialize a dependency for this header. More...
rpmds | rpmdsSingle (rpmTag tagN, const char *N, const char *EVR, int_32 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 (const rpmds ds)
| Return current dependency name. More...
const char * | rpmdsEVR (const rpmds ds)
| Return current dependency epoch-version-release. More...
int_32 | rpmdsFlags (const rpmds ds)
| Return current dependency flags. More...
rpmTag | rpmdsTagN (const rpmds ds)
| Return current dependency 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...
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...
void | parseEVR (char *evr, const char **ep, const char **vp, const char **rp)
| Split EVR into epoch, version, and release components. More...
int | rpmdsCompare (const rpmds A, const rpmds B)
| Compare two versioned dependency ranges, looking for overlap. 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...

## Variables

int | _noisy_range_comparison_debug_message = 0
| Enable noisy range comparison debugging message? More...
int | _rpmds_debug = 0
int | _rpmds_nopromote = 1
int | _rpmds_unspecified_epoch_noise = 0

## Detailed Description

Definition in file rpmds.c.

## Define Documentation

#define _RPMDS_INTERNAL

| Definition at line 8 of file rpmds.c.

## Function Documentation

void parseEVR | ( | char * | evr,
|  | const char ** | ep,
|  | const char ** | vp,
|  | const char ** | rp
| ) | `[static]`

Split EVR into epoch, version, and release components.

Parameters:

  evr | [epoch:]version[-release] string

Return values:

  ep | pointer to epoch
  vp | pointer to version
  rp | pointer to release

Definition at line 528 of file rpmds.c.

References xisdigit.

Referenced by rpmdsCompare.

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 683 of file rpmds.c.

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

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 572 of file rpmds.c.

References _, _free, _rpmds_unspecified_epoch_noise, parseEVR, rpmds, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, rpmvercmp, and xstrdup.

int rpmdsCount | ( | const rpmds | ds | ) |

Return dependency set count.

Parameters:

  ds | dependency set

Returns:
  current count

Definition at line 365 of file rpmds.c.

References rpmds.

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 386 of file rpmds.c.

References rpmds.

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 412 of file rpmds.c.

References rpmds.

int_32 rpmdsFlags | ( | const rpmds | ds | ) |

Return current dependency flags.

Parameters:

  ds | dependency set

Returns:
  current dependency flags, 0 on invalid

Definition at line 425 of file rpmds.c.

References int_32, and rpmds.

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, HFD_t, rpmds, rpmdsUnlink, rpmTag, 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.

rpmds rpmdsInit | ( | rpmds | ds | ) |

Initialize dependency set iterator.

Parameters:

  ds | dependency set

Returns:
  dependency set

Definition at line 510 of file rpmds.c.

References rpmds.

int rpmdsIx | ( | const rpmds | ds | ) |

Return dependency set index.

Parameters:

  ds | dependency set

Returns:
  current index

Definition at line 370 of file rpmds.c.

References rpmds.

const char* rpmdsN | ( | const rpmds | ds | ) |

Return current dependency name.

Parameters:

  ds | dependency set

Returns:
  current dependency name, NULL on invalid

Definition at line 399 of file rpmds.c.

References N, and rpmds.

rpmds rpmdsNew | ( | Header | h,
|  | rpmTag | tagN,
|  | int | scareMem
| ) |

Create and load a dependency set.

Parameters:

  h | header
  tagN | type of dependency
  scareMem | Use pointers to refcounted header memory?

Returns:
  new dependency set

Definition at line 115 of file rpmds.c.

References _rpmds_debug, headerLink, HGE_t, int_32, N, rpmds, rpmdsLink, rpmTag, 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, rpmTagType, xcalloc, and xmalloc.

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 192 of file rpmds.c.

References rpmds, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, stpcpy, and xmalloc.

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 481 of file rpmds.c.

References _free, _rpmds_debug, rpmds, and rpmdsNewDNEVR.

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 448 of file rpmds.c.

References rpmds.

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 468 of file rpmds.c.

References _, and rpmds.

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

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

Deprecated:
  Remove from API when obsoletes is correctly implemented.

Parameters:

  h | header
  req | dependency set
  nopromote | Don't promote Epoch: in comparison?

Returns:
  1 if dependency overlaps, 0 otherwise

Definition at line 734 of file rpmds.c.

References alloca, headerNVR, HGE_t, int_32, rpmds, rpmdsCompare, rpmdsFree, rpmdsSetNoPromote, rpmdsSingle, RPMSENSE_EQUAL, RPMSENSE_SENSEMASK, RPMTAG_EPOCH, RPMTAG_PROVIDENAME, and stpcpy.

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 653 of file rpmds.c.

References _, rpmds, rpmdsDNEVR, rpmdsEVR, rpmdsN, RPMPROB_CONFLICT, RPMPROB_REQUIRES, rpmProblemType, and rpmpsAppend.

int rpmdsSetIx | ( | rpmds | ds,
|  | int | ix
| ) |

Set dependency set index.

Parameters:

  ds | dependency set
  ix | new index

Returns:
  current index

Definition at line 375 of file rpmds.c.

References rpmds.

int rpmdsSetNoPromote | ( | rpmds | ds,
|  | int | nopromote
| ) |

Set "Don't promote Epoch:" flag.

Parameters:

  ds | dependency set

Returns:
  previous "Don't promote Epoch:" flag

Definition at line 457 of file rpmds.c.

References rpmds.

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 316 of file rpmds.c.

References int_32, N, rpmds, rpmdsLink, rpmdsNewDNEVR, rpmTag, RPMTAG_CONFLICTNAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, xcalloc, and xmalloc.

rpmTag rpmdsTagN | ( | const rpmds | ds | ) |

Return current dependency type.

Parameters:

  ds | dependency set

Returns:
  current dependency type, 0 on invalid

Definition at line 438 of file rpmds.c.

References rpmds, and rpmTag.

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 236 of file rpmds.c.

References headerNVR, HGE_t, int_32, N, rpmds, rpmdsLink, rpmdsNewDNEVR, rpmTag, RPMTAG_CONFLICTNAME, RPMTAG_EPOCH, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, RPMTAG_TRIGGERNAME, stpcpy, xcalloc, and xmalloc.

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, and rpmds.

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, and rpmds.

## Variable Documentation

int _noisy_range_comparison_debug_message = 0`[static]`

| Enable noisy range comparison debugging message? Definition at line 17 of file rpmds.c.

int _rpmds_debug = 0

| Definition at line 20 of file rpmds.c. Referenced by rpmdsFree, rpmdsNew, rpmdsNext, XrpmdsLink, and XrpmdsUnlink.

int _rpmds_nopromote = 1

| Definition at line 23 of file rpmds.c.

int _rpmds_unspecified_epoch_noise = 0

| Definition at line 27 of file rpmds.c. Referenced by rpmdsCompare.