summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-10-31 23:35:48 +0000
committerZac Medico <zmedico@gentoo.org>2009-10-31 23:35:48 +0000
commitaf58d636ac13513682e04ed8880dca42bff24520 (patch)
tree1424d40405ddcb6eeeba3fc3efdbde552788958f
parentFor compatibility, still exit successfully if there are skipped directories. (diff)
downloadportage-multirepo-af58d636ac13513682e04ed8880dca42bff24520.tar.gz
portage-multirepo-af58d636ac13513682e04ed8880dca42bff24520.tar.bz2
portage-multirepo-af58d636ac13513682e04ed8880dca42bff24520.zip
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
-rw-r--r--man/emerge.15
-rw-r--r--pym/_emerge/depgraph.py2
-rw-r--r--pym/_emerge/help.py7
-rw-r--r--pym/_emerge/main.py24
4 files changed, 37 insertions, 1 deletions
diff --git a/man/emerge.1 b/man/emerge.1
index 81bcf1bb..bb3234d1 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -269,6 +269,11 @@ acceptance of the first choice. This option is
intended to be set in the \fBmake.conf\fR(5)
\fBEMERGE_DEFAULT_OPTS\fR variable.
.TP
+.BR \-\-backtrack=COUNT
+Specifies an integer number of times to backtrack if
+dependency calculation fails due to a conflict or an
+unsatisfied dependency (default: \'5\').
+.TP
.BR "\-\-binpkg\-respect\-use < y | n >"
Tells emerge to ignore binary packages if their use flags
don't match the current configuration. (default: \'n\')
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 6d9a30da..2b2c0c62 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 54caa22c..aae3bab2 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 37875cbd..0ed2604a 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":