From 9b88a1b30b5f18a47f5868a954a8d19fb2588d61 Mon Sep 17 00:00:00 2001 From: Marco A L Barbosa Date: Mon, 12 Jun 2017 20:07:24 -0300 Subject: [PATCH] Add docker image for wasm32-unknown-emscripten - rename emscripten docker image to asmjs - create wasm32 docker image --- .travis.yml | 2 +- src/ci/docker/asmjs/Dockerfile | 44 ++++++++++++++++ src/ci/docker/emscripten/Dockerfile | 41 --------------- src/ci/docker/emscripten/build-emscripten.sh | 53 -------------------- src/ci/docker/wasm32/Dockerfile | 44 ++++++++++++++++ src/ci/docker/wasm32/node | 18 +++++++ 6 files changed, 107 insertions(+), 95 deletions(-) create mode 100644 src/ci/docker/asmjs/Dockerfile delete mode 100644 src/ci/docker/emscripten/Dockerfile delete mode 100755 src/ci/docker/emscripten/build-emscripten.sh create mode 100644 src/ci/docker/wasm32/Dockerfile create mode 100755 src/ci/docker/wasm32/node diff --git a/.travis.yml b/.travis.yml index 40fecb3ee5e..b4096bd1687 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,7 +36,7 @@ matrix: - env: IMAGE=dist-x86_64-linux DEPLOY=1 ALLOW_TRY=1 - env: IMAGE=dist-x86_64-musl DEPLOY=1 - env: IMAGE=dist-x86_64-netbsd DEPLOY=1 - - env: IMAGE=emscripten + - env: IMAGE=asmjs - env: IMAGE=i686-gnu - env: IMAGE=i686-gnu-nopt - env: IMAGE=x86_64-gnu diff --git a/src/ci/docker/asmjs/Dockerfile b/src/ci/docker/asmjs/Dockerfile new file mode 100644 index 00000000000..899ce1e4569 --- /dev/null +++ b/src/ci/docker/asmjs/Dockerfile @@ -0,0 +1,44 @@ +FROM ubuntu:16.04 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + g++ \ + make \ + file \ + curl \ + ca-certificates \ + python \ + git \ + cmake \ + sudo \ + gdb \ + xz-utils + +# dumb-init +COPY scripts/dumb-init.sh /scripts/ +RUN sh /scripts/dumb-init.sh + +# emscripten +COPY scripts/emscripten.sh /scripts/ +RUN bash /scripts/emscripten.sh + +# env +ENV PATH=$PATH:/emsdk-portable +ENV PATH=$PATH:/emsdk-portable/clang/e1.37.13_64bit/ +ENV PATH=$PATH:/emsdk-portable/emscripten/1.37.13/ +ENV PATH=$PATH:/emsdk-portable/node/4.1.1_64bit/bin/ +ENV EMSCRIPTEN=/emsdk-portable/emscripten/1.37.13/ +ENV BINARYEN_ROOT=/emsdk-portable/clang/e1.37.13_64bit/binaryen/ +ENV EM_CONFIG=/emsdk-portable/.emscripten + +ENV TARGETS=asmjs-unknown-emscripten + +ENV RUST_CONFIGURE_ARGS --target=$TARGETS + +ENV SCRIPT python2.7 ../x.py test --target $TARGETS + +# cache +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh + +# init +ENTRYPOINT ["/usr/bin/dumb-init", "--"] diff --git a/src/ci/docker/emscripten/Dockerfile b/src/ci/docker/emscripten/Dockerfile deleted file mode 100644 index 0f0e5b69c32..00000000000 --- a/src/ci/docker/emscripten/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get install -y --no-install-recommends \ - g++ \ - make \ - file \ - curl \ - ca-certificates \ - python \ - git \ - cmake \ - sudo \ - gdb \ - xz-utils \ - lib32stdc++6 - -RUN curl -o /usr/local/bin/sccache \ - https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-05-12-sccache-x86_64-unknown-linux-musl && \ - chmod +x /usr/local/bin/sccache - -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", "--"] - -WORKDIR /tmp -COPY emscripten/build-emscripten.sh /tmp/ -RUN ./build-emscripten.sh -ENV PATH=$PATH:/tmp/emsdk_portable -ENV PATH=$PATH:/tmp/emsdk_portable/clang/tag-e1.37.10/build_tag-e1.37.10_32/bin -ENV PATH=$PATH:/tmp/emsdk_portable/node/4.1.1_32bit/bin -ENV PATH=$PATH:/tmp/emsdk_portable/emscripten/tag-1.37.10 -ENV EMSCRIPTEN=/tmp/emsdk_portable/emscripten/tag-1.37.10 - -ENV RUST_CONFIGURE_ARGS --target=asmjs-unknown-emscripten - -# Run `emcc` first as it's got a prompt and doesn't actually do anything, after -# that's done with do the real build. -ENV SCRIPT emcc && \ - python2.7 ../x.py test --target asmjs-unknown-emscripten - diff --git a/src/ci/docker/emscripten/build-emscripten.sh b/src/ci/docker/emscripten/build-emscripten.sh deleted file mode 100755 index 8d6a28f418b..00000000000 --- a/src/ci/docker/emscripten/build-emscripten.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/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 or the MIT license -# , at your -# option. This file may not be copied, modified, or distributed -# except according to those terms. - -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 -} - -curl https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz | \ - tar xzf - - -# Some versions of the EMSDK archive have their contents in .emsdk-portable -# and others in emsdk_portable. Make sure the EMSDK ends up in a fixed path. -if [ -d emsdk-portable ]; then - mv emsdk-portable emsdk_portable -fi - -if [ ! -d emsdk_portable ]; then - echo "ERROR: Invalid emsdk archive. Dumping working directory." >&2 - ls -l - exit 1 -fi - -# Some versions of the EMSDK set the permissions of the root directory to -# 0700. Ensure the directory is readable by all users. -chmod 755 emsdk_portable - -source emsdk_portable/emsdk_env.sh -hide_output emsdk update -hide_output emsdk install --build=Release sdk-tag-1.37.10-32bit -hide_output emsdk activate --build=Release sdk-tag-1.37.10-32bit diff --git a/src/ci/docker/wasm32/Dockerfile b/src/ci/docker/wasm32/Dockerfile new file mode 100644 index 00000000000..07fa9fbde2d --- /dev/null +++ b/src/ci/docker/wasm32/Dockerfile @@ -0,0 +1,44 @@ +FROM ubuntu:16.04 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + g++ \ + make \ + file \ + curl \ + ca-certificates \ + python \ + git \ + cmake \ + sudo \ + gdb \ + xz-utils + +# dumb-init +COPY scripts/dumb-init.sh /scripts/ +RUN sh /scripts/dumb-init.sh + +# emscripten +COPY scripts/emscripten.sh /scripts/ +RUN bash /scripts/emscripten.sh +COPY wasm32/node /usr/local/bin/node + +# env +ENV PATH=$PATH:/emsdk-portable +ENV PATH=$PATH:/emsdk-portable/clang/e1.37.13_64bit/ +ENV PATH=$PATH:/emsdk-portable/emscripten/1.37.13/ +ENV EMSCRIPTEN=/emsdk-portable/emscripten/1.37.13/ +ENV BINARYEN_ROOT=/emsdk-portable/clang/e1.37.13_64bit/binaryen/ +ENV EM_CONFIG=/emsdk-portable/.emscripten + +ENV TARGETS=wasm32-unknown-emscripten + +ENV RUST_CONFIGURE_ARGS --target=$TARGETS + +ENV SCRIPT python2.7 ../x.py test --target $TARGETS + +# cache +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh + +# init +ENTRYPOINT ["/usr/bin/dumb-init", "--"] diff --git a/src/ci/docker/wasm32/node b/src/ci/docker/wasm32/node new file mode 100755 index 00000000000..dfa7f221ffa --- /dev/null +++ b/src/ci/docker/wasm32/node @@ -0,0 +1,18 @@ +#!/bin/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 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +path="$(dirname $1)" +file="$(basename $1)" + +shift + +cd "$path" +exec /node-v8.0.0-linux-x64/bin/node "$file" "$@"