]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/dist-various-1/Dockerfile
Auto merge of #47804 - retep007:recursive-requirements, r=pnkfelix
[rust.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
25 WORKDIR /build
26
27 COPY dist-various-1/build-rumprun.sh /build
28 RUN ./build-rumprun.sh
29
30 COPY dist-various-1/install-x86_64-redox.sh /build
31 RUN ./install-x86_64-redox.sh
32
33 COPY dist-various-1/install-mips-musl.sh /build
34 RUN ./install-mips-musl.sh
35
36 COPY dist-various-1/install-mipsel-musl.sh /build
37 RUN ./install-mipsel-musl.sh
38
39 # Suppress some warnings in the openwrt toolchains we downloaded
40 ENV STAGING_DIR=/tmp
41
42 COPY scripts/musl.sh /build
43 RUN env \
44     CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \
45     CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \
46     bash musl.sh arm && \
47     env \
48     CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm" \
49     CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm" \
50     bash musl.sh armhf && \
51     env \
52     CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \
53     CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \
54     bash musl.sh armv7 && \
55     env \
56     CC=aarch64-linux-gnu-gcc \
57     CXX=aarch64-linux-gnu-g++ \
58     bash musl.sh aarch64 && \
59     env \
60     CC=mips-openwrt-linux-gcc \
61     CXX=mips-openwrt-linux-g++ \
62     bash musl.sh mips && \
63     env \
64     CC=mipsel-openwrt-linux-gcc \
65     CXX=mipsel-openwrt-linux-g++ \
66     bash musl.sh mipsel && \
67     rm -rf /build/*
68
69 ENV TARGETS=asmjs-unknown-emscripten
70 ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
71 ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
72 ENV TARGETS=$TARGETS,mips-unknown-linux-musl
73 ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
74 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
75 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
76 ENV TARGETS=$TARGETS,armv5te-unknown-linux-gnueabi
77 ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
78 ENV TARGETS=$TARGETS,aarch64-unknown-linux-musl
79 ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
80 ENV TARGETS=$TARGETS,x86_64-unknown-redox
81
82 # FIXME: remove armv5te vars after https://github.com/alexcrichton/cc-rs/issues/271
83 #        get fixed and cc update
84 ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
85     CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
86     CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
87     CC_x86_64_unknown_redox=x86_64-unknown-redox-gcc \
88     CC_armv5te_unknown_linux_gnueabi=arm-linux-gnueabi-gcc \
89     CFLAGS_armv5te_unknown_linux_gnueabi="-march=armv5te -marm -mfloat-abi=soft"
90
91 ENV RUST_CONFIGURE_ARGS \
92       --target=$TARGETS \
93       --musl-root-arm=/musl-arm \
94       --musl-root-armhf=/musl-armhf \
95       --musl-root-armv7=/musl-armv7 \
96       --musl-root-aarch64=/musl-aarch64 \
97       --musl-root-mips=/musl-mips \
98       --musl-root-mipsel=/musl-mipsel \
99       --enable-emscripten
100
101 ENV SCRIPT python2.7 ../x.py dist --target $TARGETS
102
103 # sccache
104 COPY scripts/sccache.sh /scripts/
105 RUN sh /scripts/sccache.sh