js8call/docker/Dockerfile.base
2025-06-27 17:11:02 -04:00

67 lines
No EOL
1.8 KiB
Text

# 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