FROM ubuntu:24.04 LABEL maintainer="legatus-team" LABEL description="Ubuntu 24.04 build environment for Legatus LTS DEB builds" # Prevent interactive prompts during package installation ENV DEBIAN_FRONTEND=noninteractive ENV TZ=Europe/Berlin # Install base build dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ ninja-build \ git \ curl \ wget \ python3 \ python3-pip \ python3-setuptools \ libgl1-mesa-dev \ libglu1-mesa-dev \ libxcb-cursor0 \ libxcb-icccm4 \ libxcb-image0 \ libxcb-keysyms1 \ libxcb-randr0 \ libxcb-render-util0 \ libxcb-shape0 \ libxcb-xfixes0 \ libxcb-xinerama0 \ libxcb-xkb1 \ libxkbcommon-x11-0 \ libdbus-1-3 \ libfontconfig1 \ libfreetype6 \ libharfbuzz0b \ ca-certificates \ gnupg \ lsb-release \ software-properties-common \ pkg-config \ libudev-dev \ && rm -rf /var/lib/apt/lists/* # Install Qt6 from host mount or pre-installed location # Qt6 is NOT installed in this image due to licensing/download requirements # Mount Qt6 installation at runtime: # docker run -v /opt/Qt:/opt/Qt -e CMAKE_PREFIX_PATH=/opt/Qt/6.8.2/gcc_64/lib/cmake ... # See README-ubuntu-docker.md for installation options # Install additional development libraries (common dependencies) RUN apt-get update && apt-get install -y --no-install-recommends \ libboost-all-dev \ libjson-glib-dev \ libgeographic-dev \ libpq-dev \ libssl-dev \ libcurl4-openssl-dev \ libxml2-dev \ libxslt1-dev \ zlib1g-dev \ libbz2-dev \ liblzma-dev \ libzstd-dev \ && rm -rf /var/lib/apt/lists/* # Install clang-tidy and LLVM tools for code quality checks RUN apt-get update && apt-get install -y --no-install-recommends \ clang-tidy \ clang-format \ clang-tools \ llvm \ && rm -rf /var/lib/apt/lists/* # Set up rpmbuild directory structure (for compatibility with existing scripts) RUN mkdir -p /home/builder/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} && \ echo "%_topdir /home/builder/rpmbuild" > /home/builder/.rpmmacros # Create non-root builder user RUN useradd -m -u 1000 builder && \ chown -R builder:builder /home/builder # Set working directory WORKDIR /workspace # Default command CMD ["/bin/bash"]