-
-
Notifications
You must be signed in to change notification settings - Fork 66
202 lines (189 loc) · 8.3 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
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 }}