]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
- cleandeps: also mark products and their buddies as userinstalled
authorMichael Schroeder <mls@suse.de>
Fri, 2 Mar 2012 15:33:22 +0000 (16:33 +0100)
committerMichael Schroeder <mls@suse.de>
Fri, 2 Mar 2012 15:33:22 +0000 (16:33 +0100)
src/rules.c

index 361af8372153310c40fa5f5861dc637f5b8e3cb4..b024243bb7f9db15de40cdd38227bc9f548c05c6 100644 (file)
@@ -2265,6 +2265,26 @@ static void solver_createcleandepsmap(Solver *solv)
        }
       dataiterator_free(&di);
     }
+  if (1)
+    {    
+      /* all products and their buddies are userinstalled */
+      for (p = installed->start; p < installed->end; p++) 
+       {
+         Solvable *s = pool->solvables + p; 
+         if (s->repo != installed)
+           continue;
+         if (!strncmp("product:", pool_id2str(pool, s->name), 8))
+           {
+             MAPSET(&userinstalled, p - installed->start);
+             if (pool->nscallback)
+               {
+                 Id buddy = pool->nscallback(pool, pool->nscallbackdata, NAMESPACE_PRODUCTBUDDY, p);
+                 if (buddy >= installed->start && buddy < installed->end && pool->solvables[buddy].repo == installed)
+                   MAPSET(&userinstalled, buddy);
+               }
+           }
+       }
+    }    
 
   /* add all positive elements (e.g. locks) to "userinstalled" */
   for (rid = solv->jobrules; rid < solv->jobrules_end; rid++)