3 RUN apt-get update -y && apt-get install -y --no-install-recommends \
12 gcc-arm-linux-gnueabihf \
15 libc6-dev-armhf-cross \
22 CROSS_COMPILE=arm-linux-gnueabihf-
26 # Compile the kernel that we're going to run and be emulating with. This is
27 # basically just done to be compatible with the QEMU target that we're going
28 # to be using when running tests. If any other kernel works or if any
29 # other QEMU target works with some other stock kernel, we can use that too!
31 # The `vexpress_config` config file was a previously generated config file for
32 # the kernel. This file was generated by running `make vexpress_defconfig`
33 # followed by `make menuconfig` and then enabling the IPv6 protocol page.
34 COPY armhf-gnu/vexpress_config /build/.config
35 RUN curl https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.4.42.tar.xz | \
37 cd /build/linux-4.4.42 && \
38 cp /build/.config . && \
39 make -j$(nproc) all && \
40 cp arch/arm/boot/zImage /tmp && \
44 # Compile an instance of busybox as this provides a lightweight system and init
45 # binary which we will boot into. Only trick here is configuring busybox to
46 # build static binaries.
47 RUN curl https://www.busybox.net/downloads/busybox-1.21.1.tar.bz2 | tar xjf - && \
48 cd busybox-1.21.1 && \
50 sed -i 's/.*CONFIG_STATIC.*/CONFIG_STATIC=y/' .config && \
53 mv _install /tmp/rootfs && \
57 # Download the ubuntu rootfs, which we'll use as a chroot for all our tests.
59 RUN mkdir rootfs/ubuntu
60 RUN curl http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04-core-armhf.tar.gz | \
61 tar xzf - -C rootfs/ubuntu && \
62 cd rootfs && mkdir proc sys dev etc etc/init.d
64 # Copy over our init script, which starts up our test server and also a few
66 COPY scripts/qemu-bare-bones-rcS rootfs/etc/init.d/rcS
67 RUN chmod +x rootfs/etc/init.d/rcS
69 # Helper to quickly fill the entropy pool in the kernel.
70 COPY scripts/qemu-bare-bones-addentropy.c /tmp/addentropy.c
71 RUN arm-linux-gnueabihf-gcc addentropy.c -o rootfs/addentropy -static
73 # TODO: What is this?!
74 # Source of the file: https://github.com/vfdev-5/qemu-rpi2-vexpress/raw/master/vexpress-v2p-ca15-tc1.dtb
75 RUN curl -O https://rust-lang-ci2.s3.amazonaws.com/rust-ci-mirror/vexpress-v2p-ca15-tc1.dtb
77 COPY scripts/sccache.sh /scripts/
78 RUN sh /scripts/sccache.sh
80 ENV RUST_CONFIGURE_ARGS --qemu-armhf-rootfs=/tmp/rootfs
81 ENV SCRIPT python2.7 ../x.py test --target arm-unknown-linux-gnueabihf