# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0

# Azure template for installing dependencies from various package managers,
# necessary for building, testing, and packaging OpenTitan.
#
# This template can be included from pipelines in other repositories.
# In this case, set the the REPO_TOP parameter to point to the root of the
# checked out opentitan repository.
#
# This template executes:
# - apt-get (*) install for all packages listed in apt-requirements.txt
# - pip install for all packages listed in python-requirements.txt
#
# * As an optimization, apt-fast is used instead of apt-get if it is available.

parameters:
- name: REPO_TOP
  type: string
  default: .

steps:
  - bash: |
      set -e
      cd ${{ parameters.REPO_TOP }}
      ci/install-package-dependencies.sh \
        --verilator-version $(VERILATOR_VERSION) \
        --verible-version $(VERIBLE_VERSION) \
        --rust-version $(RUST_VERSION)
    retryCountOnTaskFailure: 3
    displayName: 'Install package dependencies'
