You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ro...@apache.org on 2020/12/29 13:29:21 UTC

[buildstream] 05/08: _frontend: Send all logging materials to stderr

This is an automated email from the ASF dual-hosted git repository.

root pushed a commit to branch early-logging
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 1bd1948bdcc97cccca2d0e133be2426c4d1af084
Author: Tristan Van Berkom <tr...@codethink.co.uk>
AuthorDate: Wed Dec 13 11:17:50 2017 -0500

    _frontend: Send all logging materials to stderr
---
 buildstream/_frontend/main.py   | 86 ++++++++++++++++++++---------------------
 buildstream/_frontend/status.py | 10 ++---
 buildstream/_frontend/widget.py |  4 +-
 3 files changed, 50 insertions(+), 50 deletions(-)

diff --git a/buildstream/_frontend/main.py b/buildstream/_frontend/main.py
index 47bba1a..117d148 100644
--- a/buildstream/_frontend/main.py
+++ b/buildstream/_frontend/main.py
@@ -220,10 +220,10 @@ def build(app, elements, all, track, track_save, track_all, track_except):
     app.print_heading()
     try:
         app.pipeline.build(app.scheduler, all, track, track_save)
-        click.echo("")
+        click.echo("", err=True)
         app.print_summary()
     except PipelineError:
-        click.echo("")
+        click.echo("", err=True)
         app.print_summary()
         sys.exit(-1)
 
@@ -265,10 +265,10 @@ def fetch(app, elements, deps, track, except_):
         dependencies = app.pipeline.deps_elements(deps)
         app.print_heading(deps=dependencies)
         app.pipeline.fetch(app.scheduler, dependencies, track)
-        click.echo("")
+        click.echo("", err=True)
         app.print_summary()
     except PipelineError as e:
-        click.echo("{}".format(e))
+        click.echo("{}".format(e), err=True)
         app.print_summary()
         sys.exit(-1)
 
@@ -305,10 +305,10 @@ def track(app, elements, deps, except_):
         dependencies = app.pipeline.deps_elements(deps)
         app.print_heading(deps=dependencies)
         app.pipeline.track(app.scheduler, dependencies)
-        click.echo("")
+        click.echo("", err=True)
         app.print_summary()
     except PipelineError as e:
-        click.echo("{}".format(e))
+        click.echo("{}".format(e), err=True)
         app.print_summary()
         sys.exit(-1)
 
@@ -337,10 +337,10 @@ def pull(app, elements, deps):
     try:
         to_pull = app.pipeline.deps_elements(deps)
         app.pipeline.pull(app.scheduler, to_pull)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -368,10 +368,10 @@ def push(app, elements, deps):
     try:
         to_push = app.pipeline.deps_elements(deps)
         app.pipeline.push(app.scheduler, to_push)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -448,7 +448,7 @@ def show(app, elements, deps, except_, order, format, downloadable):
     try:
         dependencies = app.pipeline.deps_elements(deps)
     except PipelineError as e:
-        click.echo("{}".format(e))
+        click.echo("{}".format(e), err=True)
         sys.exit(-1)
 
     if order == "alpha":
@@ -507,20 +507,20 @@ def shell(app, element, sysroot, build, command):
                 missing_deps.append(dep)
 
     if missing_deps:
-        click.echo("")
-        click.echo("Missing elements for staging an environment for a shell:")
+        click.echo("", err=True)
+        click.echo("Missing elements for staging an environment for a shell:", err=True)
         for dep in missing_deps:
-            click.echo("   {}".format(dep.name))
-        click.echo("")
-        click.echo("Try building them first")
+            click.echo("   {}".format(dep.name), err=True)
+        click.echo("", err=True)
+        click.echo("Try building them first", err=True)
         sys.exit(-1)
 
     try:
         exitcode = app.pipeline.targets[0]._shell(scope, sysroot, command=command)
         sys.exit(exitcode)
     except BstError as e:
