Skip to content

tweaks

tweaks #402

Workflow file for this run

name: CI
on:
push:
branches:
- "**"
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
bundle-lists:
name: Bundle list consistency
runs-on: ubuntu-24.04
timeout-minutes: 5
steps:
- name: Check out source
uses: actions/checkout@v4
# Cheap gate that runs before the 30-minute package builds. The bundle
# lists are repeated by hand in four places, and the only enforcement was
# package-release.sh's gate, which fails late: after configure, build,
# ctest and staging. This catches the same drift in seconds.
- name: Check bundle lists against plugin CMakeLists
run: bash scripts/check-bundle-lists.sh
- name: Syntax-check the shell scripts
run: |
for f in install.sh scripts/*.sh; do
echo " $f"
bash -n "$f"
done
# Session state is easy to get subtly wrong: WANT_STATE without
# WANT_FULL_STATE compiles, looks like it saves, and actually records the
# plugin's defaults every time. Nothing in the core test suites can see
# it, so it is checked here. Blocking: the script exits 1 only for a plugin
# that declares WANT_STATE without WANT_FULL_STATE (or lacks a callback).
# Plugins with no state at all are reported but do not fail the job.
- name: Check plugin session state
run: bash scripts/check-plugin-state.sh
release-package-build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.runner }}
timeout-minutes: 30
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
include:
- name: Linux x86_64 Release Package
runner: ubuntu-24.04
platform: linux-x86_64
experimental: false
run_tests: "1"
strip: "1"
- name: macOS Universal Release Package Probe
runner: macos-15
platform: macos-universal
dpf_target: macos-10.15
experimental: true
build_driver: dpf-action
- name: Windows x86_64 Release Package Probe
runner: ubuntu-22.04
platform: windows-x86_64
dpf_target: win64
experimental: true
build_driver: dpf-action
steps:
- name: Check out source
uses: actions/checkout@v4
- name: Install Linux build dependencies
if: matrix.build_driver != 'dpf-action'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
cmake \
g++ \
pkg-config \
libdbus-1-dev \
libgl1-mesa-dev \
libx11-dev \
libxcursor-dev \
libxext-dev \
libxrandr-dev \
libxrender-dev
- name: Show toolchain versions
shell: bash
run: |
cmake --version
ctest --version
- name: Build, test, and package (CMake)
if: matrix.build_driver != 'dpf-action'
shell: bash
env:
DOWNSPOUT_BUILD_DIR: build/release-ci-${{ matrix.platform }}
DOWNSPOUT_DIST_DIR: ${{ runner.temp }}/downspout-dist
DOWNSPOUT_RELEASE_PLATFORM: ${{ matrix.platform }}
DOWNSPOUT_VERSION: ci-${{ github.run_number }}
DOWNSPOUT_RUN_TESTS: "1"
DOWNSPOUT_STRIP: "1"
run: bash scripts/package-release.sh
- name: Select POSIX-threads MinGW toolchain
if: matrix.dpf_target == 'win64'
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends g++-mingw-w64-x86-64
# Ubuntu ships both MinGW thread models and auto mode selects win32,
# whose libstdc++ provides no std::thread/std::mutex. Installing here
# and pinning with --set puts the link group in manual mode, which the
# DPF action's own apt install cannot revert.
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
x86_64-w64-mingw32-g++ -v 2>&1 | grep -i 'thread model'
- name: Build with DPF CMake action
if: matrix.build_driver == 'dpf-action'
# Best effort: a plugin that fails to cross-compile must not sink the
# whole platform. Packaging below ships whatever bundles did build and
# annotates the run with what is missing.
continue-on-error: true
uses: distrho/dpf-cmake-action@v1
with:
target: ${{ matrix.dpf_target }}
dpf_path: third_party/DPF
release: false
extraargs: >-
-DBUILD_TESTING=OFF
-DDOWNSPOUT_BUILD_SIDECAR=OFF
-DDOWNSPOUT_BUILD_AI_COORDINATOR=OFF
- name: Package DPF action bundles
if: matrix.build_driver == 'dpf-action'
shell: bash
env:
DOWNSPOUT_BIN_DIR: bin
DOWNSPOUT_DIST_DIR: ${{ runner.temp }}/downspout-dist
DOWNSPOUT_RELEASE_PLATFORM: ${{ matrix.platform }}
DOWNSPOUT_VERSION: ci-${{ github.run_number }}
DOWNSPOUT_BUILD_SIDECAR: "OFF"
run: bash scripts/package-built-bundles.sh
- name: Upload CI package
uses: actions/upload-artifact@v4
with:
name: downspout-${{ matrix.platform }}-vst3
path: ${{ runner.temp }}/downspout-dist/*
if-no-files-found: ${{ matrix.build_driver == 'dpf-action' && 'warn' || 'error' }}
retention-days: 14