[Discussion] Update Meson in Ubuntu 18.04 to a newer version
See original GitHub issueI am creating this report in meson repo only because I noticed @jpakkane is a package maintainer for meson in Ubuntu; if it’s more appropriate to have this discussion in Ubuntu mailing list then let me know or just close this report.
Background
In dosbox-staging project, we are migrating away from autotools to Meson and so far it’s going great - thank you so much to the whole Meson team for creating such robust and well-designed tool 😃 We still encounter some quirks and edge cases here and there - I will be reporting them once I will be 100% sure they are meson problems.
The biggest problem we’re facing during migration is: we strongly prefer to use meson
provided by OS rather than downloading from pip - it makes packager’s lifes easier and we avoid problems when running builds in Docker, where pip sometimes fails (for various reasons).
Context: for our testers we provide cross-distro builds (binaries packaged in tarballs - they work in any distro because we are very careful about ABIs we depend on) - the key for having those builds working is making them on the oldest stable distribution. In the past it meant targeting Debian Stable, later we moved on to Ubuntu 16.04 LTS, but it’s closing to EOL so we moved on to Ubuntu 18.04 recently (which we’ll likely to target for several years now).
This means we are bound to the Meson features available in version 0.45.1… Some very useful features that are missing from this version are:
- dictionaries (meson >= 0.47.0)
- support for
in
operator for lists and dictionaries (meson >= 0.49.0) - support for
break
andcontinue
statement in loops (meson >= 0.49.0) - support for
not_found_message
keyword for dependencies (not documented when this feature was added) - support for
ppc64
machine cpu family (it’s namedppc64le
- this might be a bug, I’m not sure - it contradicts documentation).
Wider context
At the moment, Ubuntu 18.04 LTS provides meson 0.45.1 - with exception of 16.04 this seems to be the oldest generally available version. In a few months, Ubuntu 16.04 LTS (using meson 0.29.0 ATM) will reach EOL and 18.04 LTS will become the oldest free offering by Canonical. Subsequently, we can expect 18.04 will soon be the oldest Linux image picked by various CI providers (it already is the default e.g. on GitHub CI), and will likely be the base for numerous other Linux distributions.
I think updating Meson in Ubuntu 18.04 to a newer version would be very valuable throughout the whole ecosystem:
- Large and important projects like Mesa, systemd, or Gnome could start using features from newer Meson versions, and people working on backports to older distros would have a much easier time.
- Having features like dictionaries and break/continue keywords available in practically any installation out there makes it easier for new projects to migrate to Meson.
- People extending/upgrading existing meson buildsystems could probably replace complicated if-else logic with more readable use of loop+dictionary+break
Meson versions in various “stabler” repositories as of January 2021
- CentOS 8: meson 0.49.3
- Debian Stable (and various derivatives like Raspbian Stable): meson 0.49.2
- EPEL 7: meson 0.55.1
- Fedora 31 (soon reaching EOL): meson 0.51.2
- openSUSE Leap 15.2 (15.1 is reaching EOL): meson 0.54.2
I do not suggest going straight to the newest version, but rather sticking to the older, stable one - 0.49 seems to be a good candidate. I bet @jpakkane will know the best which version would be the most appropriate in this context.
Issue Analytics
- State:
- Created 3 years ago
- Comments:10 (10 by maintainers)
Let’s close this issue then, it’s for downstream.
@eli-schwartz Thanks! I will just update comment in my code to point out that
ppc64le
is for meson < 0.47.2 and when we’ll eventually require newer meson version for compiling dosbox-staging, I’ll drop the line entirely.For the context: we don’t have / know about any users of 64-bit PPC big-endian. Keeping the architecture name clean and avoiding
le
suffix was a good choice IMHO (after all there’s nomipsle
, so why there should beppc64le
).