-        click.echo("")
-        click.echo("Errors shelling into this pipeline: {}".format(e))
+        click.echo("", err=True)
+        click.echo("Errors shelling into this pipeline: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -545,10 +545,10 @@ def checkout(app, element, directory, force, integrate, hardlinks):
     app.pipeline.initialize()
     try:
         app.pipeline.checkout(directory, force, integrate, hardlinks)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
         click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -581,10 +581,10 @@ def source_bundle(app, target, force, directory,
         app.print_heading(dependencies)
         app.pipeline.source_bundle(app.scheduler, dependencies, force, track,
                                    compression, directory)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -620,10 +620,10 @@ def workspace_open(app, no_checkout, force, source, track, element, directory):
     app.pipeline.initialize(inconsistent=[element])
     try:
         app.pipeline.open_workspace(app.scheduler, directory, source, no_checkout, track, force)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -645,15 +645,15 @@ def workspace_close(app, source, remove_dir, element):
     app.pipeline.initialize()
     if app.interactive and remove_dir:
         if not click.confirm('This will remove all your changes, are you sure?'):
-            click.echo('Aborting')
+            click.echo('Aborting', err=True)
             sys.exit(-1)
 
     try:
         app.pipeline.close_workspace(source, remove_dir)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -676,15 +676,15 @@ def workspace_reset(app, source, track, no_checkout, element):
     app.pipeline.initialize()
     if app.interactive:
         if not click.confirm('This will remove all your changes, are you sure?'):
-            click.echo('Aborting')
+            click.echo('Aborting', err=True)
             sys.exit(-1)
 
     try:
         app.pipeline.reset_workspace(app.scheduler, source, track, no_checkout)
-        click.echo("")
+        click.echo("", err=True)
     except BstError as e:
-        click.echo("")
-        click.echo("ERROR: {}".format(e))
+        click.echo("", err=True)
+        click.echo("ERROR: {}".format(e), err=True)
         sys.exit(-1)
 
 
@@ -703,13 +703,13 @@ def workspace_list(app):
         context = Context(app.main_options['option'])
         context.load(config)
     except BstError as e:
-        click.echo("Error loading user configuration: {}".format(e))
+        click.echo("Error loading user configuration: {}".format(e), err=True)
         sys.exit(-1)
 
     try:
         project = Project(directory, context)
     except BstError as e:
-        click.echo("Error loading project: {}".format(e))
+        click.echo("Error loading project: {}".format(e), err=True)
         sys.exit(-1)
 
     workspaces = []
@@ -792,7 +792,7 @@ class App():
             self.context = Context(self.main_options['option'])
             self.context.load(config)
         except BstError as e:
-            click.echo("Error loading user configuration: {}".format(e))
+            click.echo("Error loading user configuration: {}".format(e), err=True)
             sys.exit(-1)
 
         # Override things in the context from our command line options,
@@ -850,14 +850,14 @@ class App():
         try:
             self.project = Project(directory, self.context)
         except BstError as e:
-            click.echo("Error loading project: {}".format(e))
+            click.echo("Error loading project: {}".format(e), err=True)
             sys.exit(-1)
 
         try:
             self.pipeline = Pipeline(self.context, self.project, elements, except_,
                                      rewritable=rewritable)
         except BstError as e:
-            click.echo("Error loading pipeline: {}".format(e))
+            click.echo("Error loading pipeline: {}".format(e), err=True)
             sys.exit(-1)
 
         # Create our status printer, only available in interactive
@@ -947,7 +947,7 @@ class App():
                 self.status.clear()
                 click.echo("\n\n\nBUG: Message handling out of sync, " +
                            "unable to retrieve failure message for element {}\n\n\n\n\n"
-                           .format(element))
+                           .format(element), err=True)
             else:
                 self.handle_failure(element, queue, failure)
 
@@ -1066,7 +1066,7 @@ class App():
             self.status.clear()
 
         text = self.logger.render(message)
-        click.echo(text, color=self.colors, nl=False)
+        click.echo(text, color=self.colors, nl=False, err=True)
 
         # Maybe render the status area
         self.maybe_render_status()
diff --git a/buildstream/_frontend/status.py b/buildstream/_frontend/status.py
index caaa8a3..b899274 100644
--- a/buildstream/_frontend/status.py
+++ b/buildstream/_frontend/status.py
@@ -145,13 +145,13 @@ class Status():
         # feeds for the amount of lines we intend to print first, and
         # move cursor position back to the first line
         for _ in range(self.alloc_lines + self.header.lines):
-            click.echo('')
+            click.echo('', err=True)
         for _ in range(self.alloc_lines + self.header.lines):
             self.move_up()
 
         # Render the one line header
         text = self.header.render(self.term_width, elapsed)
-        click.echo(text, color=self.colors)
+        click.echo(text, color=self.colors, err=True)
 
         # Now we have the number of columns, and an allocation for
         # alignment of each column
@@ -167,7 +167,7 @@ class Status():
                     text += ' ' * self.spacing
 
             # Print the line
-            click.echo(text, color=self.colors)
+            click.echo(text, color=self.colors, err=True)
 
         # Track what we printed last, for the next clear
         self.last_lines = self.alloc_lines + self.header.lines
@@ -184,10 +184,10 @@ class Status():
     def move_up(self):
         # Explicitly move to beginning of line, fixes things up
         # when there was a ^C or ^Z printed to the terminal.
-        click.echo(self.term.move_x(0) + self.term.move_up, nl=False)
+        click.echo(self.term.move_x(0) + self.term.move_up, nl=False, err=True)
 
     def clear_line(self):
-        click.echo(self.term.clear_eol, nl=False)
+        click.echo(self.term.clear_eol, nl=False, err=True)
 
     def allocate(self):
         if not self.need_alloc:
diff --git a/buildstream/_frontend/widget.py b/buildstream/_frontend/widget.py
index 602105c..83befd3 100644
--- a/buildstream/_frontend/widget.py
+++ b/buildstream/_frontend/widget.py
@@ -475,7 +475,7 @@ class LogLine(Widget):
         # Separator line before following output
         text += self.format_profile.fmt("~" * 79 + '\n')
 
-        click.echo(text, color=styling, nl=False)
+        click.echo(text, color=styling, nl=False, err=True)
         if log_file:
             click.echo(text, file=log_file, color=False, nl=False)
 
@@ -525,7 +525,7 @@ class LogLine(Widget):
 
         text += self.format_values(values, style_value=False)
 
-        click.echo(text, color=styling, nl=False)
+        click.echo(text, color=styling, nl=False, err=True)
         if log_file:
             click.echo(text, file=log_file, color=False, nl=False)