summaryrefslogtreecommitdiff
path: root/ci/install-musl.sh
diff options
context:
space:
mode:
authorgnzlbg <gonzalobg88@gmail.com>2019-05-24 14:57:28 +0200
committergnzlbg <gonzalobg88@gmail.com>2019-05-27 22:23:02 +0200
commit8f403e5ac262508b763da173d545195710d10494 (patch)
tree9c894fbc9c9505448d26c94ace99be2599420a78 /ci/install-musl.sh
parent1059e0bd85428728cdd8b1546ce4edbace81f725 (diff)
downloadrust-libc-8f403e5ac262508b763da173d545195710d10494.tar.gz
Update MUSL Linux kernel headers and re-enable Linux tests
Diffstat (limited to 'ci/install-musl.sh')
-rw-r--r--ci/install-musl.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/ci/install-musl.sh b/ci/install-musl.sh
new file mode 100644
index 0000000000..0a2fc5529b
--- /dev/null
+++ b/ci/install-musl.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env sh
+#
+# Install musl and musl-sanitized linux kernel headers
+# to musl-{$1} directory
+
+set -ex
+
+MUSL_VERSION=1.1.22
+MUSL="musl-${MUSL_VERSION}"
+
+# Download, configure, build, and install musl:
+curl --retry 5 https://www.musl-libc.org/releases/${MUSL}.tar.gz | tar xzf -
+
+cd $MUSL
+case ${1} in
+ aarch64)
+ musl_arch=aarch64
+ kernel_arch=arm64
+ CC=aarch64-linux-gnu-gcc \
+ ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+ make install -j4
+ ;;
+ arm)
+ musl_arch=arm
+ kernel_arch=arm
+ CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
+ ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+ make install -j4
+ ;;
+ i686)
+ # cross-compile musl for i686 using the system compiler on an x86_64
+ # system.
+ musl_arch=i686
+ kernel_arch=i386
+ # Specifically pass -m32 in CFLAGS and override CC when running
+ # ./configure, since otherwise the script will fail to find a compiler.
+ CC=gcc CFLAGS="-m32" \
+ ./configure --prefix="/musl-${musl_arch}" --disable-shared --target=i686
+ # unset CROSS_COMPILE when running make; otherwise the makefile will
+ # call the non-existent binary 'i686-ar'.
+ make CROSS_COMPILE= install -j4
+ ;;
+ x86_64)
+ musl_arch=x86_64
+ kernel_arch=x86_64
+ ./configure --prefix="/musl-${musl_arch}"
+ make install -j4
+ ;;
+ *)
+ echo "Unknown target arch: \"${1}\""
+ exit 1
+ ;;
+esac
+
+
+# shellcheck disable=SC2103
+cd ..
+rm -rf $MUSL
+
+# Download, configure, build, and install musl-sanitized kernel headers:
+curl --retry 5 -L \
+ https://github.com/sabotage-linux/kernel-headers/archive/v4.4.2-1.tar.gz | \
+ tar xzf -
+(
+ cd kernel-headers-4.4.2-1
+ make ARCH="${kernel_arch}" prefix="/musl-${musl_arch}" install -j4
+)
+rm -rf kernel-headers-4.4.2-1