]> git.proxmox.com Git - rustc.git/blame - src/ci/docker/dist-various-1/Dockerfile
New upstream version 1.41.1+dfsg1
[rustc.git] / src / ci / docker / dist-various-1 / Dockerfile
CommitLineData
476ff2be
SL
1FROM ubuntu:16.04
2
3RUN apt-get update && apt-get install -y --no-install-recommends \
4 g++ \
5 make \
6 file \
7 curl \
8 ca-certificates \
9 python2.7 \
10 git \
11 cmake \
476ff2be 12 sudo \
32a655c1
SL
13 xz-utils \
14 zlib1g-dev \
15 g++-arm-linux-gnueabi \
16 g++-arm-linux-gnueabihf \
ea8adc8c 17 g++-aarch64-linux-gnu \
e74abb32
XL
18 g++-mips64-linux-gnuabi64 \
19 g++-mips64el-linux-gnuabi64 \
8bb4bdeb
XL
20 gcc-sparc64-linux-gnu \
21 libc6-dev-sparc64-cross \
32a655c1 22 bzip2 \
8bb4bdeb
XL
23 patch \
24 libssl-dev \
83c7162d 25 pkg-config \
a1dfa0c6 26 libnewlib-arm-none-eabi \
0731742a
XL
27 qemu-system-arm \
28# software-properties-common for the add-apt-repository command
29 software-properties-common
476ff2be 30
2c00a5a8 31WORKDIR /build
476ff2be 32
0731742a
XL
33# Use the team-gcc-arm-embedded PPA for a newer version of Arm GCC
34RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && \
35 apt-get update && \
36 apt-get install -y --no-install-recommends gcc-arm-embedded
37
2c00a5a8 38COPY dist-various-1/build-rumprun.sh /build
32a655c1 39RUN ./build-rumprun.sh
476ff2be 40
2c00a5a8
XL
41COPY dist-various-1/install-x86_64-redox.sh /build
42RUN ./install-x86_64-redox.sh
476ff2be 43
2c00a5a8 44COPY dist-various-1/install-mips-musl.sh /build
7cac9316 45RUN ./install-mips-musl.sh
476ff2be 46
2c00a5a8 47COPY dist-various-1/install-mipsel-musl.sh /build
7cac9316 48RUN ./install-mipsel-musl.sh
32a655c1 49
2c00a5a8
XL
50# Suppress some warnings in the openwrt toolchains we downloaded
51ENV STAGING_DIR=/tmp
52
53COPY scripts/musl.sh /build
54RUN env \
83c7162d
XL
55 CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
56 CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
57 bash musl.sh armv5te && \
58 env \
2c00a5a8
XL
59 CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \
60 CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
61 bash musl.sh arm && \
62 env \
0731742a
XL
63 CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
64 CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm -mfpu=vfp" \
2c00a5a8
XL
65 bash musl.sh armhf && \
66 env \
67 CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
68 CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \
416331ca 69 bash musl.sh armv7hf && \
2c00a5a8
XL
70 env \
71 CC=aarch64-linux-gnu-gcc \
72 CXX=aarch64-linux-gnu-g++ \
73 bash musl.sh aarch64 && \
74 env \
75 CC=mips-openwrt-linux-gcc \
76 CXX=mips-openwrt-linux-g++ \
77 bash musl.sh mips && \
78 env \
79 CC=mipsel-openwrt-linux-gcc \
80 CXX=mipsel-openwrt-linux-g++ \
81 bash musl.sh mipsel && \
e74abb32
XL
82 env \
83 CC=mips64-linux-gnuabi64-gcc \
84 CXX=mips64-linux-gnuabi64-g++ \
85 bash musl.sh mips64 && \
86 env \
87 CC=mips64el-linux-gnuabi64-gcc \
88 CXX=mips64el-linux-gnuabi64-g++ \
89 bash musl.sh mips64el && \
2c00a5a8 90 rm -rf /build/*
3b2f2976 91
83c7162d
XL
92# FIXME(mozilla/sccache#235) this shouldn't be necessary but is currently
93# necessary to disambiguate the mips compiler with the mipsel compiler. We want
94# to give these two wrapper scripts (currently identical ones) different hashes
95# to ensure that sccache understands that they're different compilers.
96RUN \
97 echo "# a" >> /usr/local/mips-linux-musl/bin/mips-openwrt-linux-musl-wrapper.sh && \
98 echo "# b" >> /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-musl-wrapper.sh
99
8faf50e0
XL
100ENV RUN_MAKE_TARGETS=thumbv6m-none-eabi
101ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7m-none-eabi
102ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabi
103ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabihf
104
32a655c1
SL
105ENV TARGETS=asmjs-unknown-emscripten
106ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
107ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
108ENV TARGETS=$TARGETS,mips-unknown-linux-musl
109ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
e74abb32
XL
110ENV TARGETS=$TARGETS,mips64-unknown-linux-muslabi64
111ENV TARGETS=$TARGETS,mips64el-unknown-linux-muslabi64
32a655c1
SL
112ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
113ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
ff7c6d11 114ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi
83c7162d 115ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi
32a655c1 116ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
ea8adc8c 117ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl
8bb4bdeb 118ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
e1599b0c 119ENV TARGETS=$TARGETS,x86_64-unknown-redox
83c7162d
XL
120ENV TARGETS=$TARGETS,thumbv6m-none-eabi
121ENV TARGETS=$TARGETS,thumbv7m-none-eabi
122ENV TARGETS=$TARGETS,thumbv7em-none-eabi
123ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
532ac7d7 124ENV TARGETS=$TARGETS,thumbv8m.base-none-eabi
0731742a 125ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi
532ac7d7 126ENV TARGETS=$TARGETS,thumbv8m.main-none-eabihf
416331ca 127ENV TARGETS=$TARGETS,riscv32i-unknown-none-elf
b7449926
XL
128ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
129ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
9fa01778
XL
130ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf
131ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf
b7449926
XL
132ENV TARGETS=$TARGETS,armebv7r-none-eabi
133ENV TARGETS=$TARGETS,armebv7r-none-eabihf
134ENV TARGETS=$TARGETS,armv7r-none-eabi
135ENV TARGETS=$TARGETS,armv7r-none-eabihf
0731742a 136ENV TARGETS=$TARGETS,thumbv7neon-unknown-linux-gnueabihf
476ff2be 137
60c5eb7d
XL
138# riscv targets currently do not need a C compiler, as compiler_builtins
139# doesn't currently have it enabled, and the riscv gcc compiler is not
140# installed.
32a655c1 141ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
8bb4bdeb 142 CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
e74abb32
XL
143 CC_mips64el_unknown_linux_muslabi64=mips64el-linux-gnuabi64-gcc \
144 CC_mips64_unknown_linux_muslabi64=mips64-linux-gnuabi64-gcc \
3b2f2976 145 CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
b7449926 146 CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
0731742a
XL
147 CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
148 AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
60c5eb7d
XL
149 CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ \
150 CC_riscv32i_unknown_none_elf=false \
151 CC_riscv32imc_unknown_none_elf=false \
152 CC_riscv32imac_unknown_none_elf=false \
153 CC_riscv64imac_unknown_none_elf=false \
154 CC_riscv64gc_unknown_none_elf=false
e1599b0c 155
32a655c1 156ENV RUST_CONFIGURE_ARGS \
83c7162d 157 --musl-root-armv5te=/musl-armv5te \
2c00a5a8
XL
158 --musl-root-arm=/musl-arm \
159 --musl-root-armhf=/musl-armhf \
416331ca 160 --musl-root-armv7hf=/musl-armv7hf \
2c00a5a8
XL
161 --musl-root-aarch64=/musl-aarch64 \
162 --musl-root-mips=/musl-mips \
163 --musl-root-mipsel=/musl-mipsel \
e74abb32
XL
164 --musl-root-mips64=/musl-mips64 \
165 --musl-root-mips64el=/musl-mips64el \
0531ce1d 166 --disable-docs
2c00a5a8 167
b7449926 168ENV SCRIPT \
8faf50e0
XL
169 python2.7 ../x.py test --target $RUN_MAKE_TARGETS src/test/run-make && \
170 python2.7 ../x.py dist --target $TARGETS
7cac9316
XL
171
172# sccache
173COPY scripts/sccache.sh /scripts/
174RUN sh /scripts/sccache.sh