emerge: handle --load-average with no arg
authorZac Medico <zmedico@gentoo.org>
Mon, 8 Oct 2012 20:30:08 +0000 (13:30 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 8 Oct 2012 20:30:08 +0000 (13:30 -0700)
With no argument, removes a previous load limit (same behavior as
make).

man/emerge.1
pym/_emerge/main.py

index c0303079d187c6037b2ce95e65f85f98a9208d4a..929996721a9e5689dccf0c09b54c954ddf0db723 100644 (file)
@@ -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
index c3e96465d8409b50612f65288ae15622aa782025..e3557e5742f905e6d31d47175167e2758cfbc16d 100644 (file)
@@ -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)