@@ -12,14 +12,23 @@ ENV TZ=Asian/Shanghai
1212# hadolint ignore=DL3008
1313RUN apt-get update \
1414 && apt-get install -y apt-transport-https apt-utils build-essential \
15- ca-certificates curl g++-multilib git gnupg \
15+ ca-certificates ccache curl g++-multilib git gnupg \
1616 libgcc-9-dev lib32gcc-9-dev lsb-release \
1717 ninja-build ocaml ocamlbuild python2.7 \
1818 software-properties-common tree tzdata \
1919 unzip valgrind vim wget zip --no-install-recommends \
2020 && apt-get clean -y \
2121 && rm -rf /var/lib/apt/lists/*
2222
23+ #
24+ # binaryen
25+ ARG BINARYEN_VER=111
26+ WORKDIR /opt
27+ RUN wget -c --progress=dot:giga https://github.com/WebAssembly/binaryen/releases/download/version_${BINARYEN_VER}/binaryen-version_${BINARYEN_VER}-x86_64-linux.tar.gz \
28+ && tar xf binaryen-version_${BINARYEN_VER}-x86_64-linux.tar.gz \
29+ && ln -sf /opt/binaryen-version_111 /opt/binaryen \
30+ && rm binaryen-version_${BINARYEN_VER}-x86_64-linux.tar.gz
31+
2332#
2433# CMAKE (https://apt.kitware.com/)
2534SHELL ["/bin/bash" , "-o" , "pipefail" , "-c" ]
@@ -31,55 +40,56 @@ RUN wget --progress=dot:giga -O - https://apt.kitware.com/keys/kitware-archive-l
3140 && apt-get install -y kitware-archive-keyring --no-install-recommends \
3241 && apt-get install -y cmake --no-install-recommends \
3342 && apt-get clean -y \
34- && rm -rf /var/lib/apt/lists/*
43+ && rm -rf /var/lib/apt/lists/*
3544
3645#
3746# install emsdk
3847WORKDIR /opt
3948RUN git clone https://github.com/emscripten-core/emsdk.git
4049
50+ ARG EMSDK_VER=3.0.0
4151WORKDIR /opt/emsdk
4252RUN git pull \
43- && ./emsdk install 2.0.26 \
44- && ./emsdk activate 2.0.26 \
53+ && ./emsdk install ${EMSDK_VER} \
54+ && ./emsdk activate ${EMSDK_VER} \
4555 && echo "source /opt/emsdk/emsdk_env.sh" >> /root/.bashrc
4656
4757#
4858# install wasi-sdk
49- ARG WASI_SDK_VER=16
59+ ARG WASI_SDK_VER=19
5060RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER}/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz -P /opt \
5161 && tar xf /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz -C /opt \
52- && ln -fs /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk \
62+ && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk \
5363 && rm /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz
5464
5565#
5666# install wabt
5767ARG WABT_VER=1.0.29
5868RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/${WABT_VER}/wabt-${WABT_VER}-ubuntu.tar.gz -P /opt \
5969 && tar xf /opt/wabt-${WABT_VER}-ubuntu.tar.gz -C /opt \
60- && ln -fs /opt/wabt-${WABT_VER} /opt/wabt \
70+ && ln -sf /opt/wabt-${WABT_VER} /opt/wabt \
6171 && rm /opt/wabt-${WABT_VER}-ubuntu.tar.gz
6272
6373#
6474# install bazelisk
6575ARG BAZELISK_VER=1.12.0
66- RUN mkdir /opt/bazelisk \
76+ RUN mkdir /opt/bazelisk \
6777 && wget -c --progress=dot:giga https://github.com/bazelbuild/bazelisk/releases/download/v${BAZELISK_VER}/bazelisk-linux-amd64 -P /opt/bazelisk \
6878 && chmod a+x /opt/bazelisk/bazelisk-linux-amd64 \
6979 && ln -fs /opt/bazelisk/bazelisk-linux-amd64 /opt/bazelisk/bazel
7080
7181#
7282# install clang+llvm
83+ ARG LLVM_VER=14
84+ RUN apt-get purge -y clang-10 llvm-10 && apt autoremove -y
7385WORKDIR /etc/apt/apt.conf.d
7486RUN touch 99verfiy-peer.conf \
7587 && echo "Acquire { https::Verify-Peer false }" > 99verfiy-peer.conf
7688
77- WORKDIR /tmp
89+ WORKDIR /tmp
7890RUN wget --progress=dot:giga https://apt.llvm.org/llvm.sh \
7991 && chmod a+x ./llvm.sh \
80- && /tmp/llvm.sh 12 all \
81- && ln -sf /usr/bin/clang-format-12 /usr/bin/clang-format \
82- && rm -rf /tmp/*
92+ && ./llvm.sh ${LLVM_VER} all
8393
8494#
8595# [Optional]
@@ -96,17 +106,28 @@ RUN apt-get update \
96106# Install required python packages
97107# hadolint ignore=DL3013
98108RUN python3 -m pip install --no-cache-dir --upgrade pip \
99- && pip3 install --no-cache-dir --user black nose pycparser pylint
109+ && pip3 install --no-cache-dir black nose pycparser pylint
110+
111+ #
112+ # Install github-cli. It doens't work as a feature of devcontainer.json
113+ RUN cd /tmp \
114+ && wget https://github.com/cli/cli/releases/download/v2.20.2/gh_2.20.2_linux_amd64.deb \
115+ && dpkg -i gh_2.20.2_linux_amd64.deb
100116
101- # set path, PS and clean up
102- ENV PATH "/opt/bazelisk:/opt/clang-llvm/bin:${PATH}"
103- RUN echo "export PATH=/opt/bazelisk:/opt/clang-llvm/bin:${PATH}" >> /root/.bashrc \
104- && printf "%s\n " "PS1='\n [ \u @wamr-dev-docker \W ]\n $ '" >> /root/.bashrc \
117+ #
118+ # Install NodeJS
119+ RUN curl -fsSL https://deb.nodesource.com/setup_19.x | bash -
120+ RUN apt-get install -y nodejs
121+
122+ # set path
123+ ENV PATH="/opt/bazelisk:/usr/lib/llvm-${LLVM_VER}/bin:${PATH}"
124+ ENV CC=/usr/lib/llvm-${LLVM_VER}/bin/clang CXX=/usr/lib/llvm-${LLVM_VER}/bin/clang++
125+ RUN printf "%s\n " "PS1='\n [ \u @wamr-dev-docker \W ]\n $ '" >> /root/.bashrc \
105126 && apt-get autoremove -y \
106127 && apt-get clean -y \
107128 && rm -rf /var/lib/apt/lists/* \
108129 && rm -rf /tmp/*
109130
110131# set workdir when container run
111- VOLUME /workspace
112- WORKDIR /workspace
132+ VOLUME /workspaces
133+ WORKDIR /workspaces
0 commit comments