DISTRHO glBars
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.

341 lines
14KB

  1. name: build
  2. on:
  3. push:
  4. branches:
  5. - '*'
  6. pull_request:
  7. branches:
  8. - '*'
  9. env:
  10. DEBIAN_FRONTEND: noninteractive
  11. HOMEBREW_NO_AUTO_UPDATE: 1
  12. jobs:
  13. linux-arm64:
  14. runs-on: ubuntu-18.04
  15. steps:
  16. - uses: actions/checkout@v2
  17. with:
  18. submodules: recursive
  19. - name: Set up dependencies
  20. run: |
  21. sudo dpkg --add-architecture arm64
  22. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  23. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-arm64.list
  24. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  25. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  26. sudo apt-get update -qq
  27. sudo apt-get install -yq g++-aarch64-linux-gnu libasound2-dev:arm64 libcairo2-dev:arm64 libgl1-mesa-dev:arm64 liblo-dev:arm64 libpulse-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxext-dev:arm64 libxrandr-dev:arm64 qemu-user-static
  28. # fix broken Ubuntu packages missing pkg-config file in multi-arch package
  29. sudo apt-get install -yq libasound2-dev libgl1-mesa-dev liblo-dev libpulse-dev libxcursor-dev libxrandr-dev
  30. sudo ln -s /usr/lib/aarch64-linux-gnu/liblo.so.7 /usr/lib/aarch64-linux-gnu/liblo.so
  31. sudo cp /usr/lib/x86_64-linux-gnu/pkgconfig/liblo.pc /usr/lib/aarch64-linux-gnu/pkgconfig/liblo.pc
  32. sudo sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/pkgconfig/liblo.pc
  33. - name: Build linux arm64 cross-compiled
  34. env:
  35. CC: aarch64-linux-gnu-gcc
  36. CXX: aarch64-linux-gnu-g++
  37. LDFLAGS: -static-libgcc -static-libstdc++
  38. run: |
  39. make features
  40. make -j $(nproc)
  41. - name: Set sha8
  42. id: slug
  43. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  44. - uses: actions/upload-artifact@v2
  45. with:
  46. name: ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  47. path: |
  48. bin/*
  49. linux-armhf:
  50. runs-on: ubuntu-18.04
  51. steps:
  52. - uses: actions/checkout@v2
  53. with:
  54. submodules: recursive
  55. - name: Set up dependencies
  56. run: |
  57. sudo dpkg --add-architecture armhf
  58. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  59. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-armhf.list
  60. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  61. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  62. sudo apt-get update -qq
  63. sudo apt-get install -yq g++-arm-linux-gnueabihf libasound2-dev:armhf libcairo2-dev:armhf libgl1-mesa-dev:armhf liblo-dev:armhf libpulse-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxext-dev:armhf libxrandr-dev:armhf qemu-user-static
  64. # fix broken Ubuntu packages missing pkg-config file in multi-arch package
  65. sudo apt-get install -yq libasound2-dev libgl1-mesa-dev liblo-dev libpulse-dev libxcursor-dev libxrandr-dev
  66. sudo ln -s /usr/lib/arm-linux-gnueabihf/liblo.so.7 /usr/lib/arm-linux-gnueabihf/liblo.so
  67. sudo cp /usr/lib/x86_64-linux-gnu/pkgconfig/liblo.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/liblo.pc
  68. sudo sed -i "s/x86_64-linux-gnu/arm-linux-gnueabihf/" /usr/lib/arm-linux-gnueabihf/pkgconfig/liblo.pc
  69. - name: Build linux armhf cross-compiled
  70. env:
  71. CC: arm-linux-gnueabihf-gcc
  72. CXX: arm-linux-gnueabihf-g++
  73. LDFLAGS: -static-libgcc -static-libstdc++
  74. run: |
  75. make features
  76. make -j $(nproc)
  77. - name: Set sha8
  78. id: slug
  79. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  80. - uses: actions/upload-artifact@v2
  81. with:
  82. name: ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  83. path: |
  84. bin/*
  85. linux-x86:
  86. runs-on: ubuntu-18.04
  87. steps:
  88. - uses: actions/checkout@v2
  89. with:
  90. submodules: recursive
  91. - name: Set up dependencies
  92. run: |
  93. sudo dpkg --add-architecture i386
  94. sudo apt-get update -qq
  95. sudo apt-get install -yq g++-multilib libasound2-dev:i386 libcairo2-dev:i386 libgl1-mesa-dev:i386 liblo-dev:i386 libpulse-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxrandr-dev:i386
  96. - name: Build linux x86
  97. env:
  98. CFLAGS: -m32
  99. CXXFLAGS: -m32
  100. LDFLAGS: -m32 -static-libgcc -static-libstdc++
  101. PKG_CONFIG_PATH: /usr/lib/i386-linux-gnu/pkgconfig
  102. run: |
  103. make features
  104. make -j $(nproc)
  105. - name: Set sha8
  106. id: slug
  107. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  108. - uses: actions/upload-artifact@v2
  109. with:
  110. name: ${{ github.event.repository.name }}-linux-x86-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  111. path: |
  112. bin/*
  113. linux-x86_64:
  114. runs-on: ubuntu-18.04
  115. steps:
  116. - uses: actions/checkout@v2
  117. with:
  118. submodules: recursive
  119. - name: Set up dependencies
  120. run: |
  121. sudo apt-get update -qq
  122. sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  123. - name: Build linux x86_64
  124. env:
  125. LDFLAGS: -static-libgcc -static-libstdc++
  126. run: |
  127. make features
  128. make -j $(nproc)
  129. - name: Set sha8
  130. id: slug
  131. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  132. - uses: actions/upload-artifact@v2
  133. with:
  134. name: ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  135. path: |
  136. bin/*
  137. macos-universal:
  138. runs-on: macos-10.15
  139. steps:
  140. - uses: actions/checkout@v2
  141. with:
  142. submodules: recursive
  143. - name: Fix up Xcode
  144. run: |
  145. sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
  146. sudo xcode-select -s "/Applications/Xcode_12.3.app"
  147. - name: Build macOS universal
  148. env:
  149. CFLAGS: -arch x86_64 -arch arm64 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -mmacosx-version-min=10.12 -mtune=generic -msse -msse2
  150. CXXFLAGS: -arch x86_64 -arch arm64 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -mmacosx-version-min=10.12 -mtune=generic -msse -msse2
  151. LDFLAGS: -arch x86_64 -arch arm64 -mmacosx-version-min=10.12
  152. run: |
  153. make features
  154. make NOOPT=true -j $(sysctl -n hw.logicalcpu)
  155. ./dpf/utils/package-osx-bundles.sh
  156. - name: Set sha8
  157. id: slug
  158. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  159. - uses: actions/upload-artifact@v2
  160. with:
  161. name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  162. path: |
  163. *-macOS.pkg
  164. bin/*
  165. !bin/*-ladspa.dylib
  166. !bin/*-dssi.dylib
  167. !bin/lv2
  168. !bin/vst2
  169. !bin/vst3
  170. win32:
  171. runs-on: ubuntu-20.04
  172. steps:
  173. - uses: actions/checkout@v2
  174. with:
  175. submodules: recursive
  176. - name: Fix GitHub mess
  177. run: |
  178. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  179. sudo apt-get update -qq
  180. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal
  181. - name: Set up dependencies
  182. run: |
  183. sudo dpkg --add-architecture i386
  184. sudo apt-get update -qq
  185. sudo apt-get install -yq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386
  186. - name: Build win32 cross-compiled
  187. env:
  188. CC: i686-w64-mingw32-gcc
  189. CXX: i686-w64-mingw32-g++
  190. EXE_WRAPPER: wine
  191. PKG_CONFIG: "false"
  192. #WINEDEBUG: "-all"
  193. run: |
  194. make features
  195. make -j $(nproc)
  196. - name: Set sha8
  197. id: slug
  198. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  199. - uses: actions/upload-artifact@v2
  200. with:
  201. name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  202. path: |
  203. bin/*
  204. !bin/*-ladspa.dll
  205. !bin/*-dssi.dll
  206. win64:
  207. runs-on: ubuntu-20.04
  208. steps:
  209. - uses: actions/checkout@v2
  210. with:
  211. submodules: recursive
  212. - name: Set up dependencies
  213. run: |
  214. sudo apt-get update -qq
  215. sudo apt-get install -yq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable
  216. - name: Build win64 cross-compiled
  217. env:
  218. CC: x86_64-w64-mingw32-gcc
  219. CXX: x86_64-w64-mingw32-g++
  220. EXE_WRAPPER: wine
  221. PKG_CONFIG: "false"
  222. #WINEDEBUG: "-all"
  223. run: |
  224. make features
  225. make -j $(nproc)
  226. - name: Set sha8
  227. id: slug
  228. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  229. - uses: actions/upload-artifact@v2
  230. with:
  231. name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  232. path: |
  233. bin/*
  234. !bin/*-ladspa.dll
  235. !bin/*-dssi.dll
  236. plugin-validation:
  237. runs-on: ubuntu-20.04
  238. steps:
  239. - uses: actions/checkout@v2
  240. with:
  241. submodules: recursive
  242. - name: Set up dependencies
  243. run: |
  244. # custom repos
  245. wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb
  246. sudo dpkg -i kxstudio-repos_10.0.3_all.deb
  247. sudo apt-get update -qq
  248. # build-deps
  249. sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  250. # runtime testing
  251. sudo apt-get install -yq carla-git lilv-utils lv2-dev lv2lint valgrind
  252. - name: Build plugins
  253. env:
  254. CFLAGS: -g
  255. CXXFLAGS: -g -DDPF_ABORT_ON_ERROR
  256. LDFLAGS: -static-libgcc -static-libstdc++
  257. run: |
  258. make features
  259. make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
  260. - name: Validate LV2 ttl syntax
  261. run: |
  262. lv2_validate \
  263. /usr/lib/lv2/mod.lv2/*.ttl \
  264. /usr/lib/lv2/kx-meta/*.ttl \
  265. /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
  266. /usr/lib/lv2/kx-programs.lv2/*.ttl \
  267. ./bin/*.lv2/*.ttl
  268. - name: Validate LV2 metadata and binaries
  269. run: |
  270. export LV2_PATH=/tmp/lv2-path
  271. mkdir ${LV2_PATH}
  272. cp -r bin/*.lv2 \
  273. /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 \
  274. ${LV2_PATH}
  275. lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
  276. - name: Test LADSPA plugins
  277. run: |
  278. for p in $(ls bin/ | grep ladspa.so); do \
  279. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  280. valgrind \
  281. --error-exitcode=255 \
  282. --leak-check=full \
  283. --track-origins=yes \
  284. --suppressions=./dpf/utils/valgrind-dpf.supp \
  285. /usr/lib/carla/carla-bridge-native ladspa ./bin/${p} "" 1>/dev/null; \
  286. done
  287. - name: Test DSSI plugins
  288. run: |
  289. for p in $(ls bin/ | grep dssi.so); do \
  290. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  291. valgrind \
  292. --error-exitcode=255 \
  293. --leak-check=full \
  294. --track-origins=yes \
  295. --suppressions=./dpf/utils/valgrind-dpf.supp \
  296. /usr/lib/carla/carla-bridge-native dssi ./bin/${p} "" 1>/dev/null; \
  297. done
  298. - name: Test LV2 plugins
  299. run: |
  300. export LV2_PATH=/tmp/lv2-path
  301. for p in $(lv2ls); do \
  302. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  303. valgrind \
  304. --error-exitcode=255 \
  305. --leak-check=full \
  306. --track-origins=yes \
  307. --suppressions=./dpf/utils/valgrind-dpf.supp \
  308. /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \
  309. done
  310. - name: Test VST2 plugins
  311. run: |
  312. for p in $(ls bin/ | grep vst.so); do \
  313. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  314. valgrind \
  315. --error-exitcode=255 \
  316. --leak-check=full \
  317. --track-origins=yes \
  318. --suppressions=./dpf/utils/valgrind-dpf.supp \
  319. /usr/lib/carla/carla-bridge-native vst2 ./bin/${p} "" 1>/dev/null; \
  320. done
  321. - name: Test VST3 plugins
  322. run: |
  323. for p in $(ls bin/ | grep vst3); do \
  324. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  325. valgrind \
  326. --error-exitcode=255 \
  327. --leak-check=full \
  328. --track-origins=yes \
  329. --suppressions=./dpf/utils/valgrind-dpf.supp \
  330. /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \
  331. done