From 4b995f163be5a970c874eb717fbdf09de6adc011 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sat, 13 Mar 2010 14:47:59 +0000 Subject: [PATCH] Take into account stability preferences --- zeroinstall/injector/solver.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/zeroinstall/injector/solver.py b/zeroinstall/injector/solver.py index 27afe00..81f8b7a 100644 --- a/zeroinstall/injector/solver.py +++ b/zeroinstall/injector/solver.py @@ -93,6 +93,26 @@ class PBSolver(Solver): comment_problem = False # debugging only + if self.help_with_testing: + # Choose the newest, not the most stable. + # Preferred still affects the choice, though. + stability_cost = { + model.preferred : 0, + model.packaged : 1000, + model.stable : 1000, + model.testing : 1000, + model.developer : 1000, + } + else: + # Strongly prefer packaged or stable versions. + stability_cost = { + model.preferred : 0, + model.packaged : 1000, + model.stable : 1100, + model.testing : 3000, + model.developer : 8000, + } + def feed_name(feed): name = feed_names.get(feed, None) if name: return name @@ -222,7 +242,7 @@ class PBSolver(Solver): assert impl not in impl_names impl_names[impl] = name name_to_impl[name] = (iface, impl) - costs[name] = rank + costs[name] = rank + stability_cost.get(impl.get_stability(), 1000) rank += 1 exprs.append('1 * ' + name) -- 2.11.4.GIT