Update Linux CI to Ubuntu 20.04
This PR updates the Linux CI builds to use Ubuntu 20.04 (focal) instead of Ubuntu 18.04 (bionic).
A few changes were needed for a successful build:
- Created an Ubuntu 20.04 Docker image
ghcr.io/lmms/linux.gcc:20.04- Linux packages have migrated from Docker Hub to https://github.com/orgs/lmms/packages
- Built using the Dockerfiles from https://github.com/LMMS/lmms-ci-docker/pull/15
- Updated the
vealsubmodule to the latest commit on the defaultladspabranch- Fixed an error when catching a polymorphic type with GCC 9. See: https://github.com/LMMS/veal/commit/0ae9287dd75a86bbcdce7d1692f0687ef03720e2
- Added GCC flag
-Wno-format-truncationfor ZynAddSubFx build.- See the build failure which prompted this.
- Added GCC flag
-Wno-format-overflowfor calf/veal build.- See the build failure which prompted this.
Benefits:
- Updates GCC from 7.4 to 9.3, which enables support for
std::filesystemin all LMMS CI build runners except for MinGW, taking us one step closer to permitting its use in LMMS code. Once MSVC builds fully replace MinGW, or if the MinGW builds are updated to Ubuntu 20.04,std::filesystemwill be usable. - Updates Qt from 5.9.5 to 5.12.8.
- Can now use short-style LV2 header paths in #6990
- ...
Closes #6993
we should really be using the latest LTS, it would fix some library specific bugs like fluidsynth crashing when loading large soundfonts which was fixed in fluidsynth 2.2.2, we'd be stuck on 2.1.1 in ubuntu 20.04
we should really be using the latest LTS
Unfortunately, that will prevent creating AppImages which works on the oldest supported version of LTS. Running on the oldest supported LTS also ensures that LMMS is not broken on such distribution versions.
it would fix some library specific bugs
Good point. There is a discussion(stale?): #6195
Veal submodule was recently update on master; a rebase should remove it from this PR; limit scope.
LGTM, subject to approval of LMMS/lmms-ci-docker#15.
Agreed. Despite the huge number of commits, this is a very simple PR. Merging.