Commit 98be56f2 authored by Alex Gough's avatar Alex Gough Committed by LUCI CQ

[windows_sdk] allow env json to not be relative

SetEnv json entries in cipd packages for more recent Windows SDKs are
changed from:

       [
         "..",
         "..",
         "win_sdk",
         "Include",
         "10.0.17134.0",
         "um"
       ],

to

       [
         "Windows Kits",
         "10",
         "Include",
         "10.0.19041.0",
         "um"
       ],

so we should accept these paths now.

R=iannucci@chromium.org

Bug: 1250098
Change-Id: I56c84bc5ed46dda354e018b0abac2fae0bad8199
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3296663Reviewed-by: 's avatarRobbie Iannucci <iannucci@chromium.org>
Commit-Queue: Alex Gough <ajgo@chromium.org>
parent 3e68015b
......@@ -1139,11 +1139,11 @@ PYTHON_VERSION_COMPATIBILITY: PY2+3
&mdash; **def [RunSteps](/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py#18)(api):**
### *recipes* / [windows\_sdk:examples/full](/recipes/recipe_modules/windows_sdk/examples/full.py)
[DEPS](/recipes/recipe_modules/windows_sdk/examples/full.py#7): [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]
[DEPS](/recipes/recipe_modules/windows_sdk/examples/full.py#7): [windows\_sdk](#recipe_modules-windows_sdk), [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step]
PYTHON_VERSION_COMPATIBILITY: PY2+3
&mdash; **def [RunSteps](/recipes/recipe_modules/windows_sdk/examples/full.py#15)(api):**
&mdash; **def [RunSteps](/recipes/recipe_modules/windows_sdk/examples/full.py#16)(api):**
[recipe_engine/recipe_modules/assertions]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/f923130a5a81698f2678e103149f459e62511169/README.recipes.md#recipe_modules-assertions
[recipe_engine/recipe_modules/buildbucket]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/f923130a5a81698f2678e103149f459e62511169/README.recipes.md#recipe_modules-buildbucket
......
......@@ -119,16 +119,24 @@ class WindowsSDKApi(recipe_api.RecipeApi):
},
})).json.output.get('env')
for key in data:
# SDK cipd packages prior to 10.0.19041.0 contain entries like:
# "INCLUDE": [["..","..","win_sdk","Include","10.0.17134.0","um"], and
# 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 "../../".)
#
# For 10.0.19041.0 and later, the cipd SDK package json is like:
# "INCLUDE": [["Windows Kits","10","Include","10.0.19041.0","um"], so
# we simply join paths there.
results = []
for value in data[key]:
assert value[0] == '..' and (value[1] == '..' or value[1] == '..\\')
results.append('%s' % sdk_dir.join(*value[2:]))
if value[0] == '..' and (value[1] == '..' or value[1] == '..\\'):
results.append('%s' % sdk_dir.join(*value[2:]))
else:
results.append('%s' % sdk_dir.join(*value))
# PATH is special-cased because we don't want to overwrite other things
# like C:\Windows\System32. Others are replacements because prepending
......
[
{
"cmd": [
"cipd.bat",
"ensure",
"-root",
"[CACHE]\\windows_sdk",
"-ensure-file",
"chrome_internal/third_party/sdk/windows uploaded:2018-06-13",
"-max-threads",
"0",
"-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": [
"python3",
"RECIPE_MODULE[depot_tools::windows_sdk]\\resources\\find_env_json.py",
"--sdk_root",
"[CACHE]\\windows_sdk",
"--target_arch",
"x64",
"--output_json",
"/path/to/tmp/json"
],
"name": "read SetEnv 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@ \"Windows Kits\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"10\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"Include\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"10.0.19041.0\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"um\"@@@",
"@@@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@ \"Windows Kits\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"10\", @@@",
"@@@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@ }@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"gn",
"gen",
"out/Release"
],
"env": {
"INCLUDE": "[CACHE]\\windows_sdk\\Windows Kits\\10\\Include\\10.0.19041.0\\um"
},
"env_prefixes": {
"PATH": [
"[CACHE]\\windows_sdk\\Windows Kits\\10\\bin\\x64"
]
},
"name": "gn"
},
{
"cmd": [
"ninja",
"-C",
"out/Release"
],
"env": {
"INCLUDE": "[CACHE]\\windows_sdk\\Windows Kits\\10\\Include\\10.0.19041.0\\um"
},
"env_prefixes": {
"PATH": [
"[CACHE]\\windows_sdk\\Windows Kits\\10\\bin\\x64"
]
},
"name": "ninja"
},
{
"cmd": [
"taskkill.exe",
"/f",
"/t",
"/im",
"mspdbsrv.exe"
],
"name": "taskkill mspdbsrv"
},
{
"cmd": [
"cipd.bat",
"ensure",
"-root",
"[CACHE]\\windows_sdk",
"-ensure-file",
"chrome_internal/third_party/sdk/windows uploaded:2018-06-13",
"-max-threads",
"0",
"-json-output",
"/path/to/tmp/json"
],
"infra_step": true,
"name": "ensure_installed (2)",
"~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": [
"taskkill.exe",
"/f",
"/t",
"/im",
"mspdbsrv.exe"
],
"name": "taskkill mspdbsrv (2)"
},
{
"name": "$result"
}
]
\ No newline at end of file
......@@ -5,10 +5,11 @@
PYTHON_VERSION_COMPATIBILITY = 'PY2+3'
DEPS = [
'windows_sdk',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/step',
'windows_sdk',
'recipe_engine/json',
'recipe_engine/platform',
'recipe_engine/properties',
'recipe_engine/step',
]
......@@ -28,3 +29,12 @@ def RunSteps(api):
def GenTests(api):
for platform in ('linux', 'mac', 'win'):
yield api.test(platform) + api.platform.name(platform)
yield api.test('new_sdk') + api.platform.name('win') + api.override_step_data(
"read SetEnv json",
api.json.output({
'env': {
'PATH': [['Windows Kits', '10', 'bin', 'x64']],
'INCLUDE':
[['Windows Kits', '10', 'Include', '10.0.19041.0', 'um']],
},
}))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment