You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1072 lines
44KB

  1. name: build
  2. on:
  3. push:
  4. env:
  5. CACHE_VERSION: 25
  6. CARDINAL_UNDER_WINE: 1
  7. DEBIAN_FRONTEND: noninteractive
  8. HOMEBREW_NO_AUTO_UPDATE: 1
  9. LIBGL_ALWAYS_SOFTWARE: 'true'
  10. jobs:
  11. linux-arm64:
  12. runs-on: ubuntu-20.04
  13. steps:
  14. - uses: actions/checkout@v2
  15. with:
  16. submodules: recursive
  17. - name: Set up cache
  18. id: cache
  19. uses: actions/cache@v2
  20. with:
  21. path: |
  22. ~/PawPawBuilds
  23. */*.a
  24. bin/*.*/*.so
  25. bin/*.vst3/Contents/*/*.so
  26. bin/Cardinal
  27. build/Cardinal
  28. build/CardinalFX
  29. build/CardinalSynth
  30. build/plugins
  31. build/rack
  32. carla/build
  33. dpf/build
  34. src/Rack/dep/bin
  35. src/Rack/dep/include
  36. src/Rack/dep/lib
  37. src/Rack/dep/share
  38. src/Rack/dep/jansson-2.12
  39. src/Rack/dep/libarchive-3.4.3
  40. src/Rack/dep/libsamplerate-0.1.9
  41. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  42. src/Rack/dep/zstd-1.4.5
  43. key: linux-arm64-v${{ env.CACHE_VERSION }}
  44. - name: Fix GitHub's mess
  45. run: |
  46. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  47. sudo apt-get update -qq
  48. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  49. - name: Set up dependencies
  50. run: |
  51. sudo dpkg --add-architecture arm64
  52. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  53. 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
  54. 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
  55. 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
  56. sudo apt-get update -qq
  57. sudo apt-get install -yqq g++-aarch64-linux-gnu libdbus-1-dev:arm64 libgl1-mesa-dev:arm64 libglib2.0-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxext-dev:arm64 libxrandr-dev:arm64 qemu-user-static
  58. - name: Build extra dependencies
  59. env:
  60. PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
  61. run: |
  62. ./deps/PawPaw/bootstrap-cardinal.sh linux-aarch64 && ./deps/PawPaw/.cleanup.sh linux-aarch64
  63. - name: Build linux arm64 cross-compiled
  64. run: |
  65. pushd deps/PawPaw; source local.env linux-aarch64; popd
  66. make features
  67. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  68. make unzipfx
  69. - name: Set sha8 (non-release)
  70. if: startsWith(github.ref, 'refs/tags/') != true
  71. id: slug1
  72. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  73. - name: Set sha8 (release)
  74. if: startsWith(github.ref, 'refs/tags/')
  75. id: slug2
  76. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  77. - name: Set sha8
  78. id: slug
  79. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  80. - name: Pack binaries
  81. run: |
  82. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst) ../Cardinal
  83. - uses: actions/upload-artifact@v2
  84. with:
  85. name: ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  86. path: |
  87. *.tar.gz
  88. - uses: softprops/action-gh-release@v1
  89. if: startsWith(github.ref, 'refs/tags/')
  90. with:
  91. tag_name: ${{ github.ref_name }}
  92. name: ${{ github.ref_name }}
  93. draft: false
  94. prerelease: false
  95. files: |
  96. *.tar.gz
  97. linux-armhf:
  98. runs-on: ubuntu-20.04
  99. steps:
  100. - uses: actions/checkout@v2
  101. with:
  102. submodules: recursive
  103. - name: Set up cache
  104. id: cache
  105. uses: actions/cache@v2
  106. with:
  107. path: |
  108. ~/PawPawBuilds
  109. */*.a
  110. bin/*.*/*.so
  111. bin/*.vst3/Contents/*/*.so
  112. bin/Cardinal
  113. build/Cardinal
  114. build/CardinalFX
  115. build/CardinalSynth
  116. build/plugins
  117. build/rack
  118. carla/build
  119. dpf/build
  120. src/Rack/dep/bin
  121. src/Rack/dep/include
  122. src/Rack/dep/lib
  123. src/Rack/dep/share
  124. src/Rack/dep/jansson-2.12
  125. src/Rack/dep/libarchive-3.4.3
  126. src/Rack/dep/libsamplerate-0.1.9
  127. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  128. src/Rack/dep/zstd-1.4.5
  129. key: linux-armhf-v${{ env.CACHE_VERSION }}
  130. - name: Fix GitHub's mess
  131. run: |
  132. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  133. sudo apt-get update -qq
  134. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  135. - name: Set up dependencies
  136. run: |
  137. sudo dpkg --add-architecture armhf
  138. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  139. 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
  140. 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
  141. 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
  142. sudo apt-get update -qq
  143. sudo apt-get install -yqq g++-arm-linux-gnueabihf libdbus-1-dev:armhf libgl1-mesa-dev:armhf libglib2.0-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxext-dev:armhf libxrandr-dev:armhf qemu-user-static
  144. - name: Build extra dependencies
  145. env:
  146. PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig
  147. run: |
  148. ./deps/PawPaw/bootstrap-cardinal.sh linux-armhf && ./deps/PawPaw/.cleanup.sh linux-armhf
  149. - name: Build linux armhf cross-compiled
  150. run: |
  151. pushd deps/PawPaw; source local.env linux-armhf; popd
  152. make features
  153. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  154. make unzipfx
  155. - name: Set sha8 (non-release)
  156. if: startsWith(github.ref, 'refs/tags/') != true
  157. id: slug1
  158. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  159. - name: Set sha8 (release)
  160. if: startsWith(github.ref, 'refs/tags/')
  161. id: slug2
  162. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  163. - name: Set sha8
  164. id: slug
  165. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  166. - name: Pack binaries
  167. run: |
  168. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst) ../Cardinal
  169. - uses: actions/upload-artifact@v2
  170. with:
  171. name: ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  172. path: |
  173. *.tar.gz
  174. - uses: softprops/action-gh-release@v1
  175. if: startsWith(github.ref, 'refs/tags/')
  176. with:
  177. tag_name: ${{ github.ref_name }}
  178. name: ${{ github.ref_name }}
  179. draft: false
  180. prerelease: false
  181. files: |
  182. *.tar.gz
  183. linux-i686:
  184. runs-on: ubuntu-20.04
  185. steps:
  186. - uses: actions/checkout@v2
  187. with:
  188. submodules: recursive
  189. - name: Set up cache
  190. id: cache
  191. uses: actions/cache@v2
  192. with:
  193. path: |
  194. ~/PawPawBuilds
  195. */*.a
  196. bin/*.*/*.so
  197. bin/*.vst3/Contents/*/*.so
  198. bin/Cardinal
  199. build/Cardinal
  200. build/CardinalFX
  201. build/CardinalSynth
  202. build/plugins
  203. build/rack
  204. carla/build
  205. dpf/build
  206. src/Rack/dep/bin
  207. src/Rack/dep/include
  208. src/Rack/dep/lib
  209. src/Rack/dep/share
  210. src/Rack/dep/jansson-2.12
  211. src/Rack/dep/libarchive-3.4.3
  212. src/Rack/dep/libsamplerate-0.1.9
  213. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  214. src/Rack/dep/zstd-1.4.5
  215. key: linux-i686-v${{ env.CACHE_VERSION }}
  216. - name: Fix GitHub's mess
  217. run: |
  218. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  219. sudo apt-get update -qq
  220. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  221. - name: Set up dependencies
  222. run: |
  223. sudo dpkg --add-architecture i386
  224. sudo apt-get update -qq
  225. sudo apt-get install -yqq g++-multilib libdbus-1-dev:i386 libgl1-mesa-dev:i386 libglib2.0-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxrandr-dev:i386
  226. - name: Build extra dependencies
  227. env:
  228. PKG_CONFIG_PATH: /usr/lib/i386-linux-gnu/pkgconfig
  229. run: |
  230. ./deps/PawPaw/bootstrap-cardinal.sh linux-i686 && ./deps/PawPaw/.cleanup.sh linux-i686
  231. - name: Build linux i686
  232. run: |
  233. pushd deps/PawPaw; source local.env linux-i686; popd
  234. make features
  235. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  236. make unzipfx
  237. - name: Set sha8 (non-release)
  238. if: startsWith(github.ref, 'refs/tags/') != true
  239. id: slug1
  240. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  241. - name: Set sha8 (release)
  242. if: startsWith(github.ref, 'refs/tags/')
  243. id: slug2
  244. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  245. - name: Set sha8
  246. id: slug
  247. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  248. - name: Pack binaries
  249. run: |
  250. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst) ../Cardinal
  251. - uses: actions/upload-artifact@v2
  252. with:
  253. name: ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  254. path: |
  255. *.tar.gz
  256. - uses: softprops/action-gh-release@v1
  257. if: startsWith(github.ref, 'refs/tags/')
  258. with:
  259. tag_name: ${{ github.ref_name }}
  260. name: ${{ github.ref_name }}
  261. draft: false
  262. prerelease: false
  263. files: |
  264. *.tar.gz
  265. linux-x86_64:
  266. runs-on: ubuntu-20.04
  267. steps:
  268. - uses: actions/checkout@v2
  269. with:
  270. submodules: recursive
  271. - name: Set up cache
  272. id: cache
  273. uses: actions/cache@v2
  274. with:
  275. path: |
  276. ~/PawPawBuilds
  277. */*.a
  278. bin/*.*/*.so
  279. bin/*.vst3/Contents/*/*.so
  280. bin/Cardinal
  281. build/Cardinal
  282. build/CardinalFX
  283. build/CardinalSynth
  284. build/plugins
  285. build/rack
  286. carla/build
  287. dpf/build
  288. src/Rack/dep/bin
  289. src/Rack/dep/include
  290. src/Rack/dep/lib
  291. src/Rack/dep/share
  292. src/Rack/dep/jansson-2.12
  293. src/Rack/dep/libarchive-3.4.3
  294. src/Rack/dep/libsamplerate-0.1.9
  295. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  296. src/Rack/dep/zstd-1.4.5
  297. key: linux-x86_64-v${{ env.CACHE_VERSION }}
  298. - name: Set up dependencies
  299. run: |
  300. sudo apt-get update -qq
  301. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev libglib2.0-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  302. - name: Build extra dependencies
  303. run: |
  304. ./deps/PawPaw/bootstrap-cardinal.sh linux && ./deps/PawPaw/.cleanup.sh linux
  305. - name: Build linux x86_64
  306. run: |
  307. pushd deps/PawPaw; source local.env linux; popd
  308. make features
  309. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  310. make unzipfx
  311. - name: Set sha8 (non-release)
  312. if: startsWith(github.ref, 'refs/tags/') != true
  313. id: slug1
  314. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  315. - name: Set sha8 (release)
  316. if: startsWith(github.ref, 'refs/tags/')
  317. id: slug2
  318. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  319. - name: Set sha8
  320. id: slug
  321. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  322. - name: Pack binaries
  323. run: |
  324. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst) ../Cardinal
  325. - uses: actions/upload-artifact@v2
  326. with:
  327. name: ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  328. path: |
  329. *.tar.gz
  330. - uses: softprops/action-gh-release@v1
  331. if: startsWith(github.ref, 'refs/tags/')
  332. with:
  333. tag_name: ${{ github.ref_name }}
  334. name: ${{ github.ref_name }}
  335. draft: false
  336. prerelease: false
  337. files: |
  338. *.tar.gz
  339. linux-x86_64-debug:
  340. runs-on: ubuntu-20.04
  341. steps:
  342. - uses: actions/checkout@v2
  343. with:
  344. submodules: recursive
  345. - name: Set up dependencies
  346. run: |
  347. sudo apt-get update -qq
  348. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  349. - name: Build linux x86_64 (debug)
  350. env:
  351. LDFLAGS: -static-libgcc -static-libstdc++
  352. run: |
  353. make features
  354. make DEBUG=true -j $(nproc)
  355. - name: Set sha8
  356. id: slug
  357. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  358. - name: Pack binaries
  359. run: |
  360. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst)
  361. - uses: actions/upload-artifact@v2
  362. with:
  363. name: ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  364. path: |
  365. *.tar.gz
  366. linux-x86_64-headless:
  367. runs-on: ubuntu-20.04
  368. steps:
  369. - uses: actions/checkout@v2
  370. with:
  371. submodules: recursive
  372. - name: Set up dependencies
  373. run: |
  374. sudo apt-get update -qq
  375. sudo apt-get remove -yqq libcairo2-dev libx11-dev libx11-dev libxext-dev
  376. sudo apt-get install -yqq liblo-dev
  377. - name: Build linux x86_64 (headless)
  378. run: |
  379. make HEADLESS=true features
  380. make HEADLESS=true -j $(nproc)
  381. linux-x86_64-sysdeps:
  382. runs-on: ubuntu-20.04
  383. steps:
  384. - uses: actions/checkout@v2
  385. with:
  386. submodules: recursive
  387. - name: Set up dependencies
  388. run: |
  389. sudo apt-get update -qq
  390. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev libarchive-dev libjansson-dev libsamplerate0-dev libsndfile1-dev libspeexdsp-dev
  391. - name: Build linux x86_64 (sysdeps)
  392. run: |
  393. make features
  394. make SYSDEPS=true -j $(nproc)
  395. macos-intel:
  396. runs-on: macos-10.15
  397. steps:
  398. - uses: actions/checkout@v2
  399. with:
  400. submodules: recursive
  401. - name: Set up cache
  402. id: cache
  403. uses: actions/cache@v2
  404. with:
  405. path: |
  406. ~/PawPawBuilds
  407. */*.a
  408. bin/*.*/*.dylib
  409. bin/*.*/Contents/MacOS/*
  410. bin/Cardinal
  411. build/Cardinal
  412. build/CardinalFX
  413. build/CardinalSynth
  414. build/plugins
  415. build/rack
  416. carla/build
  417. dpf/build
  418. jucewrapper/build
  419. src/Rack/dep/bin
  420. src/Rack/dep/include
  421. src/Rack/dep/lib
  422. src/Rack/dep/share
  423. src/Rack/dep/jansson-2.12
  424. src/Rack/dep/libarchive-3.4.3
  425. src/Rack/dep/libsamplerate-0.1.9
  426. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  427. src/Rack/dep/zstd-1.4.5
  428. key: macos-intel-v${{ env.CACHE_VERSION }}
  429. - name: Build extra dependencies
  430. run: |
  431. ./deps/PawPaw/bootstrap-cardinal.sh macos && ./deps/PawPaw/.cleanup.sh macos
  432. - name: Build macOS intel (base)
  433. run: |
  434. pushd deps/PawPaw; source local.env macos; popd
  435. make features
  436. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(sysctl -n hw.logicalcpu)
  437. - name: Build macOS intel (AU using juce)
  438. env:
  439. MACOSX_DEPLOYMENT_TARGET: '10.8'
  440. run: |
  441. pushd deps/PawPaw; source local.env macos; popd
  442. git clone --depth=1 -b 6.1.6 https://github.com/juce-framework/JUCE.git jucewrapper/JUCE
  443. sed -i -e 's/kAudioUnitProperty_SupportsMPE/kAudioUnitProperty_ignore_SupportsMPE/' jucewrapper/JUCE/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
  444. mkdir -p jucewrapper/build
  445. pushd jucewrapper/build; cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.8 -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
  446. mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
  447. - name: Build macOS intel (packaging)
  448. env:
  449. MACOS_ARCHS: 'x86_64'
  450. run: |
  451. pushd deps/PawPaw; source local.env macos; popd
  452. ./utils/create-macos-installer.sh
  453. - name: Set sha8 (non-release)
  454. if: startsWith(github.ref, 'refs/tags/') != true
  455. id: slug1
  456. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  457. - name: Set sha8 (release)
  458. if: startsWith(github.ref, 'refs/tags/')
  459. id: slug2
  460. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  461. - name: Set sha8
  462. id: slug
  463. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  464. - name: Rename macOS bundle
  465. run: |
  466. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  467. - uses: actions/upload-artifact@v2
  468. with:
  469. name: ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  470. path: |
  471. ${{ github.event.repository.name }}-*.pkg
  472. - uses: softprops/action-gh-release@v1
  473. if: startsWith(github.ref, 'refs/tags/')
  474. with:
  475. tag_name: ${{ github.ref_name }}
  476. name: ${{ github.ref_name }}
  477. draft: false
  478. prerelease: false
  479. files: |
  480. ${{ github.event.repository.name }}-*.pkg
  481. macos-universal:
  482. runs-on: macos-10.15
  483. steps:
  484. - uses: actions/checkout@v2
  485. with:
  486. submodules: recursive
  487. - name: Set up cache
  488. id: cache
  489. uses: actions/cache@v2
  490. with:
  491. path: |
  492. ~/PawPawBuilds
  493. */*.a
  494. bin/*.*/*.dylib
  495. bin/*.*/Contents/MacOS/*
  496. bin/Cardinal
  497. build/Cardinal
  498. build/CardinalFX
  499. build/CardinalSynth
  500. build/plugins
  501. build/rack
  502. carla/build
  503. dpf/build
  504. jucewrapper/build
  505. src/Rack/dep/bin
  506. src/Rack/dep/include
  507. src/Rack/dep/lib
  508. src/Rack/dep/share
  509. src/Rack/dep/jansson-2.12
  510. src/Rack/dep/libarchive-3.4.3
  511. src/Rack/dep/libsamplerate-0.1.9
  512. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  513. src/Rack/dep/zstd-1.4.5
  514. key: macos-universal-v${{ env.CACHE_VERSION }}
  515. - name: Fix up Xcode
  516. run: |
  517. sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
  518. sudo xcode-select -s "/Applications/Xcode_12.3.app"
  519. - name: Build extra dependencies
  520. run: |
  521. ./deps/PawPaw/bootstrap-cardinal.sh macos-universal && ./deps/PawPaw/.cleanup.sh macos-universal
  522. - name: Build macOS universal (base)
  523. run: |
  524. pushd deps/PawPaw; source local.env macos-universal; popd
  525. make features
  526. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(sysctl -n hw.logicalcpu)
  527. - name: Build macOS universal (AU using juce)
  528. env:
  529. MACOSX_DEPLOYMENT_TARGET: '10.12'
  530. run: |
  531. pushd deps/PawPaw; source local.env macos-universal; popd
  532. git clone --depth=1 -b 6.1.6 https://github.com/juce-framework/JUCE.git jucewrapper/JUCE
  533. mkdir -p jucewrapper/build
  534. pushd jucewrapper/build; cmake -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
  535. mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
  536. - name: Build macOS universal (packaging)
  537. env:
  538. MACOS_ARCHS: 'arm64,x86_64'
  539. run: |
  540. pushd deps/PawPaw; source local.env macos-universal; popd
  541. ./utils/create-macos-installer.sh
  542. - name: Set sha8 (non-release)
  543. if: startsWith(github.ref, 'refs/tags/') != true
  544. id: slug1
  545. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  546. - name: Set sha8 (release)
  547. if: startsWith(github.ref, 'refs/tags/')
  548. id: slug2
  549. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  550. - name: Set sha8
  551. id: slug
  552. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  553. - name: Rename macOS bundle
  554. run: |
  555. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  556. - uses: actions/upload-artifact@v2
  557. with:
  558. name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  559. path: |
  560. ${{ github.event.repository.name }}-*.pkg
  561. - uses: softprops/action-gh-release@v1
  562. if: startsWith(github.ref, 'refs/tags/')
  563. with:
  564. tag_name: ${{ github.ref_name }}
  565. name: ${{ github.ref_name }}
  566. draft: false
  567. prerelease: false
  568. files: |
  569. ${{ github.event.repository.name }}-*.pkg
  570. modduo:
  571. runs-on: ubuntu-20.04
  572. steps:
  573. - uses: actions/checkout@v2
  574. with:
  575. submodules: recursive
  576. - name: Set up cache
  577. uses: actions/cache@v2
  578. id: mpb-cache
  579. with:
  580. path: |
  581. ~/mod-workdir
  582. key: modduo-static-v${{ env.CACHE_VERSION }}
  583. - name: Set up dependencies
  584. run: |
  585. sudo apt-get update -qq
  586. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  587. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  588. - name: Bootstrap toolchain
  589. if: steps.mpb-cache.outputs.cache-hit != 'true'
  590. run: |
  591. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  592. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  593. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduo-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduo-static
  594. - name: Build for modduo
  595. run: |
  596. make modduo HEADLESS=true WITH_LTO=true MODDUO=true -j $(nproc)
  597. - name: Set sha8
  598. id: slug
  599. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  600. - name: Pack binaries
  601. run: |
  602. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  603. - uses: actions/upload-artifact@v2
  604. with:
  605. name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  606. path: |
  607. *.tar.gz
  608. modduox:
  609. runs-on: ubuntu-20.04
  610. steps:
  611. - uses: actions/checkout@v2
  612. with:
  613. submodules: recursive
  614. - name: Set up cache
  615. uses: actions/cache@v2
  616. id: mpb-cache
  617. with:
  618. path: |
  619. ~/mod-workdir
  620. key: modduox-v${{ env.CACHE_VERSION }}
  621. - name: Set up dependencies
  622. run: |
  623. sudo apt-get update -qq
  624. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  625. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  626. - name: Bootstrap toolchain
  627. if: steps.mpb-cache.outputs.cache-hit != 'true'
  628. run: |
  629. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  630. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  631. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduox-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduox-static
  632. - name: Build for modduox
  633. run: |
  634. make modduox HEADLESS=true WITH_LTO=true -j $(nproc)
  635. - name: Set sha8
  636. id: slug
  637. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  638. - name: Pack binaries
  639. run: |
  640. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  641. - uses: actions/upload-artifact@v2
  642. with:
  643. name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  644. path: |
  645. *.tar.gz
  646. moddwarf:
  647. runs-on: ubuntu-20.04
  648. steps:
  649. - uses: actions/checkout@v2
  650. with:
  651. submodules: recursive
  652. - name: Set up cache
  653. uses: actions/cache@v2
  654. id: mpb-cache
  655. with:
  656. path: |
  657. ~/mod-workdir
  658. key: moddwarf-v${{ env.CACHE_VERSION }}
  659. - name: Set up dependencies
  660. run: |
  661. sudo apt-get update -qq
  662. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  663. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  664. - name: Bootstrap toolchain
  665. if: steps.mpb-cache.outputs.cache-hit != 'true'
  666. run: |
  667. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  668. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  669. $(pwd)/deps/mod-plugin-builder/bootstrap.sh moddwarf minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh moddwarf
  670. - name: Build for moddwarf
  671. run: |
  672. make moddwarf HEADLESS=true WITH_LTO=true -j $(nproc)
  673. - name: Set sha8
  674. id: slug
  675. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  676. - name: Pack binaries
  677. run: |
  678. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  679. - uses: actions/upload-artifact@v2
  680. with:
  681. name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  682. path: |
  683. *.tar.gz
  684. wasm:
  685. runs-on: ubuntu-20.04
  686. steps:
  687. - uses: actions/checkout@v2
  688. with:
  689. submodules: recursive
  690. - name: Set up cache
  691. id: cache
  692. uses: actions/cache@v2
  693. with:
  694. path: |
  695. ~/PawPawBuilds
  696. */*.a
  697. build/CardinalFX
  698. build/plugins
  699. build/rack
  700. carla/build
  701. dpf/build
  702. src/Rack/dep/bin
  703. src/Rack/dep/include
  704. src/Rack/dep/lib
  705. src/Rack/dep/share
  706. src/Rack/dep/jansson-2.12
  707. src/Rack/dep/libarchive-3.4.3
  708. src/Rack/dep/libsamplerate-0.1.9
  709. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  710. src/Rack/dep/zstd-1.4.5
  711. key: wasm-v${{ env.CACHE_VERSION }}
  712. - name: Set up dependencies
  713. run: |
  714. [ -e ~/PawPawBuilds/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/PawPawBuilds/emsdk
  715. cd ~/PawPawBuilds/emsdk && ./emsdk install latest && ./emsdk activate latest
  716. - name: Build extra dependencies
  717. run: |
  718. source ~/PawPawBuilds/emsdk/emsdk_env.sh
  719. ./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
  720. - name: Build wasm cross-compiled
  721. run: |
  722. source ~/PawPawBuilds/emsdk/emsdk_env.sh
  723. pushd deps/PawPaw; source local.env wasm; popd
  724. make features
  725. make CIBUILD=true NOOPT=true USING_GLES2=true -j $(nproc)
  726. - name: Set sha8 (non-release)
  727. if: startsWith(github.ref, 'refs/tags/') != true
  728. id: slug1
  729. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  730. - name: Set sha8 (release)
  731. if: startsWith(github.ref, 'refs/tags/')
  732. id: slug2
  733. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  734. - name: Set sha8
  735. id: slug
  736. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  737. - name: Pack binaries
  738. run: |
  739. cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls *.html *.data *.js *.wasm)
  740. - uses: actions/upload-artifact@v2
  741. with:
  742. name: ${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  743. path: |
  744. *.zip
  745. - uses: softprops/action-gh-release@v1
  746. if: startsWith(github.ref, 'refs/tags/')
  747. with:
  748. tag_name: ${{ github.ref_name }}
  749. name: ${{ github.ref_name }}
  750. draft: false
  751. prerelease: false
  752. files: |
  753. *.zip
  754. win32:
  755. runs-on: ubuntu-20.04
  756. steps:
  757. - uses: actions/checkout@v2
  758. with:
  759. submodules: recursive
  760. - name: Set up cache
  761. id: cache
  762. uses: actions/cache@v2
  763. with:
  764. path: |
  765. ~/PawPawBuilds
  766. */*.a
  767. bin/*.*/*.dll
  768. bin/*.vst3/Contents/*/*.vst3
  769. bin/Cardinal.exe
  770. build/Cardinal
  771. build/CardinalFX
  772. build/CardinalSynth
  773. build/plugins
  774. build/rack
  775. carla/build
  776. dpf/build
  777. src/Rack/dep/bin
  778. src/Rack/dep/include
  779. src/Rack/dep/lib
  780. src/Rack/dep/share
  781. src/Rack/dep/jansson-2.12
  782. src/Rack/dep/libarchive-3.4.3
  783. src/Rack/dep/libsamplerate-0.1.9
  784. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  785. src/Rack/dep/zstd-1.4.5
  786. key: win32-v${{ env.CACHE_VERSION }}
  787. - name: Fix GitHub's mess
  788. run: |
  789. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  790. sudo apt-get update -qq
  791. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  792. - name: Set up dependencies
  793. run: |
  794. sudo dpkg --add-architecture i386
  795. sudo apt-get update -qq
  796. sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 qttools5-dev qttools5-dev-tools xvfb
  797. - name: Build extra dependencies
  798. run: |
  799. ./deps/PawPaw/bootstrap-cardinal.sh win32 && ./deps/PawPaw/.cleanup.sh win32
  800. - name: Build win32 cross-compiled (base)
  801. run: |
  802. pushd deps/PawPaw; source local.env win32; popd
  803. make features
  804. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  805. - name: Build win64 cross-compiled (carla)
  806. run: |
  807. pushd deps/PawPaw; source local.env win32; popd
  808. make -C carla CARLA_BACKEND_NAMESPACE=Cardinal EXTERNAL_PLUGINS=true HAVE_FLUIDSYNTH=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false HAVE_PYQT=true HAVE_QT5=true HAVE_QT5PKG=true STATIC_PLUGIN_TARGET=true USING_CUSTOM_DPF=true CUSTOM_DPF_PATH=$(pwd)/dpf -j $(nproc)
  809. make -C carla EMBED_TARGET=true TESTING=true dist
  810. make -C carla EMBED_TARGET=true TESTING=true dist
  811. - name: Build win64 cross-compiled (packaging)
  812. run: |
  813. pushd deps/PawPaw; source local.env win32; popd
  814. xvfb-run ./utils/create-windows-installer.sh 32
  815. - name: Set sha8 (non-release)
  816. if: startsWith(github.ref, 'refs/tags/') != true
  817. id: slug1
  818. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  819. - name: Set sha8 (release)
  820. if: startsWith(github.ref, 'refs/tags/')
  821. id: slug2
  822. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  823. - name: Set sha8
  824. id: slug
  825. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  826. - name: Pack binaries
  827. run: |
  828. cd bin; zip -r -9 ../${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls | grep -e lv2 -e vst)
  829. - uses: actions/upload-artifact@v2
  830. with:
  831. name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  832. path: |
  833. *.exe
  834. *.zip
  835. - uses: softprops/action-gh-release@v1
  836. if: startsWith(github.ref, 'refs/tags/')
  837. with:
  838. tag_name: ${{ github.ref_name }}
  839. name: ${{ github.ref_name }}
  840. draft: false
  841. prerelease: false
  842. files: |
  843. *.exe
  844. *.zip
  845. win64:
  846. runs-on: ubuntu-20.04
  847. steps:
  848. - uses: actions/checkout@v2
  849. with:
  850. submodules: recursive
  851. - name: Set up cache
  852. id: cache
  853. uses: actions/cache@v2
  854. with:
  855. path: |
  856. ~/PawPawBuilds
  857. */*.a
  858. bin/*.*/*.dll
  859. bin/*.vst3/Contents/*/*.vst3
  860. bin/Cardinal.exe
  861. build/Cardinal
  862. build/CardinalFX
  863. build/CardinalSynth
  864. build/plugins
  865. build/rack
  866. carla/build
  867. dpf/build
  868. src/Rack/dep/bin
  869. src/Rack/dep/include
  870. src/Rack/dep/lib
  871. src/Rack/dep/share
  872. src/Rack/dep/jansson-2.12
  873. src/Rack/dep/libarchive-3.4.3
  874. src/Rack/dep/libsamplerate-0.1.9
  875. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  876. src/Rack/dep/zstd-1.4.5
  877. key: win64-v${{ env.CACHE_VERSION }}
  878. - name: Fix GitHub's mess
  879. run: |
  880. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  881. sudo apt-get update -qq
  882. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  883. - name: Set up dependencies
  884. run: |
  885. sudo dpkg --add-architecture i386
  886. sudo apt-get update -qq
  887. sudo apt-get install -yqq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable qttools5-dev qttools5-dev-tools xvfb
  888. - name: Build extra dependencies
  889. run: |
  890. ./deps/PawPaw/bootstrap-cardinal.sh win64 && ./deps/PawPaw/.cleanup.sh win64
  891. - name: Build win64 cross-compiled (base)
  892. run: |
  893. pushd deps/PawPaw; source local.env win64; popd
  894. make features
  895. make CIBUILD=true NOOPT=true WITH_LTO=true -j $(nproc)
  896. - name: Build win64 cross-compiled (carla)
  897. run: |
  898. pushd deps/PawPaw; source local.env win64; popd
  899. make -C carla CARLA_BACKEND_NAMESPACE=Cardinal EXTERNAL_PLUGINS=true HAVE_FLUIDSYNTH=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false HAVE_PYQT=true HAVE_QT5=true HAVE_QT5PKG=true STATIC_PLUGIN_TARGET=true USING_CUSTOM_DPF=true CUSTOM_DPF_PATH=$(pwd)/dpf all win32r -j $(nproc)
  900. make -C carla EMBED_TARGET=true TESTING=true dist
  901. make -C carla EMBED_TARGET=true TESTING=true dist
  902. - name: Build win64 cross-compiled (packaging)
  903. run: |
  904. pushd deps/PawPaw; source local.env win64; popd
  905. xvfb-run ./utils/create-windows-installer.sh 64
  906. - name: Set sha8 (non-release)
  907. if: startsWith(github.ref, 'refs/tags/') != true
  908. id: slug1
  909. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  910. - name: Set sha8 (release)
  911. if: startsWith(github.ref, 'refs/tags/')
  912. id: slug2
  913. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  914. - name: Set sha8
  915. id: slug
  916. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  917. - name: Pack binaries
  918. run: |
  919. cd bin; zip -r -9 ../${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls | grep -e lv2 -e vst)
  920. - uses: actions/upload-artifact@v2
  921. with:
  922. name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  923. path: |
  924. *.exe
  925. *.zip
  926. - uses: softprops/action-gh-release@v1
  927. if: startsWith(github.ref, 'refs/tags/')
  928. with:
  929. tag_name: ${{ github.ref_name }}
  930. name: ${{ github.ref_name }}
  931. draft: false
  932. prerelease: false
  933. files: |
  934. *.exe
  935. *.zip
  936. source-tarball:
  937. runs-on: ubuntu-20.04
  938. steps:
  939. - uses: actions/checkout@v2
  940. with:
  941. submodules: recursive
  942. - name: Set up dependencies
  943. run: |
  944. sudo apt-get update -qq
  945. sudo apt-get install -yqq liblo-dev
  946. - name: Create source tarball
  947. run: |
  948. make HEADLESS=true tarball
  949. make HEADLESS=true tarball+deps
  950. - name: Set sha8 (non-release)
  951. if: startsWith(github.ref, 'refs/tags/') != true
  952. id: slug1
  953. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  954. - name: Set sha8 (release)
  955. if: startsWith(github.ref, 'refs/tags/')
  956. id: slug2
  957. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  958. - name: Set sha8
  959. id: slug
  960. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  961. - uses: actions/upload-artifact@v2
  962. with:
  963. name: ${{ github.event.repository.name }}-source-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  964. path: |
  965. /home/runner/cardinal*.tar.xz
  966. /home/runner/*/cardinal*.tar.xz
  967. /home/runner/*/*/cardinal*.tar.xz
  968. - uses: softprops/action-gh-release@v1
  969. if: startsWith(github.ref, 'refs/tags/')
  970. with:
  971. tag_name: ${{ github.ref_name }}
  972. name: ${{ github.ref_name }}
  973. draft: false
  974. prerelease: false
  975. files: |
  976. /home/runner/cardinal*.tar.xz
  977. /home/runner/*/cardinal*.tar.xz
  978. /home/runner/*/*/cardinal*.tar.xz
  979. plugin-validation:
  980. runs-on: ubuntu-20.04
  981. steps:
  982. - uses: actions/checkout@v2
  983. with:
  984. submodules: recursive
  985. - name: Set up dependencies
  986. run: |
  987. # custom repos
  988. wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb
  989. sudo dpkg -i kxstudio-repos_10.0.3_all.deb
  990. sudo apt-get update -qq
  991. # build-deps
  992. sudo apt-get install -yqq liblo-dev
  993. # runtime testing
  994. sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint valgrind
  995. - name: Build Cardinal
  996. env:
  997. CFLAGS: -g
  998. CXXFLAGS: -g -DDPF_ABORT_ON_ERROR
  999. LDFLAGS: -static-libgcc -static-libstdc++
  1000. run: |
  1001. make HEADLESS=true features
  1002. make HEADLESS=true NOOPT=true NOPLUGINS=true STATIC_BUILD=true SKIP_STRIPPING=true -j $(nproc)
  1003. - name: Validate LV2 ttl syntax
  1004. run: |
  1005. lv2_validate \
  1006. /usr/lib/lv2/mod.lv2/*.ttl \
  1007. /usr/lib/lv2/kx-meta/*.ttl \
  1008. /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
  1009. /usr/lib/lv2/kx-programs.lv2/*.ttl \
  1010. ./bin/*.lv2/*.ttl
  1011. - name: Validate LV2 metadata and binaries
  1012. run: |
  1013. export LV2_PATH=/tmp/lv2-path
  1014. mkdir ${LV2_PATH}
  1015. cp -r bin/CardinalFX.lv2 bin/CardinalSynth.lv2 \
  1016. /usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,mod,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \
  1017. ${LV2_PATH}
  1018. lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
  1019. - name: Test LV2 plugin
  1020. run: |
  1021. export LV2_PATH=/tmp/lv2-path
  1022. for p in $(lv2ls); do \
  1023. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1024. valgrind \
  1025. --error-exitcode=255 \
  1026. --leak-check=no \
  1027. --track-origins=yes \
  1028. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1029. /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \
  1030. done
  1031. - name: Test VST2 plugin
  1032. run: |
  1033. for p in $(ls bin/*.vst/*.so); do \
  1034. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1035. valgrind \
  1036. --error-exitcode=255 \
  1037. --leak-check=no \
  1038. --track-origins=yes \
  1039. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1040. /usr/lib/carla/carla-bridge-native vst2 ./${p} "" 1>/dev/null; \
  1041. done
  1042. - name: Test VST3 plugin
  1043. run: |
  1044. for p in $(ls bin/ | grep vst3); do \
  1045. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1046. valgrind \
  1047. --error-exitcode=255 \
  1048. --leak-check=no \
  1049. --track-origins=yes \
  1050. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1051. /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \
  1052. done