]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Do not create dup rules for orphaned packages
authorMichael Schroeder <mls@suse.de>
Fri, 18 Dec 2015 16:42:24 +0000 (17:42 +0100)
committerMichael Schroeder <mls@suse.de>
Fri, 18 Dec 2015 16:42:24 +0000 (17:42 +0100)
This was deleted with commit 98352a506ba091a62bccc29d044e60e64d07f338
by accident.

src/rules.c

index 248b1cddf0412cbdaefd6671029472d90898212f..70d6b073ea05d86f9c25c349da73a52bbe3d17c4 100644 (file)
@@ -1325,7 +1325,7 @@ solver_addupdaterule(Solver *solv, Solvable *s, int allow_all)
            }
        }
     }
-  if (!isorphaned && p == -SYSTEMSOLVABLE && solv->dupmap.size)
+  if (!isorphaned && p == -SYSTEMSOLVABLE && qs.count && solv->dupmap.size)
     p = s - pool->solvables;           /* let the dup rules sort it out */
   if (qs.count && p == -SYSTEMSOLVABLE)
     p = queue_shift(&qs);
@@ -1864,6 +1864,12 @@ solver_addduprules(Solver *solv, Map *addedmap)
                      solver_addrule(solv, -p, 0, solv->specialupdaters[p - installed->start]);
                      continue;
                    }
+                 if (!r->p || (r->p == p && !r->d && !r->w2))
+                   {
+                     /* this is an orphan */
+                     MAPSET(&solv->dupmap, p);         /* for best rules processing */
+                     continue;
+                   }
                  solver_addrule(solv, -p, 0, 0);       /* no match, sorry */
                }
            }