1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
# 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
|