1.1 --- a/razor.c Tue Mar 04 19:07:14 2008 -0500
1.2 +++ b/razor.c Wed Mar 05 10:46:40 2008 -0500
1.3 @@ -1754,28 +1754,26 @@
1.4 bitarray_set(&trans->syspkgs, sp - spkgs, 0);
1.5 } else {
1.6 packages[i].name = strdup(packages[i].name);
1.7 - packages[i].state |= RAZOR_PACKAGE_UNAVAILABLE;
1.8 + packages[i].state = RAZOR_PACKAGE_REMOVE_NOT_INSTALLED;
1.9 trans->errors++;
1.10 }
1.11 } else {
1.12 if (up < uend && strcmp(packages[i].name, &upool[up->name]) == 0) {
1.13 + packages[i].package = up;
1.14 + packages[i].name = &upool[up->name];
1.15 + packages[i].version = &upool[up->version];
1.16 if (sp < send && strcmp(packages[i].name, &spool[sp->name]) == 0) {
1.17 if (versioncmp(&spool[sp->version], &upool[up->version]) >= 0) {
1.18 - /* FIXME: need a distinct error */
1.19 - packages[i].name = strdup(packages[i].name);
1.20 - packages[i].state |= RAZOR_PACKAGE_UNAVAILABLE;
1.21 + packages[i].state = RAZOR_PACKAGE_UP_TO_DATE;
1.22 trans->errors++;
1.23 continue;
1.24 }
1.25 bitarray_set(&trans->syspkgs, sp - spkgs, 0);
1.26 }
1.27 - packages[i].package = up;
1.28 - packages[i].name = &upool[up->name];
1.29 - packages[i].version = &upool[up->version];
1.30 bitarray_set(&trans->uppkgs, up - upkgs, 1);
1.31 } else {
1.32 packages[i].name = strdup(packages[i].name);
1.33 - packages[i].state |= RAZOR_PACKAGE_UNAVAILABLE;
1.34 + packages[i].state = RAZOR_PACKAGE_INSTALL_UNAVAILABLE;
1.35 trans->errors++;
1.36 }
1.37 }
1.38 @@ -2099,13 +2097,21 @@
1.39 const char *req_package,
1.40 struct razor_property *req_prop)
1.41 {
1.42 - struct razor_set *package_set;
1.43 + struct razor_set *package_set, *req_set;
1.44 + struct bitarray *reqpkgbits;
1.45 struct razor_transaction_package *tp, *packages;
1.46 const char *pool;
1.47 struct razor_package *pkgs;
1.48 struct list *pkg;
1.49
1.50 package_set = package_in_set(package, trans->system) ? trans->system : trans->upstream;
1.51 + if (property_in_set(req_prop, trans->system)) {
1.52 + req_set = trans->system;
1.53 + reqpkgbits = &trans->syspkgs;
1.54 + } else {
1.55 + req_set = trans->upstream;
1.56 + reqpkgbits = &trans->uppkgs;
1.57 + }
1.58
1.59 tp = array_add(&trans->packages, sizeof *tp);
1.60 memset(tp, 0, sizeof *tp);
1.61 @@ -2125,7 +2131,11 @@
1.62 return;
1.63 }
1.64 /* Oops. We lose */
1.65 - state |= RAZOR_PACKAGE_BLOCKED;
1.66 + if (state != RAZOR_PACKAGE_CONTRADICTION) {
1.67 + add_transaction_package(trans, package,
1.68 + RAZOR_PACKAGE_CONTRADICTION,
1.69 + NULL, NULL);
1.70 + }
1.71 break;
1.72 }
1.73 }
1.74 @@ -2134,35 +2144,39 @@
1.75 tp->name = &pool[package->name];
1.76 tp->version = &pool[package->version];
1.77 tp->state = state;
1.78 - } else
1.79 - tp->state = state | RAZOR_PACKAGE_UNSATISFIABLE;
1.80 +
1.81 + pkgs = package_set->packages.data;
1.82 + if (tp->state == RAZOR_PACKAGE_INSTALL)
1.83 + bitarray_set(&trans->uppkgs, package - pkgs, 1);
1.84 + else if (tp->state == RAZOR_PACKAGE_REMOVE)
1.85 + bitarray_set(&trans->syspkgs, package - pkgs, 0);
1.86 + else
1.87 + trans->errors++;
1.88 + } else {
1.89 + tp->state = RAZOR_PACKAGE_UNSATISFIABLE;
1.90 + trans->errors++;
1.91 + }
1.92
1.93 if (req_package)
1.94 - tp->req_package = req_package;
1.95 - else {
1.96 - for (pkg = list_first(&req_prop->packages, &trans->upstream->package_pool); pkg; pkg = list_next(pkg)) {
1.97 - if (bitarray_get(&trans->uppkgs, pkg->data))
1.98 + tp->dep_package = req_package;
1.99 + if (!req_prop)
1.100 + return;
1.101 +
1.102 + pool = req_set->string_pool.data;
1.103 + pkgs = req_set->packages.data;
1.104 + if (!req_package) {
1.105 + for (pkg = list_first(&req_prop->packages, &req_set->package_pool); pkg; pkg = list_next(pkg)) {
1.106 + if (bitarray_get(reqpkgbits, pkg->data))
1.107 break;
1.108 }
1.109 - if (pkg) {
1.110 - pool = trans->upstream->string_pool.data;
1.111 - pkgs = trans->upstream->packages.data;
1.112 - tp->req_package = &pool[pkgs[pkg->data].name];
1.113 - }
1.114 + if (pkg)
1.115 + tp->dep_package = &pool[pkgs[pkg->data].name];
1.116 }
1.117
1.118 - tp->req_type = req_prop->type;
1.119 - tp->req_property = &pool[req_prop->name];
1.120 - tp->req_relation = req_prop->relation;
1.121 - tp->req_version = &pool[req_prop->version];
1.122 -
1.123 - pkgs = package_set->packages.data;
1.124 - if (tp->state == RAZOR_PACKAGE_INSTALL)
1.125 - bitarray_set(&trans->uppkgs, package - pkgs, 1);
1.126 - else if (tp->state == RAZOR_PACKAGE_REMOVE)
1.127 - bitarray_set(&trans->syspkgs, package - pkgs, 0);
1.128 - else
1.129 - trans->errors++;
1.130 + tp->dep_type = req_prop->type;
1.131 + tp->dep_property = &pool[req_prop->name];
1.132 + tp->dep_relation = req_prop->relation;
1.133 + tp->dep_version = &pool[req_prop->version];
1.134 }
1.135
1.136 /* FIXME: make this more efficient */
1.137 @@ -2191,11 +2205,12 @@
1.138 struct razor_package *spkgs, *upkgs, *pkg, *upgrade;
1.139 struct razor_property *sp, *sprops, *sprop_end;
1.140 struct razor_property *up, *uprops, *uprop_end;
1.141 - const char *upool;
1.142 + const char *spool, *upool;
1.143
1.144 spkgs = trans->system->packages.data;
1.145 sprops = trans->system->properties.data;
1.146 sprop_end = trans->system->properties.data + trans->system->properties.size;
1.147 + spool = trans->system->string_pool.data;
1.148 upkgs = trans->upstream->packages.data;
1.149 uprops = trans->upstream->properties.data;
1.150 uprop_end = trans->upstream->properties.data + trans->upstream->properties.size;
1.151 @@ -2248,21 +2263,23 @@
1.152 if (!pkg)
1.153 break;
1.154
1.155 - /* pkg CONFLICTS with what 'up' PROVIDES. Try
1.156 - * finding an upgrade
1.157 - */
1.158 - upgrade = find_upgrade_for_installed_conflict(trans, pkg, up);
1.159 - if (upgrade) {
1.160 - bitarray_set(&trans->syspkgs, pkg - spkgs, 0);
1.161 - add_transaction_package(trans, upgrade,
1.162 - RAZOR_PACKAGE_INSTALL,
1.163 - NULL, up);
1.164 - } else {
1.165 - add_transaction_package(trans, pkg,
1.166 - /* FIXME? */
1.167 - RAZOR_PACKAGE_REMOVE_CONFLICT,
1.168 - NULL, up);
1.169 + if (package_in_set(pkg, trans->system)) {
1.170 + /* pkg CONFLICTS with what 'up' PROVIDES. Try
1.171 + * finding an upgrade
1.172 + */
1.173 + upgrade = find_upgrade_for_installed_conflict(trans, pkg, up);
1.174 + if (upgrade) {
1.175 + bitarray_set(&trans->syspkgs, pkg - spkgs, 0);
1.176 + add_transaction_package(trans, upgrade,
1.177 + RAZOR_PACKAGE_INSTALL,
1.178 + &spool[pkg->name], sp);
1.179 + }
1.180 + break;
1.181 }
1.182 +
1.183 + add_transaction_package(trans, pkg,
1.184 + RAZOR_PACKAGE_OLD_CONFLICT,
1.185 + NULL, up);
1.186 break;
1.187
1.188 case RAZOR_PROPERTY_CONFLICTS:
1.189 @@ -2280,34 +2297,24 @@
1.190 add_transaction_package(trans, upgrade,
1.191 RAZOR_PACKAGE_INSTALL,
1.192 NULL, up);
1.193 - } else {
1.194 - add_transaction_package(trans, pkg,
1.195 - RAZOR_PACKAGE_INSTALL_CONFLICT,
1.196 - NULL, up);
1.197 + break;
1.198 }
1.199 - } else {
1.200 - /* Conflicts with something already to-be-installed */
1.201 - add_transaction_package(trans, pkg,
1.202 - RAZOR_PACKAGE_INSTALL_CONFLICT,
1.203 - NULL, up);
1.204 }
1.205 +
1.206 + add_transaction_package(trans, pkg,
1.207 + RAZOR_PACKAGE_NEW_CONFLICT,
1.208 + NULL, up);
1.209 break;
1.210
1.211 case RAZOR_PROPERTY_OBSOLETES:
1.212 pkg = find_installed_package_for_property(trans, &sp, up);
1.213 - if (!pkg)
1.214 - break;
1.215 -
1.216 - if (package_in_set(pkg, trans->system)) {
1.217 - /* Obsoletes something installed */
1.218 + if (pkg) {
1.219 + /* If pkg is to-be-installed, this
1.220 + * will add a CONTRADICTION error as well.
1.221 + */
1.222 add_transaction_package(trans, pkg,
1.223 RAZOR_PACKAGE_REMOVE,
1.224 NULL, up);
1.225 - } else {
1.226 - /* Obsoletes something that was to-be-installed */
1.227 - add_transaction_package(trans, pkg,
1.228 - RAZOR_PACKAGE_REMOVE_CONFLICT,
1.229 - NULL, up);
1.230 }
1.231 break;
1.232
1.233 @@ -2580,11 +2587,6 @@
1.234 "requires", "provides", "conflicts with", "obsoletes"
1.235 };
1.236
1.237 -const char * const razor_property_types_removal[] = {
1.238 - /* same order as enum razor_property_type */
1.239 - "required", "provided", "conflicted with", "was obsoleted by"
1.240 -};
1.241 -
1.242 void
1.243 razor_transaction_describe(struct razor_transaction *trans)
1.244 {
1.245 @@ -2599,93 +2601,110 @@
1.246 if (errors_only)
1.247 break;
1.248
1.249 - printf ("Installing %s %s", p->name, p->version);
1.250 - if (p->req_package) {
1.251 - printf (" for %s", p->req_package);
1.252 - print_requirement:
1.253 - if (*p->req_version) {
1.254 - printf (", which %s %s %s %s",
1.255 - razor_property_types[p->req_type],
1.256 - p->req_property,
1.257 - razor_version_relations[p->req_relation],
1.258 - p->req_version);
1.259 - } else if (strcmp(p->req_property, p->name) != 0) {
1.260 - printf (", which %s %s",
1.261 - razor_property_types[p->req_type],
1.262 - p->req_property);
1.263 + printf("Installing %s %s", p->name, p->version);
1.264 + if (p->dep_package) {
1.265 + if (p->dep_type == RAZOR_PROPERTY_CONFLICTS &&
1.266 + !strcmp(p->dep_package, p->name)) {
1.267 + printf(" because installed %s conflicts with %s",
1.268 + p->name, p->dep_property);
1.269 + if (*p->dep_version) {
1.270 + printf(" %s %s",
1.271 + razor_version_relations[p->dep_relation],
1.272 + p->dep_version);
1.273 + }
1.274 + } else {
1.275 + printf(" for %s", p->dep_package);
1.276 + if (*p->dep_version) {
1.277 + printf(", which %s %s %s %s",
1.278 + razor_property_types[p->dep_type],
1.279 + p->dep_property,
1.280 + razor_version_relations[p->dep_relation],
1.281 + p->dep_version);
1.282 + } else if (strcmp(p->dep_property, p->name) != 0) {
1.283 + printf(", which %s %s",
1.284 + razor_property_types[p->dep_type],
1.285 + p->dep_property);
1.286 + }
1.287 }
1.288 }
1.289 printf("\n");
1.290 break;
1.291
1.292 - case RAZOR_PACKAGE_INSTALL_UNAVAILABLE:
1.293 - printf ("Can't find %s", p->name);
1.294 - if (p->req_package) {
1.295 - if (*p->req_version && strcmp(p->req_property, p->name) == 0) {
1.296 - printf ("%s %s, which is required by %s",
1.297 - razor_version_relations[p->req_relation],
1.298 - p->req_version,
1.299 - p->req_package);
1.300 - } else {
1.301 - if (*p->version)
1.302 - printf (" %s", p->version);
1.303 -
1.304 - if (p->req_package) {
1.305 - printf (" which is required by %s",
1.306 - p->req_package);
1.307 - if (strcmp(p->req_property, p->name) != 0)
1.308 - printf (" for %s", p->req_property);
1.309 - }
1.310 - }
1.311 - } else if (p->version && *p->version)
1.312 - printf (" %s", p->version);
1.313 - printf("\n");
1.314 - errors_only = 1;
1.315 - break;
1.316 -
1.317 - case RAZOR_PACKAGE_INSTALL_CONFLICT:
1.318 - printf ("Cannot install %s", p->req_package);
1.319 - errors_only = 1;
1.320 - goto print_requirement;
1.321 -
1.322 - case RAZOR_PACKAGE_INSTALL_UNSATISFIABLE:
1.323 - printf ("Cannot find package for %s", p->req_property);
1.324 - if (*p->req_version) {
1.325 - printf (" %s %s",
1.326 - razor_version_relations[p->req_relation],
1.327 - p->req_version);
1.328 - }
1.329 - printf (" which is required by %s\n",
1.330 - p->req_package);
1.331 - errors_only = 1;
1.332 - break;
1.333 -
1.334 case RAZOR_PACKAGE_REMOVE:
1.335 if (errors_only)
1.336 break;
1.337 - printf ("Removing %s %s", p->name, p->version);
1.338 - if (p->req_package) {
1.339 - printf (" which %s %s",
1.340 - razor_property_types_removal[p->req_type],
1.341 - p->req_package);
1.342 - if (strcmp(p->req_property, p->name) != 0)
1.343 - printf (" for %s", p->req_property);
1.344 + printf("Removing %s %s", p->name, p->version);
1.345 + if (p->dep_package) {
1.346 + if (p->dep_type == RAZOR_PROPERTY_OBSOLETES) {
1.347 + printf(" which is obsoleted by %s",
1.348 + p->dep_package);
1.349 + } else {
1.350 + printf(" which required %s",
1.351 + p->dep_package);
1.352 + if (strcmp(p->dep_property, p->name) != 0)
1.353 + printf(" for %s", p->dep_property);
1.354 + }
1.355 }
1.356 printf("\n");
1.357 break;
1.358
1.359 - case RAZOR_PACKAGE_REMOVE_NOT_INSTALLED:
1.360 - printf ("Package %s is not installed\n", p->name);
1.361 + case RAZOR_PACKAGE_INSTALL_UNAVAILABLE:
1.362 + printf("Error: can't install %s: not found\n", p->name);
1.363 errors_only = 1;
1.364 break;
1.365
1.366 - case RAZOR_PACKAGE_REMOVE_BLOCKED:
1.367 - printf ("Cannot remove %s, which is marked for installation but requires %s\n", p->name, p->req_package);
1.368 + case RAZOR_PACKAGE_REMOVE_NOT_INSTALLED:
1.369 + printf("Error: can't remove %s: not installed\n", p->name);
1.370 errors_only = 1;
1.371 break;
1.372
1.373 - case RAZOR_PACKAGE_REMOVE_CONFLICT:
1.374 - printf ("Cannot remove %s, which is marked for installation but is obsoleted by %s\n", p->name, p->req_package);
1.375 + case RAZOR_PACKAGE_UP_TO_DATE:
1.376 + printf("Error: can't upgrade %s: no newer version is available", p->name);
1.377 + errors_only = 1;
1.378 + break;
1.379 +
1.380 + case RAZOR_PACKAGE_CONTRADICTION:
1.381 + printf("Error: package %s is marked for both installation and removal", p->name);
1.382 + errors_only = 1;
1.383 + break;
1.384 +
1.385 + case RAZOR_PACKAGE_OLD_CONFLICT:
1.386 + printf("Error: can't install %s, because installed package %s conflicts with ",
1.387 + p->name, p->dep_package);
1.388 + if (*p->dep_version) {
1.389 + printf("%s %s %s",
1.390 + p->dep_property,
1.391 + razor_version_relations[p->dep_relation],
1.392 + p->dep_version);
1.393 + } else
1.394 + printf("it");
1.395 + printf("\n");
1.396 +
1.397 + errors_only = 1;
1.398 + break;
1.399 +
1.400 + case RAZOR_PACKAGE_NEW_CONFLICT:
1.401 + printf("Error: can't install %s, because it conflicts with %s",
1.402 + p->name, p->dep_package);
1.403 + if (*p->dep_version) {
1.404 + printf(" %s %s",
1.405 + razor_version_relations[p->dep_relation],
1.406 + p->dep_version);
1.407 + }
1.408 + printf("\n");
1.409 +
1.410 + errors_only = 1;
1.411 + break;
1.412 +
1.413 + case RAZOR_PACKAGE_UNSATISFIABLE:
1.414 + printf("Error: can't find package for %s", p->dep_property);
1.415 + if (*p->dep_version) {
1.416 + printf(" %s %s",
1.417 + razor_version_relations[p->dep_relation],
1.418 + p->dep_version);
1.419 + }
1.420 + printf(" which is required by %s\n",
1.421 + p->dep_package);
1.422 errors_only = 1;
1.423 break;
1.424
1.425 @@ -2715,7 +2734,7 @@
1.426 array_init(&install_packages);
1.427 array_init(&remove_packages);
1.428 for (p = 0; p < trans->package_count; p++) {
1.429 - if (trans->packages[p].state & RAZOR_PACKAGE_INSTALL)
1.430 + if (trans->packages[p].state == RAZOR_PACKAGE_INSTALL)
1.431 pkg = array_add(&install_packages, sizeof *pkg);
1.432 else
1.433 pkg = array_add(&remove_packages, sizeof *pkg);
1.434 @@ -2791,7 +2810,7 @@
1.435 int p;
1.436
1.437 for (p = 0; p < trans->package_count; p++) {
1.438 - if (!trans->packages[p].req_package &&
1.439 + if (!trans->packages[p].dep_package &&
1.440 (trans->packages[p].state == RAZOR_PACKAGE_INSTALL_UNAVAILABLE ||
1.441 trans->packages[p].state == RAZOR_PACKAGE_REMOVE_NOT_INSTALLED))
1.442 free((char *)trans->packages[p].name);
2.1 --- a/razor.h Tue Mar 04 19:07:14 2008 -0500
2.2 +++ b/razor.h Wed Mar 05 10:46:40 2008 -0500
2.3 @@ -76,22 +76,25 @@
2.4
2.5 enum razor_transaction_package_state {
2.6 /* Basic states */
2.7 - RAZOR_PACKAGE_INSTALL = 0x01,
2.8 - RAZOR_PACKAGE_REMOVE = 0x02,
2.9 -
2.10 - /* (Flags used to define the error states) */
2.11 - RAZOR_PACKAGE_UNAVAILABLE = 0x04,
2.12 - RAZOR_PACKAGE_UNSATISFIABLE = 0x08,
2.13 - RAZOR_PACKAGE_BLOCKED = 0x10,
2.14 - RAZOR_PACKAGE_CONFLICT = 0x20,
2.15 + RAZOR_PACKAGE_INSTALL,
2.16 + RAZOR_PACKAGE_REMOVE,
2.17
2.18 /* Error states */
2.19 - RAZOR_PACKAGE_INSTALL_UNAVAILABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNAVAILABLE,
2.20 - RAZOR_PACKAGE_INSTALL_UNSATISFIABLE = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_UNSATISFIABLE,
2.21 - RAZOR_PACKAGE_INSTALL_CONFLICT = RAZOR_PACKAGE_INSTALL | RAZOR_PACKAGE_CONFLICT,
2.22 - RAZOR_PACKAGE_REMOVE_NOT_INSTALLED = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_UNAVAILABLE,
2.23 - RAZOR_PACKAGE_REMOVE_BLOCKED = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_BLOCKED,
2.24 - RAZOR_PACKAGE_REMOVE_CONFLICT = RAZOR_PACKAGE_REMOVE | RAZOR_PACKAGE_CONFLICT
2.25 +
2.26 + /* Package requested for install does not exist */
2.27 + RAZOR_PACKAGE_INSTALL_UNAVAILABLE,
2.28 + /* Package requested for removal does not exist */
2.29 + RAZOR_PACKAGE_REMOVE_NOT_INSTALLED,
2.30 + /* No newer version of package is available */
2.31 + RAZOR_PACKAGE_UP_TO_DATE,
2.32 + /* Package marked for both install and remove */
2.33 + RAZOR_PACKAGE_CONTRADICTION,
2.34 + /* Package would add a conflict with an already-installed package */
2.35 + RAZOR_PACKAGE_NEW_CONFLICT,
2.36 + /* Already-installed package has a conflict against this package */
2.37 + RAZOR_PACKAGE_OLD_CONFLICT,
2.38 + /* Requirement of to-be-installed package can't be satisfied */
2.39 + RAZOR_PACKAGE_UNSATISFIABLE
2.40 };
2.41
2.42 struct razor_transaction_package {
2.43 @@ -99,11 +102,34 @@
2.44 const char *name, *version;
2.45 enum razor_transaction_package_state state;
2.46
2.47 - const char *req_package;
2.48 - enum razor_property_type req_type;
2.49 - const char *req_property;
2.50 - enum razor_version_relation req_relation;
2.51 - const char *req_version;
2.52 + /* dep_package is the name of the package that resulted in
2.53 + * this entry being created (or NULL if the user requested the
2.54 + * install/remove), with the other dep_ fields providing
2.55 + * additional information.
2.56 + *
2.57 + * For INSTALL, if dep_type is REQUIRES, then dep_package
2.58 + * required something that this package provides. If dep_type
2.59 + * is CONFLICTS, then dep_package is a package that conflicted
2.60 + * with an older version of this package, forcing an upgrade.
2.61 + *
2.62 + * For REMOVE, if dep_type is REQUIRES, then dep_package is a
2.63 + * package that is being removed. If dep_type is OBSOLETES,
2.64 + * then dep_package is a package that obsoletes this one.
2.65 + *
2.66 + * For OLD_CONFLICT or NEW_CONFLICT, dep_package is an
2.67 + * existing package that conflicts with this one. The
2.68 + * conflicting property comes from the already-installed
2.69 + * package for OLD_CONFLICT, or the to-be-installed package
2.70 + * for NEW_CONFLICT.
2.71 + *
2.72 + * For UNSATISFIABLE, the dep_ fields are as for an INSTALL,
2.73 + * but the name field will be NULL.
2.74 + */
2.75 + const char *dep_package;
2.76 + enum razor_property_type dep_type;
2.77 + const char *dep_property;
2.78 + enum razor_version_relation dep_relation;
2.79 + const char *dep_version;
2.80 };
2.81
2.82 struct razor_transaction {
3.1 --- a/test-driver.c Tue Mar 04 19:07:14 2008 -0500
3.2 +++ b/test-driver.c Wed Mar 05 10:46:40 2008 -0500
3.3 @@ -200,11 +200,11 @@
3.4 version = "";
3.5
3.6 for (; ctx->unsat < ctx->trans->packages + ctx->trans->package_count; ctx->unsat++) {
3.7 - if (ctx->unsat->state != RAZOR_PACKAGE_INSTALL_UNSATISFIABLE)
3.8 + if (ctx->unsat->state != RAZOR_PACKAGE_UNSATISFIABLE)
3.9 continue;
3.10 - if (strcmp(name, ctx->unsat->req_property) != 0 ||
3.11 - rel != ctx->unsat->req_relation ||
3.12 - strcmp(version, ctx->unsat->req_version) != 0)
3.13 + if (strcmp(name, ctx->unsat->dep_property) != 0 ||
3.14 + rel != ctx->unsat->dep_relation ||
3.15 + strcmp(version, ctx->unsat->dep_version) != 0)
3.16 continue;
3.17
3.18 /* OK, found it, so skip over it and continue */