| # Copyright 2019 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. |
| |
| from recipe_engine import recipe_api |
| |
| |
| class UploadDebugSymbolsApi(recipe_api.RecipeApi): |
| """APIs for uploading debug symbols.""" |
| |
| def __init__(self, *args, **kwargs): |
| super(UploadDebugSymbolsApi, self).__init__(*args, **kwargs) |
| self._upload_debug_symbols_tool = None |
| |
| def __call__(self, |
| step_name, |
| upload_debug_symbols_path, |
| bucket, |
| build_id_dirs, |
| record=None, |
| concurrency_factor=500): |
| """ |
| Walk a list of .build-id dirs and upload all found debug symbols to GCS. |
| Optionally write a record of uploaded symbols to local file. |
| |
| Args: |
| step_name (str): The name of the step produced. |
| upload_debug_symbols_path (Path): Path to the upload_debug_symbols tool. |
| bucket (str): GCS bucket to upload symbols to. |
| build_id_dirs (seq<Path>): Paths to .build-id dirs. |
| record (Path): Path to write record of uploaded symbols. By default, |
| does not write a record. |
| concurrency_factor (int): Maximum number of upload routines to spawn. |
| """ |
| self._upload_debug_symbols_tool = upload_debug_symbols_path |
| step_args = [ |
| self._upload_debug_symbols_tool, |
| '-bucket', |
| bucket, |
| '-j', |
| concurrency_factor, |
| ] |
| if record is not None: |
| step_args.extend(['-upload-record', record]) |
| step_args.extend(build_id_dirs) |
| with self.m.context(infra_steps=True): |
| return self.m.step(step_name, step_args) |