diff --git a/common/common.label-and-env b/common/common.label-and-env index f12de8b..d49b0fb 100644 --- a/common/common.label-and-env +++ b/common/common.label-and-env @@ -11,4 +11,4 @@ LABEL org.label-schema.build-date=$BUILD_DATE \ org.label-schema.vcs-url=$VCS_URL \ org.label-schema.schema-version="1.0" -ENV DEFAULT_DOCKCROSS_IMAGE ${IMAGE}:${VERSION} +ENV DEFAULT_DOCKCROSS_IMAGE=${IMAGE}:${VERSION} diff --git a/common/common.webassembly b/common/common.webassembly index 8151040..91a4159 100644 --- a/common/common.webassembly +++ b/common/common.webassembly @@ -2,8 +2,8 @@ # # Common WebAssembly tools. -# main 2024-04-02 -ENV BINARYEN_GIT_TAG 4e2ebbd6de6f99e5972654b3f50ddbc1c6839a73 +# 2024-12, version 121 +ENV BINARYEN_GIT_TAG=353b759b230dff8fb82aeb157aeb6db360d74a49 RUN git clone --recursive https://github.com/WebAssembly/binaryen.git && \ cd binaryen && \ git checkout ${BINARYEN_GIT_TAG} && \ @@ -14,6 +14,7 @@ RUN git clone --recursive https://github.com/WebAssembly/binaryen.git && \ -DCMAKE_C_COMPILER=/usr/bin/cc \ -DCMAKE_CXX_COMPILER=/usr/bin/c++ \ -G Ninja \ + -DENABLE_WERROR:BOOL=OFF \ -DCMAKE_INSTALL_PREFIX:PATH=/usr \ -DCMAKE_TOOLCHAIN_FILE="" \ ../binaryen && \ @@ -22,8 +23,8 @@ RUN git clone --recursive https://github.com/WebAssembly/binaryen.git && \ cd ../ && \ rm -rf binaryen* -# main 2024-04-02 -ENV WABT_GIT_TAG 356931a867c7d642bc282fff46a1c95ab0e843f3 +# main 2024-12-23 +ENV WABT_GIT_TAG=ea193b40d6d4a1a697d68ae855b2b3b3e263b377 RUN git clone --recurse-submodules https://github.com/WebAssembly/wabt.git && \ cd wabt && \ git checkout ${WABT_GIT_TAG} && \ @@ -44,11 +45,11 @@ RUN git clone --recurse-submodules https://github.com/WebAssembly/wabt.git && \ RUN mkdir /wasi-runtimes -ENV WASMTIME_HOME /wasi-runtimes/wasmtime +ENV WASMTIME_HOME=/wasi-runtimes/wasmtime RUN mkdir ${WASMTIME_HOME} && curl https://wasmtime.dev/install.sh -sSf | bash COPY imagefiles/wasmtime-pwd.sh ${WASMTIME_HOME}/bin/ COPY imagefiles/wasmtime-pwd-threads.sh ${WASMTIME_HOME}/bin/ -ENV PATH "$WASMTIME_HOME/bin:$PATH" +ENV PATH="$WASMTIME_HOME/bin:$PATH" # For wasmer RUN \ @@ -56,20 +57,20 @@ RUN \ apt-get install --no-install-recommends --yes \ libxkbcommon0 -ENV WASMER_DIR /wasi-runtimes/wasmer +ENV WASMER_DIR=/wasi-runtimes/wasmer RUN curl https://get.wasmer.io -sSfL | sh COPY imagefiles/wasmer-pwd.sh ${WASMER_DIR}/bin/ -ENV PATH "$WASMER_DIR/bin:$PATH" +ENV PATH="$WASMER_DIR/bin:$PATH" -ENV WASM3_VERSION 0.5.0 +ENV WASM3_VERSION=0.5.0 RUN mkdir -p /wasi-runtimes/wasm3/bin && \ curl -LO https://github.com/wasm3/wasm3/releases/download/v${WASM3_VERSION}/wasm3-linux-x64.elf && \ mv wasm3-linux-x64.elf /wasi-runtimes/wasm3/bin/wasm3 && \ chmod +x /wasi-runtimes/wasm3/bin/wasm3 -ENV PATH "/wasi-runtimes/wasm3/bin:$PATH" +ENV PATH="/wasi-runtimes/wasm3/bin:$PATH" -ENV WAVM_VERSION 2022-05-14 +ENV WAVM_VERSION=2022-05-14 RUN mkdir -p /wasi-runtimes/wavm/ && \ curl -LO https://github.com/WAVM/WAVM/releases/download/nightly%2F${WAVM_VERSION}/wavm-0.0.0-prerelease-linux.tar.gz && \ tar -xv -C /wasi-runtimes/wavm/ -f wavm-0.0.0-prerelease-linux.tar.gz -ENV PATH "/wasi-runtimes/wavm/bin:$PATH" +ENV PATH="/wasi-runtimes/wavm/bin:$PATH" diff --git a/web-wasi-threads/Toolchain.cmake b/web-wasi-threads/Toolchain.cmake index f43dae5..53985b4 100644 --- a/web-wasi-threads/Toolchain.cmake +++ b/web-wasi-threads/Toolchain.cmake @@ -6,12 +6,5 @@ set(CMAKE_SYSROOT $ENV{WASI_SYSROOT}) set(CMAKE_C_COMPILER /usr/local/bin/clang-wasi-sysroot.sh) set(CMAKE_CXX_COMPILER /usr/local/bin/clang++-wasi-sysroot.sh) -set(CMAKE_AR llvm-ar-$ENV{LLVM_VERSION}) -set(CMAKE_RANLIB llvm-ranlib-$ENV{LLVM_VERSION}) -set(CMAKE_ASM_COMPILER clang-$ENV{LLVM_VERSION}) - -set(CMAKE_C_COMPILER_TARGET $ENV{CROSS_TRIPLE}) -set(CMAKE_CXX_COMPILER_TARGET $ENV{CROSS_TRIPLE}) -set(CMAKE_ASM_COMPILER_TARGET $ENV{CROSS_TRIPLE}) set(CMAKE_CROSSCOMPILING_EMULATOR /wasi-runtimes/wasmtime/bin/wasmtime-pwd-threads.sh) diff --git a/web-wasi/Dockerfile.in b/web-wasi/Dockerfile.in index e52a138..df9d477 100644 --- a/web-wasi/Dockerfile.in +++ b/web-wasi/Dockerfile.in @@ -3,44 +3,25 @@ FROM ${ORG}/base:latest LABEL maintainer="Matt McCormick matt@mmmccormick.com" -ENV LLVM_VERSION 18 +ENV LLVM_VERSION=19 +ENV WASI_VERSION=25 +ENV WASI_VERSION_FULL=${WASI_VERSION}.0 -# Build LLVM / Clang that supports our glibc -RUN apt-get update && \ - # Temporarily install to setup apt repositories - apt-get install -y && \ -\ - curl -sS https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor > /etc/apt/trusted.gpg.d/llvm.gpg && \ - echo "deb [signed-by=/etc/apt/trusted.gpg.d/llvm.gpg] http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list && \ - echo "deb-src [signed-by=/etc/apt/trusted.gpg.d/llvm.gpg] http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${LLVM_VERSION} main" >> /etc/apt/sources.list.d/llvm.list && \ -\ - apt-get update && \ - apt-get install -y clang-${LLVM_VERSION} lld-${LLVM_VERSION} && \ - rm -rf /var/lib/apt/lists/* +COPY download-install-wasi-sdk.sh /usr/local/bin/ +RUN /usr/local/bin/download-install-wasi-sdk.sh -ENV WASI_VERSION 22 -ENV WASI_VERSION_FULL ${WASI_VERSION}.0 -RUN cd /usr/ && \ - curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz && \ - tar xvzf wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz && \ - rm wasi-sdk-${WASI_VERSION_FULL}-linux.tar.gz -RUN cd /usr/ && \ - curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ - tar xvzf libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ - rm libclang_rt.builtins-wasm32-wasi-${WASI_VERSION_FULL}.tar.gz && \ - cp -r lib/wasi /usr/lib/llvm-${LLVM_VERSION}/lib/clang/${LLVM_VERSION}/lib/ -ENV WASI_SYSROOT /usr/wasi-sdk-${WASI_VERSION_FULL}/share/wasi-sysroot -ENV WASI_SDK_PATH /usr/wasi-sdk-${WASI_VERSION_FULL} +ENV WASI_SYSROOT=/opt/wasi-sdk/share/wasi-sysroot +ENV WASI_SDK_PATH=/opt/wasi-sdk COPY clang-wasi-sysroot.sh clang++-wasi-sysroot.sh /usr/local/bin/ ENV CROSS_TRIPLE=wasm32-wasi ENV CROSS_ROOT=${WASI_SDK_PATH} -ENV AR=llvm-ar-${LLVM_VERSION} \ +ENV AR=${WASI_SDK_PATH}/bin/llvm-ar \ CC=clang-wasi-sysroot.sh \ CXX=clang++-wasi-sysroot.sh \ - LD=wasm-ld-${LLVM_VERSION} \ - RANLIB=llvm-ranlib-${LLVM_VERSION} + LD=${WASI_SDK_PATH}/bin/wasm-ld \ + RANLIB=${WASI_SDK_PATH}/bin/llvm-ranlib #include "common.webassembly" @@ -51,6 +32,6 @@ RUN mv /usr/src/*.cmake /usr/share/cmake-*/Modules/ COPY CheckTypeSize.c.in /usr/src/ RUN mv /usr/src/CheckTypeSize.c.in /usr/share/cmake-*/Modules/ COPY Toolchain.cmake ${CROSS_ROOT}/ -ENV CMAKE_TOOLCHAIN_FILE ${CROSS_ROOT}/Toolchain.cmake +ENV CMAKE_TOOLCHAIN_FILE=${CROSS_ROOT}/Toolchain.cmake #include "common.label-and-env" diff --git a/web-wasi/Toolchain.cmake b/web-wasi/Toolchain.cmake index 4aa9fd8..25480cf 100644 --- a/web-wasi/Toolchain.cmake +++ b/web-wasi/Toolchain.cmake @@ -6,12 +6,5 @@ set(CMAKE_SYSROOT $ENV{WASI_SYSROOT}) set(CMAKE_C_COMPILER /usr/local/bin/clang-wasi-sysroot.sh) set(CMAKE_CXX_COMPILER /usr/local/bin/clang++-wasi-sysroot.sh) -set(CMAKE_AR llvm-ar-$ENV{LLVM_VERSION}) -set(CMAKE_RANLIB llvm-ranlib-$ENV{LLVM_VERSION}) -set(CMAKE_ASM_COMPILER clang-$ENV{LLVM_VERSION}) - -set(CMAKE_C_COMPILER_TARGET $ENV{CROSS_TRIPLE}) -set(CMAKE_CXX_COMPILER_TARGET $ENV{CROSS_TRIPLE}) -set(CMAKE_ASM_COMPILER_TARGET $ENV{CROSS_TRIPLE}) set(CMAKE_CROSSCOMPILING_EMULATOR /wasi-runtimes/wasmtime/bin/wasmtime-pwd.sh) diff --git a/web-wasi/clang++-wasi-sysroot.sh b/web-wasi/clang++-wasi-sysroot.sh index 184be5e..4102cdd 100755 --- a/web-wasi/clang++-wasi-sysroot.sh +++ b/web-wasi/clang++-wasi-sysroot.sh @@ -1,3 +1,3 @@ #!/usr/bin/env sh -exec clang++-${LLVM_VERSION} --target=wasm32-wasi --sysroot=${WASI_SYSROOT} "$@" +exec ${WASI_SDK_PATH}/bin/clang++ --target=wasm32-wasi --sysroot=${WASI_SYSROOT} "$@" diff --git a/web-wasi/clang-wasi-sysroot.sh b/web-wasi/clang-wasi-sysroot.sh index ecd86fb..fc3fb69 100755 --- a/web-wasi/clang-wasi-sysroot.sh +++ b/web-wasi/clang-wasi-sysroot.sh @@ -1,3 +1,3 @@ #!/usr/bin/env sh -exec clang-${LLVM_VERSION} --target=wasm32-wasi --sysroot=${WASI_SYSROOT} "$@" +exec ${WASI_SDK_PATH}/bin/clang --target=wasm32-wasi --sysroot=${WASI_SYSROOT} "$@" diff --git a/web-wasi/download-install-wasi-sdk.sh b/web-wasi/download-install-wasi-sdk.sh new file mode 100755 index 0000000..e9d5f3a --- /dev/null +++ b/web-wasi/download-install-wasi-sdk.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -eox pipefail + +mkdir /tmp/dl +cd /tmp/dl + +curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-arm64-linux.deb && \ +curl -L -O https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_VERSION}/wasi-sdk-${WASI_VERSION_FULL}-x86_64-linux.deb && \ + +case `dpkg --print-architecture` in + amd64) dpkg -i wasi-sdk-*-x86_64-linux.deb ;; + arm64) dpkg -i wasi-sdk-*-arm64-linux.deb ;; + *) exit 1 ;; +esac + +cd /tmp/ +rm -rf /tmp/dl \ No newline at end of file