diff options
| author | Thomas Lively <tlively@google.com> | 2017-06-22 18:04:20 -0700 |
|---|---|---|
| committer | Thomas Lively <tlively@google.com> | 2017-06-22 18:34:56 -0700 |
| commit | a4f97449b0a3043ecf91cdcc75ee69018cda6176 (patch) | |
| tree | 65b09f44408c072e64c50a87888a4bda3d2a5826 /src/ci | |
| parent | 16da303209dc7d4ec84b10322c9f7d34f72b2985 (diff) | |
| download | rust-a4f97449b0a3043ecf91cdcc75ee69018cda6176.tar.gz rust-a4f97449b0a3043ecf91cdcc75ee69018cda6176.zip | |
Add wasm32-experimental-emscripten to wasm builder
This modifies the builder to download and use the LLVM tools from the last known good build on the WebAssembly buildbot waterfall, since these tools are built with the WebAssembly LLVM backend enabled.
Diffstat (limited to 'src/ci')
| -rw-r--r-- | src/ci/docker/disabled/wasm32/Dockerfile | 14 | ||||
| -rw-r--r-- | src/ci/docker/scripts/emscripten.sh | 32 |
2 files changed, 28 insertions, 18 deletions
diff --git a/src/ci/docker/disabled/wasm32/Dockerfile b/src/ci/docker/disabled/wasm32/Dockerfile index f3dd48ae411..025029c6745 100644 --- a/src/ci/docker/disabled/wasm32/Dockerfile +++ b/src/ci/docker/disabled/wasm32/Dockerfile @@ -11,7 +11,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ cmake \ sudo \ gdb \ - xz-utils + xz-utils \ + jq \ + bzip2 # dumb-init COPY scripts/dumb-init.sh /scripts/ @@ -22,6 +24,10 @@ COPY scripts/emscripten.sh /scripts/ RUN bash /scripts/emscripten.sh COPY disabled/wasm32/node.sh /usr/local/bin/node +# cache +COPY scripts/sccache.sh /scripts/ +RUN sh /scripts/sccache.sh + # env ENV PATH=$PATH:/emsdk-portable ENV PATH=$PATH:/emsdk-portable/clang/e1.37.13_64bit/ @@ -32,13 +38,9 @@ ENV EM_CONFIG=/emsdk-portable/.emscripten ENV TARGETS=wasm32-unknown-emscripten,wasm32-experimental-emscripten -ENV RUST_CONFIGURE_ARGS --target=$TARGETS --experimental-targets=WebAssembly +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/scripts/emscripten.sh b/src/ci/docker/scripts/emscripten.sh index 516ef0ae0d2..e693f975f69 100644 --- a/src/ci/docker/scripts/emscripten.sh +++ b/src/ci/docker/scripts/emscripten.sh @@ -27,30 +27,38 @@ exit 1 set -x } +# Download emsdk cd / curl -L https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gz | \ tar -xz +# Download last known good emscripten from WebAssembly waterfall +BUILD=$(curl -L https://storage.googleapis.com/wasm-llvm/builds/linux/lkgr.json | \ + jq '.build | tonumber') +curl -L https://storage.googleapis.com/wasm-llvm/builds/linux/$BUILD/wasm-binaries.tbz2 | \ + hide_output tar xvkj + +# node 8 is required to run wasm +cd / +curl -L https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-x64.tar.xz | \ + tar -xJ + cd /emsdk-portable ./emsdk update hide_output ./emsdk install sdk-1.37.13-64bit ./emsdk activate sdk-1.37.13-64bit +# Make emscripten use wasm-ready node and LLVM tools +echo "NODE_JS='/node-v8.0.0-linux-x64/bin/node'" >> /root/.emscripten +echo "LLVM_ROOT='/wasm-install/bin'" >> /root/.emscripten + +# Make emsdk usable by any user +cp /root/.emscripten /emsdk-portable +chmod a+rxw -R /emsdk-portable + # Compile and cache libc source ./emsdk_env.sh echo "main(){}" > a.c HOME=/emsdk-portable/ emcc a.c HOME=/emsdk-portable/ emcc -s WASM=1 a.c rm -f a.* - -# Make emscripten use Rust's LLVM -echo "LLVM_ROOT='/checkout/obj/build/x86_64-unknown-linux-gnu/llvm/bin'" >> /root/.emscripten - -# Make emsdk usable by any user -cp /root/.emscripten /emsdk-portable -chmod a+rxw -R /emsdk-portable - -# node 8 is required to run wasm -cd / -curl -L https://nodejs.org/dist/v8.0.0/node-v8.0.0-linux-x64.tar.xz | \ - tar -xJ |
