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
79 lines
2.5 KiB
4 months ago
|
# 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
|