| FROM ubuntu:22.04 |
| |
| RUN apt-get update -y && apt-get install -y --no-install-recommends \ |
| ca-certificates \ |
| clang \ |
| cmake \ |
| curl \ |
| git \ |
| libc6-dev \ |
| make \ |
| ninja-build \ |
| python-is-python3 \ |
| xz-utils |
| |
| # Install `wasm2wat` |
| RUN git clone --recursive https://github.com/WebAssembly/wabt |
| RUN make -C wabt -j$(nproc) |
| ENV PATH=$PATH:/wabt/bin |
| |
| # Install `wasm-bindgen-test-runner` |
| RUN curl -L https://github.com/rustwasm/wasm-bindgen/releases/download/0.2.87/wasm-bindgen-0.2.87-x86_64-unknown-linux-musl.tar.gz \ |
| | tar xzf - |
| # Keep in sync with the version on Cargo.toml. |
| ENV PATH=$PATH:/wasm-bindgen-0.2.87-x86_64-unknown-linux-musl |
| ENV CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=wasm-bindgen-test-runner |
| |
| # Install `node` |
| RUN curl https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz | tar xJf - |
| ENV PATH=$PATH:/node-v14.16.0-linux-x64/bin |
| |
| # We use a shim linker that removes `--strip-debug` when passed to LLD. While |
| # this typically results in invalid debug information in release mode it doesn't |
| # result in an invalid names section which is what we're interested in. |
| COPY lld-shim.rs / |
| ENV CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_LINKER=/tmp/lld-shim |
| |
| # Rustc isn't available until this container starts, so defer compilation of the |
| # shim. |
| ENTRYPOINT /rust/bin/rustc /lld-shim.rs -o /tmp/lld-shim && exec bash "$@" |