]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Feature depriorization first 395/head
authorSylvain Corlay <sylvain.corlay@gmail.com>
Tue, 28 Jul 2020 07:41:32 +0000 (09:41 +0200)
committerSylvain Corlay <sylvain.corlay@gmail.com>
Tue, 28 Jul 2020 07:53:24 +0000 (09:53 +0200)
src/policy.c

index 6551cbf45057538ce81c2abcdffb9cd5dcfab003..d8a56ee1afd325930f78d7d1f3793c81402bf03d 100644 (file)
@@ -835,14 +835,21 @@ move_installed_to_front(Pool *pool, Queue *plist)
 
 #ifdef ENABLE_CONDA
 static int
-pool_buildversioncmp(Pool *pool, Solvable *s1, Solvable *s2)
+pool_featurecountcmp(Pool *pool, Solvable *s1, Solvable *s2)
 {
-  const char *bv1, *bv2;
   unsigned int cnt1, cnt2;
   cnt1 = solvable_lookup_count(s1, SOLVABLE_TRACK_FEATURES);
   cnt2 = solvable_lookup_count(s2, SOLVABLE_TRACK_FEATURES);
   if (cnt1 != cnt2)
     return cnt1 > cnt2 ? -1 : 1;
+  else
+    return 0;
+}
+
+static int
+pool_buildversioncmp(Pool *pool, Solvable *s1, Solvable *s2)
+{
+  const char *bv1, *bv2;
   bv1 = solvable_lookup_str(s1, SOLVABLE_BUILDVERSION);
   bv2 = solvable_lookup_str(s2, SOLVABLE_BUILDVERSION);
   if (!bv1 && !bv2)
@@ -903,7 +910,16 @@ prune_to_best_version(Pool *pool, Queue *plist)
           best = s;            /* take current as new best */
           continue;
         }
-      r = best->evr != s->evr ? pool_evrcmp(pool, best->evr, s->evr, EVRCMP_COMPARE) : 0;
+     
+      r = 0; 
+#ifdef ENABLE_CONDA
+      if (pool->disttype == DISTTYPE_CONDA)
+       {
+          r = pool_featurecountcmp(pool, best, s);
+       }
+#endif
+      if (r == 0)
+        r = best->evr != s->evr ? pool_evrcmp(pool, best->evr, s->evr, EVRCMP_COMPARE) : 0;
 #ifdef ENABLE_LINKED_PKGS
       if (r == 0 && has_package_link(pool, s))
         r = pool_link_evrcmp(pool, best, s);