| Index: scripts/slave/recipe_modules/ios/api.py
|
| diff --git a/scripts/slave/recipe_modules/ios/api.py b/scripts/slave/recipe_modules/ios/api.py
|
| index 409832c37601ad76d9450079c5b14ef06d571233..1998279a63eb1aba19fbfbf9572ae2ff130dbb1c 100644
|
| --- a/scripts/slave/recipe_modules/ios/api.py
|
| +++ b/scripts/slave/recipe_modules/ios/api.py
|
| @@ -51,6 +51,18 @@ class iOSApi(recipe_api.RecipeApi):
|
| return self.__config['configuration']
|
|
|
| @property
|
| + def using_gyp(self):
|
| + assert self.__config is not None
|
| + return not self.using_mb or self.__config.get('mb_type') == 'gyp'
|
| +
|
| + @property
|
| + def using_mb(self):
|
| + assert self.__config is not None
|
| + # MB and GN only work if we're doing ninja builds, so we will
|
| + # ignore the mb_type setting if compiler isn't set to ninja.
|
| + return self.__config['mb_type'] is not None and self.compiler == 'ninja'
|
| +
|
| + @property
|
| def platform(self):
|
| assert self.__config is not None
|
| if self.__config['sdk'].startswith('iphoneos'):
|
| @@ -118,14 +130,15 @@ class iOSApi(recipe_api.RecipeApi):
|
| ):
|
| self.__config[key] = parent_config[key]
|
|
|
| - # We set some default GYP_DEFINES so developers don't have to set them
|
| - # manually on every bot. Add them in here.
|
| - self.__config['GYP_DEFINES']['component'] = 'static_library'
|
| - self.__config['GYP_DEFINES']['OS'] = 'ios'
|
| + # In the older dict-based bot configs we didn't set these values
|
| + # since they were the same on every bot. In the newer configs they
|
| + # are set anyway since MB needs them as well.
|
| + if isinstance(self.__config['GYP_DEFINES'], dict):
|
| + self.__config['GYP_DEFINES']['component'] = 'static_library'
|
| + self.__config['GYP_DEFINES']['OS'] = 'ios'
|
|
|
| # TODO(crbug.com/552146): Once 'all' works, the default should be ['all'].
|
| self.__config.setdefault('additional_compile_targets', ['All'])
|
| - self.__config.setdefault('use_mb', False)
|
|
|
| # In order to simplify the code that uses the values of self.__config, here
|
| # we default to empty values of their respective types, so in other places
|
| @@ -135,6 +148,8 @@ class iOSApi(recipe_api.RecipeApi):
|
| self.__config['tests'] = self.__config.get('tests', [])
|
| self.__config['env'] = self.__config.get('env', {})
|
|
|
| + self.__config.setdefault('mb_type', None)
|
| +
|
| # Elements of the "tests" list are dicts. There are two types of elements,
|
| # determined by the presence of one of these mutually exclusive keys:
|
| # "app": This says to run a particular app.
|
| @@ -208,8 +223,10 @@ class iOSApi(recipe_api.RecipeApi):
|
| ], step_test_data=lambda: self.m.json.test_api.output({}))
|
|
|
| cfg = self.m.chromium.make_config()
|
| - cfg.gyp_env.GYP_CROSSCOMPILE = 1
|
| - cfg.gyp_env.GYP_DEFINES = copy.deepcopy(self.__config['GYP_DEFINES'])
|
| +
|
| + if self.using_gyp:
|
| + cfg.gyp_env.GYP_CROSSCOMPILE = 1
|
| + cfg.gyp_env.GYP_DEFINES = copy.deepcopy(self.__config['GYP_DEFINES'])
|
| self.m.chromium.c = cfg
|
|
|
| def build(self, suffix=None):
|
| @@ -218,16 +235,16 @@ class iOSApi(recipe_api.RecipeApi):
|
|
|
| suffix = ' (%s)' % suffix if suffix else ''
|
|
|
| - # MB and GN only work if we're doing ninja builds, so we will
|
| - # ignore the use_mb setting if compiler isn't set to ninja.
|
| - use_mb = self.__config['use_mb'] and self.compiler == 'ninja'
|
| - if use_mb:
|
| + if self.using_mb:
|
| self.m.chromium.c.project_generator.tool = 'mb'
|
|
|
| # Add the default GYP_DEFINES.
|
| - gyp_defines = [
|
| - '%s=%s' % (k, v) for k, v in self.__config['GYP_DEFINES'].iteritems()
|
| - ]
|
| + if isinstance(self.__config['GYP_DEFINES'], dict):
|
| + gyp_defines = [
|
| + '%s=%s' % (k, v) for k, v in self.__config['GYP_DEFINES'].iteritems()
|
| + ]
|
| + else:
|
| + gyp_defines = self.__config['GYP_DEFINES']
|
|
|
| env = {
|
| 'GYP_DEFINES': ' '.join(gyp_defines),
|
| @@ -263,7 +280,7 @@ class iOSApi(recipe_api.RecipeApi):
|
| cwd = self.m.path['checkout'].join('out', sub_path)
|
| cmd = ['ninja', '-C', cwd]
|
|
|
| - if use_mb:
|
| + if self.using_mb:
|
| # if we're using MB to generate build files, make sure we don't
|
| # invoke GYP directly. We still want the GYP_DEFINES set in the
|
| # environment, though, so that other hooks can key off of them.
|
| @@ -273,8 +290,10 @@ class iOSApi(recipe_api.RecipeApi):
|
| step_result.presentation.step_text = (
|
| '<br />GYP_DEFINES:<br />%s' % '<br />'.join(gyp_defines)
|
| )
|
| + if self.using_mb:
|
| + step_result.presentation.step_text += '<br />GYP_CHROMIUM_NO_ACTION=1'
|
|
|
| - if use_mb:
|
| + if self.using_mb:
|
| self.m.chromium.run_mb(self.m.properties['mastername'],
|
| self.m.properties['buildername'],
|
| name='generate_build_files' + suffix,
|
|
|