about summary refs log tree commit diff
path: root/src/ci/docker
diff options
context:
space:
mode:
Diffstat (limited to 'src/ci/docker')
-rw-r--r--src/ci/docker/dist-i586-gnu-i686-musl/Dockerfile (renamed from src/ci/docker/linux-tested-targets/Dockerfile)8
-rw-r--r--src/ci/docker/dist-i586-gnu-i686-musl/build-musl.sh (renamed from src/ci/docker/linux-tested-targets/build-musl.sh)15
-rw-r--r--src/ci/docker/dist-i586-gnu-i686-musl/musl-libunwind-patch.patch (renamed from src/ci/docker/linux-tested-targets/musl-libunwind-patch.patch)0
-rw-r--r--src/ci/docker/dist-x86_64-musl/Dockerfile45
-rw-r--r--src/ci/docker/dist-x86_64-musl/build-musl.sh38
5 files changed, 85 insertions, 21 deletions
diff --git a/src/ci/docker/linux-tested-targets/Dockerfile b/src/ci/docker/dist-i586-gnu-i686-musl/Dockerfile
index a7060cd55fe..0897be80cc2 100644
--- a/src/ci/docker/linux-tested-targets/Dockerfile
+++ b/src/ci/docker/dist-i586-gnu-i686-musl/Dockerfile
@@ -30,8 +30,7 @@ RUN curl -o /usr/local/bin/sccache \
       chmod +x /usr/local/bin/sccache
 
 ENV RUST_CONFIGURE_ARGS \
-      --target=x86_64-unknown-linux-musl,i686-unknown-linux-musl,i586-unknown-linux-gnu \
-      --musl-root-x86_64=/musl-x86_64 \
+      --target=i686-unknown-linux-musl,i586-unknown-linux-gnu \
       --musl-root-i686=/musl-i686
 
 # Newer binutils broke things on some vms/distros (i.e., linking against
@@ -39,16 +38,13 @@ ENV RUST_CONFIGURE_ARGS \
 # way to produce "super compatible" binaries.
 #
 # See: https://github.com/rust-lang/rust/issues/34978
-ENV CFLAGS_i686_unknown_linux_musl=-Wa,-mrelax-relocations=no \
-    CFLAGS_x86_64_unknown_linux_musl=-Wa,-mrelax-relocations=no
+ENV CFLAGS_i686_unknown_linux_musl=-Wa,-mrelax-relocations=no
 
 ENV SCRIPT \
       python2.7 ../x.py test \
-          --target x86_64-unknown-linux-musl \
           --target i686-unknown-linux-musl \
           --target i586-unknown-linux-gnu \
           && \
       python2.7 ../x.py dist \
-          --target x86_64-unknown-linux-musl \
           --target i686-unknown-linux-musl \
           --target i586-unknown-linux-gnu
diff --git a/src/ci/docker/linux-tested-targets/build-musl.sh b/src/ci/docker/dist-i586-gnu-i686-musl/build-musl.sh
index ce62c392241..a50a25c7913 100644
--- a/src/ci/docker/linux-tested-targets/build-musl.sh
+++ b/src/ci/docker/dist-i586-gnu-i686-musl/build-musl.sh
@@ -18,11 +18,6 @@ export CXXFLAGS="-Wa,-mrelax-relocations=no"
 MUSL=musl-1.1.14
 curl https://www.musl-libc.org/releases/$MUSL.tar.gz | tar xzf -
 cd $MUSL
-./configure --prefix=/musl-x86_64 --disable-shared
-make -j10
-make install
-make clean
-# for i686
 CFLAGS="$CFLAGS -m32" ./configure --prefix=/musl-i686 --disable-shared --target=i686
 make -j10
 make install
@@ -50,16 +45,6 @@ cd ..
 
 mkdir libunwind-build
 cd libunwind-build
