]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Change cleandeps code so that it keeps all providers
authorMichael Schroeder <mls@suse.de>
Tue, 14 Jun 2016 11:15:40 +0000 (13:15 +0200)
committerMichael Schroeder <mls@suse.de>
Tue, 14 Jun 2016 11:15:40 +0000 (13:15 +0200)
It will report less unneeded packages, but it will also not
erase the wrong providers.

src/rules.c

index 32855e4a1ffd13e60102c90c1d75cd17218f21e6..07c293ac716f58420cc4230a255c178577b47259 100644 (file)
@@ -3869,10 +3869,7 @@ complex_cleandeps_addback(Pool *pool, Id ip, Id req, Map *im, Map *installedm, Q
            {
              if (!MAPTST(installedm, -p))
                break;
-             continue;
            }
-         if (MAPTST(im, p))
-           break;
        }
       if (!p)
        {
@@ -3880,6 +3877,8 @@ complex_cleandeps_addback(Pool *pool, Id ip, Id req, Map *im, Map *installedm, Q
            {
              if (p < 0)
                continue;
+             if (MAPTST(im, p))
+               continue;
              if (!MAPTST(installedm, p))
                continue;
              if (p == ip || MAPTST(userinstalled, p - pool->installed->start))
@@ -4399,13 +4398,10 @@ solver_createcleandepsmap(Solver *solv, Map *cleandepsmap, int unneeded)
                  continue;
                }
 #endif
-             FOR_PROVIDES(p, pp, req)
-               if (MAPTST(&im, p))
-                 break;
-             if (p)
-               continue;
              FOR_PROVIDES(p, pp, req)
                {
+                 if (MAPTST(&im, p))
+                   continue;
                  if (MAPTST(&installedm, p))
                    {
                      if (p == ip)
@@ -4433,13 +4429,10 @@ solver_createcleandepsmap(Solver *solv, Map *cleandepsmap, int unneeded)
                  continue;
                }
 #endif
-             FOR_PROVIDES(p, pp, req)
-               if (MAPTST(&im, p))
-                 break;
-             if (p)
-               continue;
              FOR_PROVIDES(p, pp, req)
                {
+                 if (MAPTST(&im, p))
+                   continue;
                  if (MAPTST(&installedm, p))
                    {
                      if (p == ip)