diff options
-rw-r--r-- | ci/docker/sparc64-unknown-linux-gnu/Dockerfile | 17 | ||||
-rw-r--r-- | ci/linux-sparc64.sh | 17 |
2 files changed, 28 insertions, 6 deletions
diff --git a/ci/docker/sparc64-unknown-linux-gnu/Dockerfile b/ci/docker/sparc64-unknown-linux-gnu/Dockerfile index 2d53371add..2c551f91fa 100644 --- a/ci/docker/sparc64-unknown-linux-gnu/Dockerfile +++ b/ci/docker/sparc64-unknown-linux-gnu/Dockerfile @@ -2,13 +2,18 @@ FROM ubuntu:17.04 RUN apt-get update && apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu-user ca-certificates \ - gcc-sparc64-linux-gnu libc6-dev-sparc64-cross + curl ca-certificates \ + gcc libc6-dev \ + gcc-sparc64-linux-gnu libc6-dev-sparc64-cross \ + qemu-system-sparc64 openbios-sparc seabios ipxe-qemu \ + p7zip-full cpio + +COPY linux-sparc64.sh / +RUN bash /linux-sparc64.sh + +COPY test-runner-linux / ENV CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_LINKER=sparc64-linux-gnu-gcc \ - # TODO: in theory we should execute this, but qemu segfaults immediately - # see https://github.com/rust-lang/libc/issues/822 - # CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-sparc64 -L /usr/sparc64-linux-gnu" \ - CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER=true \ + CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="/test-runner-linux sparc64" \ CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \ PATH=$PATH:/rust/bin diff --git a/ci/linux-sparc64.sh b/ci/linux-sparc64.sh new file mode 100644 index 0000000000..33a3c46c77 --- /dev/null +++ b/ci/linux-sparc64.sh @@ -0,0 +1,17 @@ +set -ex + +mkdir -m 777 /qemu +cd /qemu + +curl -LO https://cdimage.debian.org/cdimage/ports/debian-9.0-sparc64-NETINST-1.iso +7z e debian-9.0-sparc64-NETINST-1.iso boot/initrd.gz +7z e debian-9.0-sparc64-NETINST-1.iso boot/sparc64 +mv sparc64 kernel +rm debian-9.0-sparc64-NETINST-1.iso + +mkdir init +cd init +gunzip -c ../initrd.gz | cpio -id +rm ../initrd.gz +cp /usr/sparc64-linux-gnu/lib/libgcc_s.so.1 usr/lib/ +chmod a+w . |