diff options
author | Scott Murray <scott.murray@konsulko.com> | 2024-05-12 15:28:59 -0400 |
---|---|---|
committer | Jan-Simon Moeller <jsmoeller@linuxfoundation.org> | 2024-05-29 10:27:17 +0000 |
commit | 2f6a12454e558f79f24d4f76bf9c6a16590a5bca (patch) | |
tree | 84292c448f31b2ba5d0f8dc59948efdb1e0fbf26 /recipes-platform | |
parent | 18058d1ed6ed4235505870067837a26a4864a117 (diff) |
Rework KVM demo configuration
Changes:
- Move KVM demo configuration and image recipes to a new sub-layer,
meta-agl-kvm-demo, to keep things that may not be buildable with
just the agl-demo feature separate to avoid confusion. It will
hopefully also avoid clutter in recipes-platform/images.
This sub-layer is pulled in when the agl-kvm setup feature is
given to aglsetup.sh.
- Remove the agl-kvm-host-kuksa and agl-kvm-host-audio setup
features.
- Add new *-guest and *-guest-preconfigured flavors of the Flutter
IVI and IC images under meta-agl-kvm-demo that that have the
desired configuration changes baked in.
- Add required qemu-config recipe variants for the new guest image
flavors. At the moment there is more duplication of configuration
for this than is desired, and some reworking of agl-qemu-runner
configuration may come as a follow up to avoid this.
- Remove qemu-config recipe variants for unused Qt guest images.
If it becomes desirable to use the Qt demo images as guests this
can be revisited.
- Added agl-kvm-demo-flutter-preconfigured image variant that
supports the full demo setup (i.e. "green machine" with steering
wheel, equivalent to CES 2024 demos).
NOTES:
- The agl-kvm-demo image remains and builds roughly the same image
as before, with the KUKSA.val databroker running in the IVI guest
and cluster support enabled. Replacing this image with a bbclass
abstraction and an e.g. agl-kvm-demo-flutter image is under
consideration.
Bug-AGL: SPEC-5138
Change-Id: I64936208fd032e5ba47366e3a7ff572dc18338e4
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29905
Tested-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'recipes-platform')
9 files changed, 40 insertions, 111 deletions
diff --git a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb index 5532c3e52..351600751 100644 --- a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb +++ b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb @@ -11,10 +11,9 @@ IMAGE_INSTALL:remove = "weston-ini-conf-landscape" # Cluster application configuration needs to be replaced for # the full demo to handle different databroker configuration. -IMAGE_INSTALL:remove = "flutter-cluster-dashboard-conf" +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-demo" IMAGE_INSTALL += " \ psplash-inverted-config \ weston-ini-conf-landscape-inverted \ - flutter-cluster-dashboard-conf-demo \ " diff --git a/recipes-platform/images/agl-cluster-demo-flutter.bb b/recipes-platform/images/agl-cluster-demo-flutter.bb index b2581f87e..dfa256209 100644 --- a/recipes-platform/images/agl-cluster-demo-flutter.bb +++ b/recipes-platform/images/agl-cluster-demo-flutter.bb @@ -23,10 +23,12 @@ IMAGE_INSTALL += "\ " # Flutter +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf" + IMAGE_INSTALL += "\ flutter-auto \ flutter-cluster-dashboard \ - flutter-cluster-dashboard-conf \ + ${FLUTTER_CLUSTER_DASHBOARD_CONF} \ cluster-demo-config-flutter \ " diff --git a/recipes-platform/images/agl-ivi-demo-features.inc b/recipes-platform/images/agl-ivi-demo-features.inc index ecf3cd98b..a63e2dfe0 100644 --- a/recipes-platform/images/agl-ivi-demo-features.inc +++ b/recipes-platform/images/agl-ivi-demo-features.inc @@ -1,13 +1,15 @@ require agl-demo-features.inc +TBTNAVI_CONF = "tbtnavi-conf" + 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)} \ + ${TBTNAVI_CONF} \ + kuksa-databroker-agl-demo-cluster \ " IMAGE_FEATURES += " \ + kuksa-val-databroker \ kuksa-val-databroker-client \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-val-databroker", d)} \ " diff --git a/recipes-platform/images/agl-ivi-demo-flutter.bb b/recipes-platform/images/agl-ivi-demo-flutter.bb index 75fd57c60..5753d58af 100644 --- a/recipes-platform/images/agl-ivi-demo-flutter.bb +++ b/recipes-platform/images/agl-ivi-demo-flutter.bb @@ -2,10 +2,13 @@ require agl-ivi-image-flutter.bb SUMMARY = "AGL IVI demo Flutter image" +FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf" +ONDEMANDNAVI_CONF = "ondemandnavi-conf" + 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)} \ + ${FLUTTER_ICS_HOMESCREEN_CONF} \ camera-gstreamer \ ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ + ${ONDEMANDNAVI_CONF} \ " diff --git a/recipes-platform/images/agl-ivi-demo-qt.bb b/recipes-platform/images/agl-ivi-demo-qt.bb index 79640791b..8fe988d06 100644 --- a/recipes-platform/images/agl-ivi-demo-qt.bb +++ b/recipes-platform/images/agl-ivi-demo-qt.bb @@ -2,11 +2,13 @@ require agl-ivi-image.bb SUMMARY = "AGL IVI demo Qt image" +ONDEMANDNAVI_CONF = "ondemandnavi-conf" + AGL_APPS_INSTALL += " \ dashboard \ hvac \ ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ + ${ONDEMANDNAVI_CONF} \ settings \ mediaplayer \ messaging \ diff --git a/recipes-platform/images/agl-ivi-image.bb b/recipes-platform/images/agl-ivi-image.bb index 12122cafb..3783db939 100644 --- a/recipes-platform/images/agl-ivi-image.bb +++ b/recipes-platform/images/agl-ivi-image.bb @@ -16,17 +16,22 @@ AGL_DEVEL_INSTALL += "\ AGL_APPS_INSTALL = "" +PLATFORM_SERVICES_INSTALL = " \ + packagegroup-agl-ivi-multimedia-platform \ + packagegroup-agl-ivi-services-platform \ +" + IMAGE_INSTALL += " \ packagegroup-agl-ivi-connectivity \ packagegroup-agl-ivi-graphics \ - packagegroup-agl-ivi-multimedia \ + packagegroup-agl-ivi-multimedia-client \ packagegroup-agl-ivi-multimedia-hardware \ packagegroup-agl-ivi-navigation \ packagegroup-agl-ivi-identity \ packagegroup-agl-ivi-services-applaunchd \ + ${PLATFORM_SERVICES_INSTALL} \ iproute2 \ ${AGL_APPS_INSTALL} \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "${AGL_DEVEL_INSTALL}" , "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "", "packagegroup-agl-ivi-services-platform", d)} \ " diff --git a/recipes-platform/images/agl-kvm-demo.bb b/recipes-platform/images/agl-kvm-demo.bb deleted file mode 100644 index c27757005..000000000 --- a/recipes-platform/images/agl-kvm-demo.bb +++ /dev/null @@ -1,95 +0,0 @@ -SUMMARY = "AGL KVM+QEMU Demo Platform image." -LICENSE = "MIT" - -require recipes-platform/images/agl-image-compositor.bb -require agl-demo-features.inc - -IMAGE_FEATURES += "splash package-management ssh-server-openssh" - -# If building with "agl-kvm-host-kuksa", the databroker and likely -# some clients run on the host -IMAGE_FEATURES += " \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "kuksa-val-databroker kuksa-val-databroker-client", "", d)} \ - ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ -" - -# Add packages for KVM+QEMU demo platform here -IMAGE_INSTALL += " \ - packagegroup-agl-core-connectivity \ - kernel-image \ - agl-compositor \ - weston-ini-conf-kvm \ - output-udev-conf \ - native-shell-client \ - qemu \ - ${QEMU_GUEST_CONFIGS} \ - util-linux-taskset \ - screen \ - simple-can-simulator \ - 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" - -GUEST_MACHINE ?= "virtio-${TUNE_ARCH}" - -GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" - -GUEST_IMAGES ?= "agl-kvm-guest:${GUEST_VM1_IMAGE} agl-kvm-guest:${GUEST_VM2_IMAGE}" - -QEMU_GUEST_CONFIGS ?= "" - -python __anonymous() { - for c in (d.getVar('GUEST_IMAGES') or "").split(): - (mc, image) = c.split(':') - dependency = 'mc::' + mc + ':' + image + ':do_image_complete' - d.appendVarFlag('do_rootfs', 'mcdepends', ' ' + dependency) - - # Assume there is a qemu-config-X package for guest image X - d.appendVar('QEMU_GUEST_CONFIGS', ' ' + 'qemu-config-' + image) -} - -install_guest_images() { - for c in ${GUEST_IMAGES}; do - config=${c%:*} - image=${c#*:} - name=${image} - rm -rf ${IMAGE_ROOTFS}/var/lib/machines/${name} - install -m 0755 -d ${IMAGE_ROOTFS}/var/lib/machines/${name} - src="${TOPDIR}/tmp-${config}/deploy/images/${GUEST_MACHINE}/${image}-${GUEST_MACHINE}.ext4" - bbnote "Installing ${src}" - install -m 0600 ${src} ${IMAGE_ROOTFS}/var/lib/machines/${name}/ - # Placeholder until booting from kernel in VM image is worked out - install -m 0600 ${TOPDIR}/tmp-${config}/deploy/images/${GUEST_MACHINE}/Image-${GUEST_MACHINE}.bin ${IMAGE_ROOTFS}/var/lib/machines/${name}/ - done -} - -ROOTFS_POSTPROCESS_COMMAND += "install_guest_images; " - -IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}" diff --git a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb index 78c96faf8..be2ac44f5 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb @@ -6,7 +6,9 @@ inherit packagegroup PACKAGES = "\ packagegroup-agl-ivi-multimedia \ - " + packagegroup-agl-ivi-multimedia-client \ + packagegroup-agl-ivi-multimedia-platform \ +" ALLOW_EMPTY:${PN} = "1" @@ -15,11 +17,19 @@ PIPEWIRE_PACKAGES = " \ ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'packagegroup-pipewire-tools alsa-utils', '', d)} \ wireplumber-config-agl \ wireplumber-policy-config-agl \ - " +" -RDEPENDS:${PN} += "\ +RDEPENDS:${PN}-platform += " \ + mpd \ +" + +RDEPENDS:${PN}-client += "\ ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', '${PIPEWIRE_PACKAGES}', '', d)} \ gstreamer1.0-plugins-base-meta \ gstreamer1.0-plugins-good-meta \ - ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \ - " +" + +RDEPENDS:${PN} += "\ + packagegroup-agl-ivi-multimedia-client \ + packagegroup-agl-ivi-multimedia-platform \ +"
\ No newline at end of file diff --git a/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb b/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb index c3a53d502..94cee97a4 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb @@ -18,6 +18,7 @@ RDEPENDS:${PN}-platform += " \ agl-service-hvac \ agl-service-audiomixer \ agl-service-radio \ + mpd \ " RDEPENDS:${PN} += " \ |