mirror of
https://github.com/lowRISC/ibex.git
synced 2025-04-24 13:57:19 -04:00
In the past, we did explicitly install pyyaml through PIP to get a version newer than the one provided in Ubuntu 18.04. Since then we changed the calling code to not rely on newer pyyaml features and are thus able to rely on an older version of pyyaml. The distro-provided version of pyyaml is built with C bindings, which are significantly faster than the pip-installed version, which uses a pure Python-implementation of the parser/dumper.
90 lines
3.4 KiB
Bash
Executable file
90 lines
3.4 KiB
Bash
Executable file
#!/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
|
|
|
|
# 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" \
|
|
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"
|