-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathemscripten.Dockerfile
73 lines (65 loc) · 2.63 KB
/
emscripten.Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# syntax=docker/dockerfile:1
# SPDX-License-Identifier: Apache-2.0 OR MIT
ARG UBUNTU_VERSION=20.04
# https://github.com/rust-lang/rust/blob/1.84.0/src/ci/docker/scripts/emscripten.sh
# NB: When updating this, the reminder to update emscripten version in README.md.
ARG EMSCRIPTEN_VERSION=3.1.68
ARG HOST_SUFFIX=''
ARG NODE_VERSION=18.20.3
FROM emscripten/emsdk:"${EMSCRIPTEN_VERSION}${HOST_SUFFIX}" AS emsdk
FROM ghcr.io/taiki-e/build-base:ubuntu-"${UBUNTU_VERSION}" AS builder
SHELL ["/bin/bash", "-CeEuxo", "pipefail", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ARG RUST_TARGET
ARG TOOLCHAIN_DIR="/${RUST_TARGET}"
ARG SYSROOT_DIR="${TOOLCHAIN_DIR}/${RUST_TARGET}"
COPY --from=emsdk /emsdk "${TOOLCHAIN_DIR}"
FROM ghcr.io/taiki-e/build-base:ubuntu-"${UBUNTU_VERSION}" AS test-base
SHELL ["/bin/bash", "-CeEuxo", "pipefail", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
COPY /test-base.sh /
RUN /test-base.sh
RUN apt-get -o Acquire::Retries=10 -qq update && apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends \
libxml2 \
python3
ARG RUST_TARGET
COPY /test-base /test-base
RUN /test-base/target.sh
COPY /test /test
FROM test-base AS test-relocated
SHELL ["/bin/bash", "-CeEuxo", "pipefail", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ARG RUST_TARGET
ARG NODE_VERSION
ENV EMSDK="/usr/local/${RUST_TARGET}"
ENV EM_CACHE="${EMSDK}/upstream/emscripten/cache"
ENV EMSDK_NODE="${EMSDK}/node/${NODE_VERSION}_64bit/bin/node"
ENV PATH="${EMSDK}:${EMSDK}/upstream/emscripten:${EMSDK}/node/${NODE_VERSION}_64bit/bin:$PATH"
# Note: `/"${RUST_TARGET}"/. /usr/local/` doesn't work
COPY --from=builder /"${RUST_TARGET}" /usr/local/"${RUST_TARGET}"
RUN /test/test.sh emcc
RUN touch -- /DONE
FROM test-base AS test
SHELL ["/bin/bash", "-CeEuxo", "pipefail", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ARG RUST_TARGET
ARG NODE_VERSION
ENV EMSDK="/${RUST_TARGET}"
ENV EM_CACHE="${EMSDK}/upstream/emscripten/cache"
ENV EMSDK_NODE="${EMSDK}/node/${NODE_VERSION}_64bit/bin/node"
ENV PATH="${EMSDK}:${EMSDK}/upstream/emscripten:${EMSDK}/node/${NODE_VERSION}_64bit/bin:$PATH"
COPY --from=builder /"${RUST_TARGET}" /"${RUST_TARGET}"
RUN /test/check.sh
RUN /test/test.sh emcc
RUN node --version
# COPY --from=test-relocated /DONE /
FROM ubuntu:"${UBUNTU_VERSION}" AS final
SHELL ["/bin/bash", "-CeEuxo", "pipefail", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ARG RUST_TARGET
COPY --from=test /"${RUST_TARGET}" /"${RUST_TARGET}"
ARG NODE_VERSION
ENV EMSDK="/${RUST_TARGET}"
ENV EM_CACHE="${EMSDK}/upstream/emscripten/cache"
ENV EMSDK_NODE="${EMSDK}/node/${NODE_VERSION}_64bit/bin/node"
ENV PATH="${EMSDK}:${EMSDK}/upstream/emscripten:${EMSDK}/node/${NODE_VERSION}_64bit/bin:$PATH"