]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/host-x86_64/dist-various-2/Dockerfile
Rollup merge of #93443 - spastorino:add-stable-hash-impl-doc, r=cjgillot
[rust.git] / src / ci / docker / host-x86_64 / dist-various-2 / Dockerfile
1 FROM ubuntu:20.04
2
3 COPY scripts/cross-apt-packages.sh /scripts/
4 RUN sh /scripts/cross-apt-packages.sh
5
6 # Enable source repositories, which are disabled by default on Ubuntu >= 18.04
7 RUN sed -i 's/^# deb-src/deb-src/' /etc/apt/sources.list
8
9 RUN apt-get update && apt-get build-dep -y clang llvm && apt-get install -y --no-install-recommends \
10   build-essential \
11 # gcc-multilib can not be installed together with gcc-arm-linux-gnueabi
12   g++-8-multilib \
13   libedit-dev \
14   libgmp-dev \
15   libisl-dev \
16   libmpc-dev \
17   libmpfr-dev \
18   libtinfo5 \
19   ninja-build \
20   nodejs \
21   python3-dev \
22   software-properties-common \
23   unzip \
24   # Needed for apt-key to work:
25   dirmngr \
26   gpg-agent \
27   g++-8-arm-linux-gnueabi
28
29 RUN apt-key adv --batch --yes --keyserver keyserver.ubuntu.com --recv-keys 74DA7924C5513486
30 RUN add-apt-repository -y 'deb https://apt.dilos.org/dilos dilos2 main'
31
32 ENV \
33     AR_x86_64_fuchsia=x86_64-fuchsia-ar \
34     CC_x86_64_fuchsia=x86_64-fuchsia-clang \
35     CXX_x86_64_fuchsia=x86_64-fuchsia-clang++ \
36     AR_aarch64_fuchsia=aarch64-fuchsia-ar \
37     CC_aarch64_fuchsia=aarch64-fuchsia-clang \
38     CXX_aarch64_fuchsia=aarch64-fuchsia-clang++ \
39     AR_sparcv9_sun_solaris=sparcv9-sun-solaris2.10-ar \
40     CC_sparcv9_sun_solaris=sparcv9-sun-solaris2.10-gcc \
41     CXX_sparcv9_sun_solaris=sparcv9-sun-solaris2.10-g++ \
42     AR_x86_64_pc_solaris=x86_64-pc-solaris2.10-ar \
43     CC_x86_64_pc_solaris=x86_64-pc-solaris2.10-gcc \
44     CXX_x86_64_pc_solaris=x86_64-pc-solaris2.10-g++ \
45     AR_x86_64_sun_solaris=x86_64-sun-solaris2.10-ar \
46     CC_x86_64_sun_solaris=x86_64-sun-solaris2.10-gcc \
47     CXX_x86_64_sun_solaris=x86_64-sun-solaris2.10-g++ \
48     CC_armv7_unknown_linux_gnueabi=arm-linux-gnueabi-gcc-8 \
49     CXX_armv7_unknown_linux_gnueabi=arm-linux-gnueabi-g++-8 \
50     AR_x86_64_fortanix_unknown_sgx=ar \
51     CC_x86_64_fortanix_unknown_sgx=clang-11 \
52     CFLAGS_x86_64_fortanix_unknown_sgx="-D__ELF__ -isystem/usr/include/x86_64-linux-gnu -mlvi-hardening -mllvm -x86-experimental-lvi-inline-asm-hardening" \
53     CXX_x86_64_fortanix_unknown_sgx=clang++-11 \
54     CXXFLAGS_x86_64_fortanix_unknown_sgx="-D__ELF__ -isystem/usr/include/x86_64-linux-gnu -mlvi-hardening -mllvm -x86-experimental-lvi-inline-asm-hardening" \
55     AR_i686_unknown_freebsd=i686-unknown-freebsd11-ar \
56     CC_i686_unknown_freebsd=i686-unknown-freebsd11-clang \
57     CXX_i686_unknown_freebsd=i686-unknown-freebsd11-clang++ \
58     CC=gcc-8 \
59     CXX=g++-8
60
61 WORKDIR /build
62 COPY scripts/musl.sh /build
63 RUN env \
64     CC=arm-linux-gnueabi-gcc-8 CFLAGS="-march=armv7-a" \
65     CXX=arm-linux-gnueabi-g++-8 CXXFLAGS="-march=armv7-a" \
66     bash musl.sh armv7 && \
67     rm -rf /build/*
68
69 WORKDIR /tmp
70 COPY host-x86_64/dist-various-2/shared.sh /tmp/
71 COPY host-x86_64/dist-various-2/build-fuchsia-toolchain.sh /tmp/
72 RUN /tmp/build-fuchsia-toolchain.sh
73 COPY host-x86_64/dist-various-2/build-solaris-toolchain.sh /tmp/
74 RUN /tmp/build-solaris-toolchain.sh x86_64  amd64   solaris-i386  pc
75 # Build deprecated target 'x86_64-sun-solaris2.10' until removed
76 RUN /tmp/build-solaris-toolchain.sh x86_64  amd64   solaris-i386  sun
77 RUN /tmp/build-solaris-toolchain.sh sparcv9 sparcv9 solaris-sparc sun
78 COPY host-x86_64/dist-various-2/build-x86_64-fortanix-unknown-sgx-toolchain.sh /tmp/
79 RUN /tmp/build-x86_64-fortanix-unknown-sgx-toolchain.sh
80
81 COPY host-x86_64/dist-various-2/build-wasi-toolchain.sh /tmp/
82 RUN /tmp/build-wasi-toolchain.sh
83
84 COPY scripts/freebsd-toolchain.sh /tmp/
85 RUN /tmp/freebsd-toolchain.sh i686
86
87 COPY scripts/sccache.sh /scripts/
88 RUN sh /scripts/sccache.sh
89
90 ENV CARGO_TARGET_X86_64_FUCHSIA_AR /usr/local/bin/llvm-ar
91 ENV CARGO_TARGET_X86_64_FUCHSIA_RUSTFLAGS \
92 -C link-arg=--sysroot=/usr/local/x86_64-fuchsia \
93 -C link-arg=-L/usr/local/x86_64-fuchsia/lib \
94 -C link-arg=-L/usr/local/lib/x86_64-fuchsia/lib
95 ENV CARGO_TARGET_AARCH64_FUCHSIA_AR /usr/local/bin/llvm-ar
96 ENV CARGO_TARGET_AARCH64_FUCHSIA_RUSTFLAGS \
97 -C link-arg=--sysroot=/usr/local/aarch64-fuchsia \
98 -C link-arg=-L/usr/local/aarch64-fuchsia/lib \
99 -C link-arg=-L/usr/local/lib/aarch64-fuchsia/lib
100
101 ENV TARGETS=x86_64-fuchsia
102 ENV TARGETS=$TARGETS,aarch64-fuchsia
103 ENV TARGETS=$TARGETS,wasm32-unknown-unknown
104 ENV TARGETS=$TARGETS,wasm32-wasi
105 ENV TARGETS=$TARGETS,sparcv9-sun-solaris
106 ENV TARGETS=$TARGETS,x86_64-pc-solaris
107 ENV TARGETS=$TARGETS,x86_64-sun-solaris
108 ENV TARGETS=$TARGETS,x86_64-unknown-linux-gnux32
109 ENV TARGETS=$TARGETS,x86_64-fortanix-unknown-sgx
110 ENV TARGETS=$TARGETS,nvptx64-nvidia-cuda
111 ENV TARGETS=$TARGETS,armv7-unknown-linux-gnueabi
112 ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabi
113 ENV TARGETS=$TARGETS,i686-unknown-freebsd
114
115 # As per https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1300211
116 # we need asm in the search path for gcc-8 (for gnux32) but not in the search path of the
117 # cross compilers.
118 # Luckily one of the folders is /usr/local/include so symlink /usr/include/asm-generic there
119 RUN ln -s /usr/include/asm-generic /usr/local/include/asm
120
121 ENV RUST_CONFIGURE_ARGS --enable-extended --enable-lld --disable-docs \
122   --set target.wasm32-wasi.wasi-root=/wasm32-wasi \
123   --musl-root-armv7=/musl-armv7
124
125 ENV SCRIPT python3 ../x.py dist --host='' --target $TARGETS