You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.5 KiB

# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Base image for crosvm_builder and crosvm_aarch64_builder containing basic
# devleopment environment for building rust.
# TODO(b/177078591): Use debian buster and backports (or manual dpkg downloads)
# of outdated libraries. Sid could blow up on us any day.
FROM debian:buster
# Set timezone so apt-get won't try to prompt
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=US/Pacific
# Add bullseye to sources so we can install some newer versions of packages.
RUN echo 'deb http://deb.debian.org/debian bullseye main' >/etc/apt/sources.list.d/testing.list
RUN echo 'APT::Default-Release "stable";' >/etc/apt/apt.conf.d/99_default_stable
RUN apt-get update && apt-get install --yes --no-install-recommends \
ca-certificates \
curl \
g++ \
gcc \
git \
jq \
make \
meson/testing \
nasm \
ninja-build \
openssh-client \
pkg-config \
protobuf-compiler \
python3 \
python3-setuptools \
rsync \
screen \
sudo
# This is a scratch volume for build files. It can be used to allow incremental
# builds between container runs.
# Note: This volume is optional if incremental builds are not required.
VOLUME /workspace/scratch
# This is where the chromiumos source tree will be mounted
VOLUME /workspace/src
# This is a volume to store additional logs for kokoro builds that are uploaded
# to sponge.
VOLUME /workspace/logs
# Install the current crosvm rust toolchain via rustup.
COPY rust-toolchain ./
RUN curl https://sh.rustup.rs -sSf | sh -s -- \
-y \
--profile minimal \
-c rustfmt,clippy \
--default-toolchain $(cat rust-toolchain)
ENV PATH="/root/.cargo/bin:${PATH}"
# Point cargo to store data on the scratch volume.
ENV CARGO_TARGET_DIR=/workspace/scratch/cargo_target
ENV CARGO_HOME=/workspace/scratch/cargo_home
# Warms up the cargo registry cache for future cargo runs. Cargo will still
# update the cache using a git pull, but it only needs to download files that
# were changed since this image was built.
RUN cargo install thisiznotarealpackage -q || true
# We are building out of source with a readonly source filesystem. This flag
# tells some build.rs files to not write into the src filesystem.
ENV RUSTFLAGS='--cfg hermetic'
# Environment variables for the run_tests script to enable all tests.
ENV CROSVM_CROS_BUILD=1
# All commands will be executed in the crosvm src directory.
WORKDIR /workspace/src/platform/crosvm