diff -r d221757574c1 -r 4722cd3437cb razor.h --- a/razor.h Thu Feb 21 12:09:13 2008 -0500 +++ b/razor.h Fri Feb 29 11:53:15 2008 -0500 @@ -21,6 +21,7 @@ RAZOR_VERSION_GREATER_OR_EQUAL, RAZOR_VERSION_GREATER }; +extern const char * const razor_version_relations[]; struct razor_set *razor_set_create(void); struct razor_set *razor_set_open(const char *filename); @@ -62,11 +63,6 @@ void razor_set_list_package_files(struct razor_set *set, const char *name); void razor_set_list_unsatisfied(struct razor_set *set); -struct razor_set *razor_set_update(struct razor_set *set, - struct razor_set *upstream, - int count, const char **packages); -struct razor_set *razor_set_remove(struct razor_set *set, - int count, const char **packages); typedef void (*razor_package_callback_t)(const char *name, const char *old_version, @@ -76,6 +72,51 @@ razor_set_diff(struct razor_set *set, struct razor_set *upstream, razor_package_callback_t callback, void *data); +/* Package transactions */ + +enum razor_transaction_package_state { + /* Basic states */ + RAZOR_PACKAGE_INSTALL = 0x01, + RAZOR_PACKAGE_REMOVE = 0x02, + + /* (Flags used to define the error states) */ + RAZOR_PACKAGE_UNAVAILABLE = 0x04, + RAZOR_PACKAGE_UNSATISFIABLE = 0x08, + RAZOR_PACKAGE_BLOCKED = 0x10, + + /* Error states */ + RAZOR_PACKAGE_INSTALL_UNAVAILABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNAVAILABLE, + RAZOR_PACKAGE_INSTALL_UNSATISFIABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNSATISFIABLE, + RAZOR_PACKAGE_INSTALL_BLOCKED = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_BLOCKED, + RAZOR_PACKAGE_REMOVE_NOT_INSTALLED = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_UNAVAILABLE, + RAZOR_PACKAGE_REMOVE_BLOCKED = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_BLOCKED +}; + +struct razor_transaction_package { + struct razor_package *package; + const char *name, *version; + enum razor_transaction_package_state state; + + const char *req_package; + const char *req_property; + enum razor_version_relation req_relation; + const char *req_version; +}; + +struct razor_transaction { + int package_count, errors; + struct razor_transaction_package *packages; + + struct razor_set *system, *upstream; +}; + +struct razor_transaction * +razor_transaction_create(struct razor_set *system, struct razor_set *upstream, + int update_count, const char **update_packages, + int remove_count, const char **remove_packages); +void razor_transaction_describe(struct razor_transaction *trans); +struct razor_set *razor_transaction_run(struct razor_transaction *trans); +void razor_transaction_destroy(struct razor_transaction *trans); /* Importer interface; for building a razor set from external sources, * like yum, rpmdb or razor package files. */