]>
Commit | Line | Data |
---|---|---|
cab85d07 | 1 | --- pkgset-install.c 16 Nov 2002 00:23:22 -0000 1.82 |
2 | +++ pkgset-install.c 16 Jul 2003 10:55:04 -0000 1.82.4.1 | |
3 | @@ -224,11 +224,11 @@ | |
4 | ||
5 | if (p != pkg && pkg_is_marked(p)) { | |
6 | if (req == NULL || pkg_statisfies_req(p, req, 0)) { | |
7 | - DBGF("%s -> yes, %s\n", pkg_snprintf_s0(pkg), pkg_snprintf_s1(p)); | |
8 | - return 1; | |
9 | + DBGF("%s -> yes, %s\n", pkg_snprintf_s0(pkg), pkg_snprintf_s1(p)); | |
10 | + return 1; | |
11 | + } | |
12 | } | |
13 | } | |
14 | - } | |
15 | ||
16 | return 0; | |
17 | } | |
18 | @@ -303,7 +303,7 @@ | |
19 | struct pkg **candidates, int npkgs, | |
20 | struct pkgset *ps, struct upgrade_s *upg) | |
21 | { | |
22 | - int *ncnfls, i, j, i_min, cnfl_min; | |
23 | + int *ncnfls, i, j, i_best, cnfl_min; | |
24 | int i_ver_eq = -1, i_evr_eq = -1; | |
25 | ||
26 | DBGF("%s (%d)\n", pkg_snprintf_s(marker), npkgs); | |
27 | @@ -345,38 +345,44 @@ | |
28 | return i_ver_eq; | |
29 | ||
30 | cnfl_min = INT_MAX; | |
31 | - i_min = -1; | |
32 | + i_best = -1; | |
33 | for (i=0; i < npkgs; i++) { | |
34 | DBGF("%d. %s %d\n", i, pkg_snprintf_s(candidates[i]), ncnfls[i]); | |
35 | if (cnfl_min > ncnfls[i]) { | |
36 | cnfl_min = ncnfls[i]; | |
37 | - i_min = i; | |
38 | + i_best = i; | |
39 | } | |
40 | } | |
41 | ||
42 | - DBGF("[after cnfls] i_min = %d\n", i_min); | |
43 | + DBGF("[after cnfls] i_best = %d\n", i_best); | |
44 | if (cnfl_min == 0) { | |
45 | int n = INT_MAX, *nmarks; | |
46 | ||
47 | nmarks = alloca(npkgs * sizeof(*nmarks)); | |
48 | ||
49 | for (i=0; i < npkgs; i++) { | |
50 | + if (other_version_marked(candidates[i], ps->pkgs, NULL)) { | |
51 | + DBGF("%d. %s other version is already marked, skipped\n", | |
52 | + i, pkg_snprintf_s(candidates[i])); | |
53 | + continue; | |
54 | + } | |
55 | + | |
56 | nmarks[i] = pkg_drags(candidates[i], ps, upg); | |
57 | - DBGF("%d %s -> %d\n", i, pkg_snprintf_s(candidates[i]), nmarks[i]); | |
58 | - if (n > nmarks[i]) { | |
59 | + DBGF("%d. %s -> %d\n", i, pkg_snprintf_s(candidates[i]), nmarks[i]); | |
60 | + if (n > nmarks[i]) | |
61 | n = nmarks[i]; | |
62 | - } | |
63 | - | |
64 | + | |
65 | if (n == 0 && ncnfls[i] == 0) { | |
66 | - i_min = i; | |
67 | + i_best = i; | |
68 | break; | |
69 | } | |
70 | } | |
71 | } | |
72 | ||
73 | - if (i_min == -1) | |
74 | - i_min = 0; | |
75 | - return i_min; | |
76 | + if (i_best == -1) | |
77 | + i_best = 0; | |
78 | + DBGF("RET %d. %s\n", i_best, pkg_snprintf_s(candidates[i])); | |
79 | + return i_best; | |
80 | } | |
81 | ||
82 | #define FINDREQ_BESTSEL 0 | |
83 | @@ -1009,7 +1015,7 @@ | |
84 | capreq_snprintf(reqname, 256, req); | |
85 | } | |
86 | ||
87 | - DBGF("req %s\n", capreq_snprintf_s(req)); | |
88 | + DBGF("%s: REQ %s\n", pkg_snprintf_s(pkg), capreq_snprintf_s(req)); | |
89 | ||
90 | if ((upg->inst->flags & INSTS_EQPKG_ASKUSER) && upg->inst->askpkg_fn) | |
91 | tomark_candidates_ptr = &tomark_candidates; | |
92 | @@ -1022,7 +1028,8 @@ | |
93 | goto l_end_loop; | |
94 | } | |
95 | } | |
96 | - | |
97 | + DBGF("%s: TOMARK %s\n", pkg_snprintf_s1(pkg), | |
98 | + tomark ? pkg_snprintf_s0(tomark) : "NULL"); | |
99 | /* don't check foreign dependencies */ | |
100 | if (process_as == PROCESS_AS_ORPHAN) { | |
101 | #if 0 /* buggy, TODO - unmark foreign on adding to uninst_set */ |