123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/usr/bin/env bash
- # Copyright 2021 The ChromiumOS Authors
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- set -ex
- sudo apt-get install --yes --no-install-recommends \
- black \
- ca-certificates \
- clang \
- cloud-image-utils \
- curl \
- dpkg-dev \
- expect \
- g++ \
- gcc \
- git \
- jq \
- libavcodec-dev \
- libavutil-dev \
- libcap-dev \
- libclang-dev \
- libdbus-1-dev \
- libdrm-dev \
- libepoxy-dev \
- libglib2.0-dev \
- libguestfs-tools \
- libslirp-dev \
- libssl-dev \
- libswscale-dev \
- libva-dev \
- libwayland-dev \
- libxext-dev \
- lld \
- make \
- meson \
- mypy \
- nasm \
- ncat \
- ninja-build \
- openssh-client \
- pipx \
- pkg-config \
- protobuf-compiler \
- python3 \
- python3-argh \
- python3-pip \
- python3-rich \
- qemu-system-x86 \
- rsync \
- screen \
- strace \
- tmux \
- wayland-protocols \
- wget
- # mdformat is not available as a debian package. Install via pipx instead.
- pipx install mdformat
- pipx inject mdformat mdformat-gfm mdformat-footnote
- pipx ensurepath
- # Install rustup if not available yet
- if ! command -v rustup &>/dev/null; then
- wget "https://static.rust-lang.org/rustup/archive/1.25.1/x86_64-unknown-linux-gnu/rustup-init"
- echo "5cc9ffd1026e82e7fb2eec2121ad71f4b0f044e88bca39207b3f6b769aaa799c *rustup-init" | sha256sum -c -
- chmod +x rustup-init
- ./rustup-init -y --no-modify-path --profile minimal --default-toolchain none
- source ${CARGO_HOME:-~/.cargo}/env
- rm rustup-init
- fi
- # Install required rust components.
- # This will also ensure the toolchain required by ./rust-toolchain is installed.
- rustup component add cargo clippy rustfmt
- # LLVM tools are used to generate and process coverage files
- rustup component add llvm-tools-preview
- # Allow cross-compilation via mingw64
- rustup target add x86_64-pc-windows-gnu
- # Allow cross-compilation for android
- rustup target add aarch64-linux-android
- # Install nightly toolchain. Only used for rustfmt
- rustup toolchain install nightly --profile minimal --component rustfmt
- # Cargo extension to install binary packages from github
- curl -L https://github.com/cargo-bins/cargo-binstall/releases/download/v1.4.4/cargo-binstall-x86_64-unknown-linux-gnu.tgz | tar -xzvvf - -C ${CARGO_HOME:-~/.cargo}/bin
- # The bindgen tool is required to build a crosvm dependency.
- cargo binstall --no-confirm bindgen-cli --version "0.68.1"
- # binutils are wrappers to call the rustup bundled versions of llvm tools.
- cargo binstall --no-confirm cargo-binutils
- # The mdbook and mdbook-mermaid tools are used to build the crosvm book.
- cargo binstall --no-confirm mdbook --version "0.4.25"
- cargo binstall --no-confirm mdbook-mermaid --version "0.12.6"
- cargo binstall --no-confirm mdbook-linkcheck --version "0.7.7"
- # Nextest is an improved test runner for cargo
- cargo binstall --no-confirm cargo-nextest --version "0.9.49"
- Red='\033[0;31m'
- Reset='\033[0m'
- # Check if submodules were initialized. If a submodule is not initialized, git
- # submodule status will be prefixed with `-`
- if git submodule status | grep '^-'; then
- >&2 echo -e "${Red}ERROR${Reset}: Git modules were not initialized. Run 'git submodule update --init' to initialize them."
- fi
|