razor.h
changeset 145 097f7b60b97a
parent 143 59a9513fac54
child 147 c3eab84160e5
     1.1 --- a/razor.h	Tue Mar 04 10:55:01 2008 -0500
     1.2 +++ b/razor.h	Wed Mar 05 10:46:40 2008 -0500
     1.3 @@ -76,22 +76,25 @@
     1.4  
     1.5  enum razor_transaction_package_state {
     1.6  	/* Basic states */
     1.7 -	RAZOR_PACKAGE_INSTALL       = 0x01,
     1.8 -	RAZOR_PACKAGE_REMOVE        = 0x02,
     1.9 -
    1.10 -	/* (Flags used to define the error states) */
    1.11 -	RAZOR_PACKAGE_UNAVAILABLE   = 0x04,
    1.12 -	RAZOR_PACKAGE_UNSATISFIABLE = 0x08,
    1.13 -	RAZOR_PACKAGE_BLOCKED       = 0x10,
    1.14 -	RAZOR_PACKAGE_CONFLICT      = 0x20,
    1.15 +	RAZOR_PACKAGE_INSTALL,
    1.16 +	RAZOR_PACKAGE_REMOVE,
    1.17  
    1.18  	/* Error states */
    1.19 -	RAZOR_PACKAGE_INSTALL_UNAVAILABLE   = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNAVAILABLE,
    1.20 -	RAZOR_PACKAGE_INSTALL_UNSATISFIABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNSATISFIABLE,
    1.21 -	RAZOR_PACKAGE_INSTALL_CONFLICT = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_CONFLICT,
    1.22 -	RAZOR_PACKAGE_REMOVE_NOT_INSTALLED  = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_UNAVAILABLE,
    1.23 -	RAZOR_PACKAGE_REMOVE_BLOCKED  = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_BLOCKED,
    1.24 -	RAZOR_PACKAGE_REMOVE_CONFLICT  = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_CONFLICT
    1.25 +
    1.26 +	/* Package requested for install does not exist */
    1.27 +	RAZOR_PACKAGE_INSTALL_UNAVAILABLE,
    1.28 +	/* Package requested for removal does not exist */
    1.29 +	RAZOR_PACKAGE_REMOVE_NOT_INSTALLED,
    1.30 +	/* No newer version of package is available */
    1.31 +	RAZOR_PACKAGE_UP_TO_DATE,
    1.32 +	/* Package marked for both install and remove */
    1.33 +	RAZOR_PACKAGE_CONTRADICTION,
    1.34 +	/* Package would add a conflict with an already-installed package */
    1.35 +	RAZOR_PACKAGE_NEW_CONFLICT,
    1.36 +	/* Already-installed package has a conflict against this package */
    1.37 +	RAZOR_PACKAGE_OLD_CONFLICT,
    1.38 +	/* Requirement of to-be-installed package can't be satisfied */
    1.39 +	RAZOR_PACKAGE_UNSATISFIABLE
    1.40  };
    1.41  
    1.42  struct razor_transaction_package {
    1.43 @@ -99,11 +102,34 @@
    1.44  	const char *name, *version;
    1.45  	enum razor_transaction_package_state state;
    1.46  
    1.47 -	const char *req_package;
    1.48 -	enum razor_property_type req_type;
    1.49 -	const char *req_property;
    1.50 -	enum razor_version_relation req_relation;
    1.51 -	const char *req_version;
    1.52 +	/* dep_package is the name of the package that resulted in
    1.53 +	 * this entry being created (or NULL if the user requested the
    1.54 +	 * install/remove), with the other dep_ fields providing
    1.55 +	 * additional information.
    1.56 +	 *
    1.57 +	 * For INSTALL, if dep_type is REQUIRES, then dep_package
    1.58 +	 * required something that this package provides. If dep_type
    1.59 +	 * is CONFLICTS, then dep_package is a package that conflicted
    1.60 +	 * with an older version of this package, forcing an upgrade.
    1.61 +	 *
    1.62 +	 * For REMOVE, if dep_type is REQUIRES, then dep_package is a
    1.63 +	 * package that is being removed. If dep_type is OBSOLETES,
    1.64 +	 * then dep_package is a package that obsoletes this one.
    1.65 +	 *
    1.66 +	 * For OLD_CONFLICT or NEW_CONFLICT, dep_package is an
    1.67 +	 * existing package that conflicts with this one. The
    1.68 +	 * conflicting property comes from the already-installed
    1.69 +	 * package for OLD_CONFLICT, or the to-be-installed package
    1.70 +	 * for NEW_CONFLICT.
    1.71 +	 *
    1.72 +	 * For UNSATISFIABLE, the dep_ fields are as for an INSTALL,
    1.73 +	 * but the name field will be NULL.
    1.74 +	 */
    1.75 +	const char *dep_package;
    1.76 +	enum razor_property_type dep_type;
    1.77 +	const char *dep_property;
    1.78 +	enum razor_version_relation dep_relation;
    1.79 +	const char *dep_version;
    1.80  };
    1.81  
    1.82  struct razor_transaction {