-cmake ../libunwind-release_37 -DLLVM_PATH=/build/llvm-release_37 \
-          -DLIBUNWIND_ENABLE_SHARED=0
-make -j10
-cp lib/libunwind.a /musl-x86_64/lib
-
-# (Note: the next cmake call doesn't fully override the previous cached one, so remove the cached
-# configuration manually. IOW, if don't do this or call make clean we'll end up building libunwind
-# for x86_64 again)
-rm -rf *
-# for i686
 CFLAGS="$CFLAGS -m32" CXXFLAGS="$CXXFLAGS -m32" cmake ../libunwind-release_37 \
           -DLLVM_PATH=/build/llvm-release_37 \
           -DLIBUNWIND_ENABLE_SHARED=0
diff --git a/src/ci/docker/linux-tested-targets/musl-libunwind-patch.patch b/src/ci/docker/dist-i586-gnu-i686-musl/musl-libunwind-patch.patch
index 99cd685b72d..99cd685b72d 100644
--- a/src/ci/docker/linux-tested-targets/musl-libunwind-patch.patch
+++ b/src/ci/docker/dist-i586-gnu-i686-musl/musl-libunwind-patch.patch
diff --git a/src/ci/docker/dist-x86_64-musl/Dockerfile b/src/ci/docker/dist-x86_64-musl/Dockerfile
new file mode 100644
index 00000000000..5877404ece1
--- /dev/null
+++ b/src/ci/docker/dist-x86_64-musl/Dockerfile
@@ -0,0 +1,45 @@
+FROM ubuntu:16.04
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+  g++ \
+  make \
+  file \
+  curl \
+  ca-certificates \
+  python2.7 \
+  git \
+  cmake \
+  xz-utils \
+  sudo \
+  gdb \
+  patch \
+  libssl-dev \
+  pkg-config
+
+WORKDIR /build/
+COPY build-musl.sh /build/
+RUN sh /build/build-musl.sh && rm -rf /build
+
+RUN curl -OL https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64.deb && \
+    dpkg -i dumb-init_*.deb && \
+    rm dumb-init_*.deb
+ENTRYPOINT ["/usr/bin/dumb-init", "--"]
+
+RUN curl -o /usr/local/bin/sccache \
+      https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-02-25-sccache-x86_64-unknown-linux-musl && \
+      chmod +x /usr/local/bin/sccache
+
+ENV RUST_CONFIGURE_ARGS \
+      --target=x86_64-unknown-linux-musl \
+      --musl-root-x86_64=/musl-x86_64
+
+# Newer binutils broke things on some vms/distros (i.e., linking against
+# unknown relocs disabled by the following flag), so we need to go out of our
+# way to produce "super compatible" binaries.
+#
+# See: https://github.com/rust-lang/rust/issues/34978
+ENV CFLAGS_x86_64_unknown_linux_musl=-Wa,-mrelax-relocations=no
+
+ENV SCRIPT \
+      python2.7 ../x.py test --target x86_64-unknown-linux-musl && \
+      python2.7 ../x.py dist --target x86_64-unknown-linux-musl
diff --git a/src/ci/docker/dist-x86_64-musl/build-musl.sh b/src/ci/docker/dist-x86_64-musl/build-musl.sh
new file mode 100644
index 00000000000..86bb259c854
--- /dev/null
+++ b/src/ci/docker/dist-x86_64-musl/build-musl.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+set -ex
+
+# We need to mitigate rust-lang/rust#34978 when compiling musl itself as well
+export CFLAGS="-fPIC -Wa,-mrelax-relocations=no"
+export CXXFLAGS="-Wa,-mrelax-relocations=no"
+
+MUSL=musl-1.1.14
+curl https://www.musl-libc.org/releases/$MUSL.tar.gz | tar xzf -
+cd $MUSL
+./configure --prefix=/musl-x86_64 --disable-shared
+make -j10
+make install
+
+cd ..
+rm -rf $MUSL
+
+# To build MUSL we're going to need a libunwind lying around, so acquire that
+# here and build it.
+curl -L https://github.com/llvm-mirror/llvm/archive/release_37.tar.gz | tar xzf -
+curl -L https://github.com/llvm-mirror/libunwind/archive/release_37.tar.gz | tar xzf -
+
+mkdir libunwind-build
+cd libunwind-build
+cmake ../libunwind-release_37 -DLLVM_PATH=/build/llvm-release_37 \
+          -DLIBUNWIND_ENABLE_SHARED=0
+make -j10
+cp lib/libunwind.a /musl-x86_64/lib