Skip to content
177 changes: 177 additions & 0 deletions .github/workflows/test-linux-qt683.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
permissions:
contents: read

name: EXPERIMENTAL Build for QT 6.8.3 Ubuntu x86_64 and Arm64

on:
push:
branches: [ "main" ]
paths:
'.github/workflows/test-linux-qt683.yml'
pull_request:
branches: [ "main" ]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release

jobs:
build_qt683_amd64_2404:
permissions: write-all
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v5

- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential git cmake ninja-build clang-18 libclang-18-dev llvm-18-dev \
libgl1-mesa-dev libhamlib-dev libusb-1.0-0-dev libfftw3-dev libboost-all-dev \
libudev-dev libxkbcommon-dev pulseaudio pulseaudio-utils libasound2t64 \
libpulse-dev libfuse2 imagemagick libxkbcommon-dev \
libudev-dev libxcb1-dev libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxext-dev \
libxfixes-dev libxcursor-dev libxrandr-dev libxinerama-dev libxkbcommon-dev libxkbcommon-x11-dev \
libxcb-xinerama0-dev libxcb-xfixes0-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xkb-dev \
libxkbcommon-x11-dev libxcb-cursor-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev \
libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev ffmpeg libavcodec-dev \
libavformat-dev libswscale-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-sync-dev \
libxcb-xfixes0-dev libgl-dev libfontconfig1-dev libxcb-glx0-dev
sudo apt clean
df -h /
- name: Checkout QT 6.8.3
run: |
git clone https://github.com/qt/qt5.git qt6
cd qt6
git switch 6.8.3
- name: Configure QT
run: |
mkdir -p qt6/build
cd qt6/build
../configure --prefix=~/js8call/qt683-install -init-submodules -submodules qtmultimedia,qtserialport
- name: Configure Summary QT
run: cat /home/runner/work/js8call/js8call/qt6/build/config.summary

- name: Build QT 6.8.3
run: |
cd qt6/build
cmake --build .
cmake --install .
- name: Build Hamlib
run: |
ldd --version
git clone https://github.com/Hamlib/Hamlib.git ~/hamlib
cd ~/hamlib
git checkout 4.6.4
./bootstrap
./configure
make -j 4
sudo make install-strip
sudo ldconfig
- name: Build JS8Call
run: |
pwd
mkdir -p build && cd build
pwd
cmake -DCMAKE_PREFIX_PATH=/home/runner/js8call/qt683-install ..
make -j 4
- name: Package JS8Call (deb)
run: |
cd build
cpack -G DEB
- name: Upload Artifact (deb)
uses: actions/upload-artifact@v4
with:
name: js8call_2.3.2-devel_amd64_ubuntu-24.04.deb
path: /home/runner/work/js8call/js8call/build/js8call_2.3.2-devel_amd64.deb

- name: Package JS8Call AppImage (amd64)
run: |
mkdir -p ~/appimage/AppDir
cd build
pwd
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
make DESTDIR=~/appimage/AppDir install
# Some debugging info
pwd
find ~ -name libqxcb.so -print
test -f ~/appimage/AppDir/usr/share/applications/js8call.desktop || \
cp ~/js8call/js8call/js8call.desktop ~/appimage/AppDir/usr/share/applications/ && \
if [ ! -f ~/appimage/AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png ]; then \
mkdir -p ~/appimage/AppDir/usr/share/icons/hicolor/128x128/apps && \
convert /home/runner/work/js8call/js8call/artwork/js8call_icon.png -resize 128x128 \
~/appimage/AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png; \
fi
cd ~/appimage
echo "QMAKE=$(which qmake6)" >> $GITHUB_ENV
echo "/home/runner/work/js8call/qt683-install/bin:/home/runner/work/js8call/js8call/build/linuxdeploy/usr/bin:/home/runner/work/js8call/js8call/build/linuxdeploy-plugin-qt/usr/bin/" >> "$GITHUB_PATH"
ln -s /home/runner/work/js8call/js8call/build/linuxdeploy-plugin-qt/usr/bin/linuxdeploy-plugin-qt /home/runner/work/js8call/js8call/build/linuxdeploy/usr/bin/
EXEC_PATH=$(find AppDir -type f -name "js8call" -executable | head -1) && \
echo "Found executable at: $EXEC_PATH" && \
QMAKE=/home/runner/js8call/qt683-install/bin/qmake /home/runner/work/js8call/js8call/build/linuxdeploy/usr/bin/linuxdeploy --appdir AppDir \
--executable "$EXEC_PATH" \
--plugin qt \
--output appimage \
--desktop-file AppDir/usr/share/applications/js8call.desktop \
--icon-file AppDir/usr/share/icons/hicolor/128x128/apps/js8call_icon.png
- name: Upload AppImage Artifact
uses: actions/upload-artifact@v4
with:
name: js8call_2.3.2-devel_x86_64_qt683-ubuntu-24.04.AppImage
path: ~/appimage/js8call-x86_64.AppImage

- name: Create GitHub Release and get short commit SHA
id: get_sha
run: |
echo "short_sha=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_OUTPUT
- name: Create zip file to upload to release page (ubuntu-24.04-amd64)
run: |
cd ~/appimage/
tar zcf /home/runner/work/js8call/js8call/js8call_2.3.2-devel_24.04-amd64-experimental.tar.gz js8call-x86_64.AppImage
- name: Create Release and Upload Assets
uses: softprops/action-gh-release@v2.3.2
with:
tag_name: js8call_2.3.2-devel_qt683-ubuntu-24.04-amd64-ci
name: "JS8Call v2.3.2-devel Ubuntu 24.04 amd64 QT 6.8.3 ** EXPERIMENTAL ** AppImage build"
body: |
WARNING: This is an **EXPERIMENTAL** QT 6.8.3 build, terrible things prolly won't happen, but it also most likely won't work as expected!
Release created automatically from commit ${{ steps.get_sha.outputs.short_sha }}.
This AppImage release is from the Ubuntu 24.04 amd64 *** EXPERIMENTAL *** build for JS8Call. Use at your own risk!
files: /home/runner/work/js8call/js8call/js8call_2.3.2-devel_24.04-amd64-experimental.tar.gz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}