From 6fa3870e5b98c55e822671feed44bd2ff8b2b6c1 Mon Sep 17 00:00:00 2001 From: Marco A L Barbosa Date: Tue, 31 Oct 2017 10:09:29 -0200 Subject: [PATCH] Run sparc64-unknown-linux-gnu tests on qemu system --- ci/docker/sparc64-unknown-linux-gnu/Dockerfile | 17 +++++++++++------ ci/linux-sparc64.sh | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 ci/linux-sparc64.sh diff --git a/ci/docker/sparc64-unknown-linux-gnu/Dockerfile b/ci/docker/sparc64-unknown-linux-gnu/Dockerfile index 2d53371a..2c551f91 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 00000000..33a3c46c --- /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 .