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.
76 lines
2.4 KiB
76 lines
2.4 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.
|
|
#
|
|
# Docker container that cross-compiles crosvm for aarch64.
|
|
|
|
# Build-argument of the image tag of dependencies to use. Set to the same
|
|
# version as `ci/image_tag`
|
|
ARG TAG
|
|
|
|
# Stage containing VM data to be used later.
|
|
# (COPY --from does not allow the use of ARGs)
|
|
FROM gcr.io/crosvm-packages/crosvm_test_vm_arm64:${TAG} as vm
|
|
|
|
# Main stage
|
|
FROM gcr.io/crosvm-packages/crosvm_base:${TAG}
|
|
|
|
# Add repositories for arm64 packages
|
|
RUN dpkg --add-architecture arm64
|
|
|
|
# Install cross-compilation and VM tooling
|
|
RUN apt-get update && apt-get install --yes --no-install-recommends \
|
|
dpkg-dev \
|
|
g++-aarch64-linux-gnu \
|
|
gcc-aarch64-linux-gnu \
|
|
ipxe-qemu \
|
|
qemu-efi-aarch64 \
|
|
qemu-system-aarch64 \
|
|
qemu-user-static
|
|
|
|
RUN apt-get install --yes --no-install-recommends -o APT::Immediate-Configure=false \
|
|
libcap-dev:arm64 \
|
|
libdbus-1-dev:arm64 \
|
|
libdrm-dev:arm64 \
|
|
libepoxy-dev:arm64 \
|
|
libssl-dev:arm64 \
|
|
libwayland-dev:arm64
|
|
|
|
RUN apt-get install --yes -t testing --no-install-recommends \
|
|
libdrm-dev:arm64 \
|
|
libepoxy-dev:arm64
|
|
|
|
# Setup rust for cross-compilation
|
|
RUN rustup target add aarch64-unknown-linux-gnu
|
|
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
|
|
CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc \
|
|
CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++ \
|
|
CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu \
|
|
PKG_CONFIG=aarch64-linux-gnu-pkg-config \
|
|
PKG_CONFIG_PATH=/workspace/scratch/lib/pkgconfig
|
|
|
|
# Allow GCC/Rust to find packages and libraries stored on the scratch volume. We
|
|
# have to link to a known search path since LIBRARY_PATH is not used by
|
|
# cross-compile GCC.
|
|
RUN ln -s /workspace/scratch/lib/ /usr/local/lib/aarch64-linux-gnu
|
|
|
|
# Hack: For some reason the libgcc-10-dev-arm64-cross package does not install
|
|
# this link correctly.
|
|
RUN cd /usr/aarch64-linux-gnu/lib && ln -s libgcc_s.so.1 libgcc_s.so
|
|
|
|
# Allow qemu-aarch64-static to find aarch64 libraries
|
|
ENV QEMU_LD_PREFIX=/usr/aarch64-linux-gnu
|
|
|
|
# Include test VM inside this container
|
|
COPY --from=vm \
|
|
/workspace/vm/* \
|
|
/workspace/vm/
|
|
COPY --from=vm \
|
|
/root/.ssh /root/.ssh
|
|
|
|
# Setup entrypoint and interactive shell
|
|
WORKDIR /workspace/src/platform/crosvm
|
|
COPY bashrc /root/.bashrc
|
|
COPY entrypoint /workspace
|
|
ENTRYPOINT ["/workspace/entrypoint"]
|