Blame lib/rpmts_internal.h

2ff057
#ifndef _RPMTS_INTERNAL_H
2ff057
#define _RPMTS_INTERNAL_H
2ff057
2ff057
#include <rpm/rpmts.h>
2ff057
#include <rpm/rpmstrpool.h>
2ff057
2ff057
#include "lib/rpmal.h"		/* XXX availablePackage */
2ff057
#include "lib/fprint.h"
2ff057
#include "lib/rpmlock.h"
2ff057
#include "lib/rpmdb_internal.h"
2ff057
#include "lib/rpmscript.h"
2ff057
#include "lib/rpmtriggers.h"
2ff057
2ff057
typedef struct diskspaceInfo_s * rpmDiskSpaceInfo;
2ff057
2ff057
/* Transaction set elements information */
2ff057
typedef struct tsMembers_s {
2ff057
    rpmstrPool pool;		/*!< Global string pool */
2ff057
    packageHash removedPackages;	/*!< Set of packages being removed. */
2ff057
    packageHash installedPackages;	/*!< Set of installed packages */
2ff057
    rpmal addedPackages;	/*!< Set of packages being installed. */
2ff057
2ff057
    rpmds rpmlib;		/*!< rpmlib() dependency set. */
2ff057
    rpmte * order;		/*!< Packages sorted by dependencies. */
2ff057
    int orderCount;		/*!< No. of transaction elements. */
2ff057
    int orderAlloced;		/*!< No. of allocated transaction elements. */
2ff057
    int delta;			/*!< Delta for reallocation. */
2ff057
} * tsMembers;
2ff057
2ff057
typedef struct tsTrigger_s {
2ff057
    unsigned int hdrNum;
2ff057
    int index;
2ff057
} tsTrigger;
2ff057
2ff057
typedef struct tsTriggers_s {
2ff057
    tsTrigger *trigger;
2ff057
    int count;
2ff057
    int alloced;
2ff057
} tsTriggers;
2ff057
2ff057
/** \ingroup rpmts
2ff057
 * The set of packages to be installed/removed atomically.
2ff057
 */
2ff057
struct rpmts_s {
2ff057
    rpmtransFlags transFlags;	/*!< Bit(s) to control operation. */
2ff057
2ff057
    int (*solve) (rpmts ts, rpmds key, const void * data);
2ff057
                                /*!< Search for NEVRA key. */
2ff057
    const void * solveData;	/*!< Solve callback data */
2ff057
2ff057
    rpmCallbackFunction notify;	/*!< Callback function. */
2ff057
    rpmCallbackData notifyData;	/*!< Callback private data. */
2ff057
2ff057
    rpmprobFilterFlags ignoreSet;
2ff057
				/*!< Bits to filter current problems. */
2ff057
2ff057
    rpmDiskSpaceInfo dsi;	/*!< Per filesystem disk/inode usage. */
2ff057
2ff057
    rpmdb rdb;			/*!< Install database handle. */
2ff057
    int dbmode;			/*!< Install database open mode. */
2ff057
2ff057
    tsMembers members;		/*!< Transaction set member info (order etc) */
2ff057
2ff057
    char * rootDir;		/*!< Path to top of install tree. */
2ff057
    char * lockPath;		/*!< Transaction lock path */
2ff057
    rpmlock lock;		/*!< Transaction lock file */
2ff057
    FD_t scriptFd;		/*!< Scriptlet stdout/stderr. */
2ff057
    rpm_tid_t tid;		/*!< Transaction id. */
2ff057
2ff057
    rpm_color_t color;		/*!< Transaction color bits. */
2ff057
    rpm_color_t prefcolor;	/*!< Preferred file color. */
2ff057
2ff057
    rpmVSFlags vsflags;		/*!< Signature/digest verification flags. */
2ff057
    rpmVSFlags vfyflags;	/*!< Package verification flags */
2ff057
    int vfylevel;		/*!< Package verification level */
2ff057
    rpmKeyring keyring;		/*!< Keyring in use. */
2ff057
2ff057
    ARGV_t netsharedPaths;	/*!< From %{_netsharedpath} */
2ff057
    ARGV_t installLangs;	/*!< From %{_install_langs} */
2ff057
2ff057
    struct rpmop_s ops[RPMTS_OP_MAX];
2ff057
2ff057
    rpmPlugins plugins;		/*!< Transaction plugins */
2ff057
2ff057
    int nrefs;			/*!< Reference count. */
2ff057
2ff057
    rpmtriggers trigs2run;   /*!< Transaction file triggers */
2ff057
2ff057
    int min_writes;             /*!< macro minimize_writes used */
2ff057
};
2ff057
2ff057
#ifdef __cplusplus
2ff057
extern "C" {
2ff057
#endif
2ff057
2ff057
/** \ingroup rpmts
2ff057
 * Return transaction global string pool handle, creating the pool if needed.
2ff057
 * @param ts		transaction set
2ff057
 * @return		string pool handle (weak ref)
2ff057
 */
2ff057
RPM_GNUC_INTERNAL
2ff057
rpmstrPool rpmtsPool(rpmts ts);
2ff057
2ff057
RPM_GNUC_INTERNAL
2ff057
tsMembers rpmtsMembers(rpmts ts);
2ff057
2ff057
/* Return rpmdb iterator with removals optionally pruned out */
2ff057
RPM_GNUC_INTERNAL
2ff057
rpmdbMatchIterator rpmtsPrunedIterator(rpmts ts, rpmDbiTagVal tag,
2ff057
					      const char * key, int prune);
2ff057
2ff057
RPM_GNUC_INTERNAL
2ff057
rpmal rpmtsCreateAl(rpmts ts, rpmElementTypes types);
2ff057
2ff057
/* returns -1 for retry, 0 for ignore and 1 for not found */
2ff057
RPM_GNUC_INTERNAL
2ff057
int rpmtsSolve(rpmts ts, rpmds key);
2ff057
2ff057
RPM_GNUC_INTERNAL
2ff057
rpmRC rpmtsSetupTransactionPlugins(rpmts ts);
2ff057
2ff057
RPM_GNUC_INTERNAL
2ff057
rpmRC runScript(rpmts ts, rpmte te, Header h, ARGV_const_t prefixes,
2ff057
		       rpmScript script, int arg1, int arg2);
2ff057
2ff057
#ifdef __cplusplus
2ff057
}
2ff057
#endif
2ff057
#endif /* _RPMTS_INTERNAL_H */