| # Copyright 2018 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Recipe for downloading and packaging Vulkan SDK.""" |
| |
| from recipe_engine.recipe_api import Property |
| |
| DEPS = [ |
| "fuchsia/status_check", |
| "fuchsia/upload", |
| "recipe_engine/archive", |
| "recipe_engine/cipd", |
| "recipe_engine/path", |
| "recipe_engine/properties", |
| "recipe_engine/step", |
| "recipe_engine/url", |
| ] |
| |
| PROPERTIES = {"version": Property(kind=str, help="SDK version", default="1.1.92.1")} |
| |
| # These target spellings are used by Vulkan SDK. |
| PLATFORMS_TO_TARGETS = { |
| "linux-amd64": "linux-x86_64", |
| "mac-amd64": "macos", |
| } |
| PLATFORMS = PLATFORMS_TO_TARGETS.keys() |
| |
| URL_TEMPLATE = "https://sdk.lunarg.com/sdk/download/{0}/{1}/vulkansdk-{2}-{0}.tar.gz" |
| |
| |
| def RunSteps(api, version): |
| for platform in PLATFORMS: |
| with api.step.nest(platform): |
| url = URL_TEMPLATE.format( |
| version, platform.split("-")[0], PLATFORMS_TO_TARGETS[platform] |
| ) |
| sdk_tarball = api.path["start_dir"].join("vulkansdk-%s.tar.gz" % platform) |
| api.url.get_file(url, sdk_tarball, step_name="fetch sdk") |
| sdk_path = api.path["start_dir"].join("vulkansdk-%s" % platform) |
| api.archive.extract("extract sdk", sdk_tarball, sdk_path) |
| |
| pkg_dir = sdk_path.join( |
| {"linux-amd64": version, "mac-amd64": "vulkansdk-macos-" + version,}[ |
| platform |
| ] |
| ) |
| api.upload.cipd_package( |
| "fuchsia/third_party/vulkansdk/%s" % platform, |
| pkg_dir, |
| [api.upload.DirectoryPath(pkg_dir)], |
| {"version": version}, |
| ) |
| |
| |
| def GenTests(api): |
| version = "1.2.30.4" |
| cipd_search_step_data = [] |
| for platform in PLATFORMS: |
| pkg_name = "fuchsia/third_party/vulkansdk/" + platform |
| cipd_search_step_data.append( |
| api.step_data( |
| platform + ".cipd.cipd search " + pkg_name + " version:" + version, |
| api.cipd.example_search(pkg_name + platform, []), |
| ) |
| ) |
| yield ( |
| api.status_check.test("existing") |
| + api.properties(version=version) |
| + reduce(lambda a, b: a + b, cipd_search_step_data) |
| ) |
| yield api.status_check.test("new") + api.properties(version=version) |