Skip to content

Bump version to v0.4.2 #91

Bump version to v0.4.2

Bump version to v0.4.2 #91

Workflow file for this run

name: Build
on:
push:
tags: ['v*']
workflow_dispatch:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build-linux-ubuntu2404:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
arch: x86_64
deb_arch: amd64
- os: ubuntu-24.04-arm
arch: arm64
deb_arch: arm64
name: Ubuntu 24.04 (${{ matrix.deb_arch }})
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
qt5-qmake qtbase5-dev libqt5serialport5-dev \
qtmultimedia5-dev libqt5websockets5-dev \
libopus-dev libeigen3-dev \
portaudio19-dev librtaudio-dev \
libhidapi-dev libudev-dev libpulse-dev \
openssl dpkg-dev
- name: Build
run: |
qmake wfweb.pro
make -j$(nproc)
- name: Get version
id: version
run: echo "version=$(grep 'WFWEB_VERSION' wfweb.pro | grep -oP '[\d.]+')" >> $GITHUB_OUTPUT
- name: Build .deb
run: |
VERSION=${{ steps.version.outputs.version }}
DEB_ROOT=$(pwd)/deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}
sudo make install INSTALL_ROOT=${DEB_ROOT}
sudo chown -R $(id -u):$(id -g) $(pwd)/deb-build
mkdir -p ${DEB_ROOT}/DEBIAN
cat > ${DEB_ROOT}/DEBIAN/control << EOF
Package: wfweb
Version: ${VERSION}
Architecture: ${{ matrix.deb_arch }}
Maintainer: Alain De Carolis <adecarolis@users.noreply.github.com>
Depends: openssl, libqt5core5t64, libqt5gui5t64,
libqt5network5t64, libqt5serialport5, libqt5multimedia5,
libqt5websockets5,
libopus0, libportaudio2, libpulse0, libhidapi-libusb0,
libudev1, librtaudio6
Section: hamradio
Priority: optional
Homepage: https://github.com/adecarolis/wfweb
Description: wfview fork with built-in web interface for browser-based ham radio remote control.
wfweb adds an HTTPS/WebSocket server to wfview, enabling full radio
control and real-time audio streaming from any browser without
installing client software. Based on wfview by Elliott H. Liggett W6EL
and Phil E. Taylor M0VSE (https://gitlab.com/eliggett/wfview).
EOF
sed -i 's/^ //' ${DEB_ROOT}/DEBIAN/control
printf '#!/bin/sh\nset -e\n' > ${DEB_ROOT}/DEBIAN/postinst
printf 'if command -v systemctl >/dev/null 2>&1 && systemctl is-system-running --quiet 2>/dev/null; then\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf ' systemctl daemon-reload || true\nfi\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo "wfweb installed. To start automatically at boot, run:"\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo " systemctl enable --now wfweb@\$USER"\n' >> ${DEB_ROOT}/DEBIAN/postinst
chmod 755 ${DEB_ROOT}/DEBIAN/postinst
dpkg-deb --build --root-owner-group ${DEB_ROOT}
mv deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}.deb \
wfweb_${VERSION}-ubuntu2404_${{ matrix.deb_arch }}.deb
- name: Upload deb artifact
uses: actions/upload-artifact@v7
with:
name: wfweb-${{ matrix.arch }}-ubuntu2404-deb
path: wfweb_*-ubuntu2404_${{ matrix.deb_arch }}.deb
retention-days: 30
build-linux-debian12:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
arch: x86_64
deb_arch: amd64
- os: ubuntu-24.04-arm
arch: arm64
deb_arch: arm64
name: Debian 12 Bookworm (${{ matrix.deb_arch }})
runs-on: ${{ matrix.os }}
container: debian:bookworm
steps:
- name: Install git
run: |
apt-get update
apt-get install -y git
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies
run: |
apt-get install -y \
qt5-qmake qtbase5-dev libqt5serialport5-dev \
qtmultimedia5-dev libqt5websockets5-dev \
libopus-dev libeigen3-dev \
portaudio19-dev librtaudio-dev \
libhidapi-dev libudev-dev libpulse-dev \
openssl dpkg-dev
- name: Build
run: |
qmake wfweb.pro
make -j$(nproc)
- name: Get version
id: version
run: echo "version=$(grep 'WFWEB_VERSION' wfweb.pro | grep -oP '[\d.]+')" >> $GITHUB_OUTPUT
- name: Build .deb
run: |
VERSION=${{ steps.version.outputs.version }}
DEB_ROOT=$(pwd)/deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}
make install INSTALL_ROOT=${DEB_ROOT}
mkdir -p ${DEB_ROOT}/DEBIAN
cat > ${DEB_ROOT}/DEBIAN/control << EOF
Package: wfweb
Version: ${VERSION}
Architecture: ${{ matrix.deb_arch }}
Maintainer: Alain De Carolis <adecarolis@users.noreply.github.com>
Depends: openssl, libqt5core5a, libqt5gui5,
libqt5network5, libqt5serialport5, libqt5multimedia5,
libqt5websockets5,
libopus0, libportaudio2, libpulse0, libhidapi-libusb0,
libudev1, librtaudio6
Section: hamradio
Priority: optional
Homepage: https://github.com/adecarolis/wfweb
Description: wfview fork with built-in web interface for browser-based ham radio remote control.
wfweb adds an HTTPS/WebSocket server to wfview, enabling full radio
control and real-time audio streaming from any browser without
installing client software. Based on wfview by Elliott H. Liggett W6EL
and Phil E. Taylor M0VSE (https://gitlab.com/eliggett/wfview).
EOF
sed -i 's/^ //' ${DEB_ROOT}/DEBIAN/control
printf '#!/bin/sh\nset -e\n' > ${DEB_ROOT}/DEBIAN/postinst
printf 'if command -v systemctl >/dev/null 2>&1 && systemctl is-system-running --quiet 2>/dev/null; then\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf ' systemctl daemon-reload || true\nfi\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo "wfweb installed. To start automatically at boot, run:"\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo " systemctl enable --now wfweb@\$USER"\n' >> ${DEB_ROOT}/DEBIAN/postinst
chmod 755 ${DEB_ROOT}/DEBIAN/postinst
dpkg-deb --build --root-owner-group ${DEB_ROOT}
mv deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}.deb \
wfweb_${VERSION}-debian12_${{ matrix.deb_arch }}.deb
- name: Upload deb artifact
uses: actions/upload-artifact@v7
with:
name: wfweb-${{ matrix.arch }}-debian12-deb
path: wfweb_*-debian12_${{ matrix.deb_arch }}.deb
retention-days: 30
build-linux-debian13:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
arch: x86_64
deb_arch: amd64
- os: ubuntu-24.04-arm
arch: arm64
deb_arch: arm64
name: Debian 13 Trixie (${{ matrix.deb_arch }})
runs-on: ${{ matrix.os }}
container: debian:trixie
steps:
- name: Install git
run: |
apt-get update
apt-get install -y git
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies
run: |
apt-get install -y \
qt5-qmake qtbase5-dev libqt5serialport5-dev \
qtmultimedia5-dev libqt5websockets5-dev \
libopus-dev libeigen3-dev \
portaudio19-dev librtaudio-dev \
libhidapi-dev libudev-dev libpulse-dev \
openssl dpkg-dev
- name: Build
run: |
qmake wfweb.pro
make -j$(nproc)
- name: Get version
id: version
run: echo "version=$(grep 'WFWEB_VERSION' wfweb.pro | grep -oP '[\d.]+')" >> $GITHUB_OUTPUT
- name: Build .deb
run: |
VERSION=${{ steps.version.outputs.version }}
DEB_ROOT=$(pwd)/deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}
make install INSTALL_ROOT=${DEB_ROOT}
mkdir -p ${DEB_ROOT}/DEBIAN
cat > ${DEB_ROOT}/DEBIAN/control << EOF
Package: wfweb
Version: ${VERSION}
Architecture: ${{ matrix.deb_arch }}
Maintainer: Alain De Carolis <adecarolis@users.noreply.github.com>
Depends: openssl, libqt5core5t64, libqt5gui5t64,
libqt5network5t64, libqt5serialport5, libqt5multimedia5,
libqt5websockets5,
libopus0, libportaudio2, libpulse0, libhidapi-libusb0,
libudev1, librtaudio7
Section: hamradio
Priority: optional
Homepage: https://github.com/adecarolis/wfweb
Description: wfview fork with built-in web interface for browser-based ham radio remote control.
wfweb adds an HTTPS/WebSocket server to wfview, enabling full radio
control and real-time audio streaming from any browser without
installing client software. Based on wfview by Elliott H. Liggett W6EL
and Phil E. Taylor M0VSE (https://gitlab.com/eliggett/wfview).
EOF
sed -i 's/^ //' ${DEB_ROOT}/DEBIAN/control
printf '#!/bin/sh\nset -e\n' > ${DEB_ROOT}/DEBIAN/postinst
printf 'if command -v systemctl >/dev/null 2>&1 && systemctl is-system-running --quiet 2>/dev/null; then\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf ' systemctl daemon-reload || true\nfi\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo "wfweb installed. To start automatically at boot, run:"\n' >> ${DEB_ROOT}/DEBIAN/postinst
printf 'echo " systemctl enable --now wfweb@\$USER"\n' >> ${DEB_ROOT}/DEBIAN/postinst
chmod 755 ${DEB_ROOT}/DEBIAN/postinst
dpkg-deb --build --root-owner-group ${DEB_ROOT}
mv deb-build/wfweb_${VERSION}_${{ matrix.deb_arch }}.deb \
wfweb_${VERSION}-debian13_${{ matrix.deb_arch }}.deb
- name: Upload deb artifact
uses: actions/upload-artifact@v7
with:
name: wfweb-${{ matrix.arch }}-debian13-deb
path: wfweb_*-debian13_${{ matrix.deb_arch }}.deb
retention-days: 30
build-macos:
name: macOS (Apple Silicon)
runs-on: macos-14
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies
run: brew install qt@5 portaudio opus openssl@3
- name: Clone sibling dependencies
run: |
git clone --depth 1 https://github.com/thestk/rtaudio.git ../rtaudio
git clone --depth 1 https://gitlab.com/libeigen/eigen.git ../eigen
git clone --depth 1 https://github.com/xiph/opus.git ../opus
mkdir -p ../r8brain-free-src
- name: Build
run: |
/opt/homebrew/opt/qt@5/bin/qmake wfweb.pro
make -j$(sysctl -n hw.ncpu)
- name: Package zip
run: |
mkdir -p wfweb-macos-arm64
cp wfweb wfweb-macos-arm64/
cp -r rigs wfweb-macos-arm64/
zip -r wfweb-macos-arm64.zip wfweb-macos-arm64
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: wfweb-macos-arm64
path: wfweb-macos-arm64.zip
retention-days: 30
build-windows:
name: Windows x86_64
runs-on: windows-latest
continue-on-error: true
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: true
- name: Install Qt 5.15.2
uses: jurplel/install-qt-action@v4
with:
version: '5.15.2'
host: 'windows'
target: 'desktop'
arch: 'win64_msvc2019_64'
- name: Install vcpkg packages
run: vcpkg install eigen3:x64-windows opus:x64-windows portaudio:x64-windows hidapi:x64-windows openssl:x64-windows
- name: Clone rtaudio
run: git clone --depth 1 https://github.com/thestk/rtaudio.git ..\rtaudio
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Build
shell: cmd
run: |
qmake wfweb.pro CONFIG+=release "VCPKG_DIR=C:/vcpkg/installed/x64-windows" "DEFINES-=FTDI_SUPPORT"
nmake release
- name: Deploy Qt runtime
shell: cmd
run: windeployqt --release --no-translations --no-opengl-sw wfweb-release\wfweb.exe
- name: Deploy vcpkg DLLs and assets
shell: pwsh
run: |
$vcpkgBin = "C:\vcpkg\installed\x64-windows\bin"
$out = "wfweb-release"
# vcpkg DLLs
foreach ($dll in @("portaudio.dll", "opus.dll", "hidapi.dll",
"libssl-3-x64.dll", "libcrypto-3-x64.dll")) {
$src = Join-Path $vcpkgBin $dll
if (Test-Path $src) { Copy-Item $src $out -Force }
}
# OpenSSL 1.1 aliases for Qt 5.15
if (!(Test-Path "$out\libssl-1_1-x64.dll") -and (Test-Path "$out\libssl-3-x64.dll")) {
Copy-Item "$out\libssl-3-x64.dll" "$out\libssl-1_1-x64.dll"
}
if (!(Test-Path "$out\libcrypto-1_1-x64.dll") -and (Test-Path "$out\libcrypto-3-x64.dll")) {
Copy-Item "$out\libcrypto-3-x64.dll" "$out\libcrypto-1_1-x64.dll"
}
# Rig files
New-Item -ItemType Directory -Force -Path "$out\rigs" | Out-Null
Copy-Item "rigs\*.rig" "$out\rigs\" -Force
- name: Create ZIP
shell: pwsh
run: Compress-Archive -Path wfweb-release -DestinationPath wfweb-windows-x86_64.zip
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: wfweb-windows-x86_64
path: wfweb-windows-x86_64.zip
retention-days: 30
release:
name: Publish release
needs: [build-linux-ubuntu2404, build-linux-debian12, build-linux-debian13, build-macos, build-windows]
runs-on: ubuntu-24.04
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v8
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
wfweb-x86_64-ubuntu2404-deb/*.deb
wfweb-arm64-ubuntu2404-deb/*.deb
wfweb-x86_64-debian12-deb/*.deb
wfweb-arm64-debian12-deb/*.deb
wfweb-x86_64-debian13-deb/*.deb
wfweb-arm64-debian13-deb/*.deb
wfweb-macos-arm64/wfweb-macos-arm64.zip
wfweb-windows-x86_64/wfweb-windows-x86_64.zip
generate_release_notes: true
overwrite: true