Building Qt6 apps with classic confinement

I maintain the CMake snap, which needs to support a variety of platforms (currently amd64, i386, arm64, armhf, ppc64el and s390x). It uses classic confinement (no choice, it needs to be able to access everything on the system). I’d like to move it to build with Qt6.

It seems that if you’re building classic apps and use Qt, your options for building are pretty limited. I see in various places that the recommended approach is to use the kde-neon extension, but that is a non-starter in cases like mine for the following reasons:

  • It only supports the amd64 architecture. Any snap that wants to support other platforms is out of luck.
  • It doesn’t support classic confinement.
  • As far as I can tell, it still only supports Qt 5 and not Qt 6.

So far, I’ve been getting by with the supposedly deprecated snapcraft desktop helpers, but I find it strange that even after so long, there is no other alternative for any multi-architecture Qt app, let alone a classic confined one. With Qt 6.2 now out and being a LTS release, it seems like we have another seemingly important aspect that is again not being adequately supported, but is probably going to be a problem for more and more snaps going forward.

So I wanted to ask, what is the strategy for multi-architecture, classic apps using Qt? The current deprecated-but-nothing-else-works situation has been the status quo for too long now, but it doesn’t support Qt 6. It seems there’s currently no route to using Qt 6 short of building the whole lot yourself (not really a practical option).

7 Likes