mirror of
https://github.com/JS8Call-improved/JS8Call-improved
synced 2026-08-13 17:47:36 -04:00
67 lines
No EOL
1.8 KiB
Text
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 |