]> git.proxmox.com Git - rustc.git/blob - src/ci/docker/dist-various-1/Dockerfile
New upstream version 1.38.0+dfsg1
[rustc.git] / src / ci / docker / 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 make \
6 file \
7 curl \
8 ca-certificates \
9 python2.7 \
10 git \
11 cmake \
12 sudo \
13 xz-utils \
14 zlib1g-dev \
15 g++-arm-linux-gnueabi \
16 g++-arm-linux-gnueabihf \
17 g++-aarch64-linux-gnu \
18 gcc-sparc64-linux-gnu \
19 libc6-dev-sparc64-cross \
20 bzip2 \
21 patch \
22 libssl-dev \
23 pkg-config \
24 libnewlib-arm-none-eabi \
25 qemu-system-arm \
26 # software-properties-common for the add-apt-repository command
27 software-properties-common
28
29 WORKDIR /build
30
31 # Use the team-gcc-arm-embedded PPA for a newer version of Arm GCC
32 RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && \
33 apt-get update && \
34 apt-get install -y --no-install-recommends gcc-arm-embedded
35
36 COPY dist-various-1/build-rumprun.sh /build
37 RUN ./build-rumprun.sh
38
39 COPY dist-various-1/install-x86_64-redox.sh /build
40 RUN ./install-x86_64-redox.sh
41
42 COPY dist-various-1/install-mips-musl.sh /build
43 RUN ./install-mips-musl.sh
44
45 COPY dist-various-1/install-mipsel-musl.sh /build
46 RUN ./install-mipsel-musl.sh
47
48 # Suppress some warnings in the openwrt toolchains we downloaded
49 ENV STAGING_DIR=/tmp
50
51 COPY scripts/musl.sh /build
52 RUN env \
53 CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
54 CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv5te -marm -mfloat-abi=soft" \
55 bash musl.sh armv5te && \
56 env \
57 CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \
58 CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
59 bash musl.sh arm && \
60 env \
61 CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
62 CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm -mfpu=vfp" \
63 bash musl.sh armhf && \
64 env \
65 CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
66 CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \
67 bash musl.sh armv7hf && \
68 env \
69 CC=aarch64-linux-gnu-gcc \
70 CXX=aarch64-linux-gnu-g++ \
71 bash musl.sh aarch64 && \
72 env \
73 CC=mips-openwrt-linux-gcc \
74 CXX=mips-openwrt-linux-g++ \
75 bash musl.sh mips && \
76 env \
77 CC=mipsel-openwrt-linux-gcc \
78 CXX=mipsel-openwrt-linux-g++ \
79 bash musl.sh mipsel && \
80 rm -rf /build/*
81
82 # FIXME(mozilla/sccache#235) this shouldn't be necessary but is currently
83 # necessary to disambiguate the mips compiler with the mipsel compiler. We want
84 # to give these two wrapper scripts (currently identical ones) different hashes
85 # to ensure that sccache understands that they're different compilers.
86 RUN \
87 echo "# a" >> /usr/local/mips-linux-musl/bin/mips-openwrt-linux-musl-wrapper.sh && \
88 echo "# b" >> /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-musl-wrapper.sh
89
90 ENV RUN_MAKE_TARGETS=thumbv6m-none-eabi
91 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7m-none-eabi
92 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabi
93 ENV RUN_MAKE_TARGETS=$RUN_MAKE_TARGETS,thumbv7em-none-eabihf
94
95 ENV TARGETS=asmjs-unknown-emscripten
96 ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
97 ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
98 ENV TARGETS=$TARGETS,mips-unknown-linux-musl
99 ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
100 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
101 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
102 ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi
103 ENV TARGETS=$TARGETS,armv5te-unknown-linux-musleabi
104 ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
105 ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl
106 ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
107 # FIXME: temporarily disable the redox builder,
108 # see: https://github.com/rust-lang/rust/issues/63160
109 # ENV TARGETS=$TARGETS,x86_64-unknown-redox
110 ENV TARGETS=$TARGETS,thumbv6m-none-eabi
111 ENV TARGETS=$TARGETS,thumbv7m-none-eabi
112 ENV TARGETS=$TARGETS,thumbv7em-none-eabi
113 ENV TARGETS=$TARGETS,thumbv7em-none-eabihf
114 ENV TARGETS=$TARGETS,thumbv8m.base-none-eabi
115 ENV TARGETS=$TARGETS,thumbv8m.main-none-eabi
116 ENV TARGETS=$TARGETS,thumbv8m.main-none-eabihf
117 ENV TARGETS=$TARGETS,riscv32i-unknown-none-elf
118 ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
119 ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
120 ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf
121 ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf
122 ENV TARGETS=$TARGETS,armebv7r-none-eabi
123 ENV TARGETS=$TARGETS,armebv7r-none-eabihf
124 ENV TARGETS=$TARGETS,armv7r-none-eabi
125 ENV TARGETS=$TARGETS,armv7r-none-eabihf
126 ENV TARGETS=$TARGETS,thumbv7neon-unknown-linux-gnueabihf
127
128 ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
129 CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
130 CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
131 CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
132 CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
133 AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
134 CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
135
136 ENV RUST_CONFIGURE_ARGS \
137 --musl-root-armv5te=/musl-armv5te \
138 --musl-root-arm=/musl-arm \
139 --musl-root-armhf=/musl-armhf \
140 --musl-root-armv7hf=/musl-armv7hf \
141 --musl-root-aarch64=/musl-aarch64 \
142 --musl-root-mips=/musl-mips \
143 --musl-root-mipsel=/musl-mipsel \
144 --enable-emscripten \
145 --disable-docs
146
147 ENV SCRIPT \
148 python2.7 ../x.py test --target $RUN_MAKE_TARGETS src/test/run-make && \
149 python2.7 ../x.py dist --target $TARGETS
150
151 # sccache
152 COPY scripts/sccache.sh /scripts/
153 RUN sh /scripts/sccache.sh