This commit is contained in:
+22
-25
@@ -11,7 +11,6 @@ FROM ${BASE_IMAGE}
|
|||||||
|
|
||||||
ARG LLVM_VERSION=22
|
ARG LLVM_VERSION=22
|
||||||
ARG MESON_VERSION=latest
|
ARG MESON_VERSION=latest
|
||||||
ARG USE_LUNARG_VULKAN=false
|
|
||||||
ARG LUNARG_SDK_VERSION=1.4.309.0
|
ARG LUNARG_SDK_VERSION=1.4.309.0
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
@@ -21,10 +20,14 @@ ENV AR=llvm-ar
|
|||||||
ENV RANLIB=llvm-ranlib
|
ENV RANLIB=llvm-ranlib
|
||||||
ENV NM=llvm-nm
|
ENV NM=llvm-nm
|
||||||
ENV STRIP=llvm-strip
|
ENV STRIP=llvm-strip
|
||||||
|
ENV VULKAN_SDK=/opt/vulkan-sdk/current/x86_64
|
||||||
|
ENV PATH="${VULKAN_SDK}/bin:${PATH}"
|
||||||
|
ENV LD_LIBRARY_PATH="${VULKAN_SDK}/lib:${LD_LIBRARY_PATH}"
|
||||||
|
ENV PKG_CONFIG_PATH="${VULKAN_SDK}/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
# Base compiler/build/Python/Vulkan packages from Ubuntu.
|
# Base compiler/build/Python packages from Ubuntu.
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
set -eux; \
|
set -eux; \
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
@@ -50,15 +53,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|||||||
ninja-build \
|
ninja-build \
|
||||||
cmake \
|
cmake \
|
||||||
gcovr \
|
gcovr \
|
||||||
valgrind \
|
valgrind; \
|
||||||
libvulkan-dev \
|
|
||||||
libshaderc-dev \
|
|
||||||
vulkan-tools \
|
|
||||||
vulkan-validationlayers \
|
|
||||||
mesa-vulkan-drivers \
|
|
||||||
glslang-tools \
|
|
||||||
spirv-tools \
|
|
||||||
spirv-headers; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# LLVM/Clang from apt.llvm.org.
|
# LLVM/Clang from apt.llvm.org.
|
||||||
@@ -82,20 +77,19 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|||||||
"llvm-${LLVM_VERSION}-tools"; \
|
"llvm-${LLVM_VERSION}-tools"; \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Optional LunarG Vulkan SDK repo. Disabled by default because Ubuntu distro
|
# LunarG Vulkan SDK from the official tarball.
|
||||||
# Vulkan packages are more stable for CI and usually enough for building/testing.
|
RUN --mount=type=cache,target=/root/.cache/vulkan-sdk \
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
||||||
set -eux; \
|
set -eux; \
|
||||||
if [ "${USE_LUNARG_VULKAN}" = "true" ]; then \
|
sdk_archive="/root/.cache/vulkan-sdk/vulkansdk-linux-x86_64-${LUNARG_SDK_VERSION}.tar.xz"; \
|
||||||
codename="$(. /etc/os-release && echo "${VERSION_CODENAME}")"; \
|
if [ ! -f "${sdk_archive}" ]; then \
|
||||||
curl -fsSL https://packages.lunarg.com/lunarg-signing-key-pub.asc \
|
curl -fL "https://sdk.lunarg.com/sdk/download/${LUNARG_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${LUNARG_SDK_VERSION}.tar.xz" \
|
||||||
| gpg --dearmor -o /usr/share/keyrings/lunarg.gpg; \
|
-o "${sdk_archive}"; \
|
||||||
echo "deb [signed-by=/usr/share/keyrings/lunarg.gpg] https://packages.lunarg.com/vulkan/${LUNARG_SDK_VERSION}/ubuntu ${codename} main" \
|
fi; \
|
||||||
> /etc/apt/sources.list.d/lunarg-vulkan-sdk.list; \
|
mkdir -p /opt/vulkan-sdk; \
|
||||||
apt-get update; \
|
tar -xJf "${sdk_archive}" -C /opt/vulkan-sdk; \
|
||||||
apt-get install -y --no-install-recommends vulkan-sdk; \
|
ln -sfn "/opt/vulkan-sdk/${LUNARG_SDK_VERSION}" /opt/vulkan-sdk/current; \
|
||||||
rm -rf /var/lib/apt/lists/*; \
|
echo "${VULKAN_SDK}/lib" > /etc/ld.so.conf.d/vulkan-sdk.conf; \
|
||||||
fi
|
ldconfig
|
||||||
|
|
||||||
# Make LLVM_VERSION the default clang toolchain.
|
# Make LLVM_VERSION the default clang toolchain.
|
||||||
RUN set -eux; \
|
RUN set -eux; \
|
||||||
@@ -127,6 +121,9 @@ RUN set -eux; \
|
|||||||
clang --version; \
|
clang --version; \
|
||||||
clang++ --version; \
|
clang++ --version; \
|
||||||
meson --version; \
|
meson --version; \
|
||||||
ninja --version
|
ninja --version; \
|
||||||
|
glslangValidator --version; \
|
||||||
|
spirv-val --version; \
|
||||||
|
pkg-config --modversion vulkan
|
||||||
|
|
||||||
CMD ["bash"]
|
CMD ["bash"]
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ Included tools:
|
|||||||
- Meson
|
- Meson
|
||||||
- Ninja
|
- Ninja
|
||||||
- Python 3 / pip / venv
|
- Python 3 / pip / venv
|
||||||
- Vulkan headers/tools
|
- LunarG Vulkan SDK headers/tools
|
||||||
- Mesa Vulkan drivers
|
|
||||||
- `build-essential`
|
- `build-essential`
|
||||||
- `pkg-config`
|
- `pkg-config`
|
||||||
- Git
|
- Git
|
||||||
@@ -34,6 +33,8 @@ Included tools:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t evol-testbed:latest .
|
docker build -t evol-testbed:latest .
|
||||||
|
# Optional: choose a different LunarG Vulkan SDK version
|
||||||
|
# docker build --build-arg LUNARG_SDK_VERSION=1.4.309.0 -t evol-testbed:latest .
|
||||||
```
|
```
|
||||||
|
|
||||||
Test locally:
|
Test locally:
|
||||||
|
|||||||
Reference in New Issue
Block a user