diff options
author | Scott Murray <scott.murray@konsulko.com> | 2022-07-27 16:50:30 -0400 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2022-07-29 23:02:27 +0000 |
commit | 321af7331c91a174b52eb5e17d8ab5b3e72ce5cb (patch) | |
tree | b01092f42658a5a8f2dfaa26696b9c3e44386228 /meta-app-framework/classes/agl-app.bbclass | |
parent | b98ee1af003b2c98ba29836269a1ae1d9ebf56ba (diff) |
meta-app-framework: Update app template scheme
Changes to support the move to systemd unit based app enumeration in
applaunchd:
- Bump applaunchd SRCREV to pick up enumeration changes.
- Tweak the polkit rule to match agl-app* instead of agl-app@*
to allow more flexibility with respect to different app templates.
- Tweak the Description field definition in the agl-app service
template to just use the instance name, as that field is now used
for the application display name by applaunchd.
- Add a agl-app-web service template for web apps.
- Add a agl-app.bbclass for use in application recipes to simplify
installation of the now required systemd template instances and
potential generation of override files to tweak application
configuration.
- Split the agl-app and agl-app-web templates into their own packages
in the applaunchd recipe so they can be depended on by applications
as required.
- Move applaunchd installed systemd units and override files to
/lib/systemd/system since that matches the upstream recommendation
for units installed as part of the system installation.
Bug-AGL: SPEC-4466
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I32ff6c9624850662856b79a2b14b33a05e7f9a65
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/27835
Tested-by: Jenkins Job builder account
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Reviewed-by: Jose Dapena Paz <jdapena@igalia.com>
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-app-framework/classes/agl-app.bbclass')
-rw-r--r-- | meta-app-framework/classes/agl-app.bbclass | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/meta-app-framework/classes/agl-app.bbclass b/meta-app-framework/classes/agl-app.bbclass new file mode 100644 index 000000000..6565fdfae --- /dev/null +++ b/meta-app-framework/classes/agl-app.bbclass @@ -0,0 +1,75 @@ +# +# AGL application systemd unit installation class +# + +# Systemd template unit +# * agl-app, agl-app-web, agl-app-flutter valid +AGL_APP_TEMPLATE ?= "agl-app" + +# Application ID +# This is what the application will be referred to in the list +# exposed to clients by applaunchd, and generally ends up as the +# identifier used by agl-compositor for application surface +# activation. +AGL_APP_ID ?= "${BPN}" + +# Application display name +AGL_APP_NAME ?= "${AGL_APP_ID}" + +# Application executable +# * agl-app template only +# Use if the application ID and the executable name are both +# different from the package name and each other as well. +AGL_APP_EXEC ?= "${AGL_APP_ID}" + +# Web application bundle directory (non-absolute, so directory +# name under /usr/lib/wam_apps) +# * agl-app-web template only +# Use if the web application bundle installs to a directory that +# is not the same as the package name. +AGL_APP_WAM_DIR ?= "${BPN}" + +do_install:append () { + install -d ${D}${systemd_system_unitdir} + ln -s ${AGL_APP_TEMPLATE}\@.service \ + ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service + + # NOTE: Unit & Service changes could potentially be collected + # and a single override .conf created, but things will be + # kept simple for now. + + if [ "${AGL_APP_EXEC}" != "${AGL_APP_ID}" ]; then + install -d ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d + cat <<-EOF > ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d/exec.conf + [Service] + ExecStart= + ExecStart=${AGL_APP_EXEC} + EOF + fi + + if [ "${AGL_APP_NAME}" != "${AGL_APP_ID}" ]; then + install -d ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d + cat <<-EOF > ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d/name.conf + [Unit] + Description= + Description=${AGL_APP_NAME} + EOF + fi + + if [ "${AGL_APP_TEMPLATE}" = "agl-app-web" -a "${AGL_APP_ID}" != "${BPN}" ]; then + # The application ID does not necessarily match the package name + # used in the WAM install hierarchy, and the IDs are hard-coded in + # some of the web apps, so if necessary create an override for the + # environment variable used in place of directly deriving from %i + # (which will always be the app id). + install -d ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d + cat <<-EOF > ${D}${systemd_system_unitdir}/${AGL_APP_TEMPLATE}\@${AGL_APP_ID}.service.d/wam.conf + [Service] + Environment=AGL_APP_WAM_DIR=${AGL_APP_WAM_DIR} + EOF + fi +} + +FILES:${PN}:append = " ${systemd_system_unitdir} ${datadir}/icons" + +RDEPENDS:${PN}:append = " applaunchd-template-${AGL_APP_TEMPLATE}" |