| Index: tools/grit/grit/scons.py
|
| diff --git a/tools/grit/grit/scons.py b/tools/grit/grit/scons.py
|
| index 09eb4e51114baca0be0676efc57154f18161163a..733583ea27ed5a38936aeba63fda8c979d6ea8d6 100644
|
| --- a/tools/grit/grit/scons.py
|
| +++ b/tools/grit/grit/scons.py
|
| @@ -12,6 +12,8 @@
|
| import os
|
| import types
|
|
|
| +import SCons.Errors
|
| +
|
| def _IsDebugEnabled():
|
| return 'GRIT_DEBUG' in os.environ and os.environ['GRIT_DEBUG'] == '1'
|
|
|
| @@ -45,36 +47,42 @@ def _Builder(target, source, env):
|
| # fork, we can use multiple processes and processors.
|
| pid = os.fork()
|
| if pid != 0:
|
| - os.waitpid(pid, 0)
|
| + pid, exit_code = os.waitpid(pid, 0)
|
| + if exit_code != 0:
|
| + raise SCons.Errors.BuildError(errstr="see grit error")
|
| return
|
| - from grit import grit_runner
|
| - from grit.tool import build
|
| - options = grit_runner.Options()
|
| - # This sets options to default values.
|
| - options.ReadOptions(['-v'])
|
| - options.input = _SourceToFile(source)
|
| -
|
| - # TODO(joi) Check if we can get the 'verbose' option from the environment.
|
| -
|
| - builder = build.RcBuilder()
|
| -
|
| - # Get the CPP defines from the environment.
|
| - for flag in env.get('RCFLAGS', []):
|
| - if flag.startswith('/D'):
|
| - flag = flag[2:]
|
| - name, val = build.ParseDefine(flag)
|
| - # Only apply to first instance of a given define
|
| - if name not in builder.defines:
|
| - builder.defines[name] = val
|
| -
|
| - # To ensure that our output files match what we promised SCons, we
|
| - # use the list of targets provided by SCons and update the file paths in
|
| - # our .grd input file with the targets.
|
| - builder.scons_targets = [str(t) for t in target]
|
| - builder.Run(options, [])
|
| -
|
| - # Exit the child process.
|
| - os._exit(0)
|
| + try:
|
| + child_exit_code = 0
|
| + from grit import grit_runner
|
| + from grit.tool import build
|
| + options = grit_runner.Options()
|
| + # This sets options to default values.
|
| + options.ReadOptions(['-v'])
|
| + options.input = _SourceToFile(source)
|
| +
|
| + # TODO(joi) Check if we can get the 'verbose' option from the environment.
|
| +
|
| + builder = build.RcBuilder()
|
| +
|
| + # Get the CPP defines from the environment.
|
| + for flag in env.get('RCFLAGS', []):
|
| + if flag.startswith('/D'):
|
| + flag = flag[2:]
|
| + name, val = build.ParseDefine(flag)
|
| + # Only apply to first instance of a given define
|
| + if name not in builder.defines:
|
| + builder.defines[name] = val
|
| +
|
| + # To ensure that our output files match what we promised SCons, we
|
| + # use the list of targets provided by SCons and update the file paths in
|
| + # our .grd input file with the targets.
|
| + builder.scons_targets = [str(t) for t in target]
|
| + builder.Run(options, [])
|
| + except:
|
| + child_exit_code = -1
|
| + finally:
|
| + # Exit the child process.
|
| + os._exit(child_exit_code)
|
|
|
|
|
| def _Emitter(target, source, env):
|
|
|