|
1 | 1 | # Copyright (C) 2019 Intel Corporation. All rights reserved. |
2 | 2 | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
3 | 3 |
|
4 | | -# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/cpp/.devcontainer/base.Dockerfile |
5 | | -# [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 |
| 4 | +# hadolint global ignore=DL3008,DL3009 |
| 5 | + |
6 | 6 | ARG VARIANT=debian-12 |
7 | | -FROM mcr.microsoft.com/vscode/devcontainers/cpp:${VARIANT} |
| 7 | +FROM mcr.microsoft.com/devcontainers/cpp:${VARIANT} |
8 | 8 |
|
9 | 9 | ARG DEBIAN_FRONTEND=noninteractive |
10 | | -ENV TZ=Asian/Shanghai |
| 10 | +ENV TZ=Asia/Shanghai |
11 | 11 |
|
12 | | -# hadolint ignore=DL3008 |
13 | 12 | RUN apt-get update \ |
14 | | - && apt-get upgrade -y \ |
15 | | - && 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 \ |
19 | | - 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/* |
23 | | - |
24 | | -# |
25 | | -# binaryen |
26 | | -ARG BINARYEN_VER=114 |
27 | | -WORKDIR /opt |
28 | | -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 \ |
29 | | - && tar xf binaryen-version_${BINARYEN_VER}-x86_64-linux.tar.gz \ |
30 | | - && ln -sf /opt/binaryen-version_${BINARYEN_VER} /opt/binaryen \ |
31 | | - && rm binaryen-version_${BINARYEN_VER}-x86_64-linux.tar.gz |
32 | | - |
33 | | -# |
34 | | -# CMAKE (https://apt.kitware.com/) |
35 | | -SHELL ["/bin/bash", "-o", "pipefail", "-c"] |
36 | | -# hadolint ignore=DL3008 |
37 | | -ARG CMAKE_VER=3.27.0 |
38 | | -RUN 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 |
45 | | - |
46 | | -# |
47 | | -# install emsdk |
48 | | -WORKDIR /opt |
49 | | -RUN git clone https://github.com/emscripten-core/emsdk.git |
50 | | - |
51 | | -ARG EMSDK_VER=3.1.43 |
52 | | -WORKDIR /opt/emsdk |
53 | | -RUN git pull \ |
54 | | - && ./emsdk install ${EMSDK_VER} \ |
55 | | - && ./emsdk activate ${EMSDK_VER} \ |
56 | | - && echo "source /opt/emsdk/emsdk_env.sh" >> /root/.bashrc |
57 | | - |
58 | | -# |
59 | | -# install wasi-sdk |
60 | | -ARG WASI_SDK_VER=20 |
61 | | -RUN 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 \ |
62 | | - && tar xf /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz -C /opt \ |
63 | | - && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk \ |
64 | | - && rm /opt/wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz |
65 | | - |
66 | | -# |
67 | | -#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 \ |
71 | | - && ln -sf /opt/wabt-${WABT_VER} /opt/wabt \ |
72 | | - && rm /opt/wabt-${WABT_VER}-ubuntu.tar.gz |
| 13 | + && apt-get upgrade -y |
73 | 14 |
|
74 | | -# |
75 | | -# install bazelisk |
76 | | -ARG BAZELISK_VER=1.17.0 |
77 | | -RUN mkdir /opt/bazelisk \ |
78 | | - && wget -c --progress=dot:giga https://github.com/bazelbuild/bazelisk/releases/download/v${BAZELISK_VER}/bazelisk-linux-amd64 -P /opt/bazelisk \ |
79 | | - && chmod a+x /opt/bazelisk/bazelisk-linux-amd64 \ |
80 | | - && ln -fs /opt/bazelisk/bazelisk-linux-amd64 /opt/bazelisk/bazel |
81 | | - |
82 | | -# |
83 | | -# 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] |
111 | | - |
112 | | -# |
113 | | -# Install pip |
114 | | -# hadolint ignore=DL3008 |
115 | 15 | RUN apt-get update \ |
116 | | - && apt-get install -y --reinstall python3-venv python3-pip --no-install-recommends \ |
117 | | - && apt-get clean -y \ |
118 | | - && rm -rf /var/lib/apt/lists/* |
| 16 | + && apt-get install -y apt-transport-https apt-utils build-essential \ |
| 17 | + ca-certificates ccache clang-format-14 curl file g++-multilib git gnupg \ |
| 18 | + libgcc-12-dev lib32gcc-12-dev libzstd-dev lsb-release \ |
| 19 | + ninja-build ocaml ocamlbuild opam \ |
| 20 | + python3-venv python3-pip \ |
| 21 | + software-properties-common tree tzdata \ |
| 22 | + unzip valgrind vim wget zip --no-install-recommends |
119 | 23 |
|
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 |
| 24 | +WORKDIR /opt |
125 | 25 |
|
126 | | -# |
127 | | -# Install github-cli. It doens't work as a feature of devcontainer.json |
128 | | -ARG GH_CLI_VER=2.32.0 |
129 | | -WORKDIR /tmp |
130 | | -RUN wget -q https://github.com/cli/cli/releases/download/v${GH_CLI_VER}/gh_${GH_CLI_VER}_linux_amd64.deb \ |
131 | | - && dpkg -i gh_${GH_CLI_VER}_linux_amd64.deb |
| 26 | +ARG WASI_SDK_VER=25 |
| 27 | +RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${WASI_SDK_VER}/wasi-sdk-${WASI_SDK_VER}.0-x86_64-linux.tar.gz -P /tmp \ |
| 28 | + && tar xf /tmp/wasi-sdk-${WASI_SDK_VER}.0-x86_64-linux.tar.gz -C /opt \ |
| 29 | + && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0-x86_64-linux /opt/wasi-sdk |
132 | 30 |
|
133 | | -# |
134 | | -# 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 |
| 31 | +ARG WABT_VER=1.0.37 |
| 32 | +RUN wget -c --progress=dot:giga https://github.com/WebAssembly/wabt/releases/download/${WABT_VER}/wabt-${WABT_VER}-ubuntu-20.04.tar.gz -P /tmp \ |
| 33 | + && tar xf /tmp/wabt-${WABT_VER}-ubuntu-20.04.tar.gz -C /opt \ |
| 34 | + && ln -sf /opt/wabt-${WABT_VER} /opt/wabt |
138 | 35 |
|
139 | 36 | # 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 \ |
| 37 | + |
| 38 | +# clean up |
| 39 | +RUN apt-get autoremove -y \ |
144 | 40 | && apt-get clean -y \ |
145 | 41 | && rm -rf /var/lib/apt/lists/* \ |
146 | 42 | && rm -rf /tmp/* |
147 | | - |
148 | | -# set workdir when container run |
149 | | -VOLUME /workspaces |
150 | | -WORKDIR /workspaces |
0 commit comments