summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-10-08 13:30:08 -0700
committerZac Medico <zmedico@gentoo.org>2012-10-08 13:30:08 -0700
commit1ddda9a8db7b1e09a04220a8677b60015b2fe849 (patch)
treede52028a02c17359463561a229e0d79b7d5e3423
parentae5d657a2c7e5fcf23607e8b061f049e56f8137f (diff)
downloadportage-1ddda9a8db7b1e09a04220a8677b60015b2fe849.tar.gz
portage-1ddda9a8db7b1e09a04220a8677b60015b2fe849.tar.bz2
portage-1ddda9a8db7b1e09a04220a8677b60015b2fe849.zip
emerge: handle --load-average with no arg
With no argument, removes a previous load limit (same behavior as make).
-rw-r--r--man/emerge.13
-rw-r--r--pym/_emerge/main.py14
2 files changed, 16 insertions, 1 deletions
diff --git a/man/emerge.1 b/man/emerge.1
index c0303079d..929996721 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -511,9 +511,10 @@ dependencies are recalculated for remaining packages and any with
unsatisfied dependencies are automatically dropped. Also see
the related \fB\-\-skipfirst\fR option.
.TP
-.BR \-\-load\-average=LOAD
+.BR "\-\-load\-average [LOAD]"
Specifies that no new builds should be started if there are other builds
running and the load average is at least LOAD (a floating-point number).
+With no argument, removes a previous load limit.
This option is recommended for use in combination with \fB\-\-jobs\fR in
order to avoid excess load. See \fBmake\fR(1) for information about
analogous options that should be configured via \fBMAKEOPTS\fR in
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index c3e96465d..e3557e574 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -454,6 +454,16 @@ def insert_optional_args(args):
return False
valid_integers = valid_integers()
+
+ class valid_floats(object):
+ def __contains__(self, s):
+ try:
+ return float(s) >= 0
+ except (ValueError, OverflowError):
+ return False
+
+ valid_floats = valid_floats()
+
y_or_n = ('y', 'n',)
new_args = []
@@ -475,6 +485,7 @@ def insert_optional_args(args):
'--getbinpkgonly' : y_or_n,
'--jobs' : valid_integers,
'--keep-going' : y_or_n,
+ '--load-average' : valid_floats,
'--package-moves' : y_or_n,
'--quiet' : y_or_n,
'--quiet-build' : y_or_n,
@@ -1209,6 +1220,9 @@ def parse_opts(tmpcmdline, silent=False):
myoptions.jobs = jobs
+ if myoptions.load_average == "True":
+ myoptions.load_average = None
+
if myoptions.load_average:
try:
load_average = float(myoptions.load_average)