Fix yabridge_version() in chainloaders #1701
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Automated builds | |
on: | |
push: | |
branches: | |
- '**' | |
tags: | |
# Run when pushing version tags, since otherwise it's impossible to | |
# restart a successful build after pushing a tag | |
- '*.*.*' | |
pull_request: | |
branches: | |
- master | |
defaults: | |
run: | |
# This otherwise gets run under dash which does not support brace expansion | |
shell: bash | |
jobs: | |
build-bionic: | |
name: Build on Ubuntu 18.04 | |
runs-on: ubuntu-latest | |
# This container contains everything needed to build yabridge | |
container: robbert/docker-yabridge:bionic | |
outputs: | |
artifact-name: ${{ env.ARCHIVE_NAME }} | |
# GitHub actions does not allow you to share steps between jobs and their | |
# yaml parser does not support anchors, so we'll have to duplicate all of | |
# these steps | |
# https://github.community/t5/GitHub-Actions/reusing-sharing-inheriting-steps-between-jobs-declarations/td-p/37849 | |
steps: | |
- uses: actions/checkout@v3 | |
# Needed for git-describe to do anything useful, the safe directory | |
# workaround is needed for https://github.com/actions/runner/issues/2033 | |
- name: Fetch all git history | |
run: | | |
git config --global --add safe.directory /__w/yabridge/yabridge | |
git fetch --force --prune --tags --unshallow | |
- name: Determine build archive name | |
run: | | |
echo "ARCHIVE_NAME=yabridge-$(git describe --always)-ubuntu-18.04.tar.gz" >> "$GITHUB_ENV" | |
- name: Build the binaries | |
run: | | |
# Wine won't create a Wine prefix in ~/.wine because /github/home is | |
# not owned by the user that's executing this job | |
mkdir -p /tmp/prefix | |
export WINEPREFIX=/tmp/prefix | |
# Statically link to libstdc++ on Ubuntu 18.04 as we're compiling | |
# with a newer version of g++ than what's in the default repos | |
meson setup build --buildtype=release --cross-file=cross-wine.conf --unity=on --unity-size=10000 -Dbitbridge=true -Dcpp_link_args='-mwindows -static-libstdc++' -Dbuild.cpp_link_args='-static-libstdc++' | |
ninja -C build | |
- name: Strip remaining debug symbols | |
run: strip build/libyabridge{,-chainloader}-{clap,vst2,vst3}.so build/yabridge-host{,-32}.exe.so | |
- name: Create an archive for the binaries | |
run: | | |
mkdir yabridge | |
cp build/libyabridge{,-chainloader}-{clap,vst2,vst3}.so build/yabridge-host{,-32}.exe{,.so} yabridge | |
cp CHANGELOG.md README.md yabridge | |
tar -caf "$ARCHIVE_NAME" yabridge | |
rm -rf yabridge | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARCHIVE_NAME }} | |
path: ${{ env.ARCHIVE_NAME }} | |
build-focal: | |
name: Build on Ubuntu 20.04 | |
runs-on: ubuntu-latest | |
container: robbert/docker-yabridge:focal | |
outputs: | |
artifact-name: ${{ env.ARCHIVE_NAME }} | |
steps: | |
- uses: actions/checkout@v3 | |
# Needed for git-describe to do anything useful, the safe directory | |
# workaround is needed for https://github.com/actions/runner/issues/2033 | |
- name: Fetch all git history | |
run: | | |
git config --global --add safe.directory /__w/yabridge/yabridge | |
git fetch --force --prune --tags --unshallow | |
- name: Determine build archive name | |
run: | | |
echo "ARCHIVE_NAME=yabridge-$(git describe --always).tar.gz" >> "$GITHUB_ENV" | |
- name: Build the binaries | |
run: | | |
mkdir -p /tmp/prefix | |
export WINEPREFIX=/tmp/prefix | |
# In this version we don't need to statically link libstdc++ since | |
# Ubuntu 20.04 and similar distros will ship with a version that's | |
# compatible with GCC 10, even if that's not the default GCC version | |
meson setup build --buildtype=release --cross-file=cross-wine.conf --unity=on --unity-size=10000 -Dbitbridge=true | |
ninja -C build | |
- name: Strip remaining debug symbols | |
run: strip build/libyabridge{,-chainloader}-{clap,vst2,vst3}.so build/yabridge-host{,-32}.exe.so | |
- name: Create an archive for the binaries | |
run: | | |
mkdir yabridge | |
cp build/libyabridge{,-chainloader}-{clap,vst2,vst3}.so build/yabridge-host{,-32}.exe{,.so} yabridge | |
cp CHANGELOG.md README.md yabridge | |
tar -caf "$ARCHIVE_NAME" yabridge | |
rm -rf yabridge | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARCHIVE_NAME }} | |
path: ${{ env.ARCHIVE_NAME }} | |
# The same as `build-bionic`, but for a 32-bit only version of yabridge. We | |
# don't plan on distributing this, but we'll just have this available for AV | |
# Linux. We currently don't do 32-bit builds of yabridgectl though. | |
build-32-bit: | |
name: Build on Ubuntu 18.04 (32-bit build) | |
runs-on: ubuntu-latest | |
container: robbert/docker-yabridge:bionic | |
outputs: | |
artifact-name: ${{ env.ARCHIVE_NAME }} | |
steps: | |
- uses: actions/checkout@v3 | |
# Needed for git-describe to do anything useful, the safe directory | |
# workaround is needed for https://github.com/actions/runner/issues/2033 | |
- name: Fetch all git history | |
run: | | |
git config --global --add safe.directory /__w/yabridge/yabridge | |
git fetch --force --prune --tags --unshallow | |
- name: Determine build archive name | |
run: | | |
echo "ARCHIVE_NAME=yabridge-$(git describe --always)-ubuntu-18.04-32bit.tar.gz" >> "$GITHUB_ENV" | |
- name: Build the binaries | |
run: | | |
mkdir -p /tmp/prefix | |
export WINEPREFIX=/tmp/prefix | |
# Statically link to libstdc++ on Ubuntu 18.04, and also target a | |
# 32-bit OS. CLAP support is disabled here because it won't work with | |
# 64-bit plugins. | |
meson setup build --buildtype=release --cross-file=cross-wine.conf --unity=on --unity-size=10000 -Dbitbridge=true -Dclap=false -Dcpp_link_args='-mwindows -static-libstdc++' -Dbuild.cpp_args='-m32' -Dbuild.cpp_link_args='-m32 -static-libstdc++' | |
ninja -C build | |
- name: Strip remaining debug symbols | |
run: strip build/libyabridge{,-chainloader}-{vst2,vst3}.so build/yabridge-host{,-32}.exe.so | |
- name: Create an archive for the binaries | |
run: | | |
mkdir yabridge | |
cp build/libyabridge{,-chainloader}-{vst2,vst3}.so build/yabridge-host{,-32}.exe{,.so} yabridge | |
cp CHANGELOG.md README.md yabridge | |
tar -caf "$ARCHIVE_NAME" yabridge | |
rm -rf yabridge | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARCHIVE_NAME }} | |
path: ${{ env.ARCHIVE_NAME }} | |
build-yabridgectl: | |
name: Build yabridgectl | |
# FIXME: The ubuntu-18.04 runner has been deprecated but since it doesn't cause any | |
# issues we'll keep it around for a bit longer | |
# runs-on: ubuntu-18.04 | |
runs-on: ubuntu-latest | |
container: robbert/docker-yabridge:bionic | |
outputs: | |
artifact-name: ${{ env.ARCHIVE_NAME }} | |
defaults: | |
run: | |
working-directory: tools/yabridgectl | |
steps: | |
- uses: actions/checkout@v3 | |
# Needed for git-describe to do anything useful, the safe directory | |
# workaround is needed for https://github.com/actions/runner/issues/2033 | |
- name: Fetch all git history | |
run: | | |
git config --global --add safe.directory /__w/yabridge/yabridge | |
git fetch --force --prune --tags --unshallow | |
- name: Determine build archive name | |
run: | | |
echo "ARCHIVE_NAME=yabridgectl-$(git describe --always).tar.gz" >> "$GITHUB_ENV" | |
# FIXME: Needed as long as we use the docker image | |
- name: Install dependencies | |
run: | | |
apt-get update | |
apt-get install -y curl | |
- name: Set up Rust toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Build the binaries | |
run: cargo build --release | |
- name: Strip remaining debug symbols | |
run: strip target/release/yabridgectl | |
- name: Create an archive for the binaries | |
run: | | |
mkdir yabridgectl | |
cp target/release/yabridgectl README.md yabridgectl | |
tar -caf "$ARCHIVE_NAME" yabridgectl | |
rm -rf yabridgectl | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.ARCHIVE_NAME }} | |
# For some reason there's no way to tell GitHub actions to run actions | |
# in a subdirectory | |
path: tools/yabridgectl/${{ env.ARCHIVE_NAME }} |