Files
yabridge/.github/workflows/build.yml
T
Robbert van der Helm 872a6aa304 Don't enable unity builds by default
But do suggest enabling them in the readme and enable them on the CI.
Having them enabled by default breaks clangd/ccls, which doesn't sound
like a great idea.

https://github.com/mesonbuild/meson/issues/8146
2021-01-01 22:53:08 +01:00

144 lines
5.3 KiB
YAML

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 except for
# Boost since that's not easily available and it the parts we need are
# quick to compile anyway
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@v2
# Needed for git-describe to do anything useful
- name: Fetch all git history
run: 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 --buildtype=release --cross-file=cross-wine.conf --unity=on --unity_size=10000 -Dwith-static-boost=true -Dwith-bitbridge=true -Dcpp_link_args='-static-libstdc++' -Dbuild.cpp_link_args='-static-libstdc++' build
ninja -C build
- name: Create an archive for the binaries
run: |
mkdir yabridge
cp build/libyabridge-{vst2,vst3}.so build/yabridge-{host,group}{,-32}.exe{,.so} yabridge
cp CHANGELOG.md README.md yabridge
tar -caf "$ARCHIVE_NAME" yabridge
rm -rf yabridge
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}
build-focal:
name: Build on Ubuntu 20.04
runs-on: ubuntu-latest
# This container contains everything needed to build yabridge except for
# Boost since that's not easily available and it the parts we need are
# quick to compile anyway
container: robbert/docker-yabridge:focal
outputs:
artifact-name: ${{ env.ARCHIVE_NAME }}
steps:
- uses: actions/checkout@v2
# Needed for git-describe to do anything useful
- name: Fetch all git history
run: 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: |
# 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
meson setup --buildtype=release --cross-file=cross-wine.conf --unity=on --unity_size=10000 -Dwith-static-boost=true -Dwith-bitbridge=true build
ninja -C build
- name: Create an archive for the binaries
run: |
mkdir yabridge
cp build/libyabridge-{vst2,vst3}.so build/yabridge-{host,group}{,-32}.exe{,.so} yabridge
cp CHANGELOG.md README.md yabridge
tar -caf "$ARCHIVE_NAME" yabridge
rm -rf yabridge
- uses: actions/upload-artifact@v2
with:
name: ${{ env.ARCHIVE_NAME }}
path: ${{ env.ARCHIVE_NAME }}
build-yabridgectl:
name: Build yabridgectl
runs-on: ubuntu-18.04
outputs:
artifact-name: ${{ env.ARCHIVE_NAME }}
defaults:
run:
working-directory: tools/yabridgectl
steps:
- uses: actions/checkout@v2
# Needed for git-describe to do anything useful
- name: Fetch all git history
run: git fetch --force --prune --tags --unshallow
- name: Determine build archive name
run: |
echo "ARCHIVE_NAME=yabridgectl-$(git describe --always).tar.gz" >> "$GITHUB_ENV"
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
default: true
- 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@v2
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 }}