1 diff -urN a/install3/misc.c b/install3/misc.c
2 --- a/install3/misc.c 2009-11-22 01:39:59.000000000 +0100
3 +++ b/install3/misc.c 2009-11-22 01:35:25.795536883 +0100
5 for (i=0; i < n_array_size(candidates); i++) {
6 struct pkg *cand = n_array_nth(candidates, i);
8 - if (pkg_is_colored_like(cand, marker)) {
9 + if (!pkg_isset_mf(ictx->processed, cand, PKGMARK_BLACK) && pkg_is_colored_like(cand, marker)) {
11 tmp = n_array_clone(candidates);
14 struct pkg **best_pkg, tn_array *candidates)
16 tn_array *suspkgs = NULL, *tmpkgs;
21 found = pkgset_find_match_packages(ictx->ps, pkg, req, &suspkgs, 1);//ictx->strict);
24 //trace(indent, "after removed rmmarked -> %d package(s)",
25 // n_array_size(suspkgs));
27 + /* remove marked as BLACK from suspected packages, they have broken deps */
28 + for (i = 0; i < n_array_size(suspkgs); i++) {
29 + struct pkg *suspkg = n_array_nth(suspkgs, i);
31 + if (pkg_isset_mf(ictx->processed, suspkg, PKGMARK_BLACK)) {
32 + trace(indent, "- marked as BLACK %s", pkg_id(suspkg));
33 + n_array_remove_nth(suspkgs, i--);
37 if (n_array_size(suspkgs) == 0) {