diff options
| author | Marco A L Barbosa <malbarbo@gmail.com> | 2018-01-03 09:39:21 -0200 |
|---|---|---|
| committer | Marco A L Barbosa <malbarbo@gmail.com> | 2018-01-03 13:49:13 -0200 |
| commit | 10a759130e763206bb961deb4c9da6e0466c71a1 (patch) | |
| tree | 0edfac5baca802779b7197209fe0a1b555d6dcd1 | |
| parent | ca0499d73685f084d8fd77417411d6f5162cc593 (diff) | |
| download | rust-10a759130e763206bb961deb4c9da6e0466c71a1.tar.gz rust-10a759130e763206bb961deb4c9da6e0466c71a1.zip | |
ci: use musl shared script in dist-various-1 (for arm targets)
Update libunwind to 39. This is necessary to build the arm targets
| -rw-r--r-- | src/ci/docker/dist-various-1/Dockerfile | 42 | ||||
| -rwxr-xr-x | src/ci/docker/dist-various-1/build-arm-musl.sh | 147 | ||||
| -rw-r--r-- | src/ci/docker/scripts/musl.sh | 48 |
3 files changed, 66 insertions, 171 deletions
diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile index b58ee7a719c..0f08bcddd38 100644 --- a/src/ci/docker/dist-various-1/Dockerfile +++ b/src/ci/docker/dist-various-1/Dockerfile @@ -22,23 +22,39 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libssl-dev \ pkg-config -WORKDIR /tmp +WORKDIR /build -COPY dist-various-1/build-rumprun.sh /tmp/ +COPY dist-various-1/build-rumprun.sh /build RUN ./build-rumprun.sh -COPY dist-various-1/build-arm-musl.sh /tmp/ -RUN ./build-arm-musl.sh +COPY dist-various-1/install-x86_64-redox.sh /build +RUN ./install-x86_64-redox.sh + +COPY scripts/musl.sh /build +RUN env \ + CC=arm-linux-gnueabi-gcc CFLAGS="-march=armv6 -marm" \ + CXX=arm-linux-gnueabi-g++ CXXFLAGS="-march=armv6 -marm" \ + bash musl.sh arm && \ + env \ + CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm" \ + CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv6 -marm" \ + bash musl.sh armhf && \ + env \ + CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv7-a" \ + CXX=arm-linux-gnueabihf-g++ CXXFLAGS="-march=armv7-a" \ + bash musl.sh armv7 && \ + env \ + CC=aarch64-linux-gnu-gcc \ + CXX=aarch64-linux-gnu-g++ \ + bash musl.sh aarch64 && \ + rm -rf /build/* -COPY dist-various-1/install-mips-musl.sh /tmp/ +COPY dist-various-1/install-mips-musl.sh /build RUN ./install-mips-musl.sh -COPY dist-various-1/install-mipsel-musl.sh /tmp/ +COPY dist-various-1/install-mipsel-musl.sh /build RUN ./install-mipsel-musl.sh -COPY dist-various-1/install-x86_64-redox.sh /tmp/ -RUN ./install-x86_64-redox.sh - ENV TARGETS=asmjs-unknown-emscripten ENV TARGETS=$TARGETS,wasm32-unknown-emscripten ENV TARGETS=$TARGETS,x86_64-rumprun-netbsd @@ -67,10 +83,10 @@ ENV STAGING_DIR=/tmp ENV RUST_CONFIGURE_ARGS \ --enable-extended \ --target=$TARGETS \ - --musl-root-arm=/usr/local/arm-linux-musleabi \ - --musl-root-armhf=/usr/local/arm-linux-musleabihf \ - --musl-root-armv7=/usr/local/armv7-linux-musleabihf \ - --musl-root-aarch64=/usr/local/aarch64-linux-musl + --musl-root-arm=/musl-arm \ + --musl-root-armhf=/musl-armhf \ + --musl-root-armv7=/musl-armv7 \ + --musl-root-aarch64=/musl-aarch64 ENV SCRIPT python2.7 ../x.py dist --target $TARGETS # sccache diff --git a/src/ci/docker/dist-various-1/build-arm-musl.sh b/src/ci/docker/dist-various-1/build-arm-musl.sh deleted file mode 100755 index f9444a35a8b..00000000000 --- a/src/ci/docker/dist-various-1/build-arm-musl.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2017 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 - -MUSL=1.1.17 - -hide_output() { - set +x - on_err=" -echo ERROR: An error was encountered with the build. -cat /tmp/build.log -exit 1 -" - trap "$on_err" ERR - bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & - PING_LOOP_PID=$! - $@ &> /tmp/build.log - trap - ERR - kill $PING_LOOP_PID - rm /tmp/build.log - set -x -} - -curl -O https://www.musl-libc.org/releases/musl-$MUSL.tar.gz -tar xf musl-$MUSL.tar.gz -cd musl-$MUSL -CC=arm-linux-gnueabi-gcc \ -CFLAGS="-march=armv6 -marm" \ - hide_output ./configure \ - --prefix=/usr/local/arm-linux-musleabi \ - --enable-wrapper=gcc -hide_output make -j$(nproc) -hide_output make install -cd .. -rm -rf musl-$MUSL - -tar xf musl-$MUSL.tar.gz -cd musl-$MUSL -CC=arm-linux-gnueabihf-gcc \ -CFLAGS="-march=armv6 -marm" \ - hide_output ./configure \ - --prefix=/usr/local/arm-linux-musleabihf \ - --enable-wrapper=gcc -hide_output make -j$(nproc) -hide_output make install -cd .. -rm -rf musl-$MUSL - -tar xf musl-$MUSL.tar.gz -cd musl-$MUSL -CC=arm-linux-gnueabihf-gcc \ -CFLAGS="-march=armv7-a" \ - hide_output ./configure \ - --prefix=/usr/local/armv7-linux-musleabihf \ - --enable-wrapper=gcc -hide_output make -j$(nproc) -hide_output make install -cd .. -rm -rf musl-$MUSL - -tar xf musl-$MUSL.tar.gz -cd musl-$MUSL -CC=aarch64-linux-gnu-gcc \ -CFLAGS="" \ - hide_output ./configure \ - --prefix=/usr/local/aarch64-linux-musl \ - --enable-wrapper=gcc -hide_output make -j$(nproc) -hide_output make install -cd .. -rm -rf musl-$MUSL* - -ln -nsf ../arm-linux-musleabi/bin/musl-gcc /usr/local/bin/arm-linux-musleabi-gcc -ln -nsf ../arm-linux-musleabihf/bin/musl-gcc /usr/local/bin/arm-linux-musleabihf-gcc -ln -nsf ../armv7-linux-musleabihf/bin/musl-gcc /usr/local/bin/armv7-linux-musleabihf-gcc -ln -nsf ../aarch64-linux-musl/bin/musl-gcc /usr/local/bin/aarch64-unknown-linux-musl-gcc - -curl -L https://github.com/llvm-mirror/llvm/archive/release_39.tar.gz | tar xzf - -curl -L https://github.com/llvm-mirror/libunwind/archive/release_39.tar.gz | tar xzf - - -mkdir libunwind-build -cd libunwind-build -cmake ../libunwind-release_39 \ - -DLLVM_PATH=/tmp/llvm-release_39 \ - -DLIBUNWIND_ENABLE_SHARED=0 \ - -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc \ - -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ \ - -DCMAKE_C_FLAGS="-march=armv6 -marm" \ - -DCMAKE_CXX_FLAGS="-march=armv6 -marm" -make -j$(nproc) -cp lib/libunwind.a /usr/local/arm-linux-musleabi/lib -cd .. -rm -rf libunwind-build - -mkdir libunwind-build -cd libunwind-build -cmake ../libunwind-release_39 \ - -DLLVM_PATH=/tmp/llvm-release_39 \ - -DLIBUNWIND_ENABLE_SHARED=0 \ - -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \ - -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \ - -DCMAKE_C_FLAGS="-march=armv6 -marm" \ - -DCMAKE_CXX_FLAGS="-march=armv6 -marm" -make -j$(nproc) -cp lib/libunwind.a /usr/local/arm-linux-musleabihf/lib -cd .. -rm -rf libunwind-build - -mkdir libunwind-build -cd libunwind-build -cmake ../libunwind-release_39 \ - -DLLVM_PATH=/tmp/llvm-release_39 \ - -DLIBUNWIND_ENABLE_SHARED=0 \ - -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \ - -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \ - -DCMAKE_C_FLAGS="-march=armv7-a" \ - -DCMAKE_CXX_FLAGS="-march=armv7-a" -make -j$(nproc) -cp lib/libunwind.a /usr/local/armv7-linux-musleabihf/lib -cd .. -rm -rf libunwind-build - -mkdir libunwind-build -cd libunwind-build -cmake ../libunwind-release_39 \ - -DLLVM_PATH=/tmp/llvm-release_39 \ - -DLIBUNWIND_ENABLE_SHARED=0 \ - -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \ - -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \ - -DCMAKE_C_FLAGS="" \ - -DCMAKE_CXX_FLAGS="" -make -j$(nproc) -cp lib/libunwind.a /usr/local/aarch64-linux-musl/lib -cd .. -rm -rf libunwind-build - -rm -rf libunwind-release_39 -rm -rf llvm-release_39 diff --git a/src/ci/docker/scripts/musl.sh b/src/ci/docker/scripts/musl.sh index 011fd88231d..dad0e8e2c2b 100644 --- a/src/ci/docker/scripts/musl.sh +++ b/src/ci/docker/scripts/musl.sh @@ -1,4 +1,3 @@ -#!/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. @@ -11,31 +10,58 @@ set -ex +hide_output() { + set +x + on_err=" +echo ERROR: An error was encountered with the build. +cat /tmp/build.log +exit 1 +" + trap "$on_err" ERR + bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & + PING_LOOP_PID=$! + $@ &> /tmp/build.log + trap - ERR + kill $PING_LOOP_PID + rm /tmp/build.log + set -x +} + TAG=$1 shift MUSL=musl-1.1.17 -curl https://www.musl-libc.org/releases/$MUSL.tar.gz | tar xzf - + +# may have been downloaded in a previous run +if [ ! -d $MUSL ]; then + curl https://www.musl-libc.org/releases/$MUSL.tar.gz | tar xzf - +fi + cd $MUSL ./configure --disable-shared --prefix=/musl-$TAG $@ -make -j10 -make install +hide_output make -j$(nproc) +hide_output make install +hide_output make clean 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 - +LLVM=39 +# may have been downloaded in a previous run +if [ ! -d libunwind-release_$LLVM ]; then + curl -L https://github.com/llvm-mirror/llvm/archive/release_$LLVM.tar.gz | tar xzf - + curl -L https://github.com/llvm-mirror/libunwind/archive/release_$LLVM.tar.gz | tar xzf - +fi mkdir libunwind-build cd libunwind-build -cmake ../libunwind-release_37 -DLLVM_PATH=/build/llvm-release_37 \ +cmake ../libunwind-release_$LLVM \ + -DLLVM_PATH=/build/llvm-release_$LLVM \ -DLIBUNWIND_ENABLE_SHARED=0 \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_CXX_COMPILER=$CXX \ -DCMAKE_C_FLAGS="$CFLAGS" \ -DCMAKE_CXX_FLAGS="$CXXFLAGS" -make -j10 + +hide_output make -j$(nproc) cp lib/libunwind.a /musl-$TAG/lib +cd ../ && rm -rf libunwind-build |
