+--- pkgset-install.c 16 Nov 2002 00:23:22 -0000 1.82
++++ pkgset-install.c 16 Jul 2003 10:55:04 -0000 1.82.4.1
+@@ -224,11 +224,11 @@
+
+ if (p != pkg && pkg_is_marked(p)) {
+ if (req == NULL || pkg_statisfies_req(p, req, 0)) {
+- DBGF("%s -> yes, %s\n", pkg_snprintf_s0(pkg), pkg_snprintf_s1(p));
+- return 1;
++ DBGF("%s -> yes, %s\n", pkg_snprintf_s0(pkg), pkg_snprintf_s1(p));
++ return 1;
++ }
+ }
+ }
+- }
+
+ return 0;
+ }
+@@ -303,7 +303,7 @@
+ struct pkg **candidates, int npkgs,
+ struct pkgset *ps, struct upgrade_s *upg)
+ {
+- int *ncnfls, i, j, i_min, cnfl_min;
++ int *ncnfls, i, j, i_best, cnfl_min;
+ int i_ver_eq = -1, i_evr_eq = -1;
+
+ DBGF("%s (%d)\n", pkg_snprintf_s(marker), npkgs);
+@@ -345,38 +345,44 @@
+ return i_ver_eq;
+
+ cnfl_min = INT_MAX;
+- i_min = -1;
++ i_best = -1;
+ for (i=0; i < npkgs; i++) {
+ DBGF("%d. %s %d\n", i, pkg_snprintf_s(candidates[i]), ncnfls[i]);
+ if (cnfl_min > ncnfls[i]) {
+ cnfl_min = ncnfls[i];
+- i_min = i;
++ i_best = i;
+ }
+ }
+
+- DBGF("[after cnfls] i_min = %d\n", i_min);
++ DBGF("[after cnfls] i_best = %d\n", i_best);
+ if (cnfl_min == 0) {
+ int n = INT_MAX, *nmarks;
+
+ nmarks = alloca(npkgs * sizeof(*nmarks));
+
+ for (i=0; i < npkgs; i++) {
++ if (other_version_marked(candidates[i], ps->pkgs, NULL)) {
++ DBGF("%d. %s other version is already marked, skipped\n",
++ i, pkg_snprintf_s(candidates[i]));
++ continue;
++ }
++
+ nmarks[i] = pkg_drags(candidates[i], ps, upg);
+- DBGF("%d %s -> %d\n", i, pkg_snprintf_s(candidates[i]), nmarks[i]);
+- if (n > nmarks[i]) {
++ DBGF("%d. %s -> %d\n", i, pkg_snprintf_s(candidates[i]), nmarks[i]);
++ if (n > nmarks[i])
+ n = nmarks[i];
+- }
+-
++
+ if (n == 0 && ncnfls[i] == 0) {
+- i_min = i;
++ i_best = i;
+ break;
+ }
+ }
+ }
+
+- if (i_min == -1)
+- i_min = 0;
+- return i_min;
++ if (i_best == -1)
++ i_best = 0;
++ DBGF("RET %d. %s\n", i_best, pkg_snprintf_s(candidates[i]));
++ return i_best;
+ }
+
+ #define FINDREQ_BESTSEL 0
+@@ -1009,7 +1015,7 @@
+ capreq_snprintf(reqname, 256, req);
+ }
+
+- DBGF("req %s\n", capreq_snprintf_s(req));
++ DBGF("%s: REQ %s\n", pkg_snprintf_s(pkg), capreq_snprintf_s(req));
+
+ if ((upg->inst->flags & INSTS_EQPKG_ASKUSER) && upg->inst->askpkg_fn)
+ tomark_candidates_ptr = &tomark_candidates;
+@@ -1022,7 +1028,8 @@
+ goto l_end_loop;
+ }
+ }
+-
++ DBGF("%s: TOMARK %s\n", pkg_snprintf_s1(pkg),
++ tomark ? pkg_snprintf_s0(tomark) : "NULL");
+ /* don't check foreign dependencies */
+ if (process_as == PROCESS_AS_ORPHAN) {
+ #if 0 /* buggy, TODO - unmark foreign on adding to uninst_set */