From fcb51c76cedc362bfcbf0c567fe42207f1e24f05 Mon Sep 17 00:00:00 2001 From: Sebastian Luther Date: Mon, 11 Oct 2010 18:28:20 +0200 Subject: slot collision handler: Prevent excessive running time The number of configurations to check grows exponentially in the number of conflict_pkgs. To prevent excessive running times, only check the "all-ebuild" configuration, if the number of conflict packages is too large. --- pym/_emerge/resolver/slot_collision.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py index 72075259f..78259a4f0 100644 --- a/pym/_emerge/resolver/slot_collision.py +++ b/pym/_emerge/resolver/slot_collision.py @@ -155,6 +155,15 @@ class slot_conflict_handler(object): break first_config = False + if len(conflict_pkgs) > 4: + # The number of configurations to check grows exponentially in the number of conflict_pkgs. + # To prevent excessive running times, only check the "all-ebuild" configuration, + # if the number of conflict packages is too large. + if self.debug: + writemsg("\nAborting search due to excessive number of configurations.\n", noiselevel=-1) + break + + def get_conflict(self): return "".join(self.conflict_msg) -- cgit v1.2.3-1-g7c22