]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/host-x86_64/dist-various-1/Dockerfile
Rollup merge of #75892 - ArekPiekarz:unstable_book_tls_model_typo, r=petrochenkov
[rust.git] / src / ci / docker / host-x86_64 / dist-various-1 / Dockerfile
1 FROM ubuntu:16.04
2
3 RUN apt-get update && apt-get install -y --no-install-recommends \
4   g++ \
5   automake \
6   bison \
7   bzip2 \
8   flex \
9   help2man \
10   libtool-bin \
11   texinfo \
12   unzip \
13   wget \
14   xz-utils \
15   libncurses-dev \
16   gawk \
17   make \
18   ninja-build \
19   file \
20   curl \
21   ca-certificates \
22   python3 \
23   git \
24   cmake \
25   sudo \
26   xz-utils \
27   zlib1g-dev \
28   g++-arm-linux-gnueabi \
29   g++-arm-linux-gnueabihf \
30   g++-aarch64-linux-gnu \
31   g++-mips64-linux-gnuabi64 \
32   g++-mips64el-linux-gnuabi64 \
33   gcc-sparc64-linux-gnu \
34   libc6-dev-sparc64-cross \
35   bzip2 \
36   patch \
37   libssl-dev \
38   pkg-config \
39   libnewlib-arm-none-eabi \
40   qemu-system-arm \
41 # software-properties-common for the add-apt-repository command
42   software-properties-common
43
44 WORKDIR /build
45
46 # Use the team-gcc-arm-embedded PPA for a newer version of Arm GCC
47 RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && \
48     apt-get update && \
49     apt-get install -y --no-install-recommends gcc-arm-embedded
50
51 COPY host-x86_64/dist-various-1/build-rumprun.sh /build
52 RUN ./build-rumprun.sh
53
54 COPY host-x86_64/dist-various-1/install-x86_64-redox.sh /build
55 RUN ./install-x86_64-redox.sh
56
57 COPY host-x86_64/dist-various-1/install-mips-musl.sh /build
58 RUN ./install-mips-musl.sh
59
60 COPY host-x86_64/dist-various-1/install-mipsel-musl.sh /build
61 RUN ./install-mipsel-musl.sh
62
63 COPY host-x86_64/dist-various-1/install-aarch64-none-elf.sh /build
64 RUN ./install-aarch64-none-elf.sh
65
66 # Suppress some warnings in the openwrt toolchains we downloaded
67 ENV STAGING_DIR=/tmp
68
69 COPY scripts/musl.sh /build
70 RUN env \
71     CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
72     CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
73     bash musl.sh armv5te && \
74     env \
75     CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \
76     CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
77     bash musl.sh arm && \
78     env \
79     CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
80     CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm -mfpu=vfp" \
81     bash musl.sh armhf && \
82     env \
83     CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
84     CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \
85     bash musl.sh armv7hf && \
86     env \
87     CC=aarch64-linux-gnu-gcc \
88     CXX=aarch64-linux-gnu-g++ \
89     bash musl.sh aarch64 && \
90     env \
91     CC=mips-openwrt-linux-gcc \
92     CXX=mips-openwrt-linux-g++ \
93     bash musl.sh mips && \
94     env \
95     CC=mipsel-openwrt-linux-gcc \
96     CXX=mipsel-openwrt-linux-g++ \
97     bash musl.sh mipsel && \
98     env \
99     CC=mips64-linux-gnuabi64-gcc \
100     CXX=mips64-linux-gnuabi64-g++ \
101     bash musl.sh mips64 && \
102     env \
103     CC=mips64el-linux-gnuabi64-gcc \
104     CXX=mips64el-linux-gnuabi64-g++ \
105     bash musl.sh mips64el && \
106     rm -rf /build/*
107
108 # FIXME(mozilla/sccache#235) this shouldn't be necessary but is currently
109 # necessary to disambiguate the mips compiler with the mipsel compiler. We want
110 # to give these two wrapper scripts (currently identical ones) different hashes
111 # to ensure that sccache understands that they're different compilers.
112 RUN \
113   echo "# a" >> /usr/local/mips-linux-musl/bin/mips-openwrt-linux-musl-wrapper.sh && \
114   echo "# b" >> /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-musl-wrapper.sh
115
116 ENV RUN_MAKE_TARGETS=thumbv6m-none-eabi
117 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7m-none-eabi
118 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabi
119 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabihf
120
121 ENV TARGETS=asmjs-unknown-emscripten
122 ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
123 ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
124 ENV TARGETS=$TARGETS,mips-unknown-linux-musl
125 ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
126 ENV TARGETS=$TARGETS,mips64-unknown-linux-muslabi64
127 ENV TARGETS=$TARGETS,mips64el-unknown-linux-muslabi64
128 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
129 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
130 ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi
131 ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi
132 ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
133 ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl
134 ENV TARGETS=$TARGETS,aarch64-unknown-none
135 ENV TARGETS=$TARGETS,aarch64-unknown-none-softfloat
136 ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
137 ENV TARGETS=$TARGETS,x86_64-unknown-redox
138 ENV TARGETS=$TARGETS,thumbv6m-none-eabi
139 ENV TARGETS=$TARGETS,thumbv7m-none-eabi
140 ENV TARGETS=$TARGETS,thumbv7em-none-eabi
141 ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
142 ENV TARGETS=$TARGETS,thumbv8m.base-none-eabi
143 ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi
144 ENV TARGETS=$TARGETS,thumbv8m.main-none-eabihf
145 ENV TARGETS=$TARGETS,riscv32i-unknown-none-elf
146 ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
147 ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
148 ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf
149 ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf
150 ENV TARGETS=$TARGETS,armebv7r-none-eabi
151 ENV TARGETS=$TARGETS,armebv7r-none-eabihf
152 ENV TARGETS=$TARGETS,armv7r-none-eabi
153 ENV TARGETS=$TARGETS,armv7r-none-eabihf
154 ENV TARGETS=$TARGETS,thumbv7neon-unknown-linux-gnueabihf
155 ENV TARGETS=$TARGETS,armv7a-none-eabi
156
157 # riscv targets currently do not need a C compiler, as compiler_builtins
158 # doesn't currently have it enabled, and the riscv gcc compiler is not
159 # installed.
160 ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
161     CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
162     CC_mips64el_unknown_linux_muslabi64=mips64el-linux-gnuabi64-gcc \
163     CC_mips64_unknown_linux_muslabi64=mips64-linux-gnuabi64-gcc \
164     CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
165     CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
166     CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
167     AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
168     CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ \
169     CC_armv7a_none_eabi=arm-none-eabi-gcc \
170     CC_armv7a_none_eabihf=arm-none-eabi-gcc \
171     CFLAGS_armv7a_none_eabi=-march=armv7-a \
172     CFLAGS_armv7a_none_eabihf=-march=armv7-a+vfpv3 \
173     CC_aarch64_unknown_none_softfloat=aarch64-none-elf-gcc \
174     CFLAGS_aarch64_unknown_none_softfloat=-mstrict-align -march=armv8-a+nofp+nosimd \
175     CC_aarch64_unknown_none=aarch64-none-elf-gcc \
176     CFLAGS_aarch64_unknown_none=-mstrict-align -march=armv8-a+fp+simd \
177     CC_riscv32i_unknown_none_elf=false \
178     CC_riscv32imc_unknown_none_elf=false \
179     CC_riscv32imac_unknown_none_elf=false \
180     CC_riscv64imac_unknown_none_elf=false \
181     CC_riscv64gc_unknown_none_elf=false
182
183 ENV RUST_CONFIGURE_ARGS \
184       --musl-root-armv5te=/musl-armv5te \
185       --musl-root-arm=/musl-arm \
186       --musl-root-armhf=/musl-armhf \
187       --musl-root-armv7hf=/musl-armv7hf \
188       --musl-root-aarch64=/musl-aarch64 \
189       --musl-root-mips=/musl-mips \
190       --musl-root-mipsel=/musl-mipsel \
191       --musl-root-mips64=/musl-mips64 \
192       --musl-root-mips64el=/musl-mips64el \
193       --disable-docs
194
195 ENV SCRIPT \
196       python3 ../x.py --stage 2 test --target $RUN_MAKE_TARGETS src/test/run-make && \
197       python3 ../x.py dist --target $TARGETS
198
199 # sccache
200 COPY scripts/sccache.sh /scripts/
201 RUN sh /scripts/sccache.sh