Skip to content

Commit d819aa4

Browse files
authored
Merge pull request #395 from SylvainCorlay/track-feature-over-version
Feature depriorization first
2 parents 48e7173 + 879468a commit d819aa4

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

src/policy.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -835,14 +835,21 @@ move_installed_to_front(Pool *pool, Queue *plist)
835835

836836
#ifdef ENABLE_CONDA
837837
static 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

Comments
 (0)