33
44# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/cpp/.devcontainer/base.Dockerfile
55# [Choice] Debian / Ubuntu version (use Debian 12/11/9, Ubuntu 18.04/21.04 on local arm64/Apple Silicon): debian-12, debian-11, debian-10, debian-9, ubuntu-21.04, ubuntu-20.04, ubuntu-18.04
6- ARG VARIANT=debian-12
7- FROM mcr.microsoft.com/vscode/ devcontainers/cpp :${VARIANT}
6+ ARG VARIANT=jammy
7+ FROM mcr.microsoft.com/devcontainers/base :${VARIANT}
88
99ARG DEBIAN_FRONTEND=noninteractive
1010ENV TZ=Asian/Shanghai
@@ -13,13 +13,11 @@ ENV TZ=Asian/Shanghai
1313RUN apt-get update \
1414 && apt-get upgrade -y \
1515 && apt-get install -y apt-transport-https apt-utils build-essential \
16- ca-certificates ccache cmake curl g++-multilib git gnupg \
17- libgcc-12-dev lib32gcc-12-dev lsb-release \
18- ninja-build ocaml ocamlbuild \
16+ ca-certificates ccache clang curl g++-multilib git gnupg \
17+ libgcc-12-dev lib32gcc-12-dev libstdc++-12-dev lsb-release llvm \
18+ ninja-build opam ocaml ocamlbuild \
1919 software-properties-common tree tzdata \
20- unzip valgrind vim wget zip --no-install-recommends \
21- && apt-get clean -y \
22- && rm -rf /var/lib/apt/lists/*
20+ unzip valgrind vim wget zip --no-install-recommends
2321
2422#
2523# binaryen
@@ -36,12 +34,12 @@ SHELL ["/bin/bash", "-o", "pipefail", "-c"]
3634# hadolint ignore=DL3008
3735ARG CMAKE_VER=3.27.0
3836RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VER}/cmake-${CMAKE_VER}-Linux-x86_64.sh \
39- -q -O /tmp/cmake-install.sh \
40- && chmod u+x /tmp/cmake-install.sh \
41- && mkdir /opt/cmake-${CMAKE_VER} \
42- && /tmp/cmake-install.sh --skip-license --prefix=/opt/cmake-${CMAKE_VER} \
43- && rm /tmp/cmake-install.sh \
44- && ln -s /opt/cmake-${CMAKE_VER}/bin/* /usr/local/bin
37+ -q -O /tmp/cmake-install.sh \
38+ && chmod u+x /tmp/cmake-install.sh \
39+ && mkdir /opt/cmake-${CMAKE_VER} \
40+ && /tmp/cmake-install.sh --skip-license --prefix=/opt/cmake-${CMAKE_VER} \
41+ && rm /tmp/cmake-install.sh \
42+ && ln -s /opt/cmake-${CMAKE_VER}/bin/* /usr/local/bin
4543
4644#
4745# install emsdk
@@ -57,19 +55,19 @@ RUN git pull \
5755
5856#
5957# install wasi-sdk
60- ARG WASI_SDK_VER=20
58+ ARG WASI_SDK_VER=21
6159RUN 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 \
6260 && tar xf /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz -C /opt \
6361 && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk \
6462 && rm /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz
6563
6664#
6765# install wabt
68- ARG WABT_VER=1.0.33
69- RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/${WABT_VER}/wabt-${WABT_VER}-ubuntu.tar.gz -P /opt \
70- && tar xf /opt/wabt-${WABT_VER}-ubuntu.tar.gz -C /opt \
66+ ARG WABT_VER=1.0.34
67+ RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/${WABT_VER}/wabt-${WABT_VER}-ubuntu-20.04 .tar.gz -P /opt \
68+ && tar xf /opt/wabt-${WABT_VER}-ubuntu-20.04 .tar.gz -C /opt \
7169 && ln -sf /opt/wabt-${WABT_VER} /opt/wabt \
72- && rm /opt/wabt-${WABT_VER}-ubuntu.tar.gz
70+ && rm /opt/wabt-${WABT_VER}-ubuntu-20.04 .tar.gz
7371
7472#
7573# install bazelisk
@@ -81,47 +79,18 @@ RUN mkdir /opt/bazelisk \
8179
8280#
8381# install clang+llvm
84- ARG LLVM_VER=16
85- RUN apt-get purge -y clang-14 llvm-14 && apt-get autoremove -y
86- WORKDIR /etc/apt/apt.conf.d
87- RUN touch 99verfiy-peer.conf \
88- && echo "Acquire { https::Verify-Peer false }" > 99verfiy-peer.conf
89-
90- WORKDIR /tmp
91- # RUN wget --progress=dot:giga https://apt.llvm.org/llvm.sh \
92- # && chmod a+x ./llvm.sh \
93- # && ./llvm.sh ${LLVM_VER} all
94-
95- # Workaround due to https://github.com/llvm/llvm-project/issues/62475
96- # hadolint ignore=DL3008
97- RUN set -ex \
98- && echo "deb http://apt.llvm.org/bookworm/ llvm-toolchain-bookworm-${LLVM_VER} main" > /etc/apt/sources.list.d/apt.llvm.org.list \
99- && wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc \
100- && apt-get update \
101- && apt-get install -y \
102- clang-${LLVM_VER} lldb-${LLVM_VER} lld-${LLVM_VER} clangd-${LLVM_VER} clang-tidy-${LLVM_VER} clang-format-${LLVM_VER} clang-tools-${LLVM_VER} \
103- llvm-${LLVM_VER}-dev lld-${LLVM_VER} lldb-${LLVM_VER} llvm-${LLVM_VER}-tools libomp-${LLVM_VER}-dev libc++-${LLVM_VER}-dev libc++abi-${LLVM_VER}-dev \
104- libclang-common-${LLVM_VER}-dev libclang-${LLVM_VER}-dev libclang-cpp${LLVM_VER}-dev libunwind-${LLVM_VER}-dev \
105- libclang-rt-${LLVM_VER}-dev libpolly-${LLVM_VER}-dev --no-install-recommends \
106- && apt-get clean -y \
107- && rm -rf /var/lib/apt/lists/*
108-
109- #
110- # [Optional]
82+ ARG LLVM_VER=15.0.6
83+ RUN wget https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VER}/clang+llvm-${LLVM_VER}-x86_64-linux-gnu-ubuntu-18.04.tar.xz
84+ RUN tar -xvf clang+llvm-${LLVM_VER}-x86_64-linux-gnu-ubuntu-18.04.tar.xz \
85+ && mv clang+llvm-${LLVM_VER}-x86_64-linux-gnu-ubuntu-18.04 llvm-${LLVM_VER} \
86+ && rm clang+llvm-${LLVM_VER}-x86_64-linux-gnu-ubuntu-18.04.tar.xz
11187
11288#
11389# Install pip
11490# hadolint ignore=DL3008
11591RUN apt-get update \
11692 && apt-get install -y --reinstall python3-venv python3-pip --no-install-recommends \
117- && apt-get clean -y \
118- && rm -rf /var/lib/apt/lists/*
119-
120- #
121- # Install required python packages
122- # hadolint ignore=DL3013
123- RUN python3 -m pip install --no-cache-dir --break-system-packages --upgrade pip \
124- && pip3 install --no-cache-dir --break-system-packages black nose pycparser pylint
93+ && pip install --no-cache-dir --upgrade pip
12594
12695#
12796# Install github-cli. It doens't work as a feature of devcontainer.json
@@ -132,19 +101,63 @@ RUN wget -q https://github.com/cli/cli/releases/download/v${GH_CLI_VER}/gh_${GH_
132101
133102#
134103# Install NodeJS
135- RUN wget -qO- https://deb.nodesource.com/setup_20.x | bash -
136- # hadolint ignore=DL3008
137- RUN apt-get install -y nodejs --no-install-recommends
104+ # RUN wget -qO- https://deb.nodesource.com/setup_20.x | bash -
105+ # # hadolint ignore=DL3008
106+ # RUN apt-get install -y nodejs --no-install-recommends
107+
108+ #
109+ # SGX setup
110+ RUN mkdir -p /opt/intel
111+
112+ WORKDIR /opt/intel
113+ RUN wget -q https://download.01.org/intel-sgx/sgx-linux/2.21/distro/ubuntu22.04-server/sgx_linux_x64_sdk_2.21.100.1.bin \
114+ && chmod +x sgx_linux_x64_sdk_2.21.100.1.bin
115+ RUN echo 'yes' | ./sgx_linux_x64_sdk_2.21.100.1.bin
116+ RUN source /opt/intel/sgxsdk/environment
117+
118+ RUN echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu jammy main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list \
119+ && wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
120+
121+ RUN apt update \
122+ && apt install -y libsgx-launch libsgx-urts
123+
124+ #
125+ # Install wasm-tools from binary releasing
126+ ARG WASM_TOOLS_VER=1.201.0
127+ WORKDIR /opt
128+ RUN wget -c --progress=dot:giga https://github.com/bytecodealliance/wasm-tools/releases/download/v${WASM_TOOLS_VER}/wasm-tools-${WASM_TOOLS_VER}-x86_64-linux.tar.gz
129+ RUN tar xzf wasm-tools-${WASM_TOOLS_VER}-x86_64-linux.tar.gz \
130+ && rm wasm-tools-${WASM_TOOLS_VER}-x86_64-linux.tar.gz \
131+ && ln -sf /opt/wasm-tools-${WASM_TOOLS_VER}-x86_64-linux/wasm-tools /usr/bin/wasm-tools
132+
133+ #
134+ # Install wit-bindgen
135+ ARG WIT_BINDGEN_VER=0.21.0
136+ WORKDIR /opt
137+ RUN wget -c --progress=dot:giga https://github.com/bytecodealliance/wit-bindgen/releases/download/v${WIT_BINDGEN_VER}/wit-bindgen-${WIT_BINDGEN_VER}-x86_64-linux.tar.gz
138+ RUN tar xzf wit-bindgen-${WIT_BINDGEN_VER}-x86_64-linux.tar.gz \
139+ && rm wit-bindgen-${WIT_BINDGEN_VER}-x86_64-linux.tar.gz
140+
141+ #
142+ # Install perf
143+ ARG KERNEL_VER=5.15.0-97
144+ RUN apt update \
145+ && apt-get install -y linux-tools-generic linux-tools-${KERNEL_VER}-generic \
146+ && apt-get install -y linux-headers-${KERNEL_VER}
147+
148+ #
149+ # Install extra clang tools and lldb
150+ RUN apt update \
151+ && apt install -y clang-tools clang-tidy clang-format clangd \
152+ && apt install -y lldb python3-lldb
138153
139154# set path
140- ENV PATH="/opt/bazelisk:/usr/lib/llvm-${LLVM_VER}/bin:${PATH}"
141- ENV CC=/usr/lib/llvm-${LLVM_VER}/bin/clang CXX=/usr/lib/llvm-${LLVM_VER}/bin/clang++
142- RUN printf "%s\n " "PS1='\n [ \u @wamr-dev-docker \W ]\n $ '" >> /root/.bashrc \
143- && apt-get autoremove -y \
155+ ENV PATH="/home/vscode/.opam/default/bin:/opt/bazelisk:/usr/lib/llvm-${LLVM_VER}/bin:${PATH}"
156+ # clean
157+ RUN apt-get autoremove -y \
144158 && apt-get clean -y \
145159 && rm -rf /var/lib/apt/lists/* \
146160 && rm -rf /tmp/*
147161
148162# set workdir when container run
149- VOLUME /workspaces
150163WORKDIR /workspaces
0 commit comments