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. */