| # Copyright (C) 2021 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """Recipe for building Perfetto.""" |
| |
| from recipe_engine.recipe_api import Property |
| |
| DEPS = [ |
| 'recipe_engine/buildbucket', |
| 'recipe_engine/context', |
| 'recipe_engine/file', |
| 'recipe_engine/path', |
| 'recipe_engine/platform', |
| 'recipe_engine/properties', |
| 'recipe_engine/step', |
| ] |
| |
| PROPERTIES = { |
| 'repository': |
| Property( |
| kind=str, |
| default='https://android.googlesource.com/platform/external/perfetto' |
| ), |
| } |
| |
| ARTIFACTS = ['trace_processor_shell'] |
| |
| |
| def RunSteps(api, repository): |
| builder_cache_dir = api.path['cache'].join('builder') |
| src_dir = builder_cache_dir.join('perfetto') |
| |
| # Fetch the Perfetto repo. |
| with api.step.nest('git'), api.context(infra_steps=True): |
| api.file.ensure_directory('ensure source dir', src_dir) |
| api.step('init', ['git', 'init', src_dir]) |
| with api.context(cwd=src_dir): |
| build_input = api.buildbucket.build_input |
| ref = ( |
| build_input.gitiles_commit.id |
| if build_input.gitiles_commit else 'refs/heads/master') |
| # Fetch tags so `git describe` works. |
| api.step('fetch', ['git', 'fetch', '--tags', repository, ref]) |
| api.step('checkout', ['git', 'checkout', 'FETCH_HEAD']) |
| |
| # Pull all deps here. |
| # There should be no need for internet access for building Perfetto beyond |
| # this point. |
| with api.context(cwd=src_dir, infra_steps=True): |
| api.step('build-deps', ['tools/install-build-deps', '--ui', '--android']) |
| |
| # Buld Perfetto. |
| with api.context(cwd=src_dir): |
| api.step('gn gen', ['tools/gn', 'gen', 'out/dist', '--args=is_debug=false']) |
| api.step('ninja', ['tools/ninja', '-C', 'out/dist']) |
| |
| |
| def GenTests(api): |
| for platform in ('linux',): |
| yield (api.test('ci_' + platform) + api.platform.name(platform) + |
| api.buildbucket.ci_build( |
| project='perfetto', |
| git_repo='android.googlesource.com/platform/external/perfetto', |
| )) |