| # 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/upload', |
| 'recipe_engine/archive', |
| 'recipe_engine/cipd', |
| 'recipe_engine/url', |
| 'recipe_engine/context', |
| 'recipe_engine/file', |
| 'recipe_engine/path', |
| 'recipe_engine/platform', |
| 'recipe_engine/properties', |
| 'recipe_engine/step', |
| ] |
| |
| 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.test('existing') + api.properties(version=version) + |
| reduce(lambda a, b: a + b, cipd_search_step_data)) |
| yield (api.test('new') + api.properties(version=version)) |