f874e171d6791b547776c2c6e4a59fcdef1be075
[platform/upstream/rpm.git] / lib / rpmts_internal.h
1 #ifndef _RPMTS_INTERNAL_H
2 #define _RPMTS_INTERNAL_H
3
4 #include <rpm/rpmts.h>
5
6 #include "lib/rpmal.h"          /* XXX availablePackage */
7 #include "lib/rpmhash.h"        /* XXX hashTable */
8 #include "lib/fprint.h"
9
10 typedef struct diskspaceInfo_s * rpmDiskSpaceInfo;
11
12 /* Transaction set elements information */
13 typedef struct tsMembers_s {
14     int * removedPackages;      /*!< Set of packages being removed. */
15     int numRemovedPackages;     /*!< No. removed package instances. */
16     int allocedRemovedPackages; /*!< Size of removed packages array. */
17
18     rpmal addedPackages;        /*!< Set of packages being installed. */
19     int numAddedPackages;       /*!< No. added package instances. */
20
21     rpmte * order;              /*!< Packages sorted by dependencies. */
22     int orderCount;             /*!< No. of transaction elements. */
23     int orderAlloced;           /*!< No. of allocated transaction elements. */
24     int delta;                  /*!< Delta for reallocation. */
25 } * tsMembers;
26
27 /** \ingroup rpmts
28  * The set of packages to be installed/removed atomically.
29  */
30 struct rpmts_s {
31     rpmtransFlags transFlags;   /*!< Bit(s) to control operation. */
32
33     int (*solve) (rpmts ts, rpmds key, const void * data);
34                                 /*!< Search for NEVRA key. */
35     const void * solveData;     /*!< Solve callback data */
36
37     rpmCallbackFunction notify; /*!< Callback function. */
38     rpmCallbackData notifyData; /*!< Callback private data. */
39
40     rpmps probs;                /*!< Current problems in transaction. */
41     rpmprobFilterFlags ignoreSet;
42                                 /*!< Bits to filter current problems. */
43
44     rpmDiskSpaceInfo dsi;       /*!< Per filesystem disk/inode usage. */
45
46     rpmdb rdb;                  /*!< Install database handle. */
47     int dbmode;                 /*!< Install database open mode. */
48
49     tsMembers members;          /*!< Transaction set member info (order etc) */
50
51     int selinuxEnabled;         /*!< Is SE linux enabled? */
52     int chrootDone;             /*!< Has chroot(2) been been done? */
53     char * rootDir;             /*!< Path to top of install tree. */
54     char * currDir;             /*!< Current working directory. */
55     FD_t scriptFd;              /*!< Scriptlet stdout/stderr. */
56     rpm_tid_t tid;              /*!< Transaction id. */
57
58     rpm_color_t color;          /*!< Transaction color bits. */
59     rpm_color_t prefcolor;      /*!< Preferred file color. */
60
61     rpmVSFlags vsflags;         /*!< Signature/digest verification flags. */
62
63     rpmKeyring keyring;         /*!< Keyring in use. */
64
65     ARGV_t netsharedPaths;      /*!< From %{_netsharedpath} */
66     ARGV_t installLangs;        /*!< From %{_install_langs} */
67
68     struct rpmop_s ops[RPMTS_OP_MAX];
69
70     rpmSpec spec;               /*!< Spec file control structure. */
71
72     int nrefs;                  /*!< Reference count. */
73 };
74
75 RPM_GNUC_INTERNAL
76 tsMembers rpmtsMembers(rpmts ts);
77
78 #endif /* _RPMTS_INTERNAL_H */