FROM ubuntu:26.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y --no-install-recommends \ python3 \ clang-format \ cmake \ ninja-build \ git \ g++ \ make \ ca-certificates \ openssh-client \ pkg-config \ qtbase5-dev \ qt6-base-dev \ qt6-base-dev-tools \ qt6-tools-dev \ qt6-tools-dev-tools \ qt6-svg-dev \ qt6-websockets-dev \ qt6-serialport-dev \ qt6-multimedia-dev \ qt6-declarative-dev \ libpoppler-qt6-dev \ libpq-dev \ libbz2-dev \ libboost-all-dev \ libxml2-dev \ libssl-dev \ libcurl4-openssl-dev && \ rm -rf /var/lib/apt/lists/* # Install Log4Qt for Qt6 RUN git clone --depth 1 https://github.com/MEONMedical/Log4Qt.git /tmp/log4qt && \ cd /tmp/log4qt && \ mkdir -p build && cd build && \ cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_STANDARD=20 \ -DCMAKE_CXX_EXTENSIONS=OFF \ -DCMAKE_PREFIX_PATH="/usr" \ -DCMAKE_INSTALL_PREFIX="/usr/local" \ -DBUILD_SHARED_LIBS=ON .. && \ cmake --build . -- -j$(nproc) && \ cmake --install . && \ rm -rf /tmp/log4qt # Create minimal CMake config for Log4Qt RUN mkdir -p /usr/local/lib/cmake/Log4Qt && \ cat > /usr/local/lib/cmake/Log4Qt/Log4QtConfig.cmake << 'EOF' if (NOT TARGET Log4Qt::log4qt) add_library(Log4Qt::log4qt UNKNOWN IMPORTED) set_target_properties(Log4Qt::log4qt PROPERTIES IMPORTED_LOCATION "/usr/local/lib/liblog4qt.so" INTERFACE_INCLUDE_DIRECTORIES "/usr/local/include" ) endif() set(Log4Qt_FOUND TRUE CACHE INTERNAL "Log4Qt found by package config") set(Log4Qt_INCLUDE_DIRS "/usr/local/include" CACHE INTERNAL "Log4Qt include dir") set(Log4Qt_LIBRARIES "/usr/local/lib/liblog4qt.so" CACHE INTERNAL "Log4Qt library") EOF # Set Qt platform for headless testing ENV QT_QPA_PLATFORM=offscreen # Configure git for containerized environments RUN git config --global --add safe.directory "*" # Setup RTI Connext license (developer license file) COPY rti_license.dat /root/rti_license.dat ENV RTI_LICENSE_FILE=/root/rti_license.dat WORKDIR /workspace