razor.h
changeset 139 a416240614e3
parent 129 d221757574c1
child 140 017f92f7039a
     1.1 --- a/razor.h	Thu Feb 21 12:09:13 2008 -0500
     1.2 +++ b/razor.h	Fri Feb 29 15:09:44 2008 -0500
     1.3 @@ -21,6 +21,7 @@
     1.4  	RAZOR_VERSION_GREATER_OR_EQUAL,
     1.5  	RAZOR_VERSION_GREATER
     1.6  };
     1.7 +extern const char * const razor_version_relations[];
     1.8  
     1.9  struct razor_set *razor_set_create(void);
    1.10  struct razor_set *razor_set_open(const char *filename);
    1.11 @@ -62,11 +63,6 @@
    1.12  void razor_set_list_package_files(struct razor_set *set, const char *name);
    1.13  
    1.14  void razor_set_list_unsatisfied(struct razor_set *set);
    1.15 -struct razor_set *razor_set_update(struct razor_set *set,
    1.16 -				   struct razor_set *upstream,
    1.17 -				   int count, const char **packages);
    1.18 -struct razor_set *razor_set_remove(struct razor_set *set,
    1.19 -				   int count, const char **packages);
    1.20  
    1.21  typedef void (*razor_package_callback_t)(const char *name,
    1.22  					 const char *old_version,
    1.23 @@ -76,6 +72,51 @@
    1.24  razor_set_diff(struct razor_set *set, struct razor_set *upstream,
    1.25  	       razor_package_callback_t callback, void *data);
    1.26  
    1.27 +/* Package transactions */
    1.28 +
    1.29 +enum razor_transaction_package_state {
    1.30 +	/* Basic states */
    1.31 +	RAZOR_PACKAGE_INSTALL       = 0x01,
    1.32 +	RAZOR_PACKAGE_REMOVE        = 0x02,
    1.33 +
    1.34 +	/* (Flags used to define the error states) */
    1.35 +	RAZOR_PACKAGE_UNAVAILABLE   = 0x04,
    1.36 +	RAZOR_PACKAGE_UNSATISFIABLE = 0x08,
    1.37 +	RAZOR_PACKAGE_BLOCKED       = 0x10,
    1.38 +
    1.39 +	/* Error states */
    1.40 +	RAZOR_PACKAGE_INSTALL_UNAVAILABLE   = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNAVAILABLE,
    1.41 +	RAZOR_PACKAGE_INSTALL_UNSATISFIABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNSATISFIABLE,
    1.42 +	RAZOR_PACKAGE_INSTALL_BLOCKED = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_BLOCKED,
    1.43 +	RAZOR_PACKAGE_REMOVE_NOT_INSTALLED  = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_UNAVAILABLE,
    1.44 +	RAZOR_PACKAGE_REMOVE_BLOCKED  = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_BLOCKED
    1.45 +};
    1.46 +
    1.47 +struct razor_transaction_package {
    1.48 +	struct razor_package *package;
    1.49 +	const char *name, *version;
    1.50 +	enum razor_transaction_package_state state;
    1.51 +
    1.52 +	const char *req_package;
    1.53 +	const char *req_property;
    1.54 +	enum razor_version_relation req_relation;
    1.55 +	const char *req_version;
    1.56 +};
    1.57 +
    1.58 +struct razor_transaction {
    1.59 +	int package_count, errors;
    1.60 +	struct razor_transaction_package *packages;
    1.61 +
    1.62 +	struct razor_set *system, *upstream;
    1.63 +};
    1.64 +
    1.65 +struct razor_transaction *
    1.66 +razor_transaction_create(struct razor_set *system, struct razor_set *upstream,
    1.67 +			 int update_count, const char **update_packages,
    1.68 +			 int remove_count, const char **remove_packages);
    1.69 +void razor_transaction_describe(struct razor_transaction *trans);
    1.70 +struct razor_set *razor_transaction_run(struct razor_transaction *trans);
    1.71 +void razor_transaction_destroy(struct razor_transaction *trans);
    1.72  
    1.73  /* Importer interface; for building a razor set from external sources,
    1.74   * like yum, rpmdb or razor package files. */