builder-webassembly/Dockerfile

44 lines
1.9 KiB
Docker

# SPDX-FileCopyrightText: 2023 - 2024 Daniel Wolf <nephatrine@gmail.com>
#
# SPDX-License-Identifier: ISC
# hadolint ignore=DL3007
FROM code.nephatrine.net/nephnet/nxb-debian:latest
LABEL maintainer="Daniel Wolf <nephatrine@gmail.com>"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV EMSCRIPTEN_PATH=/opt/emsdk
ARG EMSCRIPTEN_VERSION=3.1.56
RUN git -C /opt clone -b "$EMSCRIPTEN_VERSION" --single-branch --depth=1 https://github.com/emscripten-core/emsdk.git
WORKDIR /opt/emsdk
# hadolint ignore=SC1091
RUN ./emsdk install "${EMSCRIPTEN_VERSION}" --shallow --generator=Ninja \
&& ./emsdk activate "${EMSCRIPTEN_VERSION}" \
&& . ./emsdk_env.sh \
&& embuilder build SYSTEM --pic --lto \
&& rm -rf /tmp/* /var/tmp/*
ENV PATH=${EMSCRIPTEN_PATH}:${EMSCRIPTEN_PATH}/upstream/emscripten:$PATH
ARG WASI_VERSION=21
WORKDIR /opt
# hadolint ignore=SC2010
RUN curl https://wasmtime.dev/install.sh -sSf | bash \
&& curl -LO "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION}.0-linux.tar.gz" \
&& tar -xvzf "wasi-sdk-${WASI_VERSION}.0-linux.tar.gz" \
&& mv "wasi-sdk-${WASI_VERSION}.0" wasi-sdk \
&& cp -nrvs /opt/wasi-sdk/share/cmake/Platform/. "/usr/share/$(ls /usr/share/ | grep -E 'cmake-[0-9]' | tail -1)/Modules/Platform/" \
&& rm -rf /tmp/* /var/tmp/* "/opt/wasi-sdk-${WASI_VERSION}.0-linux.tar.gz"
ENV WASI_SDK_PREFIX=/opt/wasi-sdk WASMTIME_HOME=/root/.wasmtime
ENV PATH=${WASMTIME_HOME}/bin:$PATH
COPY override /
# hadolint ignore=DL3003
RUN git -C "${HOME}" clone --single-branch --depth=1 https://code.nephatrine.net/nephatrine/hello-test.git \
&& mkdir /tmp/build-emscripten && cd /tmp/build-emscripten \
&& nxbuild-emscripten -GNinja "${HOME}/hello-test" \
&& ninja && node HelloTest \
&& mkdir /tmp/build-wasi && cd /tmp/build-wasi \
&& nxbuild-wasi -GNinja "${HOME}/hello-test" \
&& ninja && wasmtime HelloTest \
&& cd .. && rm -rf /tmp/* /var/tmp/* "${HOME}/hello-test"