From 49a85681e52d1f568a5bb6086d7e14af701ac6dc Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Tue, 20 Feb 2024 15:17:17 -0500 Subject: [PATCH] Enable running audio services on host for KVM demo Changes: - Add agl-kvm-host-audio feature for configuring other changes. - Make installation of packagegroup-agl-ivi-service-platform in the KVM host versus IVI images dependent on the agl-kvm-host-audio feature. Some recipe dependencies are tweaked by the feature being specified to avoid accidentally pulling things into the IVI guest images. - Add KVM demo specific configuration for applications affected by running the databroker on the host versus in the IVI guest, and use it if the agl-kvm-host-kuksa feature is enabled. Bug-AGL: SPEC-5082 Change-Id: I3a6e6216a90e4d260c20f0b048e6332466aef4ff Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29702 ci-image-boot-test: Jenkins Job builder account ci-image-build: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller Tested-by: Jenkins Job builder account --- .../agl-service-radio/agl-service-radio_git.bb | 19 ++++++++++++- .../agl-service-radio/files/radio.conf.kvm-demo | 2 ++ .../files/cluster-dashboard.yaml.demo | 1 + .../flutter-cluster-dashboard/files/kvm.conf | 3 ++ .../flutter-cluster-dashboard_git.bb | 8 +++++- .../files/ics-homescreen.yaml.kvm-demo | 10 +++++++ recipes-demo/flutter-ics-homescreen/files/kvm.conf | 3 ++ .../flutter-ics-homescreen_git.bb | 33 +++++++++++++++++++--- recipes-demo/libqtappfw/libqtappfw_git.bb | 6 +++- .../ondemandnavi/navigation.conf.kvm-demo | 4 +++ recipes-demo/navigation/ondemandnavi_git.bb | 24 ++++++++++++++-- recipes-demo/navigation/tbtnavi/kvm.conf | 3 ++ .../navigation/tbtnavi/tbtnavi.conf.kvm-demo | 4 +++ recipes-demo/navigation/tbtnavi_git.bb | 30 ++++++++++++++++++-- recipes-platform/images/agl-image-ivi.bb | 2 +- recipes-platform/images/agl-ivi-demo-features.inc | 7 ++++- .../images/agl-ivi-demo-platform-flutter.bb | 2 ++ recipes-platform/images/agl-ivi-demo-platform.bb | 1 + recipes-platform/images/agl-kvm-demo-platform.bb | 23 +++++++++++++++ .../packagegroup-agl-demo-cluster-support.bb | 15 ---------- .../packagegroup-agl-ivi-multimedia.bb | 2 +- .../feature/agl-kvm-host-audio/50_local.conf.inc | 1 + .../README_feature_agl-kvm-host-kuksa.md | 17 +++++++++++ templates/feature/agl-kvm-host-audio/included.dep | 1 + 24 files changed, 192 insertions(+), 29 deletions(-) create mode 100644 recipes-demo/agl-service-radio/files/radio.conf.kvm-demo create mode 100644 recipes-demo/flutter-cluster-dashboard/files/kvm.conf create mode 100644 recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-demo create mode 100644 recipes-demo/flutter-ics-homescreen/files/kvm.conf create mode 100644 recipes-demo/navigation/ondemandnavi/navigation.conf.kvm-demo create mode 100644 recipes-demo/navigation/tbtnavi/kvm.conf create mode 100644 recipes-demo/navigation/tbtnavi/tbtnavi.conf.kvm-demo delete mode 100644 recipes-platform/packagegroups/packagegroup-agl-demo-cluster-support.bb create mode 100644 templates/feature/agl-kvm-host-audio/50_local.conf.inc create mode 100644 templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md create mode 100644 templates/feature/agl-kvm-host-audio/included.dep diff --git a/recipes-demo/agl-service-radio/agl-service-radio_git.bb b/recipes-demo/agl-service-radio/agl-service-radio_git.bb index 7664e5ab4..89c18ae72 100644 --- a/recipes-demo/agl-service-radio/agl-service-radio_git.bb +++ b/recipes-demo/agl-service-radio/agl-service-radio_git.bb @@ -17,7 +17,8 @@ DEPENDS = " \ libusb-compat \ " -SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-radio;protocol=https;branch=${AGL_BRANCH}" +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-radio;protocol=https;branch=${AGL_BRANCH} \ + file://radio.conf.kvm-demo" SRCREV = "7f26a2d06410fd3a2768612b9c9daf869778e480" PV = "2.0+git${SRCPV}" @@ -27,4 +28,20 @@ inherit meson pkgconfig systemd SYSTEMD_SERVICE:${PN} = "agl-service-radio.service" +do_install:append() { + install -D -m 0644 ${WORKDIR}/radio.conf.kvm-demo ${D}${sysconfdir}/xdg/AGL.conf +} + +PACKAGE_BEFORE_PN += "${PN}-conf-kvm-demo" + FILES:${PN} += "${systemd_system_unitdir}" + +FILES:${PN}-conf-kvm-demo += " \ + ${sysconfdir}/xdg/AGL.conf \ +" + +RDEPENDS:${PN} += " \ + gstreamer1.0 \ + gstreamer1.0-plugins-base \ + gstreamer1.0-pipewire \ +" diff --git a/recipes-demo/agl-service-radio/files/radio.conf.kvm-demo b/recipes-demo/agl-service-radio/files/radio.conf.kvm-demo new file mode 100644 index 000000000..d855eb4b9 --- /dev/null +++ b/recipes-demo/agl-service-radio/files/radio.conf.kvm-demo @@ -0,0 +1,2 @@ +[radio] +bind=0.0.0.0 diff --git a/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.demo b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.demo index bab0a6bb7..32545c2bf 100644 --- a/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.demo +++ b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.demo @@ -1,3 +1,4 @@ hostname: 192.168.10.2 authorization : "/etc/xdg/AGL/cluster-dashboard/cluster-dashboard.token" use-tls : true +tls-server-name : "localhost" diff --git a/recipes-demo/flutter-cluster-dashboard/files/kvm.conf b/recipes-demo/flutter-cluster-dashboard/files/kvm.conf new file mode 100644 index 000000000..0a38143e9 --- /dev/null +++ b/recipes-demo/flutter-cluster-dashboard/files/kvm.conf @@ -0,0 +1,3 @@ +[Unit] +Wants=network-online.target +After=network-online.target diff --git a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb index 357759354..1dde42d5b 100644 --- a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb +++ b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb @@ -14,6 +14,7 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-instrument-clust file://cluster-dashboard.yaml \ file://cluster-dashboard.yaml.demo \ file://cluster-dashboard.token \ + file://kvm.conf \ " PV = "1.0+git${SRCPV}" @@ -36,6 +37,8 @@ SYSTEMD_SERVICE:${PN} = "flutter-cluster-dashboard.service" do_install:append() { install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service + install -D -m 0644 ${WORKDIR}/kvm.conf ${D}${systemd_system_unitdir}/${BPN}.service.d/kvm.conf + install -D -m 0644 ${WORKDIR}/${APP_CONFIG} ${D}${datadir}/flutter/${BPN}.json install -d ${D}${sysconfdir}/xdg/AGL/cluster-dashboard @@ -60,7 +63,10 @@ RCONFLICTS:${PN}-conf = "${PN}-conf-demo" ALTERNATIVE:${PN}-conf = "cluster-dashboard.yaml" ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default" -FILES:${PN}-conf-demo += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo" +FILES:${PN}-conf-demo += " \ + ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo \ + ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \ +" RDEPENDS:${PN}-conf-demo = "${PN}" RPROVIDES:${PN}-conf-demo = "cluster-dashboard.yaml" RCONFLICTS:${PN}-conf-demo = "${PN}-conf" diff --git a/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-demo b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-demo new file mode 100644 index 000000000..22e7e3908 --- /dev/null +++ b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-demo @@ -0,0 +1,10 @@ +kuksa: + hostname : 172.16.10.1 + port : 55555 + authorization : "/etc/xdg/AGL/ics-homescreen/ics-homescreen.token" + use-tls : true + tls-server-name : localhost +radio: + hostname : 172.16.10.1 +mpd: + hostname : 172.16.10.1 diff --git a/recipes-demo/flutter-ics-homescreen/files/kvm.conf b/recipes-demo/flutter-ics-homescreen/files/kvm.conf new file mode 100644 index 000000000..0a38143e9 --- /dev/null +++ b/recipes-demo/flutter-ics-homescreen/files/kvm.conf @@ -0,0 +1,3 @@ +[Unit] +Wants=network-online.target +After=network-online.target diff --git a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb index dd50df72f..6dacebb57 100644 --- a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb +++ b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb @@ -10,8 +10,10 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-ics-homescreen;p file://flutter-ics-homescreen.json \ file://flutter-ics-homescreen.service \ file://ics-homescreen.yaml \ + file://ics-homescreen.yaml.kvm-demo \ file://ics-homescreen.token \ file://radio-presets.yaml \ + file://kvm.conf \ " SRCREV = "5587c6ae79b482fbff26442bb239d7d7eb55a337" @@ -22,7 +24,7 @@ FLUTTER_APPLICATION_INSTALL_PREFIX = "/flutter" FLUTTER_BUILD_ARGS = "bundle -v" -inherit flutter-app systemd +inherit flutter-app systemd update-alternatives APP_CONFIG = "${BPN}.json" @@ -36,6 +38,8 @@ APP_AOT_EXTRA:append = " ${DISABLE_BG_ANIMATION}" do_install:append() { install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service + install -D -m 0644 ${WORKDIR}/kvm.conf ${D}${systemd_system_unitdir}/${BPN}.service.d/kvm.conf + install -D -m 0644 ${WORKDIR}/${APP_CONFIG} ${D}${datadir}/flutter/${BPN}.json # VIS authorization token file for KUKSA.val should ideally not @@ -43,17 +47,38 @@ do_install:append() { # until a packaging/sandboxing/MAC scheme is (re)implemented or # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/ics-homescreen - install -m 0644 ${WORKDIR}/ics-homescreen.yaml ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/ics-homescreen.yaml ${D}${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default + install -m 0644 ${WORKDIR}/ics-homescreen.yaml.kvm-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/ics-homescreen.token ${D}${sysconfdir}/xdg/AGL/ics-homescreen/ install -m 0644 ${WORKDIR}/radio-presets.yaml ${D}${sysconfdir}/xdg/AGL/ics-homescreen/ } +ALTERNATIVE_LINK_NAME[ics-homescreen.yaml] = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml" + FILES:${PN} += "${datadir} ${sysconfdir}/xdg/AGL" RDEPENDS:${PN} += " \ flutter-auto \ agl-flutter-env \ applaunchd \ - agl-service-radio \ - mpd \ + ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'agl-service-radio mpd', d)} \ +" + +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" + +FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "ics-homescreen.yaml" +RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" +ALTERNATIVE:${PN}-conf = "ics-homescreen.yaml" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default" + +FILES:${PN}-conf-kvm-demo += " \ + ${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-demo \ + ${systemd_system_unitdir}/flutter-ics-homescreen.service.d/kvm.conf \ " +RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +RPROVIDES:${PN}-conf-kvm-demo = "ics-homescreen.yaml" +RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" +ALTERNATIVE:${PN}-conf-kvm-demo = "ics-homescreen.yaml" +ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-demo" diff --git a/recipes-demo/libqtappfw/libqtappfw_git.bb b/recipes-demo/libqtappfw/libqtappfw_git.bb index 6c9080848..85d20f41b 100644 --- a/recipes-demo/libqtappfw/libqtappfw_git.bb +++ b/recipes-demo/libqtappfw/libqtappfw_git.bb @@ -32,6 +32,10 @@ inherit meson pkgconfig EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}" -RRECOMMENDS:${PN} += "bluez5 connman mpd" +RRECOMMENDS:${PN} += " \ + bluez5 \ + connman \ + ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \ +" BBCLASSEXTEND = "nativesdk" diff --git a/recipes-demo/navigation/ondemandnavi/navigation.conf.kvm-demo b/recipes-demo/navigation/ondemandnavi/navigation.conf.kvm-demo new file mode 100644 index 000000000..6da2579dc --- /dev/null +++ b/recipes-demo/navigation/ondemandnavi/navigation.conf.kvm-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "172.16.10.1" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/navigation/navigation.token" diff --git a/recipes-demo/navigation/ondemandnavi_git.bb b/recipes-demo/navigation/ondemandnavi_git.bb index 5fa27aa5f..7bfa00078 100644 --- a/recipes-demo/navigation/ondemandnavi_git.bb +++ b/recipes-demo/navigation/ondemandnavi_git.bb @@ -12,13 +12,14 @@ PV = "2.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/ondemandnavi;protocol=https;branch=${AGL_BRANCH} \ file://navigation.conf \ + file://navigation.conf.kvm-demo \ file://navigation.token \ " SRCREV = "d6b883ef6bdb63fb501b03d64c9a32bc29b7b2c7" S = "${WORKDIR}/git" -inherit qmake5 pkgconfig agl-app +inherit qmake5 pkgconfig agl-app update-alternatives AGL_APP_ID = "navigation" AGL_APP_NAME = "Navigation" @@ -32,10 +33,29 @@ do_install:append() { # until a packaging/sandboxing/MAC scheme is (re)implemented or # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/navigation - install -m 0644 ${WORKDIR}/navigation.conf ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/navigation.conf ${D}${sysconfdir}/xdg/AGL/navigation.conf.default + install -m 0644 ${WORKDIR}/navigation.conf.kvm-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/navigation.token ${D}${sysconfdir}/xdg/AGL/navigation/ } +ALTERNATIVE_LINK_NAME[navigation.conf] = "${sysconfdir}/xdg/AGL/navigation.conf" + +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" + +FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/navigation.conf.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "navigation.conf" +RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" +ALTERNATIVE:${PN}-conf = "navigation.conf" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/navigation.conf.default" + +FILES:${PN}-conf-kvm-demo += "${sysconfdir}/xdg/AGL/navigation.conf.kvm-demo" +RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +RPROVIDES:${PN}-conf-kvm-demo = "navigation.conf" +RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" +ALTERNATIVE:${PN}-conf-kvm-demo = "navigation.conf" +ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/navigation.conf.kvm-demo" + RDEPENDS:${PN} += " \ qtwayland \ qtbase-qmlplugins \ diff --git a/recipes-demo/navigation/tbtnavi/kvm.conf b/recipes-demo/navigation/tbtnavi/kvm.conf new file mode 100644 index 000000000..324bac372 --- /dev/null +++ b/recipes-demo/navigation/tbtnavi/kvm.conf @@ -0,0 +1,3 @@ +[Unit] +Wants=network-online.target flutter-ics-homescreen.service +After=network-online.target flutter-ics-homescreen.service diff --git a/recipes-demo/navigation/tbtnavi/tbtnavi.conf.kvm-demo b/recipes-demo/navigation/tbtnavi/tbtnavi.conf.kvm-demo new file mode 100644 index 000000000..6e891faf6 --- /dev/null +++ b/recipes-demo/navigation/tbtnavi/tbtnavi.conf.kvm-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "172.16.10.1" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/tbtnavi/tbtnavi.token" diff --git a/recipes-demo/navigation/tbtnavi_git.bb b/recipes-demo/navigation/tbtnavi_git.bb index b6213813c..b3703c53d 100644 --- a/recipes-demo/navigation/tbtnavi_git.bb +++ b/recipes-demo/navigation/tbtnavi_git.bb @@ -27,19 +27,23 @@ PV = "2.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/tbtnavi;protocol=https;branch=${AGL_BRANCH} \ file://tbtnavi.service \ file://tbtnavi.conf \ + file://tbtnavi.conf.kvm-demo \ file://tbtnavi.token \ + file://kvm.conf \ " SRCREV = "f00c1e19f5c4cbcd185c8043f3062612bf1537f7" S = "${WORKDIR}/git" -inherit meson systemd pkgconfig +inherit meson systemd pkgconfig update-alternatives SYSTEMD_SERVICE:${PN} = "${BPN}.service" do_install:append() { install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service + install -D -m 0644 ${WORKDIR}/kvm.conf ${D}${systemd_system_unitdir}/${BPN}.service.d/kvm.conf + # Currently using default global client and CA certificates # for KUKSA.val SSL, installing app specific ones would go here. @@ -48,10 +52,13 @@ do_install:append() { # until a packaging/sandboxing/MAC scheme is (re)implemented or # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/tbtnavi - install -m 0644 ${WORKDIR}/tbtnavi.conf ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/tbtnavi.conf ${D}${sysconfdir}/xdg/AGL/tbtnavi.conf.default + install -m 0644 ${WORKDIR}/tbtnavi.conf.kvm-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/tbtnavi.token ${D}${sysconfdir}/xdg/AGL/tbtnavi/ } +ALTERNATIVE_LINK_NAME[tbtnavi.conf] = "${sysconfdir}/xdg/AGL/tbtnavi.conf" + RDEPENDS:${PN} += " \ qtwayland \ qtbase-qmlplugins \ @@ -60,3 +67,22 @@ RDEPENDS:${PN} += " \ ondemandnavi-config \ libqtappfw \ " + +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" + +FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/tbtnavi.conf.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "tbtnavi.conf" +RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" +ALTERNATIVE:${PN}-conf = "tbtnavi.conf" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/tbtnavi.conf.default" + +FILES:${PN}-conf-kvm-demo += " \ + ${sysconfdir}/xdg/AGL/tbtnavi.conf.kvm-demo \ + ${systemd_system_unitdir}/tbtnavi.service.d/kvm.conf \ +" +RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +RPROVIDES:${PN}-conf-kvm-demo = "tbtnavi.conf" +RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" +ALTERNATIVE:${PN}-conf-kvm-demo = "tbtnavi.conf" +ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/tbtnavi.conf.kvm-demo" diff --git a/recipes-platform/images/agl-image-ivi.bb b/recipes-platform/images/agl-image-ivi.bb index 165a45b09..69d0ed991 100644 --- a/recipes-platform/images/agl-image-ivi.bb +++ b/recipes-platform/images/agl-image-ivi.bb @@ -14,7 +14,7 @@ IMAGE_INSTALL += " \ packagegroup-agl-ivi-navigation \ packagegroup-agl-ivi-identity \ packagegroup-agl-ivi-services-applaunchd \ - packagegroup-agl-ivi-services-platform \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "", "packagegroup-agl-ivi-services-platform", d)} \ iproute2 \ " diff --git a/recipes-platform/images/agl-ivi-demo-features.inc b/recipes-platform/images/agl-ivi-demo-features.inc index eb4d253c9..9aabaafee 100644 --- a/recipes-platform/images/agl-ivi-demo-features.inc +++ b/recipes-platform/images/agl-ivi-demo-features.inc @@ -1,7 +1,12 @@ require agl-demo-features.inc FEATURE_PACKAGES_agl-demo-preload = "packagegroup-agl-demo-preload" -FEATURE_PACKAGES_agl-demo-cluster-support = "packagegroup-agl-demo-cluster-support" + +FEATURE_PACKAGES_agl-demo-cluster-support = " \ + tbtnavi \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "tbtnavi-conf-kvm-demo", "tbtnavi-conf", d)} \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-databroker-agl-demo-cluster", d)} \ +" IMAGE_FEATURES += " \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ diff --git a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb b/recipes-platform/images/agl-ivi-demo-platform-flutter.bb index a50c00bfb..558acd129 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb +++ b/recipes-platform/images/agl-ivi-demo-platform-flutter.bb @@ -4,5 +4,7 @@ DESCRIPTION = "AGL Flutter Demo Platform image" AGL_APPS_INSTALL += " \ flutter-ics-homescreen \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "flutter-ics-homescreen-conf-kvm-demo", "flutter-ics-homescreen-conf", d)} \ ondemandnavi \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ " diff --git a/recipes-platform/images/agl-ivi-demo-platform.bb b/recipes-platform/images/agl-ivi-demo-platform.bb index 318bae46f..2854462cf 100644 --- a/recipes-platform/images/agl-ivi-demo-platform.bb +++ b/recipes-platform/images/agl-ivi-demo-platform.bb @@ -6,6 +6,7 @@ AGL_APPS_INSTALL += " \ dashboard \ hvac \ ondemandnavi \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ settings \ mediaplayer \ messaging \ diff --git a/recipes-platform/images/agl-kvm-demo-platform.bb b/recipes-platform/images/agl-kvm-demo-platform.bb index feafe2e13..ddb2ddb45 100644 --- a/recipes-platform/images/agl-kvm-demo-platform.bb +++ b/recipes-platform/images/agl-kvm-demo-platform.bb @@ -30,6 +30,29 @@ IMAGE_INSTALL += " \ alsa-utils \ " +# Until virtio sound is workable with QEMU, run the audio using +# services on the host for a better demo experience. At the +# moment, this also includes the HVAC service since it does not +# make sense to try to make things more fine-grained with respect +# to configuration for where things expect to find the databroker. +# It will need to be revisited when virtio-snd, virtio-gpio, etc. +# become feasible to use. +HOST_AUDIO_INSTALL = " \ + packagegroup-agl-ivi-services-platform \ + agl-service-radio-conf-kvm-demo \ + packagegroup-pipewire \ + wireplumber-config-agl \ + wireplumber-policy-config-agl \ + mpd \ + udisks2 \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "packagegroup-pipewire-tools mpc" , "", d)} \ +" + +IMAGE_INSTALL += "\ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "kuksa-databroker-agl-demo-cluster", "", d)} \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "${HOST_AUDIO_INSTALL}", "", d)} \ +" + # Potential size reduction options #IMAGE_LINGUAS = " " #NO_RECOMMENDATIONS = "1" diff --git a/recipes-platform/packagegroups/packagegroup-agl-demo-cluster-support.bb b/recipes-platform/packagegroups/packagegroup-agl-demo-cluster-support.bb deleted file mode 100644 index 10e26dc9d..000000000 --- a/recipes-platform/packagegroups/packagegroup-agl-demo-cluster-support.bb +++ /dev/null @@ -1,15 +0,0 @@ -SUMMARY = "Extra software and configuration for cluster demo with AGL IVI profile demo platform" - -LICENSE = "MIT" - -inherit packagegroup - -PROVIDES = "${PACKAGES}" -PACKAGES = "\ - packagegroup-agl-demo-cluster-support \ -" - -RDEPENDS:${PN} += "\ - tbtnavi \ - kuksa-databroker-agl-demo-cluster \ -" diff --git a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb index 8865a9f06..78c96faf8 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb @@ -21,5 +21,5 @@ RDEPENDS:${PN} += "\ ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', '${PIPEWIRE_PACKAGES}', '', d)} \ gstreamer1.0-plugins-base-meta \ gstreamer1.0-plugins-good-meta \ - mpd \ + ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \ " diff --git a/templates/feature/agl-kvm-host-audio/50_local.conf.inc b/templates/feature/agl-kvm-host-audio/50_local.conf.inc new file mode 100644 index 000000000..7bd20e391 --- /dev/null +++ b/templates/feature/agl-kvm-host-audio/50_local.conf.inc @@ -0,0 +1 @@ +AGL_FEATURES += "agl-kvm-host-audio" diff --git a/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md b/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md new file mode 100644 index 000000000..93a4b9ade --- /dev/null +++ b/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md @@ -0,0 +1,17 @@ +--- +description: Feature agl-kvm-host-audio +authors: Scott Murray +--- + +### Feature agl-kvm-host-audio + +* Enables support for running audio services on host in KVM+QEMU demo images + +### Dependent features pulled by agl-kvm-host-audio + +The following features are pulled: + +* agl-kvm agl-kvm-host-kuksa + +Note that enabling this feature results in a configuration where building images +other than agl-kvm-demo-platform will likely not give the desired results. diff --git a/templates/feature/agl-kvm-host-audio/included.dep b/templates/feature/agl-kvm-host-audio/included.dep new file mode 100644 index 000000000..f1f0a2f99 --- /dev/null +++ b/templates/feature/agl-kvm-host-audio/included.dep @@ -0,0 +1 @@ +agl-kvm agl-kvm-host-kuksa -- 2.16.6