fix/update snap & port to core18 & depend on neon packages for newer tech
ClosedPublic

Authored by sitter on Feb 4 2019, 1:49 PM.

Details

Summary

this is largely a partial sync from the kf5 launcher used for the kf5
content snap.

launcher:

  • make sure all lib paths are in ld_library
  • make sure GL drivers may be found
  • make sure nvidia host-mounted drivers may be found
  • rejigger font handling to sit on top of the host fonts instead of shipping ones inside the snap
  • XDG variables are no longer separated by version (the individual HOMEs are already by version e.g. ~/snap/krita/{1,2,3}) so the additional versioning only serves to lose all settings on updates
  • set more XDG variables to ensure they are sound
  • force qtchooser to use suitable paths directed at the snap
  • do not hardcode any SESSION variables or platformtheme. the variables are forwarded into the snap, and Qt will figure out what to do with the environment on its own
  • do not attempt to start KIO slaves via klauncher but instead qprocess fork them (ensures a) not breaking out b) they are in the same pgroup)
  • configure qlibraryinfo to find relevant Qt stuff from the snap (this relies on a neon specific patch in qtbase to make QLI XDG-aware)
  • translations are now working, alas, at a cost to startup performance as we need to generate locales on-demand (it may be prudent to pre-generate some popular locales) to reduce overhead when they are used, at the cost of snap size. this is actually implemented by kf5-locale-gen which generates locales in the snap's home and directs glibc there
  • the launcher now forces plasma theme plugin on all platforms, this is specifically to ensure that the app is fully functional and in fact looks good. this may be revisted once desktop portals are fully available (qt 5.12 and portal SRU into ubuntu 16.04), but even so certain qstyles are not working very well I've been told

snap:

  • now on core18 (i.e. ubuntu 18.04 base)
  • use desktop and desktop-legacy interfaces, the former gives approximately what unity7 does but is directed at the future, the latter is somewhat terribly named because it actually gives access to some key dbus interfaces, such as accessibility and input methods (legacy may be done away with in the future if desktop can grow better confinement rules)
  • do away with the part separation between kdeframeworks and qt, since both are only stage packages there isn't much use derived from them besides blowing up the yaml
  • all packages have been updated to 18.04 variants
  • fonts are no longer being staged (launcher now picks up system fonts)
  • new plasma-integration part makes sure krita neatly integrates into plasma environments
  • setup/ is now snap/ [former is deprecated, same functionality]
  • build is now done in release mode instead of manually setting compile flags

build:

  • to get a newer qt/kf5 stack the snap is using neon builds instead of ubuntu 16.04 builds
  • to properly build, build.sh should be used (which depends on lxd to provision an ephemeral build container with snapd)
Test Plan

builds a snap!

Diff Detail

Repository
R37 Krita
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
sitter created this revision.Feb 4 2019, 1:49 PM
Restricted Application added a reviewer: Krita. · View Herald TranscriptFeb 4 2019, 1:49 PM
Restricted Application added a project: Krita. · View Herald Transcript
sitter requested review of this revision.Feb 4 2019, 1:49 PM
sitter updated this revision to Diff 50843.Feb 4 2019, 1:52 PM

actually include most of the diff -.-

sitter updated this revision to Diff 50917.Feb 5 2019, 9:57 AM

make sure KIO plugins are actually found

rempt accepted this revision.Feb 5 2019, 10:55 AM
This revision is now accepted and ready to land.Feb 5 2019, 10:55 AM
This revision was automatically updated to reflect the committed changes.