GNOME Desktop Snap Applications Introducing Snapcraft GNOME Extensions

GNOME Desktop Snap Applications Introducing Snapcraft GNOME Extensions

GNOME Desktop Snap Applications Introducing Snapcraft GNOME extensions Heather Ellsworth, Desktop Team Brief Outline ● What are Snaps? ● What is Snapcraft? ● Core pieces of snapcraft.yaml ● Improving the developer experience with Snapcraft GNOME Extensions ● What’s next 2 Foundation Concepts ● Snap ● Snapcraft 3 What are Snaps? ● Bundle of an app and its dependencies that works without modification across many different Linux distributions. ● Discoverable and installable from the snapstore ● Built with snapcraft ● Run and managed by snapd 4 What is Snapcraft? ● Tool that builds snaps … ○ Consumes the snap/snapcraft.yaml of a project ○ For all types of apps ■ Headless (IoT) ■ Desktop: KDE (see Igor’s talk) + GNOME ● A bunch of python: https://github.com/snapcore/snapcraft 5 Core GNOME Snap Requirements 6 snapcraft.yaml for a GNOME app ● GNOME theming info ○ Plugs (consumer of interfaces) ○ Slots (provider of interfaces) ● Desktop icon ● Apps - usually more than one ○ Evince: evince, evince-previewer, evince-thumbnailer) ○ Snappy-debug: 6 apps! A whole toolbox! ● Parts that use libraries needed by GNOME-themed apps ○ Examples: glib, libgtk3-dev, gobject-introspection, etc. 7 Improving the Developer Experience with ● Abstract away common pieces Extensions ● Provide newer libraries ● Common build environment 8 What is the new Snapcraft GNOME Extension? ● Alternative method of building a snap ● Snapcraft code ○ gnome-3-28 was the first ○ gnome-3-32 work was rolled into gnome-3-34 ○ gnome-3-34 is almost ready for release ● Uses build snap and platform snap ○ Build snap - builds commonly used libraries from source ○ Platform snap - provides your app with the build snap for build time, unnecessary parts removed for your app runtime ● Removes GNOME plugs and simplifies app-specific plugs ● Obviates desktop-launch and the use of desktop helper scripts 9 Desktop example without extensions (tali) plugs: apps: parts: gnome-3-28-1804: tali: desktop-gnome-platform: interface: content command: desktop-launch tali source: https://github.com/ubuntu/snapcraft-desktop-helpers.git target: $SNAP/gnome-platform plugs: source-subdir: gtk default-provider: gnome-3-28-1804 - desktop plugin: make gtk-3-themes: - desktop-legacy make-parameters: ["FLAVOR=gtk3"] interface: content - gsettings build-packages: target: $SNAP/data-dir/themes - unity7 - build-essential default-provider: gtk-common-themes - wayland - libgtk-3-dev icon-themes: desktop: usr/share/applications/org.gnome.Tali.desktop override-build: | interface: content snapcraftctl build target: $SNAP/data-dir/icons mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform default-provider: gtk-common-themes tali: after: [desktop-gnome-platform] slots: ... # for GtkApplication registration tali: interface: dbus https://gitlab.gnome.org/GNOME/tali/blob/gnome-3-32/snap/snapcraft.yaml bus: session Note: Bold items are all at the same hierarchy in the snapcraft.yaml name: org.gnome.Tali 10 Smaller snapcraft.yaml to maintain - plugs: apps: parts: - gnome-3-28-1804: tali: - desktop-gnome-platform: - interface: content + command: usr/bin/tali - source: https://github.com/ubuntu/snapcraft-desktop-helpers.git - target: $SNAP/gnome-platform + extensions: [gnome-3-28] - source-subdir: gtk - default-provider: gnome-3-28-1804 - command: desktop-launch tali - plugin: make - gtk-3-themes: - plugs: - make-parameters: ["FLAVOR=gtk3"] - interface: content - - desktop - build-packages: - target: $SNAP/data-dir/themes - - desktop-legacy - - build-essential - default-provider: gtk-common-themes - - gsettings - - libgtk-3-dev - icon-themes: - - unity7 - override-build: | - interface: content - - wayland - snapcraftctl build - target: $SNAP/data-dir/icons desktop: usr/share/applications/org.gnome.Tali.desktop - mkdir -pv $SNAPCRAFT_PART_INSTALL/gnome-platform - default-provider: gtk-common-themes tali: - after: [desktop-gnome-platform] slots: ... # for GtkApplication registration tali: interface: dbus https://gitlab.gnome.org/GNOME/tali/blob/master/snap/snapcraft.yaml bus: session Note: Bold items are all at the same hierarchy in the snapcraft.yaml name: org.gnome.Tali 11 Newer Libraries in the Build Snap ● Project libraries built from latest stable gnome branch (ie gnome-3-34) or latest stable branch or tag ● Better than using default libraries provided by apt (18.04 base) ● Any package built as part of the build snap never needs to be listed in build-packages list https://gitlab.gnome.org/Community/Ubuntu/gnome-sdk/ 12 Common Build Environment ● Available to all parts in snapcraft.yaml ● Can be overridden as needed for full control PATH: /snap/gnome-3-34-1804-sdk/current/usr/bin:$PATH XDG_DATA_DIRS: /snap/gnome-3-34-1804-sdk/current/usr/share:/usr/share:$XDG_DATA_DIRS LD_LIBRARY_PATH: /snap/gnome-3-34-1804-sdk/current/lib/$SNAPCRAFT_ARCH_TRIPLET:/snap/gnome-3-34-1804-sdk/current/usr/lib/$SNAPCRAFT_ARC H_TRIPLET:/snap/gnome-3-34-1804-sdk/current/usr/lib:/snap/gnome-3-34-1804-sdk/current/usr/lib/vala-current:$LD_LIBRARY_PATH PKG_CONFIG_PATH: /snap/gnome-3-34-1804-sdk/current/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pkgconfig:/snap/gnome-3-34-1804-sdk/current/usr/lib/pkg config:/snap/gnome-3-34-1804-sdk/current/usr/share/pkgconfig:$PKG_CONFIG_PATH GETTEXTDATADIRS: /snap/gnome-3-34-1804-sdk/current/usr/share/gettext-current:$GETTEXTDATADIRS GDK_PIXBUF_MODULE_FILE: /snap/gnome-3-34-1804-sdk/current/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/gdk-pixbuf-current/loaders.cache GTK_USE_PORTALS: '1' 13 That’s neat! What’s next? 14 Maintenance & Future Extensions ● There are many existing GNOME snaps -> keep them up to date ● Documentation improvements ● Encourage community involvement ● Expect a new extension for every GNOME release 15 Snap Packaging Workshop Join us tomorrow for the Snap Packaging Workshop where we will: ● Have fun ● Talk about snap packaging ● Help with any snap packaging issues Sala de reunions , 10am - 4pm 16 Useful Links ● Snapcraft code: https://github.com/snapcore/snapcraft ● Build and platform snap code: https://gitlab.gnome.org/Community/Ubuntu/gnome-sdk/ ● Tali example: ○ Before extension: https://gitlab.gnome.org/GNOME/tali/blob/gnome-3-32/snap/sna pcraft.yaml ○ After extension: https://gitlab.gnome.org/GNOME/tali/blob/master/snap/snapcraf t.yaml ● Snap store, docs, and forum can all be found at https://snapcraft.io/ ● Blog: https://blogs.gnome.org/hellsworth/ 17 Thank You! Questions? Heather Ellsworth hellsworth on irc/git [email protected] 18.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    18 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us