emerge: add --quiet-fail for bug #440982
authorZac Medico <zmedico@gentoo.org>
Thu, 29 Nov 2012 07:52:49 +0000 (23:52 -0800)
committerZac Medico <zmedico@gentoo.org>
Thu, 29 Nov 2012 07:53:28 +0000 (23:53 -0800)
man/emerge.1
pym/_emerge/Scheduler.py
pym/_emerge/main.py

index a6c20a99db4f6b3c308f93b8728b46e2dabfd03a..850a2414bc9b648449e35db07d59286d4bebb6d1 100644 (file)
@@ -1,4 +1,4 @@
-.TH "EMERGE" "1" "Oct 2012" "Portage VERSION" "Portage"
+.TH "EMERGE" "1" "Nov 2012" "Portage VERSION" "Portage"
 .SH "NAME"
 emerge \- Command\-line interface to the Portage system
 .SH "SYNOPSIS"
@@ -635,7 +635,8 @@ output from portage's displays.
 .BR "\-\-quiet\-build [ y | n ]"
 Redirect all build output to logs alone, and do not display it on
 stdout. If a build failure occurs for a single package, the build
-log will be automatically displayed on stdout. If there are multiple
+log will be automatically displayed on stdout (unless the
+\fI\-\-quiet\-fail\fR option is enabled). If there are multiple
 build failures (due to options like \-\-keep\-going or \-\-jobs),
 then the content of the log files will not be displayed, and instead
 the paths of the log files will be displayed together with the
@@ -644,6 +645,12 @@ Note that interactive packages currently force all build output to
 be displayed on stdout. This issue can be temporarily avoided
 by specifying \fI\-\-accept\-properties=\-interactive\fR.
 .TP
+.BR "\-\-quiet\-fail [ y | n ]"
+Suppresses display of the build log on stdout when build output is hidden
+due to options such as \fI\-\-jobs\fR, \fI\-\-quiet\fR, or
+\fI\-\-quiet\-build\fR. Only the die message and the path of the build log
+will be displayed on stdout.
+.TP
 .BR "\-\-quiet\-repo\-display"
 In the package merge list display, suppress ::repository output, and
 instead use numbers to indicate which repositories package come from.
index 708af12c610b445e574113539d0c62ac66c1525e..6a494970e7b80b92e3a33a1fbe832b71501fba8d 100644 (file)
@@ -1065,7 +1065,8 @@ class Scheduler(PollScheduler):
                printer = portage.output.EOutput()
                background = self._background
                failure_log_shown = False
-               if background and len(self._failed_pkgs_all) == 1:
+               if background and len(self._failed_pkgs_all) == 1 and \
+                       self.myopts.get('--quiet-fail', 'n') != 'y':
                        # If only one package failed then just show it's
                        # whole log for easy viewing.
                        failed_pkg = self._failed_pkgs_all[-1]
index be5a5cad4ea6d68bd9de49de80a7cb3c2565f30c..cdadbecf4956017ca9f2d1b3f2c46ce9a42385bf 100644 (file)
@@ -139,6 +139,7 @@ def insert_optional_args(args):
                '--package-moves'        : y_or_n,
                '--quiet'                : y_or_n,
                '--quiet-build'          : y_or_n,
+               '--quiet-fail'           : y_or_n,
                '--rebuild-if-new-slot': y_or_n,
                '--rebuild-if-new-rev'   : y_or_n,
                '--rebuild-if-new-ver'   : y_or_n,
@@ -541,6 +542,12 @@ def parse_opts(tmpcmdline, silent=False):
                        "choices"  : true_y_or_n,
                },
 
+               "--quiet-fail": {
+                       "help"     : "suppresses display of the build log on stdout",
+                       "type"     : "choice",
+                       "choices"  : true_y_or_n,
+               },
+
                "--rebuild-if-new-slot": {
                        "help"     : ("Automatically rebuild or reinstall packages when slot/sub-slot := "
                                "operator dependencies can be satisfied by a newer slot, so that "
@@ -782,6 +789,9 @@ def parse_opts(tmpcmdline, silent=False):
        if myoptions.quiet_build in true_y:
                myoptions.quiet_build = 'y'
 
+       if myoptions.quiet_fail in true_y:
+               myoptions.quiet_fail = 'y'
+
        if myoptions.rebuild_if_new_slot in true_y:
                myoptions.rebuild_if_new_slot = 'y'