RPMTRANS. -
file depends.h
Structures used for dependency checking.
file fprint.h
Identify a file name path by a unique 'finger print'.
file psm.c
Package state machine to handle a package from a transaction set.
file psm.h
Package state machine to handle a package from a transaction set.
file rpmlib.h
file rpmvercmp.c
file transaction.c
typedef psm_s * PSM_t
typedef transactionFileInfo_s * TFI_t
typedef rpmTransactionSet_s * rpmTransactionSet
typedef enum rpmtransFlags_e rpmtransFlags
enum rpmtransFlags_e { RPMTRANS_FLAG_NONE = 0, RPMTRANS_FLAG_TEST = (1 << 0), RPMTRANS_FLAG_BUILD_PROBS = (1 << 1), RPMTRANS_FLAG_NOSCRIPTS = (1 << 2), RPMTRANS_FLAG_JUSTDB = (1 << 3), RPMTRANS_FLAG_NOTRIGGERS = (1 << 4), RPMTRANS_FLAG_NODOCS = (1 << 5), RPMTRANS_FLAG_ALLFILES = (1 << 6), RPMTRANS_FLAG_KEEPOBSOLETE = (1 << 7), RPMTRANS_FLAG_MULTILIB = (1 << 8), RPMTRANS_FLAG_DIRSTASH = (1 << 9), RPMTRANS_FLAG_REPACKAGE = (1 << 10), RPMTRANS_FLAG_PKGCOMMIT = (1 << 11), RPMTRANS_FLAG_PKGUNDO = (1 << 12), RPMTRANS_FLAG_COMMIT = (1 << 13), RPMTRANS_FLAG_UNDO = (1 << 14), RPMTRANS_FLAG_REVERSE = (1 << 15), RPMTRANS_FLAG_NOTRIGGERPREIN = (1 << 16), RPMTRANS_FLAG_NOPRE = (1 << 17), RPMTRANS_FLAG_NOPOST = (1 << 18), RPMTRANS_FLAG_NOTRIGGERIN = (1 << 19), RPMTRANS_FLAG_NOTRIGGERUN = (1 << 20), RPMTRANS_FLAG_NOPREUN = (1 << 21), RPMTRANS_FLAG_NOPOSTUN = (1 << 22), RPMTRANS_FLAG_NOTRIGGERPOSTUN = (1 << 23), RPMTRANS_FLAG_NOPAYLOAD = (1 << 24), RPMTRANS_FLAG_APPLYONLY = (1 << 25), RPMTRANS_FLAG_CHAINSAW = (1 << 26), RPMTRANS_FLAG_NOMD5 = (1 << 27) }
void rpmtransSetScriptFd (rpmTransactionSet ts, FD_t fd)
int rpmtransGetKeys (const rpmTransactionSet ts, const void ***ep, int *nep)
int rpmGetRpmlibProvides (const char ***provNames, int **provFlags, const char ***provVersions)
int rpmvercmp (const char *a, const char *b)
int rpmCheckRpmlibProvides (const char *keyName, const char *keyEVR, int keyFlags)
int rpmRunTransactions (rpmTransactionSet ts, rpmCallbackFunction notify, rpmCallbackData notifyData, rpmProblemSet okProbs, rpmProblemSet *newProbs, rpmtransFlags transFlags, rpmprobFilterFlags ignoreSet)
rpmTransactionSet rpmtransCreateSet (rpmdb rpmdb, const char *rootDir)
int rpmtransAddPackage (rpmTransactionSet ts, Header h, FD_t fd, const void *key, int upgrade, rpmRelocation *relocs)
void rpmtransAvailablePackage (rpmTransactionSet ts, Header h, const void *key)
int rpmtransRemovePackage (rpmTransactionSet ts, int dboffset)
rpmTransactionSet rpmtransFree (rpmTransactionSet ts)
int rpmdepCheck (rpmTransactionSet ts, rpmDependencyConflict *conflicts, int *numConflicts)
int rpmdepOrder (rpmTransactionSet ts)
rpmDependencyConflict rpmdepFreeConflicts (rpmDependencyConflict conflicts, int numConflicts)
int rpmRangesOverlap (const char *AName, const char *AEVR, int AFlags, const char *BName, const char *BEVR, int BFlags)
Package state machine data.
Definition at line 1235 of file rpmlib.h.
The RPM Transaction Set. Transaction sets are inherently unordered! RPM may reorder transaction sets to reduce errors. In general, installs/upgrades are done before strict removals, and prerequisite ordering is done on installs/upgrades.
Definition at line 1247 of file rpmlib.h.
Bit(s) to control rpmRunTransactions() operation.
Referenced by decideFileFate(), handleInstInstalledFiles(), rpmErase(), rpmInstall(), and rpmRunTransactions().
Definition at line 1239 of file rpmlib.h.
Bit(s) to control rpmRunTransactions() operation.
Enumeration values:
Definition at line 1384 of file rpmlib.h.
Check dependency against internal rpmlib feature provides.
Parameters:
Returns: 1 if dependency overlaps, 0 otherwise
Definition at line 57 of file rpmlibprov.c.
References rpmlibProvides_s::featureEVR, rpmlibProvides_s::featureFlags, rpmlibProvides_s::featureName, rpmlibProvides, and rpmRangesOverlap().
Referenced by unsatisfiedDepend().
Check that all dependencies can be resolved.
Parameters:
Return values:
Returns: 0 on success
Definition at line 2256 of file depends.c.
References _free(), rpmTransactionSet_s::addedPackages, alMakeIndex(), rpmTransactionSet_s::availablePackages, checkDependentConflicts(), checkDependentPackages(), checkPackageDeps(), availablePackage::h, headerNVR(), HFD_t, HGE_t, int_32, availableList_s::list, availablePackage::multiLib, availablePackage::name, rpmTransactionSet_s::numRemovedPackages, availablePackage::provides, availablePackage::providesCount, availablePackage::release, rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rpmdb, rpmdbAppendIterator(), rpmdbCloseDBI(), rpmdbFreeIterator(), RPMDBI_DEPENDS, RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), RPMMESS_DEBUG, rpmMessage, RPMTAG_BASENAMES, RPMTAG_DIRINDEXES, RPMTAG_DIRNAMES, RPMTAG_PROVIDENAME, rpmTagType, availableList_s::size, stpcpy(), availablePackage::version, xcalloc(), and xrealloc().
Referenced by checkSpec(), rpmErase(), rpmInstall(), rpmRollback(), rpmtransDepCheck(), and verifyDependencies().
Destroy dependency conflicts storage.
Parameters:
Definition at line 936 of file depends.c.
References _free(), rpmDependencyConflict_s::byHeader, rpmDependencyConflict_s::byName, rpmDependencyConflict_s::byRelease, rpmDependencyConflict_s::byVersion, headerFree(), rpmDependencyConflict_s::needsName, rpmDependencyConflict_s::needsVersion, and rpmDependencyConflict_s::suggestedPackages.
Referenced by checkSpec(), rpmErase(), rpmInstall(), rpmRollback(), rpmtransDepCheck(), and verifyDependencies().
Determine package order in a transaction set according to dependencies.
Order packages, returning error if circular dependencies cannot be eliminated by removing PreReq's from the loop(s). Only dependencies from added or removed packages are used to determine ordering using a topological sort (Knuth vol. 1, p. 262). Use rpmdepCheck() to verify that all dependencies can be resolved.
The final order ends up as installed packages followed by removed packages, with packages removed for upgrades immediately following the new package to be installed.
The operation would be easier if we could sort the addedPackages array in the transaction set, but we store indexes into the array in various places.
Parameters:
Returns: 0 if packages are successfully ordered, 1 otherwise
Definition at line 1914 of file depends.c.
References _, _free(), rpmTransactionSet_s::addedPackages, addQ(), addRelation(), orderListIndex::alIndex, alloca(), alMakeIndex(), rpmTransactionSet_s::availablePackages, availablePackage::degree, availablePackage::depth, isErasePreReq, isInstallPreReq, isLegacyPreReq, availableList_s::list, markLoop(), availablePackage::name, availablePackage::npreds, rpmTransactionSet_s::order, rpmTransactionSet_s::orderAlloced, rpmTransactionSet_s::orderCount, orderListIndexCmp(), orderListIndex::orIndex, availablePackage::parent, availablePackage::release, availablePackage::requireFlags, availablePackage::requiresCount, RPMMESS_DEBUG, rpmMessage, RPMTRANS_FLAG_CHAINSAW, availableList_s::size, rpmTransactionSet_s::transFlags, availablePackage::tree, availablePackage::tsi, tsortInfo_s::tsi_next, tsortInfo_s::tsi_pkg, tsortInfo_s::tsi_qcnt, tsortInfo_s::tsi_reqx, transactionElement_s::type, transactionElement_s::u, availablePackage::version, xmalloc(), and zapRelation().
Referenced by rpmInstall(), rpmRollback(), and rpmtransOrder().
Return copy of rpmlib internal provides.
Return values:
Returns: no. of entries
Definition at line 73 of file rpmlibprov.c.
References _free(), rpmlibProvides_s::featureEVR, rpmlibProvides_s::featureFlags, rpmlibProvides_s::featureName, rpmlibProvides, and xcalloc().
Compare two versioned dependency ranges, looking for overlap.
Parameters:
Returns: 1 if dependencies overlap, 0 otherwise
Definition at line 529 of file depends.c.
References _, _free(), parseEVR(), printDepend(), RPMMESS_DEBUG, rpmMessage, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, rpmvercmp(), and xstrdup().
Referenced by alAllSatisfiesDepend(), headerMatchesDepFlags(), rangeMatchesDepFlags(), and rpmCheckRpmlibProvides().
Process all packages in transaction set.
Parameters:
Return values:
Parameters:
Returns: 0 on success, -1 on error, >0 with newProbs set
Definition at line 1519 of file transaction.c.
References _free(), _noTransScripts, _noTransTriggers, transactionFileInfo_s::actions, rpmTransactionSet_s::addedPackages, adj_fs_blocks, transactionFileInfo_s::ap, archOkay(), diskspaceInfo::bavail, diskspaceInfo::bneeded, transactionFileInfo_s::bnl, diskspaceInfo::bsize, rpmTransactionSet_s::chrootDone, rpmTransactionSet_s::currDir, currentDirectory(), rpmdb_s::db_chrootDone, dbiFreeIndexSet(), dbiIndexRecordFileNumber(), dbiIndexRecordOffset(), dbiIndexSetCount(), diskspaceInfo::dev, rpmTransactionSet_s::di, transactionFileInfo_s::dil, transactionFileInfo_s::dnl, ensureOlder(), transactionFileInfo_s::fc, availablePackage::fd, availablePackage::filesCount, rpmTransactionSet_s::filesystemCount, rpmTransactionSet_s::filesystems, rpmTransactionSet_s::flEntries, rpmTransactionSet_s::flList, fpCacheCreate(), fpCacheFree(), fpLookupList(), transactionFileInfo_s::fps, freeFl(), availablePackage::h, transactionFileInfo_s::h, handleInstInstalledFiles(), handleOverlappedFiles(), handleRmvdInstalledFiles(), headerFree(), headerGetEntry(), headerLink(), htAddEntry(), htCreate(), htFree(), diskspaceInfo::iavail, rpmTransactionSet_s::id, rpmTransactionSet_s::ignoreSet, diskspaceInfo::ineeded, sharedFileInfo::isRemoved, availablePackage::key, availableList_s::list, loadFi(), transactionFileInfo_s::magic, MNT_DEV_PREFIX, MNT_DEV_PREFIX_LENGTH, availablePackage::multiLib, availablePackage::name, rpmTransactionSet_s::notify, NOTIFY, rpmTransactionSet_s::notifyData, rpmProblemSet_s::numProblems, rpmTransactionSet_s::numRemovedPackages, rpmTransactionSet_s::order, rpmTransactionSet_s::orderCount, osOkay(), sharedFileInfo::otherFileNum, sharedFileInfo::otherPkg, sharedFileInfo::pkgFileNum, rpmTransactionSet_s::probs, psAppend(), psCreate(), PSM_PKGERASE, PSM_PKGINSTALL, PSM_PKGSAVE, psmStage(), psTrim(), transactionFileInfo_s::record, availablePackage::release, relocateFileList(), rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rootDir, RPMCALLBACK_INST_CLOSE_FILE, RPMCALLBACK_INST_OPEN_FILE, RPMCALLBACK_TRANS_PROGRESS, RPMCALLBACK_TRANS_START, RPMCALLBACK_TRANS_STOP, rpmCallbackData, rpmCallbackFunction, rpmTransactionSet_s::rpmdb, rpmdbAppendIterator(), rpmdbFindFpList(), rpmdbFreeIterator(), RPMDBI_PACKAGES, rpmdbInitIterator(), rpmdbNextIterator(), rpmdbSetIteratorRE(), rpmdbSync(), rpmGetFilesystemList(), RPMMIRE_DEFAULT, RPMPROB_BADARCH, RPMPROB_BADOS, RPMPROB_DISKNODES, RPMPROB_DISKSPACE, RPMPROB_FILTER_DISKSPACE, RPMPROB_FILTER_IGNOREARCH, RPMPROB_FILTER_IGNOREOS, RPMPROB_FILTER_OLDPACKAGE, RPMPROB_FILTER_REPLACENEWFILES, RPMPROB_FILTER_REPLACEOLDFILES, RPMPROB_FILTER_REPLACEPKG, RPMPROB_PKG_INSTALLED, rpmprobFilterFlags, rpmRC, RPMRC_BADSIZE, RPMRC_OK, rpmReadPackageHeader(), RPMTAG_BASENAMES, RPMTAG_NAME, RPMTAG_RELEASE, RPMTAG_VERSION, RPMTRANS_FLAG_BUILD_PROBS, RPMTRANS_FLAG_DIRSTASH, RPMTRANS_FLAG_JUSTDB, RPMTRANS_FLAG_MULTILIB, RPMTRANS_FLAG_NOSCRIPTS, RPMTRANS_FLAG_NOTRIGGERS, RPMTRANS_FLAG_REPACKAGE, rpmtransFlags, sharedCmp(), availableList_s::size, skipFiles(), TFIMAGIC, rpmTransactionSet_s::transFlags, tsFreeIterator(), tsGetAlp(), tsGetOc(), tsInitIterator(), tsNextIterator(), transactionFileInfo_s::type, transactionElement_s::type, transactionElement_s::u, availablePackage::version, xcalloc(), XFA_SKIPPING, and xmalloc().
Referenced by rpmErase(), rpmInstall(), rpmRollback(), and rpmtransRun().
Add package to be installed to unordered transaction set.
If fd is NULL, the callback specified in rpmtransCreateSet() is used to open and close the file descriptor. If Header is NULL, the fd is always used, otherwise fd is only needed (and only opened) for actual package installation.
Parameters:
Returns: 0 on success, 1 on I/O error, 2 needs capabilities
Definition at line 797 of file depends.c.
References rpmTransactionSet_s::addedPackages, alAddPackage(), rpmTransactionSet_s::delta, headerIsEntry(), headerMatchesDepFlags(), headerNVR(), HFD_t, HGE_t, int_32, availableList_s::list, availablePackage::multiLib, rpmTransactionSet_s::numRemovedPackages, rpmTransactionSet_s::order, rpmTransactionSet_s::orderAlloced, rpmTransactionSet_s::orderCount, rpmTransactionSet_s::removedPackages, removePackage(), rpmTransactionSet_s::rpmdb, rpmdbFreeIterator(), rpmdbGetIteratorOffset(), rpmdbInitIterator(), rpmdbNextIterator(), rpmdbPruneIterator(), RPMTAG_MULTILIBS, RPMTAG_NAME, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_SOURCEPACKAGE, rpmTagType, rpmVersionCompare(), uint_32, and xrealloc().
Referenced by checkSpec(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransAdd(), and verifyDependencies().
Add package to universe of possible packages to install in transaction set.
Parameters:
Definition at line 906 of file depends.c.
References alAddPackage(), and rpmTransactionSet_s::availablePackages.
Create an empty transaction set.
Parameters:
Returns: transaction set
Definition at line 692 of file depends.c.
References rpmTransactionSet_s::addedPackages, alCreate(), alloca(), rpmTransactionSet_s::allocedRemovedPackages, rpmTransactionSet_s::availablePackages, rpmTransactionSet_s::chrootDone, rpmTransactionSet_s::currDir, rpmTransactionSet_s::delta, availableList_s::delta, rpmTransactionSet_s::di, rpmTransactionSet_s::filesystemCount, rpmTransactionSet_s::filesystems, rpmTransactionSet_s::id, rpmTransactionSet_s::numRemovedPackages, rpmTransactionSet_s::order, rpmTransactionSet_s::orderAlloced, rpmTransactionSet_s::orderCount, rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rootDir, rpmTransactionSet_s::rpmdb, rpmTransactionSet_s::scriptFd, stpcpy(), xcalloc(), and xstrdup().
Referenced by checkSpec(), cpio_doio(), rpmErase(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransCreate(), rpmVerifyScript(), and verifyDependencies().
Destroy transaction set.
Parameters:
Returns: NULL always
Definition at line 917 of file depends.c.
References _free(), rpmTransactionSet_s::addedPackages, alFree(), rpmTransactionSet_s::availablePackages, rpmTransactionSet_s::currDir, rpmTransactionSet_s::di, fdFree, rpmTransactionSet_s::order, rpmTransactionSet_s::removedPackages, rpmTransactionSet_s::rootDir, and rpmTransactionSet_s::scriptFd.
Referenced by checkSpec(), cpio_doio(), rpmErase(), rpmInstall(), rpmInstallSourcePackage(), rpmRollback(), rpmtransDealloc(), rpmVerifyScript(), and verifyDependencies().
Retrieve keys from ordered transaction set.
Todo: Removed packages have no keys, returned as interleaved NULL pointers.
Parameters:
Return values:
Returns: 0 always
Definition at line 95 of file transaction.c.
References rpmTransactionSet_s::addedPackages, availablePackage::key, availableList_s::list, rpmTransactionSet_s::order, rpmTransactionSet_s::orderCount, transactionElement_s::type, transactionElement_s::u, and xmalloc().
Referenced by py_rpmtransGetKeys().
Add package to be removed to unordered transaction set.
Parameters:
Returns: 0 on success
Definition at line 912 of file depends.c.
References removePackage().
Referenced by rpmErase(), rpmRollback(), and rpmtransRemove().
Save file handle to be used as stderr when running package scripts.
Parameters:
Definition at line 90 of file transaction.c.
References fdLink, and rpmTransactionSet_s::scriptFd.
Referenced by rpmtransSetAttr().
Segmented string compare for version and/or release.
Parameters:
Returns: +1 if a is 'newer', 0 if equal, -1 if b is 'newer'
Definition at line 15 of file rpmvercmp.c.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |