| #!/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 \ |
| libasound2-dev \ |
| 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 \ |
| 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 |
| |
| # Cargo extension to install binary packages from github |
| curl -L https://github.com/cargo-bins/cargo-binstall/releases/download/v0.19.3/cargo-binstall-x86_64-unknown-linux-gnu.tgz | tar -xzvvf - -C ${CARGO_HOME:-~/.cargo}/bin |
| |
| # Note: Using crate-meta-data will make too many requests to github to discover which release |
| # to download. This will get throttled quickly and slow down massively. |
| # This should be fixed by: https://github.com/cargo-bins/cargo-binstall/issues/776 |
| |
| # The bindgen tool is required to build a crosvm dependency. |
| cargo binstall --no-confirm --disable-strategies crate-meta-data bindgen-cli --version "0.64.0" |
| |
| # binutils are wrappers to call the rustup bundled versions of llvm tools. |
| cargo binstall --no-confirm --disable-strategies crate-meta-data cargo-binutils |
| |
| # The mdbook and mdbook-mermaid tools are used to build the crosvm book. |
| cargo binstall --no-confirm --disable-strategies crate-meta-data mdbook --version "0.4.25" |
| cargo binstall --no-confirm --disable-strategies crate-meta-data mdbook-mermaid --version "0.12.6" |
| cargo binstall --no-confirm --disable-strategies crate-meta-data mdbook-linkcheck --version "0.7.7" |
| |
| # Nextest is an improved test runner for cargo |
| cargo binstall --no-confirm --disable-strategies crate-meta-data cargo-nextest --version "0.9.49" |