@@ -835,14 +835,21 @@ move_installed_to_front(Pool *pool, Queue *plist)
835835
836836#ifdef ENABLE_CONDA
837837static int
838- pool_buildversioncmp (Pool * pool , Solvable * s1 , Solvable * s2 )
838+ pool_featurecountcmp (Pool * pool , Solvable * s1 , Solvable * s2 )
839839{
840- const char * bv1 , * bv2 ;
841840 unsigned int cnt1 , cnt2 ;
842841 cnt1 = solvable_lookup_count (s1 , SOLVABLE_TRACK_FEATURES );
843842 cnt2 = solvable_lookup_count (s2 , SOLVABLE_TRACK_FEATURES );
844843 if (cnt1 != cnt2 )
845844 return cnt1 > cnt2 ? -1 : 1 ;
845+ else
846+ return 0 ;
847+ }
848+
849+ static int
850+ pool_buildversioncmp (Pool * pool , Solvable * s1 , Solvable * s2 )
851+ {
852+ const char * bv1 , * bv2 ;
846853 bv1 = solvable_lookup_str (s1 , SOLVABLE_BUILDVERSION );
847854 bv2 = solvable_lookup_str (s2 , SOLVABLE_BUILDVERSION );
848855 if (!bv1 && !bv2 )
@@ -903,7 +910,16 @@ prune_to_best_version(Pool *pool, Queue *plist)
903910 best = s ; /* take current as new best */
904911 continue ;
905912 }
906- r = best -> evr != s -> evr ? pool_evrcmp (pool , best -> evr , s -> evr , EVRCMP_COMPARE ) : 0 ;
913+
914+ r = 0 ;
915+ #ifdef ENABLE_CONDA
916+ if (pool -> disttype == DISTTYPE_CONDA )
917+ {
918+ r = pool_featurecountcmp (pool , best , s );
919+ }
920+ #endif
921+ if (r == 0 )
922+ r = best -> evr != s -> evr ? pool_evrcmp (pool , best -> evr , s -> evr , EVRCMP_COMPARE ) : 0 ;
907923#ifdef ENABLE_LINKED_PKGS
908924 if (r == 0 && has_package_link (pool , s ))
909925 r = pool_link_evrcmp (pool , best , s );
0 commit comments