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