Download presentation
Presentation is loading. Please wait.
Published byLynn Williamson Modified over 6 years ago
1
Gnome SDK A better way to ship apps Alexander Larsson Red Hat, Inc
February 7, 2015
2
Interest in application deployment/distribution
Glick Glick2 Bundler Updatinator Docker Atomic OSTree “Linux Apps”
3
What is an application?
4
What is an OS?
5
Is a distribution an OS?
6
Importance of the App/OS split
7
Solution: Bundling?
8
Idea: Runtimes
9
Idea: Sandboxing
10
Introducing: xdg-app
11
Introducing: Gnome SDK
12
Demo time!
13
Fucking Apps, how do they work?
14
Application structure
├── metadata ├── files │ ├── bin │ │ └── gedit │ ├── lib │ │ ├── libgtksourceview-3.0.so │ │ └── ... │ └── share │ └── ... └── export └── share ├── applications ├── icons └── dbus-1
15
Metadata: [Application] runtime=org.gnome.Platform/x86_64/3.16 sdk=org.gnome.Sdk/x86_64/3.16 command=gedit [Environment] x11=true wayland=true ipc=true pulseaudio=true system-dbus=true session-dbus=true network=true host-fs=true homedir=true
16
Runtime structure ├── metadata └── files ├── bin │ └── bash ├── lib │ ├── libgtk3.so.0 │ └── ├── share │ └── └── etc └── ...
17
sandbox structure / – private tmpfs instance ├── usr – bindmount to runtime files ├── self – bindmount to app files ├── var – bindmount to per-app/user data ├── home/user -> /var/home ├── etc -> usr/etc ├── bin -> usr/bin ├── lib -> usr/lib ├── tmp ├── proc – procfs mount └── dev – minimal device set
18
/var/xdg-app, ~/.local/share/xdg-app
├── repo – ostree repo ├── runtime/org.gnome.Platform/x86_64/3.16 │ ├── 84ea hardlinked ostree checkout │ └── active -> 84ea ├── app/org.gnome.Gedit │ ├── x86_64/master │ │ ├── 175f30f hardlinked ostree checkout │ │ └── active -> 175f30f │ └── data – per app/user writable data └── exports/share ├── applications │ └── org.gnome.gedit.desktop -> ├── dbus-1/services │ └── org.gnome.gedit.service -> └── icons/hicolor └── ...
19
New complexities Runtime prerequisites Kernel Services
IPC compatibility
20
Creating an app bundle Choose a base runtime
It comes with a corresponding devel runtime Build using xdg-app: xdg-app build-init build-dir org.gnome.Sdk org.gnome.Platform cd src/my-app xdg-app build build-dir ./configure --prefix=/self xdg-app build build-dir make xdg-app build build-dir make install xdg-app build-finish --command=myapp –allow=x11 \ allow=host-fs --allow=session-bus build-dir xdg-app build-export /repos/my-app build-dir org.foo.MyApp Alternatively, Gnome SDK contains rpm/rpmbuild Configured to build rpms into /self
21
The future: Sandboxing
Wayland Kdbus Selinux Cgroups Use more namespaces Portal DBus APIs for sandboxed apps
22
References Project page: https://wiki.gnome.org/Projects/SandboxedApps
Mailing list: Xdg-app: Gnome SDK: Feedback
23
Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.