Dockerfile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. ## Build docker image that consists of gcc, cmake, wasi-sdk & zephyr sdk
  4. FROM gcc:12.2.0 AS BASE
  5. ## set work directory
  6. WORKDIR /root/
  7. COPY resource /root/
  8. # - download cmake with wget and set up
  9. # hadolint ignore=DL3008
  10. RUN apt-get update \
  11. && apt-get -y install ccache ninja-build make cmake python3-pip --no-install-recommends
  12. # set compilation environment for wamrc
  13. # - wamr repo
  14. # - cmake
  15. # - wasi-sdk
  16. # - wamr-sdk
  17. # - download wasi-sdk with wget and set up to /opt/wasi-sdk
  18. RUN wget --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz \
  19. && tar -zxf wasi-sdk-*-linux.tar.gz \
  20. && mv wasi-sdk-19.0 /opt/wasi-sdk/ \
  21. && rm -f wasi-sdk-*-linux.tar.gz
  22. ## - clone wamr repo
  23. RUN git clone -b main --depth=1 https://github.com/bytecodealliance/wasm-micro-runtime.git
  24. WORKDIR /root/wasm-micro-runtime/build-scripts
  25. RUN pip3 install --no-cache-dir --user -r requirements.txt
  26. WORKDIR /root/wasm-micro-runtime/wamr-compiler
  27. RUN ./build_llvm.sh \
  28. && mkdir build
  29. WORKDIR /root/wasm-micro-runtime/wamr-compiler/build
  30. RUN cmake .. \
  31. && make \
  32. # - copy the wamrc to /root
  33. && cp /root/wasm-micro-runtime/wamr-compiler/build/wamrc /root/wamrc \
  34. && mkdir -p /opt/wamr-sdk \
  35. && cp -r /root/wasm-micro-runtime/wamr-sdk/app /opt/wamr-sdk/ \
  36. && mv /root/wamr_toolchain.cmake /opt/wamr-sdk/app \
  37. # - remove the wamr repo to save the size
  38. && rm -fr /root/wasm-micro-runtime
  39. # ## STAGE 2
  40. FROM ubuntu:22.04
  41. ENV HOME_DIR=/home/wasm-toolchain
  42. RUN mkdir -p /opt/wasi-sdk \
  43. && mkdir -p /opt/wamr-sdk/app \
  44. && mkdir -p /home/wasm-toolchain
  45. # COPY files from BASE image
  46. COPY --from=BASE /opt/wamr-sdk/app/ /opt/wamr-sdk/app/
  47. COPY --from=BASE /opt/wasi-sdk /opt/wasi-sdk/
  48. COPY --from=BASE /root/wamrc ${HOME_DIR}
  49. COPY --from=BASE /root/build_wasm.sh ${HOME_DIR}
  50. RUN ln -s ${HOME_DIR}/wamrc /usr/bin/wamrc
  51. # hadolint ignore=DL3008
  52. RUN apt-get update && apt-get install -y cmake make --no-install-recommends \
  53. && apt-get clean -y \
  54. && rm -rf /var/lib/apt/lists/*
  55. WORKDIR ${HOME_DIR}