rpm
5.4.14
|
#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmcb.h>
#include <rpmbf.h>
#include <rpmmacro.h>
#include <envvar.h>
#include <ugid.h>
#include <rpmtag.h>
#include <rpmdb.h>
#include <rpmds.h>
#include <rpmfi.h>
#include <rpmte.h>
#include <rpmcli.h>
#include "debug.h"
Go to the source code of this file.
Macros | |
#define | _RPMDB_INTERNAL /* XXX response cache needs dbiOpen et al. */ |
#define | _RPMDS_INTERNAL |
#define | _RPMEVR_INTERNAL |
#define | _RPMTE_INTERNAL |
#define | _RPMTS_INTERNAL |
#define | CACHE_DEPENDENCY_RESULT 1 |
Functions | |
static int | uintcmp (const void *a, const void *b) |
Compare removed package instances (qsort/bsearch). More... | |
static int | removePackage (rpmts ts, Header h, uint32_t hdrNum, int *indexp, alKey depends) |
Add removed package instance to ordered transaction set. More... | |
static int | rpmHeadersIdentical (Header first, Header second) |
Are two headers identical? More... | |
static int | rpmtsAddUpgrades (rpmts ts, rpmte p, rpmuint32_t hcolor, Header h) |
Add upgrade erasures to a transaction set. More... | |
static int | chkSuffix (const char *fn, const char *suffix) |
Check string for a suffix. More... | |
static int | rpmtsEraseDebuginfo (rpmts ts, rpmte p, Header h, alKey pkgKey) |
Add unreferenced debuginfo erasures to a transaction set. More... | |
static int | rpmtsAddObsoletes (rpmts ts, rpmte p, rpmuint32_t hcolor) |
Add Obsoletes: erasures to a transaction set. More... | |
int | rpmtsAddInstallElement (rpmts ts, Header h, fnpyKey key, int upgrade, rpmRelocation relocs) |
Add package to be installed to transaction set. More... | |
int | rpmtsAddEraseElement (rpmts ts, Header h, uint32_t hdrNum) |
Add package to be erased to transaction set. More... | |
void | rpmnsClean (void) |
Clean global name space dependency sets. More... | |
static int | unsatisfiedDepend (rpmts ts, rpmds dep, int adding) |
Check dep for an unsatisfied dependency. More... | |
static int | checkPackageDeps (rpmts ts, const char *pkgNEVRA, rpmds requires, rpmds conflicts, rpmds dirnames, rpmds linktos, const char *depName, nsType depNS, rpmuint32_t tscolor, int adding) |
Check added requires/conflicts against against installed+added packages. More... | |
static int | checkPackageSet (rpmts ts, const char *depName, nsType depNS, rpmmi mi, int adding) |
Check dependency against installed packages. More... | |
static int | checkDependentPackages (rpmts ts, const char *depName, nsType depNS) |
Check to-be-erased dependencies against installed requires. More... | |
static int | checkDependentConflicts (rpmts ts, const char *depName, nsType depNS) |
Check to-be-added dependencies against installed conflicts. More... | |
int | _rpmtsCheck (rpmts ts) |
Variables | |
int | _cacheDependsRC = 1 |
const char * | rpmNAME = PACKAGE |
const char * | rpmEVR = VERSION |
int | rpmFLAGS = RPMSENSE_EQUAL |
static rpmTag | _upgrade_tag |
static rpmTag | _debuginfo_tag |
static rpmTag | _obsolete_tag |
static char * | sysinfo_path = NULL |
static rpmds | rpmlibP = NULL |
rpmds | cpuinfoP = NULL |
static rpmds | getconfP = NULL |
static rpmds | unameP = NULL |
int(* | rpmtsCheck )(rpmts ts) = _rpmtsCheck |
Perform dependency resolution on the transaction set. More... | |
#define _RPMDB_INTERNAL /* XXX response cache needs dbiOpen et al. */ |
Definition at line 1908 of file depends.c.
References _cacheDependsRC, _free(), _rpmts_debug, checkDependentConflicts(), checkDependentPackages(), checkPackageDeps(), EVR, exit, fi, fprintf(), L, mi, NULL, p, ps, rc, rpmalMakeIndex(), rpmdbCloseDBI(), RPMDBI_DEPCACHE, RPMDEPS_FLAG_NOCONFLICTS, RPMDEPS_FLAG_NOLINKTOS, RPMDEPS_FLAG_NOPARENTDIRS, RPMDEPS_FLAG_NOREQUIRES, rpmdsEVR(), rpmdsFromPRCO(), rpmdsInit(), rpmdsN(), rpmdsNegateRC(), rpmdsNext(), rpmdsNSType(), rpmfiFN(), rpmfiInit(), rpmfiNext(), rpmlog(), RPMLOG_DEBUG, rpmmiFree(), RPMNS_TYPE_ENVVAR, RPMNS_TYPE_UNKNOWN, RPMPROB_FILTER_NONE, rpmpsFree(), rpmpsNumProblems(), rpmswEnter(), rpmswExit(), RPMTAG_BASENAMES, RPMTAG_CONFLICTNAME, RPMTAG_DIRNAMES, RPMTAG_FILELINKTOS, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, rpmteA(), rpmteColor(), rpmteDS(), rpmteFI(), rpmteNEVR(), rpmteNEVRA(), rpmteO(), RPMTS_OP_CHECK, rpmtsCloseDB(), rpmtsColor(), rpmtsDBMode(), rpmtsDFlags(), rpmtsFlags(), rpmtsGetRdb(), rpmtsiFree(), rpmtsiInit(), rpmtsiNext(), rpmtsOp(), rpmtsOpenDB(), rpmtsPRCO(), rpmtsProblems(), rpmtsRollback(), TR_ADDED, TR_REMOVED, void, xstrdup(), and xx.
Check to-be-added dependencies against installed conflicts.
ts | transaction set |
depName | conflicts name |
Definition at line 1892 of file depends.c.
References checkPackageSet(), mi, NULL, rc, RPMTAG_CONFLICTNAME, rpmtsGetRdb(), and rpmtsInitIterator().
Referenced by _rpmtsCheck().
Check to-be-erased dependencies against installed requires.
ts | transaction set |
depName | requires name |
Definition at line 1871 of file depends.c.
References checkPackageSet(), mi, NULL, rc, RPMTAG_REQUIRENAME, rpmtsGetRdb(), and rpmtsInitIterator().
Referenced by _rpmtsCheck().
|
static |
Check added requires/conflicts against against installed+added packages.
ts | transaction set |
pkgNEVRA | package name-version-release.arch |
requires | Requires: dependencies (or NULL) |
conflicts | Conflicts: dependencies (or NULL) |
dirnames | Dirnames: dependencies (or NULL) |
linktos | Filelinktos: dependencies (or NULL) |
depName | dependency name to filter (or NULL) |
tscolor | color bits for transaction set (0 disables) |
adding | dependency is from added package set? |
Definition at line 1569 of file depends.c.
References NULL, ps, rc, rpmalAllSatisfiesDepend(), rpmdsColor(), rpmdsInit(), rpmdsN(), rpmdsNext(), rpmdsNSType(), rpmdsProblem(), rpmExpandNumeric(), RPMNS_TYPE_UNKNOWN, rpmpsFree(), rpmtsProblems(), strcmp(), and unsatisfiedDepend().
Referenced by _rpmtsCheck(), and checkPackageSet().
|
static |
Check dependency against installed packages.
Adding: check name/provides dep against each conflict match, Erasing: check name/provides/filename dep against each requiredby match.
ts | transaction set |
depName | dependency name |
mi | rpm database iterator |
adding | dependency is from added package set? |
Definition at line 1798 of file depends.c.
References _free(), _rpmds_nopromote, alloca(), checkPackageDeps(), h, headerGet(), memset(), NULL, _HE_s::p, rc, RPMDEPS_FLAG_NOCONFLICTS, RPMDEPS_FLAG_NOLINKTOS, RPMDEPS_FLAG_NOPARENTDIRS, RPMDEPS_FLAG_NOREQUIRES, rpmdsFree(), rpmdsNew(), rpmdsSetNoPromote(), rpmmiFree(), rpmmiNext(), rpmmiPrune(), RPMTAG_CONFLICTNAME, RPMTAG_DIRNAMES, RPMTAG_FILELINKTOS, RPMTAG_NVRA, RPMTAG_REQUIRENAME, rpmtsColor(), rpmtsDFlags(), rpmDataType_u::str, _HE_s::tag, and void.
Referenced by checkDependentConflicts(), and checkDependentPackages().
|
inlinestatic |
Check string for a suffix.
fn | string |
suffix | suffix |
Definition at line 313 of file depends.c.
References strcmp().
Referenced by rpmtsAddInstallElement(), and rpmtsEraseDebuginfo().
|
static |
Add removed package instance to ordered transaction set.
ts | transaction set |
h | header |
hdrNum | rpm database instance |
*indexp | removed element index (if not NULL) |
depends | installed package of pair (or RPMAL_NOMATCH on erase) |
Definition at line 75 of file depends.c.
References assert(), hdrNum, k, m, n, NULL, p, qsort(), rpmfiFC(), RPMTAG_BASENAMES, rpmteFI(), rpmteNew(), TR_REMOVED, uintcmp(), xrealloc, and xx.
Referenced by rpmtsAddEraseElement(), rpmtsAddObsoletes(), rpmtsAddUpgrades(), and rpmtsEraseDebuginfo().
Are two headers identical?
first | first header |
second | second header |
Definition at line 148 of file depends.c.
References _free(), A, alloca(), headerGet(), memset(), NULL, _HE_s::p, rc, rpmdsCompare(), rpmdsFree(), rpmdsThis(), RPMSENSE_EQUAL, RPMTAG_HDRID, RPMTAG_REQUIRENAME, rpmDataType_u::str, strcmp(), _HE_s::tag, void, and xx.
Referenced by rpmtsAddUpgrades(), and rpmtsEraseDebuginfo().
Clean global name space dependency sets.
Definition at line 858 of file depends.c.
References _free(), _sysinfo_path, NULL, rpmdsFree(), and void.
|
static |
Add Obsoletes: erasures to a transaction set.
ts | transaction set |
p | transaction element |
hcolor | header color |
Definition at line 417 of file depends.c.
References _free(), _obsolete_tag, _rpmds_nopromote, assert(), D_, hGetColor(), mi, NULL, pkgKey, q, removePackage(), rpmdsAnyMatchesDep(), rpmdsColor(), rpmdsDNEVR(), rpmdsEVR(), rpmdsFree(), rpmdsInit(), rpmdsLink(), rpmdsN(), rpmdsNext(), rpmExpand(), rpmlog(), RPMLOG_DEBUG, rpmmiFree(), rpmmiInstance(), rpmmiNext(), rpmmiPrune(), RPMTAG_BASENAMES, RPMTAG_NAME, RPMTAG_OBSOLETENAME, RPMTAG_PROVIDENAME, rpmteAddedKey(), rpmteChain(), rpmteDS(), rpmteN(), rpmteNEVRA(), rpmtsColor(), rpmtsInitIterator(), strcmp(), t, void, and xx.
Referenced by rpmtsAddInstallElement().
|
static |
Add upgrade erasures to a transaction set.
ts | transaction set |
p | transaction element |
hcolor | header color |
h | header |
Definition at line 200 of file depends.c.
References _free(), _upgrade_tag, alloca(), assert(), _HE_s::c, D_, headerGet(), hGetColor(), memset(), mi, NULL, _HE_s::p, pkgKey, rpmDataType_u::ptr, q, removePackage(), rpmExpand(), rpmHeadersIdentical(), rpmlog(), RPMLOG_DEBUG, rpmmiFree(), rpmmiInstance(), rpmmiNext(), RPMTAG_ARCH, RPMTAG_NAME, RPMTAG_ORIGINTID, RPMTAG_ORIGINTIME, RPMTAG_PROVIDENAME, rpmteAddedKey(), rpmteChain(), rpmteN(), rpmteNEVRA(), rpmtsColor(), rpmtsInitIterator(), rpmDataType_u::str, strcmp(), t, _HE_s::tag, rpmDataType_u::ui32p, and xx.
Referenced by rpmtsAddInstallElement().
Add unreferenced debuginfo erasures to a transaction set.
ts | transaction set |
p | transaction element |
h | header |
pkgKey | added package key (erasure uses RPMAL_NOKEY) |
Definition at line 329 of file depends.c.
References _debuginfo_tag, _free(), alloca(), assert(), chkSuffix(), D_, headerFree, headerGet(), headerLink(), keyval, memset(), mi, NULL, _HE_s::p, q, removePackage(), RPMAL_NOMATCH, rpmExpand(), rpmHeadersIdentical(), rpmlog(), RPMLOG_DEBUG, rpmmiFree(), rpmmiInstance(), rpmmiNext(), rpmmiPrune(), RPMTAG_NAME, RPMTAG_SOURCEPKGID, RPMTAG_SOURCERPM, rpmteChain(), rpmteNEVRA(), rpmteSourcerpm(), rpmtsInitIterator(), rpmDataType_u::str, strcmp(), t, _HE_s::tag, void, and xx.
Referenced by rpmtsAddEraseElement(), and rpmtsAddInstallElement().
Compare removed package instances (qsort/bsearch).
a | 1st instance address |
b | 2nd instance address |
Definition at line 57 of file depends.c.
References rc.
Referenced by removePackage().
Check dep for an unsatisfied dependency.
ts | transaction set |
dep | dependency |
adding | dependency is from added package set? |
Definition at line 883 of file depends.c.
References _, _cacheDependsRC, _free(), _rpmds_nopromote, alloca(), argvAdd(), argvFree(), argvSplit(), b, buf, ctx, __db_dbt::data, DB_SET, DB_WRITECURSOR, dbi, dbiOpen(), digest, ds, errno, EVR, exit, Fclose(), fd, Ferror(), flags, Flags, fn, Fopen(), Fread(), gidToGname(), gnameToGid(), h, headerIsEntry(), i, if(), key, memset(), mi, nb, NULL, P, PGPHASHALGO_ERROR, PGPHASHALGO_MD5, pgpHashAlgoStringToNumber(), pid, PRCO, rpmQVKArguments_s::qva_flags, rpmQVKArguments_s::qva_mode, R_OK, rc, res, rpmalMakeIndex(), rpmalSatisfiesDepend(), RPMDBI_DEPCACHE, RPMDBI_PACKAGES, RPMDEPS_FLAG_NOSUGGEST, RPMDIGEST_NONE, rpmDigestFinal(), rpmDigestInit(), rpmDigestUpdate(), rpmdsAnyMatchesDep(), rpmdsCpuinfo(), rpmdsDNEVR(), rpmdsELF(), rpmdsEVR(), rpmdsFlags(), rpmdsFree(), rpmdsFreePRCO(), rpmdsFromPRCO(), rpmdsGetconf(), rpmdsMergePRCO(), rpmdsN(), rpmdsNegateRC(), rpmdsNewPRCO(), rpmdsNotify(), rpmdsNSType(), rpmdsRpmlib(), rpmdsSearch(), rpmdsSingle(), rpmdsTagN(), rpmdsUname(), rpmExpand(), rpmExpandNumeric(), rpmGetPath(), rpmioAccess(), rpmmiFree(), rpmmiNext(), rpmmiPrune(), RPMNS_TYPE_ACCESS, RPMNS_TYPE_CPUINFO, RPMNS_TYPE_DIGEST, RPMNS_TYPE_DISKSPACE, RPMNS_TYPE_ENVVAR, RPMNS_TYPE_FUNCTION, RPMNS_TYPE_GETCONF, RPMNS_TYPE_GNUPG, RPMNS_TYPE_GROUP, RPMNS_TYPE_MACRO, RPMNS_TYPE_MOUNTED, RPMNS_TYPE_RPMLIB, RPMNS_TYPE_RUNNING, RPMNS_TYPE_SANITY, RPMNS_TYPE_SIGNATURE, RPMNS_TYPE_SONAME, RPMNS_TYPE_UNAME, RPMNS_TYPE_USER, RPMNS_TYPE_VCHECK, RPMNS_TYPE_VERIFY, rpmnsProbeSignature(), RPMRC_OK, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_NOTEQUAL, RPMSENSE_SENSEMASK, RPMTAG_BASENAMES, RPMTAG_DIRNAMES, RPMTAG_PROVIDENAME, RPMTAG_SANITYCHECK, RPMTAG_TRACK, rpmtsDFlags(), rpmtsGetRdb(), rpmtsInitDSI(), rpmtsInitIterator(), rpmtsPRCO(), s, showVerifyPackage(), __db_dbt::size, strcmp(), SYSCONFIGDIR, uidToUname(), unameToUid(), VERIFY_ALL, VERIFY_DEPS, VERIFY_SCRIPT, void, X_OK, xisdigit(), xstrdup(), and xx.
Referenced by checkPackageDeps().
int _cacheDependsRC = 1 |
Definition at line 39 of file depends.c.
Referenced by _rpmtsCheck(), and unsatisfiedDepend().
|
static |
Definition at line 188 of file depends.c.
Referenced by rpmtsEraseDebuginfo().
|
static |
Definition at line 190 of file depends.c.
Referenced by rpmtsAddObsoletes().
|
static |
Definition at line 186 of file depends.c.
Referenced by rpmtsAddUpgrades().
Definition at line 852 of file depends.c.
Referenced by rpmShowRC().
const char* rpmEVR = VERSION |
Definition at line 46 of file depends.c.
Referenced by printVersion().
int rpmFLAGS = RPMSENSE_EQUAL |