Bug 1455120 - Prefix output from automation tiers; r=mshal
authorGregory Szorc <gps@mozilla.com>
Wed, 18 Apr 2018 14:30:05 -0700
changeset 467933 43c22d224c0ba4cb4f890a37a5e04d6bb2b80c25
parent 467932 ac17015816ca21649f102f50038a20a81b03babe
child 467934 a993e6e8d14c75545a59b18ba32c821801d6f124
push id9165
push userasasaki@mozilla.com
push dateThu, 26 Apr 2018 21:04:54 +0000
treeherdermozilla-beta@064c3804de2e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmshal
bugs1455120
milestone61.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1455120 - Prefix output from automation tiers; r=mshal We add a minimal Python script to run a process and prefix all its output with a string. We change the automation tiers to evaluate all make targets using this script. MozReview-Commit-ID: 79g5KUd5ked
build/moz-automation.mk
config/run-and-prefix.py
--- a/build/moz-automation.mk
+++ b/build/moz-automation.mk
@@ -71,17 +71,17 @@ automation/build: $(addprefix automation
 AUTOMATION_EXTRA_CMDLINE-l10n-check = -j1
 
 # The commands only run if the corresponding MOZ_AUTOMATION_* variable is
 # enabled. This means, for example, if we enable MOZ_AUTOMATION_UPLOAD, then
 # 'buildsymbols' will only run if MOZ_AUTOMATION_BUILD_SYMBOLS is also set.
 # However, the target automation/buildsymbols will still be executed in this
 # case because it is a prerequisite of automation/upload.
 define automation_commands
-@+$(MAKE) $1 $(AUTOMATION_EXTRA_CMDLINE-$1)
+@+$(PYTHON) $(topsrcdir)/config/run-and-prefix.py $1 $(MAKE) $1 $(AUTOMATION_EXTRA_CMDLINE-$1)
 $(call BUILDSTATUS,TIER_FINISH $1)
 endef
 
 # The tier start message is in a separate target so make doesn't buffer it
 # until the step completes with output syncing enabled.
 automation-start/%:
 	$(if $(filter $*,$(MOZ_AUTOMATION_TIERS)),$(call BUILDSTATUS,TIER_START $*))
 
new file mode 100644
--- /dev/null
+++ b/config/run-and-prefix.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This script runs a process and prefixes its output with.
+# Usage: run-and-prefix.py prefix command arg0 argv1...
+
+from __future__ import absolute_import, print_function
+
+import os
+import subprocess
+import sys
+
+sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0)
+
+prefix = sys.argv[1]
+args = sys.argv[2:]
+
+p = subprocess.Popen(args, bufsize=0,
+                     stdout=subprocess.PIPE,
+                     stderr=subprocess.STDOUT,
+                     stdin=sys.stdin.fileno(),
+                     universal_newlines=True)
+
+while True:
+    data = p.stdout.readline()
+
+    if data == b'':
+        break
+
+    print('%s> %s' % (prefix, data), end=b'')
+
+sys.exit(p.wait())