88 lines
2.3 KiB
Docker
88 lines
2.3 KiB
Docker
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"] |