From bdb1123726a2810c5f3e28f28f4802fa469e6914 Mon Sep 17 00:00:00 2001 From: Robert Iannucci Date: Sat, 26 Jan 2019 21:00:34 +0000 Subject: [PATCH] [osx_sdk] Fix properties when setting a single value. Because of the (unfortunate) ways that PROPERTIES works currently, setting defaults in the obvious way means that providing a subset of the values as properties replaces the defaults entirely. In this case we want to override the sdk_version without having to override the toolchain app version. R=jchinlee@chromium.org, tandrii@chromium.org Change-Id: I13f4ee19e45a3bb147b37f69d10cb4ed4f734a21 Reviewed-on: https://chromium-review.googlesource.com/c/1438088 Commit-Queue: Andrii Shyshkalov Auto-Submit: Robbie Iannucci Reviewed-by: Andrii Shyshkalov --- recipes/README.recipes.md | 4 ++-- recipes/recipe_modules/osx_sdk/__init__.py | 7 +------ recipes/recipe_modules/osx_sdk/api.py | 18 +++++++++++++++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/recipes/README.recipes.md b/recipes/README.recipes.md index 10ec8cde2..3db205d9c 100644 --- a/recipes/README.recipes.md +++ b/recipes/README.recipes.md @@ -670,11 +670,11 @@ XCode installation. Available only to Google-run bots. -#### **class [OSXSDKApi](/recipes/recipe_modules/osx_sdk/api.py#15)([RecipeApi][recipe_engine/wkt/RecipeApi]):** +#### **class [OSXSDKApi](/recipes/recipe_modules/osx_sdk/api.py#24)([RecipeApi][recipe_engine/wkt/RecipeApi]):** API for using OS X SDK distributed via CIPD. -  **@contextmanager**
— **def [\_\_call\_\_](/recipes/recipe_modules/osx_sdk/api.py#25)(self, kind):** +  **@contextmanager**
— **def [\_\_call\_\_](/recipes/recipe_modules/osx_sdk/api.py#37)(self, kind):** Sets up the XCode SDK environment. diff --git a/recipes/recipe_modules/osx_sdk/__init__.py b/recipes/recipe_modules/osx_sdk/__init__.py index ed790c34e..0b4ce5ddf 100644 --- a/recipes/recipe_modules/osx_sdk/__init__.py +++ b/recipes/recipe_modules/osx_sdk/__init__.py @@ -30,11 +30,6 @@ PROPERTIES = { # The CIPD toolchain tool package and version toolchain_pkg=Single(str), toolchain_ver=Single(str), - ), default={ - 'sdk_version': '9c40b', - - 'toolchain_pkg': 'infra/tools/mac_toolchain/${platform}', - 'toolchain_ver': 'git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a', - }, + ), default={}, ) } diff --git a/recipes/recipe_modules/osx_sdk/api.py b/recipes/recipe_modules/osx_sdk/api.py index 4fc4c2968..b5cfa1bf0 100644 --- a/recipes/recipe_modules/osx_sdk/api.py +++ b/recipes/recipe_modules/osx_sdk/api.py @@ -11,6 +11,15 @@ from contextlib import contextmanager from recipe_engine import recipe_api +# TODO(iannucci): replace this with something sane when PROPERTIES is +# implemented with a proto message. +_PROPERTY_DEFAULTS = { + 'sdk_version': '9c40b', + + 'toolchain_pkg': 'infra/tools/mac_toolchain/${platform}', + 'toolchain_ver': 'git_revision:796d2b92cff93fc2059623ce0a66284373ceea0a', +} + class OSXSDKApi(recipe_api.RecipeApi): """API for using OS X SDK distributed via CIPD.""" @@ -18,9 +27,12 @@ class OSXSDKApi(recipe_api.RecipeApi): def __init__(self, sdk_properties, *args, **kwargs): super(OSXSDKApi, self).__init__(*args, **kwargs) - self._sdk_version = sdk_properties['sdk_version'].lower() - self._tool_pkg = sdk_properties['toolchain_pkg'] - self._tool_ver = sdk_properties['toolchain_ver'] + actual_props = _PROPERTY_DEFAULTS.copy() + actual_props.update(sdk_properties) + + self._sdk_version = actual_props['sdk_version'].lower() + self._tool_pkg = actual_props['toolchain_pkg'] + self._tool_ver = actual_props['toolchain_ver'] @contextmanager def __call__(self, kind):