@@ -4,110 +4,80 @@ on: [push, pull_request]
4
4
5
5
env :
6
6
CACHE_VERSION : 1
7
+ DEBIAN_FRONTEND : noninteractive
7
8
PAWPAW_SKIP_LTO : 1
8
9
PAWPAW_SKIP_FFTW : 1
9
10
PAWPAW_SKIP_GLIB : 1
10
11
PAWPAW_SKIP_LV2 : 1
11
12
PAWPAW_SKIP_SAMPLERATE : 1
13
+ PAWPAW_SKIP_TESTS : 1
12
14
WITH_LTO : false
13
15
14
16
jobs :
15
17
linux :
16
18
strategy :
17
19
matrix :
18
- target : [aarch64, armhf, i386, riscv64, x86_64]
19
- runs-on : ubuntu-20.04
20
+ target : [aarch64, armhf, i686, riscv64, x86_64]
21
+ runs-on : ubuntu-latest
22
+ container :
23
+ image : ubuntu:20.04
20
24
steps :
21
- - uses : actions/checkout@v3
25
+ - name : Install git
26
+ run : |
27
+ apt-get update -qq && apt-get install -yqq --no-install-recommends ca-certificates curl git openssl
28
+ curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git_2.34.1-1ubuntu1~bpo20.04.1~ppa1_amd64.deb
29
+ curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git-man_2.34.1-1ubuntu1~bpo20.04.1~ppa1_all.deb
30
+ dpkg -i *.deb
31
+ rm *.deb
32
+ - uses : actions/checkout@v4
22
33
with :
23
34
submodules : recursive
24
35
- name : Set up cache
25
- uses : actions/cache@v3
36
+ uses : actions/cache@v4
26
37
with :
27
38
path : |
28
39
~/PawPawBuilds
29
40
key : linux-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
30
- - name : Fix GitHub's mess
31
- run : |
32
- sudo rm /etc/apt/sources.list.d/*.list
33
- sudo apt-get update -qq
34
- sudo apt-get purge -yqq git-man libclang* libgbm* libllvm* libmono* libnginx* moby* mono* nginx* perl php* libgdiplus libpcre2-posix3 libselinux1-dev libzip4
35
- sudo apt-get install -yqq --allow-downgrades autoconf/focal automake/focal build-essential/focal git/focal libgd3/focal libglib2.0-0/focal libglib2.0-dev/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal pkg-config/focal
36
- - name : Set up dependencies (aarch64)
37
- if : ${{ matrix.target == 'aarch64' }}
38
- run : |
39
- sudo dpkg --add-architecture arm64
40
- sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
41
- sudo sed -i "s/deb mirror/deb [arch=amd64] mirror/" /etc/apt/sources.list
42
- echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-arm64.list
43
- echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
44
- echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
45
- sudo apt-get update -qq
46
- sudo apt-get install -yqq g++-aarch64-linux-gnu libasound2-dev:arm64 libdbus-1-dev:arm64 libgl1-mesa-dev:arm64 libglib2.0-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxext-dev:arm64 libxrandr-dev:arm64 gperf meson qemu-user-static
47
- - name : Set up dependencies (armhf)
48
- if : ${{ matrix.target == 'armhf' }}
49
- run : |
50
- sudo dpkg --add-architecture armhf
51
- sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
52
- sudo sed -i "s/deb mirror/deb [arch=amd64] mirror/" /etc/apt/sources.list
53
- echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-armhf.list
54
- echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
55
- echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
56
- sudo apt-get update -qq
57
- sudo apt-get install -yqq g++-arm-linux-gnueabihf libasound2-dev:armhf libdbus-1-dev:armhf libgl1-mesa-dev:armhf libglib2.0-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxext-dev:armhf libxrandr-dev:armhf gperf meson qemu-user-static
58
- - name : Set up dependencies (i386)
59
- if : ${{ matrix.target == 'i386' }}
60
- run : |
61
- sudo dpkg --add-architecture i386
62
- sudo apt-get update -qq
63
- sudo apt-get install -yqq g++-i686-linux-gnu libasound2-dev:i386 libdbus-1-dev:i386 libgl1-mesa-dev:i386 libglib2.0-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxrandr-dev:i386 gperf meson
64
- sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 libwine-dev:i386 wine-stable wine64-tools
65
- - name : Set up dependencies (riscv64)
66
- if : ${{ matrix.target == 'riscv64' }}
41
+ - name : Set up dependencies
67
42
run : |
68
- sudo dpkg --add-architecture riscv64
69
- sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
70
- sudo sed -i "s/deb mirror/deb [arch=amd64] mirror/" /etc/apt/sources.list
71
- echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-riscv64.list
72
- echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-riscv64.list
73
- echo "deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-riscv64.list
74
- sudo apt-get update -qq
75
- sudo apt-get install -yqq g++-riscv64-linux-gnu libasound2-dev:riscv64 libdbus-1-dev:riscv64 libgl1-mesa-dev:riscv64 libglapi-mesa:riscv64 libglvnd0:riscv64 libglib2.0-dev:riscv64 libx11-dev:riscv64 libxcursor-dev:riscv64 libxext-dev:riscv64 libxrandr-dev:riscv64 gperf meson qemu-user-static
76
- - name : Set up dependencies (x86_64)
43
+ git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
44
+ ./PawPaw/.github/workflows/bootstrap-deps.sh linux-${{ matrix.target }}
45
+ - name : Set up dependencies x86_64 extra
77
46
if : ${{ matrix.target == 'x86_64' }}
78
47
run : |
79
- sudo dpkg --add-architecture i386
80
- sudo apt-get update -qq
81
- sudo apt-get install -yqq libasound2-dev libdbus-1-dev libgl1-mesa-dev libglib2.0-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev gperf meson
82
- sudo apt-get install -yqq g++-multilib libx11-dev:i386
83
- sudo apt-get install -yqq binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 mingw-w64 wine-stable wine64-tools
48
+ dpkg --add-architecture i386
49
+ apt-get update -qq
50
+ apt-get install -yqq g++-multilib libx11-dev:i386
51
+ apt-get install -yqq binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 mingw-w64 wine-stable wine64-tools
84
52
- name : Build extra dependencies
85
53
run : |
86
- git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
87
- ./PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }}
54
+ ./PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }} && ./PawPaw/.cleanup.sh linux-${{ matrix.target }}
88
55
- name : Build linux
56
+ shell : bash
89
57
run : |
90
58
source PawPaw/local.env linux-${{ matrix.target }}
91
59
make features
92
60
make NOOPT=true -j $(nproc)
93
61
- name : Build linux x86_64 extra (part1)
94
62
if : ${{ matrix.target == 'x86_64' }}
63
+ shell : bash
95
64
run : |
96
65
source PawPaw/local.env linux-${{ matrix.target }}
97
66
make NOOPT=true all extra-posix32 extra-win32 extra-win64 extra-wine64 -j $(nproc)
98
67
- name : Build linux x86_64 extra (part2)
99
68
if : ${{ matrix.target == 'x86_64' }}
69
+ shell : bash
100
70
run : |
101
- sudo apt-get install -yqq libwine-dev:i386
71
+ apt-get install -yqq libwine-dev:i386
102
72
source PawPaw/local.env linux
103
73
make NOOPT=true extra-wine32 -j $(nproc)
104
74
make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc)
105
75
- name : Set sha8
106
- id : slug
107
- run : echo "::set-output name=sha8:: $(echo ${{ github.sha }} | cut -c1-8)"
108
- - uses : actions/upload-artifact@v3
76
+ run : |
77
+ echo "SHA8= $(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
78
+ - uses : actions/upload-artifact@v4
109
79
with :
110
- name : ${{ github.event.repository.name }}-linux-${{ matrix.target }}-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
80
+ name : ${{ github.event.repository.name }}-linux-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
111
81
path : |
112
82
bin/*
113
83
!bin/Ildaeil
@@ -118,34 +88,37 @@ jobs:
118
88
target : [intel, universal]
119
89
runs-on : macos-11
120
90
steps :
121
- - uses : actions/checkout@v3
91
+ - uses : actions/checkout@v4
122
92
with :
123
93
submodules : recursive
124
94
- name : Set up cache
125
- uses : actions/cache@v3
95
+ uses : actions/cache@v4
126
96
with :
127
97
path : |
128
98
~/PawPawBuilds
129
99
key : macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
130
100
- name : Set up dependencies
131
101
run : |
132
- brew install meson
102
+ git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
103
+ ./PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }}
133
104
- name : Build extra dependencies
134
105
run : |
135
- git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
136
- ./PawPaw/bootstrap-cardinal.sh macos-${{ matrix.target }}
106
+ ./PawPaw/bootstrap-cardinal.sh macos-${{ matrix.target }} && ./PawPaw/.cleanup.sh macos-${{ matrix.target }}
137
107
- name : Build macOS
138
108
run : |
139
109
source PawPaw/local.env macos-${{ matrix.target }}
140
110
make features
141
111
make NOOPT=true -j $(sysctl -n hw.logicalcpu)
112
+ - name : Pack macOS
113
+ run : |
114
+ source PawPaw/local.env macos-${{ matrix.target }}
142
115
./dpf/utils/package-osx-bundles.sh
143
116
- name : Set sha8
144
- id : slug
145
- run : echo "::set-output name=sha8:: $(echo ${{ github.sha }} | cut -c1-8)"
146
- - uses : actions/upload-artifact@v3
117
+ run : |
118
+ echo "SHA8= $(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
119
+ - uses : actions/upload-artifact@v4
147
120
with :
148
- name : ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
121
+ name : ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
149
122
path : |
150
123
*-macOS.pkg
151
124
bin/*
@@ -161,11 +134,11 @@ jobs:
161
134
target : [win32, win64]
162
135
runs-on : ubuntu-22.04
163
136
steps :
164
- - uses : actions/checkout@v3
137
+ - uses : actions/checkout@v4
165
138
with :
166
139
submodules : recursive
167
140
- name : Set up cache
168
- uses : actions/cache@v3
141
+ uses : actions/cache@v4
169
142
with :
170
143
path : |
171
144
~/PawPawBuilds
@@ -175,156 +148,44 @@ jobs:
175
148
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
176
149
sudo dpkg --add-architecture i386
177
150
sudo apt-get update -qq
178
- - name : Set up dependencies (win32)
179
- if : ${{ matrix.target == 'win32' }}
180
- run : |
181
- sudo apt-get install -yqq --allow-downgrades binutils-mingw-w64-i686 libc6:i386 libgcc-s1:i386 libstdc++6:i386 g++-mingw-w64-i686 gperf meson mingw-w64 wine-stable
182
- - name : Set up dependencies (win64)
183
- if : ${{ matrix.target == 'win64' }}
151
+ - name : Set up dependencies
184
152
run : |
185
- sudo apt-get install -yqq --allow-downgrades binutils-mingw-w64-x86-64 libc6:i386 libgcc-s1:i386 libstdc++6:i386 g++-mingw-w64-x86-64 gperf meson mingw-w64 wine-stable
153
+ git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
154
+ ./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }}
186
155
- name : Build extra dependencies
187
156
run : |
188
- git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
189
- ./PawPaw/bootstrap-cardinal.sh ${{ matrix.target }}
157
+ ./PawPaw/bootstrap-cardinal.sh ${{ matrix.target }} && ./PawPaw/.cleanup.sh ${{ matrix.target }}
190
158
- name : Build cross-compiled
191
159
run : |
192
160
source PawPaw/local.env ${{ matrix.target }}
193
161
make features
194
162
make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc)
195
163
- name : Set sha8
196
- id : slug
197
- run : echo "::set-output name=sha8:: $(echo ${{ github.sha }} | cut -c1-8)"
198
- - uses : actions/upload-artifact@v3
164
+ run : |
165
+ echo "SHA8= $(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
166
+ - uses : actions/upload-artifact@v4
199
167
with :
200
- name : ${{ github.event.repository.name }}-${{ matrix.target }}-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
168
+ name : ${{ github.event.repository.name }}-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
201
169
path : |
202
170
bin/*
203
171
!bin/*.exe
204
172
205
- source-tarball :
206
- runs-on : ubuntu-20 .04
173
+ pluginval :
174
+ runs-on : ubuntu-22 .04
207
175
steps :
208
- - uses : actions/checkout@v3
176
+ - uses : actions/checkout@v4
209
177
with :
210
178
submodules : recursive
211
- - name : Set up dependencies
212
- run : |
213
- sudo apt-get update -qq
214
- sudo apt-get install -yqq libgl1-mesa-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev gperf
215
- - name : Create source tarball
216
- run : |
217
- make tarball
218
- - name : Set sha8 (non-release)
219
- if : startsWith(github.ref, 'refs/tags/') != true
220
- id : slug1
221
- run : echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
222
- - name : Set sha8 (release)
223
- if : startsWith(github.ref, 'refs/tags/')
224
- id : slug2
225
- run : echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
226
- - name : Set sha8
227
- id : slug
228
- run : echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
229
- - uses : actions/upload-artifact@v3
179
+ - uses : distrho/dpf-makefile-action@v1
230
180
with :
231
- name : ${{ github.event.repository.name }}-source-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
232
- path : |
233
- /home/runner/*.tar.xz
234
- /home/runner/*/*.tar.xz
235
- /home/runner/*/*/*.tar.xz
236
- - uses : softprops/action-gh-release@v1
237
- if : startsWith(github.ref, 'refs/tags/')
238
- with :
239
- tag_name : ${{ github.ref_name }}
240
- name : ${{ github.ref_name }}
241
- draft : false
242
- prerelease : false
243
- files : |
244
- /home/runner/*.tar.xz
245
- /home/runner/*/*.tar.xz
246
- /home/runner/*/*/*.tar.xz
181
+ target : pluginval
247
182
248
- plugin-validation :
249
- runs-on : ubuntu-20 .04
183
+ source :
184
+ runs-on : ubuntu-22 .04
250
185
steps :
251
- - uses : actions/checkout@v3
186
+ - uses : actions/checkout@v4
252
187
with :
253
188
submodules : recursive
254
- - name : Set up dependencies
255
- run : |
256
- # custom repos
257
- wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb
258
- sudo dpkg -i kxstudio-repos_11.1.0_all.deb
259
- sudo apt-get update -qq
260
- # build-deps
261
- sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev gperf
262
- # runtime testing
263
- sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint kxstudio-lv2-extensions mod-lv2-extensions valgrind xvfb
264
- - name : Build plugins
265
- env :
266
- CFLAGS : -g
267
- CXXFLAGS : -g -DDPF_ABORT_ON_ERROR -DDPF_RUNTIME_TESTING
268
- LDFLAGS : -static-libgcc -static-libstdc++
269
- run : |
270
- make features
271
- make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
272
- - name : Run Ildaeil self-tests
273
- run : |
274
- xvfb-run valgrind \
275
- --gen-suppressions=all \
276
- --error-exitcode=255 \
277
- --leak-check=no \
278
- --track-origins=yes \
279
- --suppressions=./dpf/utils/valgrind-dpf.supp \
280
- ./bin/Ildaeil selftest
281
- - name : Validate LV2 ttl syntax
282
- run : |
283
- lv2_validate \
284
- /usr/lib/lv2/mod.lv2/*.ttl \
285
- /usr/lib/lv2/kx-meta/*.ttl \
286
- /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
287
- /usr/lib/lv2/kx-programs.lv2/*.ttl \
288
- ./bin/*.lv2/*.ttl
289
- - name : Validate LV2 metadata and binaries
290
- run : |
291
- export LV2_PATH=/tmp/lv2-path
292
- mkdir ${LV2_PATH}
293
- cp -r bin/*.lv2 \
294
- /usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \
295
- ${LV2_PATH}
296
- lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
297
- - name : Test LV2 plugins
298
- run : |
299
- export LV2_PATH=/tmp/lv2-path
300
- for p in $(lv2ls); do \
301
- env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
302
- valgrind \
303
- --error-exitcode=255 \
304
- --leak-check=full \
305
- --track-origins=yes \
306
- --suppressions=./dpf/utils/valgrind-dpf.supp \
307
- /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \
308
- done
309
- - name : Test VST2 plugins
310
- run : |
311
- for p in $(find bin/ | grep -e vst.so -e '.*\.vst/.*\.so'); do \
312
- env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
313
- valgrind \
314
- --error-exitcode=255 \
315
- --leak-check=full \
316
- --track-origins=yes \
317
- --suppressions=./dpf/utils/valgrind-dpf.supp \
318
- /usr/lib/carla/carla-bridge-native vst2 ./${p} "" 1>/dev/null; \
319
- done
320
- - name : Test VST3 plugins
321
- run : |
322
- for p in $(ls bin/ | grep vst3); do \
323
- env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
324
- valgrind \
325
- --error-exitcode=255 \
326
- --leak-check=full \
327
- --track-origins=yes \
328
- --suppressions=./dpf/utils/valgrind-dpf.supp \
329
- /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \
330
- done
189
+ - uses : distrho/dpf-makefile-action@v1
190
+ with :
191
+ target : source
0 commit comments