]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
- fix assertion failue... again
authorMichael Schroeder <mls@suse.de>
Mon, 14 Sep 2009 14:33:36 +0000 (16:33 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 14 Sep 2009 14:33:36 +0000 (16:33 +0200)
- allow installed packages in infarch rule generation

src/rules.c
src/solver.c

index d264647fa86101d27c2311e9495514614d34a567..28111deb47214be521aafe29d951322dc107bc88 100644 (file)
@@ -1067,6 +1067,8 @@ solver_addinfarchrules(Solver *solv, Map *addedmap)
          a = (a <= pool->lastarch) ? pool->id2arch[a] : 0;
          if (a != 1 && bestarch && ((a ^ bestarch) & 0xffff0000) != 0)
            {
+             if (pool->installed && ps->repo == pool->installed)
+               continue;       /* always ok to keep an installed package */
              for (j = 0; j < allowedarchs.count; j++)
                {
                  aa = allowedarchs.elements[j];
index da5493c5b281e8c597b8c0128f1fcfc2763551da..6c1c34c3b4f4a6940ee733dc4bcd535e884595fb 100644 (file)
@@ -1534,7 +1534,7 @@ solver_run_sat(Solver *solv, int disablerules, int doweak)
                        }
                      if (level <= olevel)
                        {
-                         if (level < passlevel)
+                         if (level == 1 || level < passlevel)
                            break;      /* trouble */
                          if (level < olevel)
                            n = installed->start;       /* redo all */
@@ -1557,7 +1557,7 @@ solver_run_sat(Solver *solv, int disablerules, int doweak)
                        }
                      if (level <= olevel)
                        {
-                         if (level < passlevel)
+                         if (level == 1 || level < passlevel)
                            break;      /* trouble */
                          if (level < olevel)
                            n = installed->start;       /* redo all */