]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/cross/Dockerfile
Rollup merge of #41249 - GuillaumeGomez:rustdoc-render, r=steveklabnik,frewsxcv
[rust.git] / src / ci / docker / cross / 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   gcc-sparc64-linux-gnu \
18   libc6-dev-sparc64-cross \
19   bzip2 \
20   patch \
21   libssl-dev \
22   pkg-config
23
24 RUN curl -o /usr/local/bin/sccache \
25       https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-04-04-sccache-x86_64-unknown-linux-musl && \
26       chmod +x /usr/local/bin/sccache
27
28 RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
29     dpkg -i dumb-init_*.deb && \
30     rm dumb-init_*.deb
31 ENTRYPOINT ["/usr/bin/dumb-init", "--"]
32
33 WORKDIR /tmp
34
35 COPY build-rumprun.sh /tmp/
36 RUN ./build-rumprun.sh
37
38 COPY build-arm-musl.sh /tmp/
39 RUN ./build-arm-musl.sh
40
41 # originally from
42 # https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-Toolchain-ar71xx-generic_gcc-5.3.0_musl-1.1.16.Linux-x86_64.tar.bz2
43 RUN mkdir /usr/local/mips-linux-musl
44 RUN curl -L https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/OpenWrt-Toolchain-ar71xx-generic_gcc-5.3.0_musl-1.1.16.Linux-x86_64.tar.bz2 | \
45       tar xjf - -C /usr/local/mips-linux-musl --strip-components=2
46 RUN for file in /usr/local/mips-linux-musl/bin/mips-openwrt-linux-*; do \
47       ln -s $file /usr/local/bin/`basename $file`; \
48     done
49
50 # Note that this originally came from:
51 # https://downloads.openwrt.org/snapshots/trunk/malta/generic/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2
52 RUN mkdir /usr/local/mipsel-linux-musl
53 RUN curl -L https://s3.amazonaws.com/rust-lang-ci/libc/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \
54       tar xjf - -C /usr/local/mipsel-linux-musl --strip-components=2
55 RUN for file in /usr/local/mipsel-linux-musl/bin/mipsel-openwrt-linux-*; do \
56       ln -s $file /usr/local/bin/`basename $file`; \
57     done
58
59 ENV TARGETS=asmjs-unknown-emscripten
60 ENV TARGETS=$TARGETS,wasm32-unknown-emscripten
61 ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd
62 ENV TARGETS=$TARGETS,mips-unknown-linux-musl
63 ENV TARGETS=$TARGETS,mipsel-unknown-linux-musl
64 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabi
65 ENV TARGETS=$TARGETS,arm-unknown-linux-musleabihf
66 ENV TARGETS=$TARGETS,armv7-unknown-linux-musleabihf
67 ENV TARGETS=$TARGETS,sparc64-unknown-linux-gnu
68
69 ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
70     CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \
71     CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc
72
73 # Suppress some warnings in the openwrt toolchains we downloaded
74 ENV STAGING_DIR=/tmp
75
76 ENV RUST_CONFIGURE_ARGS \
77       --enable-extended \
78       --target=$TARGETS \
79       --musl-root-arm=/usr/local/arm-linux-musleabi \
80       --musl-root-armhf=/usr/local/arm-linux-musleabihf \
81       --musl-root-armv7=/usr/local/armv7-linux-musleabihf
82 ENV SCRIPT python2.7 ../x.py dist --target $TARGETS