4 /** \file lib/depends.h
11 * Info about a single package to be installed/removed.
13 struct availablePackage {
14 Header h; /*!< Package header. */
15 /*@owned@*/ const char ** provides; /*!< Provides: name strings. */
16 /*@owned@*/ const char ** providesEVR; /*!< Provides: [epoch:]version[-release] strings. */
17 /*@dependent@*/ int * provideFlags; /*!< Provides: logical range qualifiers. */
18 /*@owned@*/ const char ** baseNames; /*!< Header file basenames. */
19 /*@dependent@*/ const char * name; /*!< Header name. */
20 /*@dependent@*/ const char * version; /*!< Header version. */
21 /*@dependent@*/ const char * release; /*!< Header release. */
22 /*@dependent@*/ int_32 * epoch; /*!< Header epoch (if any). */
23 int providesCount; /*!< No. of Provide:'s in header. */
24 int filesCount; /*!< No. of files in header. */
25 uint_32 multiLib; /* MULTILIB */
26 /*@dependent@*/ const void * key; /*!< Private data associated with a package (e.g. file name of package). */
27 rpmRelocation * relocs;
32 * A single available item (e.g. a Provides: dependency).
34 struct availableIndexEntry {
35 /*@dependent@*/ struct availablePackage * package; /*!< Containing package. */
36 /*@dependent@*/ const char * entry; /*!< Available item name. */
37 size_t entryLen; /*!< No. of bytes in name. */
39 IET_PROVIDES=1 /*!< A Provides: dependency. */
40 } type; /*!< Type of available item. */
44 * Index of all available items.
46 struct availableIndex {
47 /*@null@*/ struct availableIndexEntry * index; /*!< Array of available items. */
48 int size; /*!< No. of available items. */
52 * A file to be installed/removed.
54 struct fileIndexEntry {
55 int pkgNum; /*!< Containing package number. */
56 int fileFlags; /* MULTILIB */
57 /*@dependent@*/ const char * baseName; /*!< File basename. */
61 * A directory to be installed/removed.
64 /*@owned@*/ const char * dirName; /*!< Directory path (+ trailing '/'). */
65 int dirNameLen; /*!< No. bytes in directory path. */
66 /*@owned@*/ struct fileIndexEntry * files; /*!< Array of files in directory. */
67 int numFiles; /*!< No. files in directory. */
71 * Set of available packages, items, and directories.
73 struct availableList {
74 /*@owned@*/ /*@null@*/ struct availablePackage * list; /*!< Set of packages. */
75 struct availableIndex index; /*!< Set of available items. */
78 int numDirs; /*! No. of directories. */
79 /*@owned@*/ struct dirInfo * dirs; /*!< Set of directories. */
83 * A single package instance to be installed/removed atomically.
85 struct transactionElement {
86 enum rpmTransactionType {
87 TR_ADDED, /*!< Package will be installed. */
88 TR_REMOVED /*!< Package will be removed. */
89 } type; /*!< Package disposition (installed/removed). */
100 * The set of packages to be installed/removed atomically.
102 struct rpmTransactionSet_s {
103 /*@owned@*/ /*@null@*/ rpmdb rpmdb; /*!< Database handle. */
104 /*@only@*/ int * removedPackages; /*!< Set of packages being removed. */
105 int numRemovedPackages; /*!< No. removed rpmdb instances. */
106 int allocedRemovedPackages; /*!< Size of removed packages array. */
107 struct availableList addedPackages; /*!< Set of packages being installed. */
108 struct availableList availablePackages; /*!< Universe of possible packages to install. */
109 /*@only@*/ struct transactionElement * order; /*!< Packages sorted by dependencies. */
112 /*@only@*/ const char * rootDir; /*!< Path to top of install tree. */
113 /*@only@*/ const char * currDir; /*!< Current working directory. */
114 /*@null@*/ FD_t scriptFd;
118 struct rpmDependencyConflict * problems;
127 /* XXX lib/uninstall.c */
128 int headerMatchesDepFlags(Header h, const char *reqName, const char * reqInfo, int reqFlags);
134 #endif /* H_DEPENDS */