fix up transaction descriptions a little more
authorDan Winship <danw@gnome.org>
Wed Mar 12 11:53:10 2008 -0400 (2008-03-12)
changeset 1692d0ad2111cb0
parent 168 680d18568209
child 170 44d7bec477d5
fix up transaction descriptions a little more
razor.c
razor.h
     1.1 --- a/razor.c	Wed Mar 12 11:46:53 2008 -0400
     1.2 +++ b/razor.c	Wed Mar 12 11:53:10 2008 -0400
     1.3 @@ -1917,7 +1917,8 @@
     1.4  	sp = trans->system->properties.data;
     1.5  	up = trans->upstream->properties.data;
     1.6  	for (i = 0; i < end - start; i++) {
     1.7 -		if (!packages[i]->name)
     1.8 +		if (!packages[i]->name ||
     1.9 +		    packages[i]->state >= RAZOR_PACKAGE_FIRST_ERROR_STATE)
    1.10  			continue;
    1.11  
    1.12  		spkg = NULL;
    1.13 @@ -1945,9 +1946,10 @@
    1.14  				packages[i]->name = &spool[spkg->name];
    1.15  				packages[i]->old_version = &spool[spkg->version];
    1.16  				bitarray_set(&trans->syspkgs, spkg - spkgs, 0);
    1.17 -			} else {
    1.18 +			}
    1.19 +			if (!packages[i]->old_package) {
    1.20  				packages[i]->name = strdup(packages[i]->name);
    1.21 -				packages[i]->state = RAZOR_PACKAGE_REMOVE_NOT_INSTALLED;
    1.22 +				packages[i]->state |= RAZOR_PACKAGE_UNAVAILABLE_FLAG;
    1.23  				trans->errors++;
    1.24  			}
    1.25  		} else {
    1.26 @@ -1975,9 +1977,10 @@
    1.27  					bitarray_set(&trans->syspkgs, spkg - spkgs, 0);
    1.28  				}
    1.29  				bitarray_set(&trans->uppkgs, upkg - upkgs, 1);
    1.30 -			} else {
    1.31 +			}
    1.32 +			if (!packages[i]->new_package) {
    1.33  				packages[i]->name = strdup(packages[i]->name);
    1.34 -				packages[i]->state = RAZOR_PACKAGE_INSTALL_UNAVAILABLE;
    1.35 +				packages[i]->state |= RAZOR_PACKAGE_UNAVAILABLE_FLAG;
    1.36  				trans->errors++;
    1.37  			}
    1.38  		}
    1.39 @@ -2695,6 +2698,35 @@
    1.40  	"requires", "provides", "conflicts with", "obsoletes"
    1.41  };
    1.42  
    1.43 +static void
    1.44 +print_requirement(struct razor_transaction_package *p)
    1.45 +{
    1.46 +	if (p->dep_type == RAZOR_PROPERTY_CONFLICTS &&
    1.47 +	    !strcmp(p->dep_package, p->name)) {
    1.48 +		printf(" because %s %s conflicts with %s",
    1.49 +		       p->name, p->old_version, p->dep_property);
    1.50 +		if (*p->dep_version) {
    1.51 +			printf(" %s %s",
    1.52 +			       razor_version_relations[p->dep_relation],
    1.53 +			       p->dep_version);
    1.54 +		}
    1.55 +	} else {
    1.56 +		if (strcmp(p->name, p->dep_package) != 0)
    1.57 +			printf(" for %s", p->dep_package);
    1.58 +		if (*p->dep_version) {
    1.59 +			printf(", which %s %s %s %s",
    1.60 +			       razor_property_types[p->dep_type],
    1.61 +			       p->dep_property,
    1.62 +			       razor_version_relations[p->dep_relation],
    1.63 +			       p->dep_version);
    1.64 +		} else if (strcmp(p->dep_property, p->name) != 0) {
    1.65 +			printf(", which %s %s",
    1.66 +			       razor_property_types[p->dep_type],
    1.67 +			       p->dep_property);
    1.68 +		}
    1.69 +	}
    1.70 +}
    1.71 +
    1.72  void
    1.73  razor_transaction_describe(struct razor_transaction *trans)
    1.74  {
    1.75 @@ -2710,31 +2742,8 @@
    1.76  				break;
    1.77  
    1.78  			printf("Installing %s %s", p->name, p->new_version);
    1.79 -			if (p->dep_package) {
    1.80 -				if (p->dep_type == RAZOR_PROPERTY_CONFLICTS &&
    1.81 -				    !strcmp(p->dep_package, p->name)) {
    1.82 -					printf(" because %s %s conflicts with %s",
    1.83 -					       p->name, p->old_version, p->dep_property);
    1.84 -					if (*p->dep_version) {
    1.85 -						printf(" %s %s",
    1.86 -						       razor_version_relations[p->dep_relation],
    1.87 -						       p->dep_version);
    1.88 -					}
    1.89 -				} else {
    1.90 -					printf(" for %s", p->dep_package);
    1.91 -					if (*p->dep_version) {
    1.92 -						printf(", which %s %s %s %s",
    1.93 -						       razor_property_types[p->dep_type],
    1.94 -						       p->dep_property,
    1.95 -						       razor_version_relations[p->dep_relation],
    1.96 -						       p->dep_version);
    1.97 -					} else if (strcmp(p->dep_property, p->name) != 0) {
    1.98 -						printf(", which %s %s",
    1.99 -						       razor_property_types[p->dep_type],
   1.100 -						       p->dep_property);
   1.101 -					}
   1.102 -				}
   1.103 -			}
   1.104 +			if (p->dep_package)
   1.105 +				print_requirement(p);
   1.106  			printf("\n");
   1.107  			break;
   1.108  
   1.109 @@ -2771,7 +2780,19 @@
   1.110  			break;
   1.111  
   1.112  		case RAZOR_PACKAGE_INSTALL_UNAVAILABLE:
   1.113 -			printf("Error: can't install %s: not found\n", p->name);
   1.114 +			printf("Error: can't find %s", p->name);
   1.115 +			if (p->dep_package) {
   1.116 +				printf(" (which is required");
   1.117 +				print_requirement(p);
   1.118 +				printf(")");
   1.119 +			}
   1.120 +			printf("\n");
   1.121 +			errors_only = 1;
   1.122 +			break;
   1.123 +
   1.124 +		case RAZOR_PACKAGE_UPDATE_UNAVAILABLE:
   1.125 +			printf("Error: can't find an updated version of %s (which must be updated due to update of %s)\n",
   1.126 +			       p->name, p->dep_package);
   1.127  			errors_only = 1;
   1.128  			break;
   1.129  
   1.130 @@ -2781,7 +2802,10 @@
   1.131  			break;
   1.132  
   1.133  		case RAZOR_PACKAGE_UP_TO_DATE:
   1.134 -			printf("Error: can't upgrade %s: %s is most recent version\n", p->name, p->old_version);
   1.135 +			printf("Error: can't update %s", p->name);
   1.136 +			if (p->dep_package)
   1.137 +				printf(" (which must be updated due to update of %s)", p->dep_package);
   1.138 +			printf(": %s is most recent version\n", p->old_version);
   1.139  			errors_only = 1;
   1.140  			break;
   1.141  
     2.1 --- a/razor.h	Wed Mar 12 11:46:53 2008 -0400
     2.2 +++ b/razor.h	Wed Mar 12 11:53:10 2008 -0400
     2.3 @@ -83,10 +83,18 @@
     2.4  
     2.5  	/* Error states */
     2.6  
     2.7 +	RAZOR_PACKAGE_FIRST_ERROR_STATE = 0x4,
     2.8 +	RAZOR_PACKAGE_UNAVAILABLE_FLAG = 0x4,
     2.9 +
    2.10  	/* Package requested for install does not exist */
    2.11 -	RAZOR_PACKAGE_INSTALL_UNAVAILABLE,
    2.12 +	RAZOR_PACKAGE_INSTALL_UNAVAILABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNAVAILABLE_FLAG,
    2.13 +	/* Package requiring update does not have any update */
    2.14 +	RAZOR_PACKAGE_UPDATE_UNAVAILABLE = RAZOR_PACKAGE_FORCED_UPDATE | RAZOR_PACKAGE_UNAVAILABLE_FLAG,
    2.15  	/* Package requested for removal does not exist */
    2.16 -	RAZOR_PACKAGE_REMOVE_NOT_INSTALLED,
    2.17 +	RAZOR_PACKAGE_REMOVE_NOT_INSTALLED = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_UNAVAILABLE_FLAG,
    2.18 +	/* (not used) */
    2.19 +	RAZOR_PACKAGE_OBSOLETE_UNAVAILABLE = RAZOR_PACKAGE_OBSOLETED | RAZOR_PACKAGE_UNAVAILABLE_FLAG,
    2.20 +
    2.21  	/* No newer version of package is available */
    2.22  	RAZOR_PACKAGE_UP_TO_DATE,
    2.23  	/* Package marked for both install and remove */