Factor out the Windows SDK handling into a recipe module We may be able to share this module with infra/infra, but it's not possible at the moment so we need cary our own copy of this module. Change-Id: Ib2ef75062fe514057ec806751be20e1451681cd7 Reviewed-on: https://gn-review.googlesource.com/1780 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/infra/README.recipes.md b/infra/README.recipes.md index 7e43239..9d447de 100644 --- a/infra/README.recipes.md +++ b/infra/README.recipes.md
@@ -2,17 +2,49 @@ # Package documentation for [gn]() ## Table of Contents +**[Recipe Modules](#Recipe-Modules)** + * [windows_sdk](#recipe_modules-windows_sdk) + **[Recipes](#Recipes)** * [gn](#recipes-gn) — Recipe for building GN. + * [windows_sdk:examples/full](#recipes-windows_sdk_examples_full) +## Recipe Modules + +### *recipe_modules* / [windows\_sdk](/infra/recipe_modules/windows_sdk) + +[DEPS](/infra/recipe_modules/windows_sdk/__init__.py#5): [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/step][recipe_engine/recipe_modules/step] + +#### **class [WindowsSDKApi](/infra/recipe_modules/windows_sdk/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):** + +API for using Windows SDK distributed via CIPD. + +  **@contextmanager**<br>— **def [\_\_call\_\_](/infra/recipe_modules/windows_sdk/api.py#18)(self, path=None, version=None, enabled=True):** + +Setups the SDK environment when enabled. + +Args: + path (path): Path to a directory where to install the SDK + (default is '[start_dir]/cipd/windows_sdk') + version (str): CIPD instance ID, tag or ref of the SDK + (default is set via $infra/windows_sdk.version property) + enabled (bool): Whether the SDK should be used or not. + +Raises: + StepFailure or InfraFailure. ## Recipes ### *recipes* / [gn](/infra/recipes/gn.py) -[DEPS](/infra/recipes/gn.py#6): [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step] +[DEPS](/infra/recipes/gn.py#6): [windows\_sdk](#recipe_modules-windows_sdk), [recipe\_engine/buildbucket][recipe_engine/recipe_modules/buildbucket], [recipe\_engine/cipd][recipe_engine/recipe_modules/cipd], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/step][recipe_engine/recipe_modules/step] Recipe for building GN. -— **def [RunSteps](/infra/recipes/gn.py#19)(api):** +— **def [RunSteps](/infra/recipes/gn.py#20)(api):** +### *recipes* / [windows\_sdk:examples/full](/infra/recipe_modules/windows_sdk/examples/full.py) + +[DEPS](/infra/recipe_modules/windows_sdk/examples/full.py#5): [windows\_sdk](#recipe_modules-windows_sdk), [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step] + +— **def [RunSteps](/infra/recipe_modules/windows_sdk/examples/full.py#13)(api):** [recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/README.recipes.md#recipe_modules-buildbucket [recipe_engine/recipe_modules/cipd]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/README.recipes.md#recipe_modules-cipd @@ -23,3 +55,4 @@ [recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/README.recipes.md#recipe_modules-properties [recipe_engine/recipe_modules/python]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/README.recipes.md#recipe_modules-python [recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/README.recipes.md#recipe_modules-step +[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/40699af88c76d65ef1b3d364de221611603e2dc6/recipe_engine/recipe_api.py#1006
diff --git a/infra/recipe_modules/windows_sdk/__init__.py b/infra/recipe_modules/windows_sdk/__init__.py new file mode 100644 index 0000000..6183f2b --- /dev/null +++ b/infra/recipe_modules/windows_sdk/__init__.py
@@ -0,0 +1,27 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +DEPS = [ + 'recipe_engine/cipd', + 'recipe_engine/context', + 'recipe_engine/json', + 'recipe_engine/path', + 'recipe_engine/platform', + 'recipe_engine/step', +] + +from recipe_engine.recipe_api import Property +from recipe_engine.config import ConfigGroup, Single + +PROPERTIES = { + '$gn/windows_sdk': + Property( + help='Properties specifically for the infra windows_sdk module.', + param_name='sdk_properties', + kind=ConfigGroup( + # CIPD instance ID, tag or ref for the Windows SDK version. + version=Single(str),), + default={'version': 'uploaded:2018-06-13'}, + ) +}
diff --git a/infra/recipe_modules/windows_sdk/api.py b/infra/recipe_modules/windows_sdk/api.py new file mode 100644 index 0000000..0c99d78 --- /dev/null +++ b/infra/recipe_modules/windows_sdk/api.py
@@ -0,0 +1,112 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +from contextlib import contextmanager + +from recipe_engine import recipe_api + + +class WindowsSDKApi(recipe_api.RecipeApi): + """API for using Windows SDK distributed via CIPD.""" + + def __init__(self, sdk_properties, *args, **kwargs): + super(WindowsSDKApi, self).__init__(*args, **kwargs) + + self._sdk_properties = sdk_properties + + @contextmanager + def __call__(self, path=None, version=None, enabled=True): + """Setups the SDK environment when enabled. + + Args: + path (path): Path to a directory where to install the SDK + (default is '[start_dir]/cipd/windows_sdk') + version (str): CIPD instance ID, tag or ref of the SDK + (default is set via $infra/windows_sdk.version property) + enabled (bool): Whether the SDK should be used or not. + + Raises: + StepFailure or InfraFailure. + """ + if enabled: + sdk_dir = self._ensure_sdk( + path or self.m.path['start_dir'].join('cipd', 'windows_sdk'), + version or self._sdk_properties['version']) + try: + with self.m.context(**self._sdk_env(sdk_dir)): + yield + finally: + if self.m.platform.is_win: + # cl.exe automatically starts background mspdbsrv.exe daemon which + # needs to be manually stopped so Swarming can tidy up after itself. + self.m.step('taskkill mspdbsrv', + ['taskkill.exe', '/f', '/t', '/im', 'mspdbsrv.exe']) + else: + yield + + def _ensure_sdk(self, sdk_dir, sdk_version): + """Ensures the Windows SDK CIPD package is installed. + + Returns the directory where the SDK package has been installed. + + Args: + path (path): Path to a directory. + version (str): CIPD instance ID, tag or ref. + """ + with self.m.context(infra_steps=True): + sdk_package = 'chrome_internal/third_party/sdk/windows' + self.m.cipd.ensure(sdk_dir, {sdk_package: sdk_version}) + return sdk_dir + + def _sdk_env(self, sdk_dir): + """Constructs the environment for the SDK. + + Returns environment and environment prefixes. + + Args: + sdk_dir (path): Path to a directory containing the SDK. + """ + env = {} + env_prefixes = {} + + # Load .../win_sdk/bin/SetEnv.${arch}.json to extract the required + # environment. It contains a dict that looks like this: + # { + # "env": { + # "VAR": [["..", "..", "x"], ["..", "..", "y"]], + # ... + # } + # } + # All these environment variables need to be added to the environment + # for the compiler and linker to work. + filename = 'SetEnv.%s.json' % {32: 'x86', 64: 'x64'}[self.m.platform.bits] + step_result = self.m.json.read( + 'read %s' % filename, + sdk_dir.join('win_sdk', 'bin', filename), + step_test_data=lambda: self.m.json.test_api.output({ + 'env': { + 'PATH': [['..', '..', 'win_sdk', 'bin', 'x64']], + 'VSINSTALLDIR': [['..', '..\\']],},})) + data = step_result.json.output.get('env') + for key in data: + # recipes' Path() does not like .., ., \, or /, so this is cumbersome. + # What we want to do is: + # [sdk_bin_dir.join(*e) for e in env[k]] + # Instead do that badly, and rely (but verify) on the fact that the paths + # are all specified relative to the root, but specified relative to + # win_sdk/bin (i.e. everything starts with "../../".) + results = [] + for value in data[key]: + assert value[0] == '..' and (value[1] == '..' or value[1] == '..\\') + results.append('%s' % sdk_dir.join(*value[2:])) + + # PATH is special-cased because we don't want to overwrite other things + # like C:\Windows\System32. Others are replacements because prepending + # doesn't necessarily makes sense, like VSINSTALLDIR. + if key.lower() == 'path': + env_prefixes[key] = results + else: + env[key] = ';'.join(results) + + return {'env': env, 'env_prefixes': env_prefixes}
diff --git a/infra/recipe_modules/windows_sdk/examples/full.expected/linux.json b/infra/recipe_modules/windows_sdk/examples/full.expected/linux.json new file mode 100644 index 0000000..51d9430 --- /dev/null +++ b/infra/recipe_modules/windows_sdk/examples/full.expected/linux.json
@@ -0,0 +1,23 @@ +[ + { + "cmd": [ + "gn", + "gen", + "out/Release" + ], + "name": "gn" + }, + { + "cmd": [ + "ninja", + "-C", + "out/Release" + ], + "name": "ninja" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file
diff --git a/infra/recipe_modules/windows_sdk/examples/full.expected/mac.json b/infra/recipe_modules/windows_sdk/examples/full.expected/mac.json new file mode 100644 index 0000000..51d9430 --- /dev/null +++ b/infra/recipe_modules/windows_sdk/examples/full.expected/mac.json
@@ -0,0 +1,23 @@ +[ + { + "cmd": [ + "gn", + "gen", + "out/Release" + ], + "name": "gn" + }, + { + "cmd": [ + "ninja", + "-C", + "out/Release" + ], + "name": "ninja" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file
diff --git a/infra/recipe_modules/windows_sdk/examples/full.expected/win.json b/infra/recipe_modules/windows_sdk/examples/full.expected/win.json new file mode 100644 index 0000000..d9a7a65 --- /dev/null +++ b/infra/recipe_modules/windows_sdk/examples/full.expected/win.json
@@ -0,0 +1,108 @@ +[ + { + "cmd": [ + "cipd.bat", + "ensure", + "-root", + "[START_DIR]\\cipd\\windows_sdk", + "-ensure-file", + "chrome_internal/third_party/sdk/windows uploaded:2018-06-13", + "-json-output", + "/path/to/tmp/json" + ], + "infra_step": true, + "name": "ensure_installed", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\SetEnv.x64.json", + "/path/to/tmp/json" + ], + "name": "read SetEnv.x64.json", + "~followup_annotations": [ + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "gn", + "gen", + "out/Release" + ], + "env": { + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" + }, + "env_prefixes": { + "PATH": [ + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" + ] + }, + "name": "gn" + }, + { + "cmd": [ + "ninja", + "-C", + "out/Release" + ], + "env": { + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" + }, + "env_prefixes": { + "PATH": [ + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" + ] + }, + "name": "ninja" + }, + { + "cmd": [ + "taskkill.exe", + "/f", + "/t", + "/im", + "mspdbsrv.exe" + ], + "name": "taskkill mspdbsrv" + }, + { + "name": "$result", + "recipe_result": null, + "status_code": 0 + } +] \ No newline at end of file
diff --git a/infra/recipe_modules/windows_sdk/examples/full.py b/infra/recipe_modules/windows_sdk/examples/full.py new file mode 100644 index 0000000..5e8e503 --- /dev/null +++ b/infra/recipe_modules/windows_sdk/examples/full.py
@@ -0,0 +1,25 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +DEPS = [ + 'windows_sdk', + 'recipe_engine/platform', + 'recipe_engine/properties', + 'recipe_engine/step', +] + + +def RunSteps(api): + with api.windows_sdk(enabled=api.platform.is_win): + api.step('gn', ['gn', 'gen', 'out/Release']) + api.step('ninja', ['ninja', '-C', 'out/Release']) + + +def GenTests(api): + for platform in ('linux', 'mac', 'win'): + properties = { + 'buildername': 'test_builder', + } + yield (api.test(platform) + api.platform.name(platform) + + api.properties.generic(**properties))
diff --git a/infra/recipes/gn.expected/ci_win.json b/infra/recipes/gn.expected/ci_win.json index 9d57f03..75e7300 100644 --- a/infra/recipes/gn.expected/ci_win.json +++ b/infra/recipes/gn.expected/ci_win.json
@@ -49,7 +49,7 @@ "-root", "[START_DIR]\\cipd", "-ensure-file", - "chrome_internal/third_party/sdk/windows uploaded:2018-06-13\ninfra/ninja/${platform} version:1.8.2", + "infra/ninja/${platform} version:1.8.2", "-json-output", "/path/to/tmp/json" ], @@ -60,10 +60,6 @@ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", "@@@STEP_LOG_LINE@json.output@ {@@@", - "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", - "@@@STEP_LOG_LINE@json.output@ }, @@@", - "@@@STEP_LOG_LINE@json.output@ {@@@", "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:1.8.2---\", @@@", "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/ninja/${platform}\"@@@", "@@@STEP_LOG_LINE@json.output@ }@@@", @@ -74,76 +70,6 @@ ] }, { - "cmd": [ - "python", - "-u", - "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "[START_DIR]\\cipd\\win_sdk\\bin\\SetEnv.x64.json", - "/path/to/tmp/json" - ], - "name": "SetEnv.x64.json", - "~followup_annotations": [ - "@@@STEP_LOG_LINE@json.output@{@@@", - "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", - "@@@STEP_LOG_LINE@json.output@ \"INCLUDE\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"um\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"shared\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"winrt\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"VC\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Tools\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"MSVC\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"14.14.26428\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"HostX64\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ }@@@", - "@@@STEP_LOG_LINE@json.output@}@@@", - "@@@STEP_LOG_END@json.output@@@" - ] - }, - { "cmd": [], "name": "debug" }, @@ -156,6 +82,69 @@ }, { "cmd": [ + "cipd.bat", + "ensure", + "-root", + "[START_DIR]\\cipd\\windows_sdk", + "-ensure-file", + "chrome_internal/third_party/sdk/windows uploaded:2018-06-13", + "-json-output", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "infra_step": true, + "name": "debug.build.ensure_installed", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\SetEnv.x64.json", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "name": "debug.build.read SetEnv.x64.json", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]\\gn\\build\\gen.py", @@ -163,13 +152,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "debug.build.generate", @@ -185,13 +172,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "debug.build.ninja", @@ -207,6 +192,7 @@ "/im", "mspdbsrv.exe" ], + "cwd": "[START_DIR]\\gn", "name": "debug.build.taskkill mspdbsrv", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@" @@ -234,19 +220,80 @@ }, { "cmd": [ + "cipd.bat", + "ensure", + "-root", + "[START_DIR]\\cipd\\windows_sdk", + "-ensure-file", + "chrome_internal/third_party/sdk/windows uploaded:2018-06-13", + "-json-output", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "infra_step": true, + "name": "release.build.ensure_installed", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\SetEnv.x64.json", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "name": "release.build.read SetEnv.x64.json", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]\\gn\\build\\gen.py" ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "release.build.generate", @@ -262,13 +309,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "release.build.ninja", @@ -284,6 +329,7 @@ "/im", "mspdbsrv.exe" ], + "cwd": "[START_DIR]\\gn", "name": "release.build.taskkill mspdbsrv", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@"
diff --git a/infra/recipes/gn.expected/cq_win.json b/infra/recipes/gn.expected/cq_win.json index b09f254..7e56381 100644 --- a/infra/recipes/gn.expected/cq_win.json +++ b/infra/recipes/gn.expected/cq_win.json
@@ -76,7 +76,7 @@ "-root", "[START_DIR]\\cipd", "-ensure-file", - "chrome_internal/third_party/sdk/windows uploaded:2018-06-13\ninfra/ninja/${platform} version:1.8.2", + "infra/ninja/${platform} version:1.8.2", "-json-output", "/path/to/tmp/json" ], @@ -87,10 +87,6 @@ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", "@@@STEP_LOG_LINE@json.output@ {@@@", - "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", - "@@@STEP_LOG_LINE@json.output@ }, @@@", - "@@@STEP_LOG_LINE@json.output@ {@@@", "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:1.8.2---\", @@@", "@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/ninja/${platform}\"@@@", "@@@STEP_LOG_LINE@json.output@ }@@@", @@ -101,76 +97,6 @@ ] }, { - "cmd": [ - "python", - "-u", - "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", - "[START_DIR]\\cipd\\win_sdk\\bin\\SetEnv.x64.json", - "/path/to/tmp/json" - ], - "name": "SetEnv.x64.json", - "~followup_annotations": [ - "@@@STEP_LOG_LINE@json.output@{@@@", - "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", - "@@@STEP_LOG_LINE@json.output@ \"INCLUDE\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"um\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"shared\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Include\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"winrt\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"10.0.17134.0\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"VC\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"Tools\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"MSVC\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"14.14.26428\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"HostX64\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ], @@@", - "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", - "@@@STEP_LOG_LINE@json.output@ [@@@", - "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", - "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ ]@@@", - "@@@STEP_LOG_LINE@json.output@ }@@@", - "@@@STEP_LOG_LINE@json.output@}@@@", - "@@@STEP_LOG_END@json.output@@@" - ] - }, - { "cmd": [], "name": "debug" }, @@ -183,6 +109,69 @@ }, { "cmd": [ + "cipd.bat", + "ensure", + "-root", + "[START_DIR]\\cipd\\windows_sdk", + "-ensure-file", + "chrome_internal/third_party/sdk/windows uploaded:2018-06-13", + "-json-output", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "infra_step": true, + "name": "debug.build.ensure_installed", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\SetEnv.x64.json", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "name": "debug.build.read SetEnv.x64.json", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]\\gn\\build\\gen.py", @@ -190,13 +179,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "debug.build.generate", @@ -212,13 +199,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "debug.build.ninja", @@ -234,6 +219,7 @@ "/im", "mspdbsrv.exe" ], + "cwd": "[START_DIR]\\gn", "name": "debug.build.taskkill mspdbsrv", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@" @@ -261,19 +247,80 @@ }, { "cmd": [ + "cipd.bat", + "ensure", + "-root", + "[START_DIR]\\cipd\\windows_sdk", + "-ensure-file", + "chrome_internal/third_party/sdk/windows uploaded:2018-06-13", + "-json-output", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "infra_step": true, + "name": "release.build.ensure_installed", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"\": [@@@", + "@@@STEP_LOG_LINE@json.output@ {@@@", + "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-uploaded:2018-06\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"package\": \"chrome_internal/third_party/sdk/windows\"@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ + "python", + "-u", + "\nimport shutil\nimport sys\nshutil.copy(sys.argv[1], sys.argv[2])\n", + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\SetEnv.x64.json", + "/path/to/tmp/json" + ], + "cwd": "[START_DIR]\\gn", + "name": "release.build.read SetEnv.x64.json", + "~followup_annotations": [ + "@@@STEP_NEST_LEVEL@2@@@", + "@@@STEP_LOG_LINE@json.output@{@@@", + "@@@STEP_LOG_LINE@json.output@ \"env\": {@@@", + "@@@STEP_LOG_LINE@json.output@ \"PATH\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"win_sdk\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"bin\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"x64\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ], @@@", + "@@@STEP_LOG_LINE@json.output@ \"VSINSTALLDIR\": [@@@", + "@@@STEP_LOG_LINE@json.output@ [@@@", + "@@@STEP_LOG_LINE@json.output@ \"..\", @@@", + "@@@STEP_LOG_LINE@json.output@ \"..\\\\\"@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ ]@@@", + "@@@STEP_LOG_LINE@json.output@ }@@@", + "@@@STEP_LOG_LINE@json.output@}@@@", + "@@@STEP_LOG_END@json.output@@@" + ] + }, + { + "cmd": [ "python", "-u", "[START_DIR]\\gn\\build\\gen.py" ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "release.build.generate", @@ -289,13 +336,11 @@ ], "cwd": "[START_DIR]\\gn", "env": { - "INCLUDE": "[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\um;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\shared;[START_DIR]\\cipd\\win_sdk\\Include\\10.0.17134.0\\winrt", - "VSINSTALLDIR": "[START_DIR]\\cipd" + "VSINSTALLDIR": "[START_DIR]\\cipd\\windows_sdk" }, "env_prefixes": { "PATH": [ - "[START_DIR]\\cipd\\win_sdk\\bin\\10.0.17134.0\\x64", - "[START_DIR]\\cipd\\VC\\Tools\\MSVC\\14.14.26428\\bin\\HostX64\\x64" + "[START_DIR]\\cipd\\windows_sdk\\win_sdk\\bin\\x64" ] }, "name": "release.build.ninja", @@ -311,6 +356,7 @@ "/im", "mspdbsrv.exe" ], + "cwd": "[START_DIR]\\gn", "name": "release.build.taskkill mspdbsrv", "~followup_annotations": [ "@@@STEP_NEST_LEVEL@2@@@"
diff --git a/infra/recipes/gn.py b/infra/recipes/gn.py index d8ccd79..d0a195c 100644 --- a/infra/recipes/gn.py +++ b/infra/recipes/gn.py
@@ -13,6 +13,7 @@ 'recipe_engine/properties', 'recipe_engine/python', 'recipe_engine/step', + 'windows_sdk', ] @@ -49,52 +50,11 @@ 'fuchsia/clang/${platform}': 'goma', }, 'mac': {}, - 'win': { - 'chrome_internal/third_party/sdk/windows': 'uploaded:2018-06-13', - }, + 'win': {}, }[api.platform.name]) api.cipd.ensure(cipd_dir, packages) - environ_pre = {} - - win_env = {} - if api.platform.name == 'win': - # Load .../win_sdk/bin/SetEnv.x64.json to extract the required environment. - # It contains a dict that looks like this: - # { - # "env": { - # "VAR": [["..", "..", "x"], ["..", "..", "y"]], - # ... - # } - # } - # All these environment variables need to be added to the environment - # for the compiler and linker to work. - - json_file = cipd_dir.join('win_sdk', 'bin', 'SetEnv.x64.json') - env = api.json.read('SetEnv.x64.json', json_file).json.output.get('env') - for k in env: - # recipes' Path() does not like .., ., \, or /, so this is cumbersome. - # What we want to do is: - # [sdk_bin_dir.join(*e) for e in env[k]] - # Instead do that badly, and rely (but verify) on the fact that the paths - # are all specified relative to the root, but specified relative to - # win_sdk/bin (i.e. everything starts with "../../".) - results = [] - for data in env[k]: - assert data[0] == '..' and (data[1] == '..' or data[1] == '..\\') - root_relative = data[2:] - results.append('%s' % cipd_dir.join(*root_relative)) - - # PATH is special-cased because we don't want to overwrite other things - # like C:\Windows\System32. Others are replacements because prepending - # doesn't necessarily makes sense, like VSINSTALLDIR. - if k.lower() == 'path': - # env_prefixes wants a list, not a string like env. - environ_pre[k] = results - else: - win_env[k] = ';'.join(results) - - environ = { + env = { 'linux': { 'CC': cipd_dir.join('bin', 'clang'), 'CXX': cipd_dir.join('bin', 'clang++'), @@ -102,7 +62,7 @@ 'LDFLAGS': '-static-libstdc++ -ldl -lpthread', }, 'mac': {}, - 'win': win_env, + 'win': {}, }[api.platform.name] configs = [ @@ -119,55 +79,35 @@ for config in configs: with api.step.nest(config['name']): with api.step.nest('build'): - with api.context(env=environ, env_prefixes=environ_pre, cwd=src_dir): - api.python('generate', - src_dir.join('build', 'gen.py'), - args=config['args']) + with api.context( + env=env, cwd=src_dir), api.windows_sdk(enabled=api.platform.is_win): + api.python( + 'generate', src_dir.join('build', 'gen.py'), args=config['args']) # Windows requires the environment modifications when building too. api.step('ninja', [cipd_dir.join('ninja'), '-C', src_dir.join('out')]) - if api.platform.name == 'win': - # Swarming won't be able to tidy up after the compiler leaves this - # daemon running, so we have to manually kill it. - api.step('taskkill mspdbsrv', - ['taskkill.exe', '/f', '/t', '/im', 'mspdbsrv.exe']) - api.step('test', [src_dir.join('out', 'gn_unittests')]) def GenTests(api): - WIN_TOOLCHAIN_DATA = { - "env": { - "VSINSTALLDIR": [["..", "..\\"]], - "INCLUDE": [["..", "..", "win_sdk", "Include", "10.0.17134.0", "um"], ["..", "..", "win_sdk", "Include", "10.0.17134.0", "shared"], ["..", "..", "win_sdk", "Include", "10.0.17134.0", "winrt"]], - "PATH": [["..", "..", "win_sdk", "bin", "10.0.17134.0", "x64"], ["..", "..", "VC", "Tools", "MSVC", "14.14.26428", "bin", "HostX64", "x64"]], - } - } for platform in ('linux', 'mac', 'win'): - to_yield = (api.test('ci_' + platform) + api.platform.name(platform) + - api.properties(buildbucket={ - 'build': { - 'tags': [ - 'buildset:commit/gitiles/gn.googlesource.com/gn/+/' - 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', - ] - } - })) - if platform == 'win': - to_yield += api.override_step_data('SetEnv.x64.json', - api.json.output(WIN_TOOLCHAIN_DATA)) - yield to_yield + yield (api.test('ci_' + platform) + api.platform.name(platform) + + api.properties(buildbucket={ + 'build': { + 'tags': [ + 'buildset:commit/gitiles/gn.googlesource.com/gn/+/' + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', + ] + } + })) - to_yield = (api.test('cq_' + platform) + api.platform.name(platform) + - api.properties(buildbucket={ - 'build': { - 'tags': [ - 'buildset:patch/gerrit/gn-review.googlesource.com/1000/1', - ] - } - })) - if platform == 'win': - to_yield += api.override_step_data('SetEnv.x64.json', - api.json.output(WIN_TOOLCHAIN_DATA)) - yield to_yield + yield ( + api.test('cq_' + platform) + api.platform.name(platform) + + api.properties(buildbucket={ + 'build': { + 'tags': [ + 'buildset:patch/gerrit/gn-review.googlesource.com/1000/1', + ] + } + }))