]> git.pld-linux.org Git - packages/poldek.git/blob - poldek-dont-lose-deps.patch
c981ad0c76dd64469917d99106c00acb6fc72e08
[packages/poldek.git] / poldek-dont-lose-deps.patch
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
4 @@ -319,7 +319,7 @@
5      for (i=0; i < n_array_size(candidates); i++) {
6          struct pkg *cand = n_array_nth(candidates, i);
7  
8 -        if (pkg_is_colored_like(cand, marker)) {
9 +        if (!pkg_isset_mf(ictx->processed, cand, PKGMARK_BLACK) && pkg_is_colored_like(cand, marker)) {
10              if (tmp == NULL)
11                  tmp = n_array_clone(candidates);
12              
13 @@ -354,7 +354,7 @@
14                  struct pkg **best_pkg, tn_array *candidates)
15  {
16      tn_array *suspkgs = NULL, *tmpkgs;
17 -    int found = 0;
18 +    int found = 0, i;
19  
20      *best_pkg = NULL;
21      found = pkgset_find_match_packages(ictx->ps, pkg, req, &suspkgs, 1);//ictx->strict);
22 @@ -391,6 +391,16 @@
23  
24      //trace(indent, "after removed rmmarked -> %d package(s)",
25      //      n_array_size(suspkgs));
26 +
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);
30 +       
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--);
34 +       }
35 +    }
36          
37      if (n_array_size(suspkgs) == 0) {
38          found = 0;
39 diff -urN a/install3/process.c b/install3/process.c
40 --- a/install3/process.c        2009-11-22 01:39:38.000000000 +0100
41 +++ b/install3/process.c        2009-11-22 19:41:42.862076125 +0100
42 @@ -77,6 +77,11 @@
43              i3_forget_error(ictx, pkg);
44          }
45      }
46 +
47 +    /* this package may be used again and we have to process it (do not
48 +     * stop on the first condition in i3_process_package()) to generate
49 +     * new ->obsoletedby as we removed them here. */    
50 +    pkg_clr_mf(ictx->processed, i3pkg->pkg, PKGMARK_GRAY);
51      
52      if (i3pkg->markedby) {
53          indent = inc_indent(indent);
This page took 0.049645 seconds and 2 git commands to generate.