]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/host-x86_64/test-various/Dockerfile
Rollup merge of #105039 - nnethercote:fix-104769, r=petrochenkov
[rust.git] / src / ci / docker / host-x86_64 / test-various / Dockerfile
1 FROM ubuntu:20.04
2
3 RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
4   clang-11 \
5   g++ \
6   make \
7   ninja-build \
8   file \
9   curl \
10   ca-certificates \
11   python3 \
12   git \
13   cmake \
14   sudo \
15   gdb \
16   libssl-dev \
17   pkg-config \
18   xz-utils \
19   wget \
20   patch \
21   ovmf \
22   qemu-efi-aarch64 \
23   qemu-system-arm \
24   qemu-system-x86
25
26 RUN curl -sL https://nodejs.org/dist/v15.14.0/node-v15.14.0-linux-x64.tar.xz | \
27   tar -xJ
28
29 # Install 32-bit OVMF files for the i686-unknown-uefi test. This package
30 # is not available in ubuntu 20.04, so download a 22.04 package.
31 RUN curl -sL --output ovmf-ia32.deb http://mirrors.kernel.org/ubuntu/pool/universe/e/edk2/ovmf-ia32_2022.02-3_all.deb
32 RUN dpkg -i ovmf-ia32.deb && rm ovmf-ia32.deb
33
34 WORKDIR /build/
35 COPY scripts/musl-patch-configure.diff /build/
36 COPY scripts/musl-toolchain.sh /build/
37 RUN bash musl-toolchain.sh x86_64 && rm -rf build
38 WORKDIR /
39
40 COPY scripts/sccache.sh /scripts/
41 RUN sh /scripts/sccache.sh
42
43 # We are disabling CI LLVM since this builder needs to build LLD, which is
44 # currently unsupported when downloading pre-built LLVM.
45 ENV NO_DOWNLOAD_CI_LLVM 1
46
47 ENV RUST_CONFIGURE_ARGS \
48   --musl-root-x86_64=/usr/local/x86_64-linux-musl \
49   --set build.nodejs=/node-v15.14.0-linux-x64/bin/node \
50   --set rust.lld
51
52 # Some run-make tests have assertions about code size, and enabling debug
53 # assertions in libstd causes the binary to be much bigger than it would
54 # otherwise normally be. We already test libstd with debug assertions in lots of
55 # other contexts as well
56 ENV NO_DEBUG_ASSERTIONS=1
57 ENV NO_OVERFLOW_CHECKS=1
58
59 ENV WASM_TARGETS=wasm32-unknown-unknown
60 ENV WASM_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $WASM_TARGETS \
61   src/test/run-make \
62   src/test/ui \
63   src/test/mir-opt \
64   src/test/codegen-units \
65   library/core
66
67 ENV NVPTX_TARGETS=nvptx64-nvidia-cuda
68 ENV NVPTX_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $NVPTX_TARGETS \
69   src/test/run-make \
70   src/test/assembly
71
72 ENV MUSL_TARGETS=x86_64-unknown-linux-musl \
73     CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc \
74     CXX_x86_64_unknown_linux_musl=x86_64-linux-musl-g++
75 ENV MUSL_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $MUSL_TARGETS
76
77 COPY host-x86_64/test-various/uefi_qemu_test /uefi_qemu_test
78 ENV UEFI_TARGETS=aarch64-unknown-uefi,i686-unknown-uefi,x86_64-unknown-uefi \
79     CC_aarch64_unknown_uefi=clang-11 \
80     CXX_aarch64_unknown_uefi=clang++-11 \
81     CC_i686_unknown_uefi=clang-11 \
82     CXX_i686_unknown_uefi=clang++-11 \
83     CC_x86_64_unknown_uefi=clang-11 \
84     CXX_x86_64_unknown_uefi=clang++-11
85 ENV UEFI_SCRIPT python3 /checkout/x.py --stage 2 build --host='' --target $UEFI_TARGETS && \
86   python3 -u /uefi_qemu_test/run.py
87
88 ENV SCRIPT $WASM_SCRIPT && $NVPTX_SCRIPT && $MUSL_SCRIPT && $UEFI_SCRIPT