[gm] Detect goma usage from args.gn
- Properly detect whether the args.gn config actually wants goma. - Read out cpu count dynamically. NOTRY=true Bug: Change-Id: I7a687e873ef0b009ab6eaada384378d23e1dbb1e Reviewed-on: https://chromium-review.googlesource.com/558085 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#46362}
This commit is contained in:
parent
26c00f4a4c
commit
61d1ad23ce
@ -20,13 +20,14 @@ All arguments are optional. Most combinations should work, e.g.:
|
|||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import errno
|
import errno
|
||||||
|
import multiprocessing
|
||||||
import os
|
import os
|
||||||
import pty
|
import pty
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
BUILD_OPTS_DEFAULT = ""
|
BUILD_OPTS_DEFAULT = ""
|
||||||
BUILD_OPTS_GOMA = "-j1000 -l50"
|
BUILD_OPTS_GOMA = "-j1000 -l%d" % (multiprocessing.cpu_count() + 2)
|
||||||
BUILD_TARGETS_TEST = ["d8", "cctest", "unittests"]
|
BUILD_TARGETS_TEST = ["d8", "cctest", "unittests"]
|
||||||
BUILD_TARGETS_ALL = ["all"]
|
BUILD_TARGETS_ALL = ["all"]
|
||||||
|
|
||||||
@ -97,7 +98,6 @@ GOMADIR = DetectGoma()
|
|||||||
IS_GOMA_MACHINE = GOMADIR is not None
|
IS_GOMA_MACHINE = GOMADIR is not None
|
||||||
|
|
||||||
USE_GOMA = "true" if IS_GOMA_MACHINE else "false"
|
USE_GOMA = "true" if IS_GOMA_MACHINE else "false"
|
||||||
BUILD_OPTS = BUILD_OPTS_GOMA if IS_GOMA_MACHINE else BUILD_OPTS_DEFAULT
|
|
||||||
|
|
||||||
RELEASE_ARGS_TEMPLATE = """\
|
RELEASE_ARGS_TEMPLATE = """\
|
||||||
is_component_build = false
|
is_component_build = false
|
||||||
@ -150,6 +150,9 @@ def _Call(cmd, silent=False):
|
|||||||
if not silent: print("# %s" % cmd)
|
if not silent: print("# %s" % cmd)
|
||||||
return subprocess.call(cmd, shell=True)
|
return subprocess.call(cmd, shell=True)
|
||||||
|
|
||||||
|
def _CallWithOutputNoTerminal(cmd):
|
||||||
|
return subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
|
||||||
|
|
||||||
def _CallWithOutput(cmd):
|
def _CallWithOutput(cmd):
|
||||||
print("# %s" % cmd)
|
print("# %s" % cmd)
|
||||||
# The following trickery is required so that the 'cmd' thinks it's running
|
# The following trickery is required so that the 'cmd' thinks it's running
|
||||||
@ -225,6 +228,11 @@ class Config(object):
|
|||||||
arch_specific = self.GetTargetCpu() + self.GetV8TargetCpu()
|
arch_specific = self.GetTargetCpu() + self.GetV8TargetCpu()
|
||||||
return template % arch_specific
|
return template % arch_specific
|
||||||
|
|
||||||
|
def WantsGoma(self):
|
||||||
|
output = _CallWithOutputNoTerminal(
|
||||||
|
"gn args --short --list=use_goma %s" % (GetPath(self.arch, self.mode)))
|
||||||
|
return "true" in output
|
||||||
|
|
||||||
def Build(self):
|
def Build(self):
|
||||||
path = GetPath(self.arch, self.mode)
|
path = GetPath(self.arch, self.mode)
|
||||||
args_gn = os.path.join(path, "args.gn")
|
args_gn = os.path.join(path, "args.gn")
|
||||||
@ -236,13 +244,14 @@ class Config(object):
|
|||||||
code = _Call("gn gen %s" % path)
|
code = _Call("gn gen %s" % path)
|
||||||
if code != 0: return code
|
if code != 0: return code
|
||||||
targets = " ".join(self.targets)
|
targets = " ".join(self.targets)
|
||||||
|
build_opts = BUILD_OPTS_GOMA if self.WantsGoma() else BUILD_OPTS_DEFAULT
|
||||||
# The implementation of mksnapshot failure detection relies on
|
# The implementation of mksnapshot failure detection relies on
|
||||||
# the "pty" module and GDB presence, so skip it on non-Linux.
|
# the "pty" module and GDB presence, so skip it on non-Linux.
|
||||||
if "linux" not in sys.platform:
|
if "linux" not in sys.platform:
|
||||||
return _Call("ninja -C %s %s %s" % (path, BUILD_OPTS, targets))
|
return _Call("ninja -C %s %s %s" % (path, build_opts, targets))
|
||||||
|
|
||||||
return_code, output = _CallWithOutput("ninja -C %s %s %s" %
|
return_code, output = _CallWithOutput("ninja -C %s %s %s" %
|
||||||
(path, BUILD_OPTS, targets))
|
(path, build_opts, targets))
|
||||||
if return_code != 0 and "FAILED: gen/snapshot.cc" in output:
|
if return_code != 0 and "FAILED: gen/snapshot.cc" in output:
|
||||||
_Notify("V8 build requires your attention",
|
_Notify("V8 build requires your attention",
|
||||||
"Detected mksnapshot failure, re-running in GDB...")
|
"Detected mksnapshot failure, re-running in GDB...")
|
||||||
|
Loading…
Reference in New Issue
Block a user