| #!/bin/bash |
| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| # Install development build dependencies for different Linux distributions |
| # |
| |
| set -e |
| |
| [ -f /etc/os-release ] || (echo "/etc/os-release doesn't exist."; exit 1) |
| . /etc/os-release |
| |
| [ ! -z "$VERILATOR_VERSION" ] || (echo "VERILATOR_VERSION must be set."; exit 1) |
| [ ! -z "$VERIBLE_VERSION" ] || (echo "VERIBLE_VERSION must be set."; exit 1) |
| [ ! -z "$RISCV_TOOLCHAIN_TAR_VERSION" ] || (echo "RISCV_TOOLCHAIN_TAR_VERSION must be set."; exit 1) |
| [ ! -z "$RISCV_TOOLCHAIN_TAR_VARIANT" ] || (echo "RISCV_TOOLCHAIN_TAR_VARIANT must be set."; exit 1) |
| |
| SUDO_CMD="" |
| if [ $(id -u) -ne 0 ]; then |
| SUDO_CMD="sudo " |
| fi |
| |
| case "$ID-$VERSION_ID" in |
| ubuntu-16.04|ubuntu-18.04) |
| # Curl must be available to get the repo key below. |
| $SUDO_CMD apt-get update |
| $SUDO_CMD apt-get install -y curl |
| |
| # Make Verilator repository available |
| curl -Ls https://download.opensuse.org/repositories/home:phiwag:edatools/xUbuntu_$VERSION_ID/Release.key | $SUDO_CMD apt-key add - |
| $SUDO_CMD sh -c "echo 'deb http://download.opensuse.org/repositories/home:/phiwag:/edatools/xUbuntu_$VERSION_ID/ /' > /etc/apt/sources.list.d/edatools.list" |
| $SUDO_CMD apt-get update |
| |
| # Make spike-cosim repository available |
| curl -Ls https://download.opensuse.org/repositories/home:gac_lowrisc/xUbuntu_18.04/Release.key | $SUDO_CMD apt-key add - |
| $SUDO_CMD sh -c "echo 'deb http://download.opensuse.org/repositories/home:/gac_lowrisc/xUbuntu_18.04/ /' > /etc/apt/sources.list.d/spike-cosim.list" sudo apt update |
| $SUDO_CMD apt-get update |
| |
| # Packaged dependencies |
| # Install python3-yaml through apt to get a version with libyaml bindings, |
| # which is significantly faster than the pure Python version. |
| $SUDO_CMD apt-get install -y \ |
| device-tree-compiler \ |
| python3 \ |
| python3-pip \ |
| python3-setuptools \ |
| python3-wheel \ |
| python3-yaml \ |
| srecord \ |
| zlib1g-dev \ |
| git \ |
| make \ |
| autoconf \ |
| g++ \ |
| flex \ |
| bison \ |
| libelf-dev \ |
| clang-format \ |
| "verilator-$VERILATOR_VERSION" \ |
| spike-cosim \ |
| xz-utils |
| |
| # Python dependencies |
| # |
| # Updating pip and setuptools is required to have these tools properly |
| # parse Python-version metadata, which some packages uses to specify that |
| # an older version of a package must be used for a certain Python version. |
| # If that information is not read, pip installs the latest version, which |
| # then fails to run. |
| $SUDO_CMD pip3 install -U pip setuptools |
| |
| $SUDO_CMD pip3 install -r python-requirements.txt |
| |
| # Install Verible |
| mkdir -p build/verible |
| cd build/verible |
| curl -Ls -o verible.tar.gz "https://github.com/google/verible/releases/download/$VERIBLE_VERSION/verible-$VERIBLE_VERSION-Ubuntu-$VERSION_ID-$VERSION_CODENAME-x86_64.tar.gz" |
| $SUDO_CMD mkdir -p /tools/verible && $SUDO_CMD chmod 777 /tools/verible |
| tar -C /tools/verible -xf verible.tar.gz --strip-components=1 |
| echo "##vso[task.prependpath]/tools/verible/bin" |
| ;; |
| |
| *) |
| echo Unknown distribution. Please extend this script! |
| exit 1 |
| ;; |
| esac |
| |
| # Install pre-compiled toolchain (for all distributions) |
| TOOLCHAIN_URL="https://github.com/lowRISC/lowrisc-toolchains/releases/download/$RISCV_TOOLCHAIN_TAR_VERSION/$RISCV_TOOLCHAIN_TAR_VARIANT-$RISCV_TOOLCHAIN_TAR_VERSION.tar.xz" |
| mkdir -p build/toolchain |
| curl -Ls -o build/toolchain/rv32-toolchain.tar.xz "$TOOLCHAIN_URL" |
| $SUDO_CMD mkdir -p /tools/riscv && $SUDO_CMD chmod 777 /tools/riscv |
| tar -C /tools/riscv -xf build/toolchain/rv32-toolchain.tar.xz --strip-components=1 |
| echo "##vso[task.prependpath]/tools/riscv/bin" |