FROM ubuntu-hlsdk

# Avoid interactive prompts during package installation
ENV DEBIAN_FRONTEND=noninteractive
ENV VULKAN_SDK_VERSION=1.4.341.1

USER root

RUN apt-get update && apt-get full-upgrade -y && apt-get autoremove -y

# Install system dependencies and development packages
RUN apt-get install --no-install-recommends --no-install-suggests -y \
    libsdl2-dev \
    libfreetype-dev \
    \
    # FFmpeg development packages
    libavcodec-dev \
    libavformat-dev \
    libavutil-dev \
    libavfilter-dev \
    libavdevice-dev \
    libswscale-dev \
    libswresample-dev \
    libpostproc-dev \
    ffmpeg \
    \
    # Running render tests
    weston \
    libgl1-mesa-dri \
    mesa-vulkan-drivers \
    libvulkan1 \
    imagemagick

# Install Vulkan SDK runtime dependencies only
#RUN apt-get update && apt-get install -y \
#   libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev

# Install Vulkan SDK
RUN mkdir -p /opt/VulkanSDK && wget -qO- \
    https://sdk.lunarg.com/sdk/download/${VULKAN_SDK_VERSION}/linux/vulkansdk-linux-x86_64-${VULKAN_SDK_VERSION}.tar.xz | \
  tar -xJ -C /opt/VulkanSDK/

ENV VULKAN_SDK=/opt/VulkanSDK/${VULKAN_SDK_VERSION}/x86_64
ENV PATH=$VULKAN_SDK/bin:$PATH
ENV LD_LIBRARY_PATH="$VULKAN_SDK/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
ENV VK_ADD_LAYER_PATH="$VULKAN_SDK/share/vulkan/explicit_layer.d${VK_ADD_LAYER_PATH:+:$VK_ADD_LAYER_PATH}"
ENV PKG_CONFIG_PATH="$VULKAN_SDK/share/pkgconfig:$VULKAN_SDK/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"

# Common dev utils
RUN apt-get install --no-install-recommends --no-install-suggests -y \
    ripgrep \
    less \
    fd-find

# Remove extra cache after all the installations
RUN rm -rf /var/lib/apt/lists/*

# Set working directory
WORKDIR /build
COPY build-and-test.sh /build/

# Switch to non-root user
USER ubuntu

# Default command
WORKDIR /build
CMD ["/build/build-and-test.sh"]
