From af58d636ac13513682e04ed8880dca42bff24520 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 31 Oct 2009 23:35:48 +0000 Subject: Add a --backtrack=COUNT option to control how many times backtracking is allowed, and reduce the default from 30 to 5. (trunk r14763) svn path=/main/branches/2.1.7/; revision=14766 --- pym/_emerge/depgraph.py | 2 +- pym/_emerge/help.py | 7 +++++++ pym/_emerge/main.py | 24 ++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 6d9a30daf..2b2c0c62f 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -5329,7 +5329,7 @@ def backtrack_depgraph(settings, trees, myopts, myparams, def _backtrack_depgraph(settings, trees, myopts, myparams, myaction, myfiles, spinner): - backtrack_max = 30 + backtrack_max = myopts.get('backtrack', 5) runtime_pkg_mask = None allow_backtracking = True backtracked = 0 diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py index 54caa22c4..aae3bab22 100644 --- a/pym/_emerge/help.py +++ b/pym/_emerge/help.py @@ -276,6 +276,13 @@ def help(myopts, havecolor=1): for line in wrap(desc, desc_width): print(desc_indent + line) print() + print(" " + green("--backtrack") + " " + turquoise("COUNT")) + desc = "Specifies an integer number of times to backtrack if " + \ + "dependency calculation fails due to a conflict or an " + \ + "unsatisfied dependency (default: '5')." + for line in wrap(desc, desc_width): + print(desc_indent + line) + print() print(" " + green("--binpkg-respect-use") + \ " < " + turquoise("y") + " | " + turquoise("n") + " >") desc = "Tells emerge to ignore binary packages if their use flags" + \ diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index 37875cbd2..0ed2604a7 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -432,6 +432,15 @@ def parse_opts(tmpcmdline, silent=False): "help":"temporarily override ACCEPT_PROPERTIES", "action":"store" }, + + "--backtrack": { + + "help" : "Specifies how many times to backtrack if dependency " + \ + "calculation fails ", + + "action" : "store" + }, + "--config-root": { "help":"specify the location for portage configuration files", "action":"store" @@ -653,6 +662,21 @@ def parse_opts(tmpcmdline, silent=False): if myoptions.selective == "True": myoptions.selective = True + if myoptions.backtrack is not None: + + try: + backtrack = int(myoptions.backtrack) + except (OverflowError, ValueError): + backtrack = -1 + + if backtrack < 0: + backtrack = None + if not silent: + writemsg("!!! Invalid --backtrack parameter: '%s'\n" % \ + (myoptions.backtrack,), noiselevel=-1) + + myoptions.backtrack = backtrack + if myoptions.deep is not None: deep = None if myoptions.deep == "True": -- cgit v1.2.3-1-g7c22