# Base image with all build dependencies for JS8Call # This image is built once and cached for faster rebuilds FROM ubuntu:24.04 ENV DEBIAN_FRONTEND=noninteractive # Install all build dependencies in one layer RUN apt-get update && apt-get install -y \ # Base build tools build-essential \ cmake \ git \ pkg-config \ ccache \ # Qt6 development packages qt6-base-dev \ qt6-multimedia-dev \ libqt6serialport6-dev \ libqt6svg6-dev \ # Graphics and math libraries libgl1-mesa-dev \ libfftw3-dev \ libfftw3-single3 \ # Hardware interfaces libudev-dev \ libusb-1.0-0-dev \ # Boost libraries libboost-all-dev \ # Hamlib build dependencies automake \ autoconf \ libtool \ texinfo \ # AppImage tools dependencies wget \ file \ libfuse2 \ imagemagick \ # Clean up && rm -rf /var/lib/apt/lists/* # Set up ccache for faster C++ compilation ENV PATH="/usr/lib/ccache:${PATH}" ENV CCACHE_DIR=/ccache ENV CCACHE_MAXSIZE=5G # Create ccache directory RUN mkdir -p /ccache && chmod 777 /ccache # Download AppImage tools once WORKDIR /tools RUN wget -q https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \ && wget -q https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \ && chmod +x linuxdeploy*.AppImage \ && ./linuxdeploy-x86_64.AppImage --appimage-extract \ && mv squashfs-root linuxdeploy \ && ./linuxdeploy-plugin-qt-x86_64.AppImage --appimage-extract \ && mv squashfs-root linuxdeploy-plugin-qt \ && rm *.AppImage # Set up environment for AppImage creation ENV PATH="/tools/linuxdeploy/usr/bin:/tools/linuxdeploy-plugin-qt/usr/bin:${PATH}" ENV QMAKE=/usr/lib/qt6/bin/qmake ENV QT_SELECT=qt6 WORKDIR /workspace