Age | Commit message (Collapse) | Author | Files | Lines |
|
When application exits abnormally, it emits "failed" signal, instead of
"inactive" one. Handle it accordingly, so the internal state doesn't get
out of sync and prevents starting the app again.
Bug-AGL: SPEC-4199
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
Change-Id: I307a6c6973f98d8f57af477bc03ebfb1218559db
|
|
Changes:
- Rename the existing daemon to applaunchd-dbus, and add a new
version that exposes a gRPC based implementation of the API based
on the protobuf definition added in a top-level protos directory.
Having both the D-Bus and gRPC APIs exposed by a single daemon was
posing difficulties around startup dependencies stemming from D-Bus
activation of the daemon. Since the end goal is dropping the D-Bus
API entirely, it is easier to just add a second daemon for gRPC that
will eventually be the only one present.
- To facilitate building the two implementations, a significant amount
of code refactoring has been done to move things from the D-Bus API
implementing app_launcher.[ch] to systemd_manager.[ch] so the code
can be reused.
- All use of the systemd D-Bus library except for the path encoding
helper function has been replaced with GDBus. The systemd interface
wrapper code was generated with gdbus-codegen from XML files captured
via introspection on a running system. The motivation for this
change was to avoid multithreading issues with sd_bus exposed when
calling into it from the gRPC threads.
- The copyright headers in the source files have been tweaked to
remove the Apache license boilerplate in favour of a SPDX license
tag.
Notes:
- The gRPC API differs slightly from the D-Bus one in that it has a
single status streaming RPC method as opposed to the separate signals
for application started or terminated that the D-Bus API has.
- The gRPC API is currently unauthenticated, the aim is to circle back
and implement authentication once a consensus can be reached on what
mechanism should be used (fixed JWT configuration, OAuth, etc.).
Bug-AGL: SPEC-4559
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I828f38a58b60e9959162b98054982124d4fa4380
|
|
Rework to replace the Glib .desktop file based app enumeration
scheme with querying systemd for units matching the pattern
agl-app*@*.service and parsing out the application ID from the
unit instance name. At the moment this assumes the use of template
units, but that could be changed to open up using non-templated
units if desired. Application icons are now assumed to be named
with the application ID, and the systemd unit file "Description"
field is read and used as the application display name. This
avoids needing metadata outside of the systemd unit files.
Bug-AGL: SPEC-4466
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ida7dc8f7fdb96722df0886eb9a72ee14b0856083
|
|
This replaces dbus_activation_manager and retains basic process_manager for now.
The first version of systemd_manager supports starting apps as services, handles
aynchronous events to emit corresponding STARTED and TERMINATED signals. But it
still relies on .desktop files for application enumeration and icon setting,
plus uses DBusActivatable=true to prefer systemd_manager over process_manager.
These shortcomings will be addressed in future revisions.
And systemd_manager supports sandboxing and templating with overrides:
* There's a generic systemd service template called systemd/system/agl-app@.service,
that becomes agl-app@<app>.service for a given <app>
* Overrides for an <app> are symlinks in systemd/system/agl-app@<app>.service.d/
pointing to corresponding generic configs in systemd/sandboxing/*.conf
Bug-AGL: SPEC-4466
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
Change-Id: Id62cbf848f09250f1a8989a79cc61292a3ce054a
|
|
Due to an error in how running apps were handled, applaunchd would emit
the "started" signal for D-Bus-activated apps only. This change ensures
the signal is emitted for all running apps, regardless of how they were
started.
Bug-AGL: SPEC-4160
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Change-Id: Ibd88223931b51de6c732985c8b886d06886769d5
|
|
Without this change, we don't properly keep track of running apps, and
end up starting multiple instances of those.
Bug-AGL: SPEC-4160
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Change-Id: I070264f5d12c1c84a520537612518ab2837507d7
|
|
Tweak logic in app_launcher_update_applications_list to avoid
crashing when XDG_DATA_DIRS is not set in the environment.
Bug-AGL: SPEC-4160
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ia5494f3482a979cbdb22d89e3777d426d4750d4f
|
|
`applaunchd` is a new service, dedicated to starting and monitoring
applications. It is part of the Application Framework rework.
Bug-AGL: SPEC-4160
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Change-Id: I9543957f9065670e9112556f5cd2b31d0b2ab9d9
|
|
Bug-AGL: SPEC-4160
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@collabora.com>
Change-Id: Iefaf7ec22d15cd3b8f73c73d18a8907295edd5e3
|
|
|