Dockerfile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. FROM ubuntu:18.04 as builder
  2. RUN apt update \
  3. && apt install -y lsb-release software-properties-common build-essential \
  4. wget curl git tree zip unzip
  5. #
  6. # install clang and llvm
  7. # COPY llvm.sh /tmp
  8. # RUN apt update \
  9. # && apt install -y lsb-release wget software-properties-common build-essential \
  10. # && cd /tmp \
  11. # && chmod a+x llvm.sh \
  12. # && ./llvm.sh 11
  13. ARG WASI_SDK_VER=12
  14. ARG WABT_VER=1.0.20
  15. ARG CMAKE_VER=3.16.2
  16. ARG BINARYEN_VER=version_97
  17. #
  18. # install wasi-sdk
  19. ARG WASI_SDK_FILE="wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz"
  20. COPY ${WASI_SDK_FILE} /opt
  21. RUN cd /opt \
  22. && tar zxf ${WASI_SDK_FILE} \
  23. && rm ${WASI_SDK_FILE} \
  24. && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk
  25. #
  26. # install wabt
  27. ARG WABT_FILE="wabt-${WABT_VER}-ubuntu.tar.gz"
  28. COPY ${WABT_FILE} /opt
  29. RUN cd /opt \
  30. && tar zxf ${WABT_FILE} \
  31. && rm ${WABT_FILE} \
  32. && ln -sf /opt/wabt-${WABT_VER} /opt/wabt
  33. #
  34. # install cmake
  35. ARG CMAKE_FILE="cmake-${CMAKE_VER}-Linux-x86_64.sh"
  36. COPY ${CMAKE_FILE} /tmp
  37. RUN cd /tmp \
  38. && chmod a+x ${CMAKE_FILE} \
  39. && mkdir /opt/cmake \
  40. && ./${CMAKE_FILE} --prefix=/opt/cmake --skip-license \
  41. && ln -sf /opt/cmake/bin/cmake /usr/local/bin/cmake
  42. #
  43. # install emsdk
  44. RUN cd /opt \
  45. && git clone https://github.com/emscripten-core/emsdk.git \
  46. && cd emsdk \
  47. && git pull \
  48. && ./emsdk install latest \
  49. && ./emsdk activate latest \
  50. && echo "source /opt/emsdk/emsdk_env.sh" >> /root/.bashrc
  51. #
  52. # install binaryen
  53. ARG BINARYEN_FILE="binaryen-${BINARYEN_VER}-x86_64-linux.tar.gz"
  54. COPY ${BINARYEN_FILE} /opt
  55. RUN cd /opt \
  56. && tar zxf ${BINARYEN_FILE} \
  57. && rm ${BINARYEN_FILE} \
  58. && ln -sf /opt/binaryen-${BINARYEN_VER} /opt/binaryen
  59. #
  60. # install bazelisk
  61. ARG BAZEL_FILE="bazelisk-linux-amd64"
  62. COPY ${BAZEL_FILE} /opt/bazelisk/bin/bazelisk
  63. RUN cd /opt/bazelisk/bin/ \
  64. && chmod a+x bazelisk \
  65. && ln -sf /opt/bazelisk/bin/bazelisk /usr/local/bin/bazel
  66. #
  67. # Clean up
  68. RUN apt-get autoremove -y \
  69. && apt-get clean -y \
  70. && rm -rf /var/lib/apt/lists/* \
  71. && rm -rf /tmp/*
  72. VOLUME /data
  73. #
  74. #
  75. RUN touch /build.sh \
  76. && echo "\
  77. #!/bin/bash \n\
  78. if [[ -d /data/project/build ]]; then \n\
  79. rm -r /data/project/build \n\
  80. fi \n\
  81. mkdir /data/project/build \n\
  82. cd /data/project/build \n\
  83. source /opt/emsdk/emsdk_env.sh \n\
  84. cmake .. \n\
  85. make \n\
  86. cd - > /dev/null" > /build.sh \
  87. && chmod a+x /build.sh