Rework KVM demo configuration 18/29918/2
authorScott Murray <scott.murray@konsulko.com>
Sun, 12 May 2024 19:28:59 +0000 (15:28 -0400)
committerScott Murray <scott.murray@konsulko.com>
Mon, 27 May 2024 16:03:25 +0000 (16:03 +0000)
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/+/29918
ci-image-build: Jenkins Job builder account
Tested-by: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account

49 files changed:
meta-agl-kvm-demo/conf/layer.conf [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf [moved from recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf with 88% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf [moved from recipes-config/qemu-config/files/agl-cluster-demo-qt.conf with 73% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf [moved from recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf with 96% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf [moved from recipes-config/qemu-config/files/agl-ivi-demo-qt.conf with 96% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf [moved from recipes-config/qemu-config/files/bridge.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf [moved from recipes-config/qemu-config/files/connman-nodnsproxy.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf [moved from recipes-config/qemu-config/files/dnsmasq-qemu.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev [moved from recipes-config/qemu-config/files/vmnet0.netdev with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network [moved from recipes-config/qemu-config/files/vmnet0.network with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb [moved from recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb with 95% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb [moved from recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb with 95% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb [moved from recipes-config/qemu-config/qemu-config-vmnet0.bb with 100% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb [moved from recipes-extended/agl-qemu-runner/agl-qemu-runner.bb with 100% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh [moved from recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh with 92% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service [moved from recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service with 100% similarity]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend [new file with mode: 0644]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in [moved from recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in with 77% similarity]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb [moved from recipes-platform/images/agl-kvm-demo.bb with 60% similarity]
recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb [deleted file]
recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb [deleted file]
recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo [new file with mode: 0644]
recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb
recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb
recipes-demo/libqtappfw/libqtappfw_git.bb
recipes-graphics/wayland/weston-ini-conf_agldemo.inc
recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb
recipes-platform/images/agl-cluster-demo-flutter.bb
recipes-platform/images/agl-ivi-demo-features.inc
recipes-platform/images/agl-ivi-demo-flutter.bb
recipes-platform/images/agl-ivi-demo-qt.bb
recipes-platform/images/agl-ivi-image.bb
recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb
recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb
templates/feature/agl-kvm-host-audio/50_local.conf.inc [deleted file]
templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md [deleted file]
templates/feature/agl-kvm-host-audio/included.dep [deleted file]
templates/feature/agl-kvm-host-kuksa/50_local.conf.inc [deleted file]
templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md [deleted file]
templates/feature/agl-kvm-host-kuksa/included.dep [deleted file]
templates/feature/agl-kvm/50_bblayers.conf.inc

diff --git a/meta-agl-kvm-demo/conf/layer.conf b/meta-agl-kvm-demo/conf/layer.conf
new file mode 100644 (file)
index 0000000..0799d4f
--- /dev/null
@@ -0,0 +1,15 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH =. "${LAYERDIR}:"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "agl-kvm-demo-layer"
+BBFILE_PATTERN_agl-kvm-demo-layer = "^${LAYERDIR}/"
+BBFILE_PRIORITY_agl-kvm-demo-layer = "70"
+
+LAYERSERIES_COMPAT_agl-kvm-demo-layer = "kirkstone"
+
+LAYERDEPENDS_agl-kvm-demo-layer = "agldemo"
+
@@ -3,3 +3,4 @@ QEMU_SMP_OPT="-smp 2"
 QEMU_MEM_OPT="-m 1G"
 QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0"
 QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
+QEMU_XDG_APP_ID="agl-cluster-demo"
@@ -1,5 +1,6 @@
 QEMU_TASKSET_CPUS="4-7"
-QEMU_SMP_OPT="-smp 4"
-QEMU_MEM_OPT="-m 2G"
+QEMU_SMP_OPT="-smp 2"
+QEMU_MEM_OPT="-m 1G"
 QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0"
 QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
+QEMU_XDG_APP_ID="agl-cluster-demo"
@@ -10,3 +10,4 @@ QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audio
 QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0"
 QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0"
 QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
+QEMU_XDG_APP_ID="agl-ivi-demo"
@@ -10,3 +10,4 @@ QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audio
 QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0"
 QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0"
 QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
+QEMU_XDG_APP_ID="agl-ivi-demo"
diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb
new file mode 100644 (file)
index 0000000..b58dcae
--- /dev/null
@@ -0,0 +1,3 @@
+require qemu-config-agl-cluster-demo-flutter-guest.bb
+
+QEMU_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured"
@@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf"
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 
-QEMU_IMAGE = "agl-cluster-demo-flutter"
+QEMU_IMAGE = "agl-cluster-demo-flutter-guest"
 QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
 
 do_install() {
diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb
new file mode 100644 (file)
index 0000000..642876b
--- /dev/null
@@ -0,0 +1,3 @@
+require qemu-config-agl-ivi-demo-flutter-guest.bb
+
+QEMU_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured"
@@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf"
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 
-QEMU_IMAGE = "agl-ivi-demo-flutter"
+QEMU_IMAGE = "agl-ivi-demo-flutter-guest"
 QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
 
 do_install() {
@@ -43,8 +43,9 @@ export XDG_RUNTIME_DIR=/run/user/1001
 #export WAYLAND_DISPLAY=wayland-1
 
 # This sets the XDG app id, which we need for setting outputs with
-# agl-compositor
-export SDL_VIDEO_WAYLAND_WMCLASS="${image}"
+# agl-compositor.  If QEMU_XDG_APP_ID is not set, the image name
+# is used.
+export SDL_VIDEO_WAYLAND_WMCLASS="${QEMU_XDG_APP_ID:-${image}}"
 
 ${TASKSET_CMD} \
 qemu-system-${arch} \
diff --git a/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend
new file mode 100644 (file)
index 0000000..423a469
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'weston-ini-conf_agldemo.inc', '', d)}
@@ -10,9 +10,9 @@ panel-position=none
 # A display is connected to HDMI-A-1
 [output]
 name=HDMI-A-1
-agl-shell-app-id=@GUEST_VM1_IMAGE@
+agl-shell-app-id=@GUEST_VM1_ID@
 
 # A display is connected to HDMI-A-2
 [output]
 name=HDMI-A-2
-agl-shell-app-id=@GUEST_VM2_IMAGE@
+agl-shell-app-id=@GUEST_VM2_ID@
diff --git a/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc
new file mode 100644 (file)
index 0000000..28f871a
--- /dev/null
@@ -0,0 +1,66 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:"
+
+SRC_URI += "file://weston.ini.kvm.in"
+
+REMOTING_KVM_OUTPUT_HOST ?= "172.16.10.3"
+
+# Default app IDs for KVM guests
+GUEST_VM1_ID ?= "agl-ivi-demo"
+GUEST_VM2_ID ?= "agl-cluster-demo"
+
+do_configure:append() {
+    # KVM guest cluster version
+    sed -e "s#host=.*#host=${REMOTING_KVM_OUTPUT_HOST}#" \
+        -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \
+        ${WORKDIR}/remote-output.cfg.in  > ${WORKDIR}/remote-output-kvm.cfg
+}
+
+do_compile:append() {
+    # Create KVM remoting enabled versions of the default portrait
+    # and landscape demo IVI configurations
+    for c in weston.ini.default weston.ini.landscape; do
+        cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting-kvm
+        echo >> ${WORKDIR}/${c}-remoting-kvm
+        cat ${WORKDIR}/remote-output-kvm.cfg >> ${WORKDIR}/${c}-remoting-kvm
+    done
+
+    # Create a canned configuration for the a KVM host, filling in
+    # the guest VM application ids to pin them to specific outputs.
+    rm -f ${WORKDIR}/weston.ini.kvm
+    sed -e "s/@GUEST_VM1_ID@/${GUEST_VM1_ID}/g" \
+        -e "s/@GUEST_VM2_ID@/${GUEST_VM2_ID}/g" \
+        ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm
+}
+
+do_install:append() {
+    install -m 0644 ${WORKDIR}/weston.ini.default-remoting-kvm ${D}${weston_ini_dir}/
+    install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting-kvm ${D}${weston_ini_dir}/
+    install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/
+}
+
+# remoting-kvm
+
+PACKAGE_BEFORE_PN += "${PN}-remoting-kvm"
+FILES:${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm"
+RPROVIDES:${PN}-remoting-kvm = "weston-ini"
+ALTERNATIVE:${PN}-remoting-kvm = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm"
+ALTERNATIVE_PRIORITY_${PN}-remoting-kvm = "35"
+
+# landscape-remoting-kvm
+
+PACKAGE_BEFORE_PN += "${PN}-landscape-remoting-kvm"
+FILES:${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm"
+RPROVIDES:${PN}-landscape-remoting-kvm = "weston-ini"
+ALTERNATIVE:${PN}-landscape-remoting-kvm = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm"
+ALTERNATIVE_PRIORITY_${PN}-landscape-remoting-kvm = "36"
+
+# kvm
+
+PACKAGE_BEFORE_PN += "${PN}-kvm"
+FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm"
+RPROVIDES:${PN}-kvm = "weston-ini"
+ALTERNATIVE:${PN}-kvm = "weston.ini"
+ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm"
+ALTERNATIVE_PRIORITY_${PN}-kvm = "40"
diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb
new file mode 100644 (file)
index 0000000..d5c8fce
--- /dev/null
@@ -0,0 +1,12 @@
+require agl-cluster-demo-flutter-guest.bb
+
+SUMMARY = "AGL KVM demo guest preconfigured cluster Flutter image"
+
+# The cluster screen is rotated in the full demo setup, so the
+# default compositor configuration needs to be replaced.
+IMAGE_INSTALL:remove = "weston-ini-conf-landscape"
+
+IMAGE_INSTALL += " \
+    psplash-inverted-config \
+    weston-ini-conf-landscape-inverted \
+"
diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb
new file mode 100644 (file)
index 0000000..3cde0d0
--- /dev/null
@@ -0,0 +1,8 @@
+require recipes-platform/images/agl-cluster-demo-flutter.bb
+
+SUMMARY = "AGL KVM demo guest cluster Flutter image"
+
+# We do not want a local databroker instance
+IMAGE_FEATURES:remove = "kuksa-val-databroker"
+
+FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-kvm-demo"
diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb
new file mode 100644 (file)
index 0000000..a98cb58
--- /dev/null
@@ -0,0 +1,12 @@
+require agl-ivi-demo-flutter-guest.bb
+
+SUMMARY = "AGL KVM demo preconfigured guest IVI Flutter image"
+
+# KUKSA.val always runs externally
+IMAGE_FEATURES:remove = "kuksa-val-databroker"
+
+# Everything runs on the host for now
+PLATFORM_SERVICES_INSTALL = ""
+
+# We do not want weston-terminal visible
+IMAGE_INSTALL:remove = "weston-terminal-conf"
diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb
new file mode 100644 (file)
index 0000000..f6e748b
--- /dev/null
@@ -0,0 +1,14 @@
+require recipes-platform/images/agl-ivi-demo-flutter.bb
+
+SUMMARY = "AGL KVM demo guest IVI Flutter image"
+
+# We assume there's always a cluster in the KVM demo
+IMAGE_FEATURES += "agl-demo-cluster-support"
+
+FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf-kvm-demo"
+ONDEMANDNAVI_CONF = "ondemandnavi-conf-kvm-demo"
+TBTNAVI_CONF = "tbtnavi-conf-kvm-demo"
+
+IMAGE_INSTALL += " \
+    weston-ini-conf-remoting-kvm \
+"
diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb
new file mode 100644 (file)
index 0000000..9b02c68
--- /dev/null
@@ -0,0 +1,38 @@
+LICENSE = "MIT"
+
+require agl-kvm-demo.bb
+
+SUMMARY = "AGL KVM+QEMU preconfigured Flutter demo image"
+
+# If building with "agl-kvm-host-kuksa", the databroker and likely
+# some clients run on the host
+IMAGE_FEATURES += " \
+    kuksa-val-databroker \
+    kuksa-val-databroker-client \
+"
+
+# 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 \
+    packagegroup-agl-ivi-multimedia-platform \
+    agl-service-radio-conf-kvm-demo \
+    packagegroup-pipewire \
+    wireplumber-config-agl \
+    wireplumber-policy-config-agl \
+    udisks2 \
+    ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "packagegroup-pipewire-tools mpc" , "", d)} \
+"
+
+IMAGE_INSTALL += "\
+    kuksa-databroker-agl-demo-cluster \
+    ${HOST_AUDIO_INSTALL} \
+"
+
+GUEST_VM1_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured"
+GUEST_VM2_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured"
@@ -1,15 +1,12 @@
-SUMMARY = "AGL KVM+QEMU Demo Platform image."
+SUMMARY = "AGL KVM+QEMU demo image"
 LICENSE = "MIT"
 
 require recipes-platform/images/agl-image-compositor.bb
-require agl-demo-features.inc
+require recipes-platform/images/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)} \
 "
 
@@ -29,37 +26,14 @@ 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"
 
 GUEST_MACHINE ?= "virtio-${TUNE_ARCH}"
 
-GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter"
-GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter"
+GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter-guest"
+GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter-guest"
 
 GUEST_IMAGES ?= "agl-kvm-guest:${GUEST_VM1_IMAGE} agl-kvm-guest:${GUEST_VM2_IMAGE}"
 
diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb
deleted file mode 100644 (file)
index e22e402..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY     = "Setting files for agl-cluster-demo-plaform guest VM"
-LICENSE     = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-inherit systemd allarch
-
-SRC_URI = "file://${QEMU_IMAGE}.conf"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-QEMU_IMAGE = "agl-cluster-demo-qt"
-QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
-
-do_install() {
-    # Install template unit links
-    install -d ${D}${systemd_system_unitdir}
-    ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
-    install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
-    ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
-
-    # Install conf file
-    install -d ${D}${sysconfdir}/agl-qemu-runner
-    install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
-}
-
-FILES:${PN} += "${systemd_system_unitdir}"
-
-RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb
deleted file mode 100644 (file)
index 46e043c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY     = "Setting files for agl-demo-plaform guest VM"
-LICENSE     = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-inherit systemd allarch
-
-SRC_URI = "file://${QEMU_IMAGE}.conf"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-QEMU_IMAGE = "agl-ivi-demo-qt"
-QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
-
-do_install() {
-    # Install template unit links
-    install -d ${D}${systemd_system_unitdir}
-    ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
-    install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
-    ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
-
-    # Install conf file
-    install -d ${D}${sysconfdir}/agl-qemu-runner
-    install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
-}
-
-FILES:${PN} += "${systemd_system_unitdir}"
-
-RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0"
diff --git a/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo
new file mode 100644 (file)
index 0000000..9267b4d
--- /dev/null
@@ -0,0 +1,4 @@
+hostname: 172.16.10.1
+authorization : "/etc/xdg/AGL/cluster-dashboard/cluster-dashboard.token"
+use-tls : true
+tls-server-name : "localhost"
index beee700..f81d8e7 100644 (file)
@@ -13,6 +13,7 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-instrument-clust
     file://flutter_cluster_dashboard_on_bg.json \
     file://cluster-dashboard.yaml \
     file://cluster-dashboard.yaml.demo \
+    file://cluster-dashboard.yaml.kvm-demo \
     file://cluster-dashboard.token \
     file://kvm.conf \
 "
@@ -26,8 +27,6 @@ PUBSPEC_APPNAME = "flutter_cluster_dashboard"
 
 inherit flutter-app update-alternatives systemd
 
-CLUSTER_DEMO_VSS_HOSTNAME ??= "192.168.10.2"
-
 APP_CONFIG = "flutter_cluster_dashboard_on_bg.json"
 
 SYSTEMD_SERVICE:${PN} = "flutter-cluster-dashboard.service"
@@ -42,7 +41,7 @@ do_install:append() {
     install -d ${D}${sysconfdir}/xdg/AGL/cluster-dashboard
     install -m 0644 ${WORKDIR}/cluster-dashboard.yaml ${D}${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default
     install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.demo ${D}${sysconfdir}/xdg/AGL/
-    sed -i "s/^hostname: .*/hostname: ${CLUSTER_DEMO_VSS_HOSTNAME}/" ${D}${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo
+    install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.kvm-demo ${D}${sysconfdir}/xdg/AGL/
     install -m 0644 ${WORKDIR}/cluster-dashboard.token ${D}${sysconfdir}/xdg/AGL/cluster-dashboard/
 }
 
@@ -52,7 +51,7 @@ FILES:${PN} += "${datadir} ${sysconfdir}/xdg/AGL"
 
 RDEPENDS:${PN} += "flutter-auto agl-flutter-env liberation-fonts"
 
-PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-demo"
+PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-demo ${PN}-conf-kvm-demo"
 
 FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default"
 RDEPENDS:${PN}-conf = "${PN}"
@@ -63,10 +62,19 @@ ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.de
 
 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"
 ALTERNATIVE:${PN}-conf-demo = "cluster-dashboard.yaml"
 ALTERNATIVE_TARGET_${PN}-conf-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo"
+
+FILES:${PN}-conf-kvm-demo += " \
+    ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo \
+    ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \
+"
+RDEPENDS:${PN}-conf-kvm-demo = "${PN}"
+RPROVIDES:${PN}-conf-kvm-demo = "cluster-dashboard.yaml"
+RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf"
+ALTERNATIVE:${PN}-conf-kvm-demo = "cluster-dashboard.yaml"
+ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo"
index 576e5a7..17e5599 100644 (file)
@@ -59,7 +59,6 @@ RDEPENDS:${PN} += " \
     flutter-auto \
     agl-flutter-env \
     applaunchd \
-    ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'agl-service-radio mpd', d)} \
 "
 
 PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo"
index 85d20f4..f4e3607 100644 (file)
@@ -35,7 +35,6 @@ EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}"
 RRECOMMENDS:${PN} += " \
     bluez5 \
     connman \
-    ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \
 "
 
 BBCLASSEXTEND = "nativesdk"
index 11818f6..14290b9 100644 (file)
@@ -1,9 +1,6 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:"
 
-SRC_URI += " \
-    file://remote-output.cfg.in \
-    file://weston.ini.kvm.in \
-"
+SRC_URI += "file://remote-output.cfg.in"
 
 # Options for the user to change in local.conf
 # e.g. REMOTING_OUTPUT_MODE = "1080x1488"
@@ -11,49 +8,26 @@ REMOTING_OUTPUT_MODE ??= "640x720@30"
 REMOTING_OUTPUT_HOST ??= "192.168.10.3"
 REMOTING_OUTPUT_PORT ??= "5005"
 
-# Default app IDs for KVM guests
-GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter"
-GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter"
-
 do_configure:append() {
     # Standalone cluster support version
     sed -e "s#host=.*#host=${REMOTING_OUTPUT_HOST}#" \
         -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \
         ${WORKDIR}/remote-output.cfg.in  > ${WORKDIR}/remote-output.cfg
-
-    # KVM guest cluster version
-    sed -e "s#host=.*#host=172.16.10.3#" \
-        -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \
-        ${WORKDIR}/remote-output.cfg.in  > ${WORKDIR}/remote-output-kvm.cfg
 }
 
 do_compile:append() {
-    # Create regular and KVM remoting enabled versions of the default
-    # portrait and landscape demo IVI configurations
+    # Create remoting enabled versions of the default portrait
+    # and landscape demo IVI configurations
     for c in weston.ini.default weston.ini.landscape; do
         cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting
         echo >> ${WORKDIR}/${c}-remoting
         cat ${WORKDIR}/remote-output.cfg >> ${WORKDIR}/${c}-remoting
-
-        cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting-kvm
-        echo >> ${WORKDIR}/${c}-remoting-kvm
-        cat ${WORKDIR}/remote-output-kvm.cfg >> ${WORKDIR}/${c}-remoting-kvm
     done
-
-    # Create a canned configuration for the a KVM host, filling in
-    # the guest VM application ids to pin them to specific outputs.
-    rm -f ${WORKDIR}/weston.ini.kvm
-    sed -e "s/@GUEST_VM1_ID@/${GUEST_VM1_IMAGE}/g" \
-        -e "s/@GUEST_VM2_ID@/${GUEST_VM2_IMAGE}/g" \
-        ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm
 }
 
 do_install:append() {
     install -m 0644 ${WORKDIR}/weston.ini.default-remoting ${D}${weston_ini_dir}/
-    install -m 0644 ${WORKDIR}/weston.ini.default-remoting-kvm ${D}${weston_ini_dir}/
     install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting ${D}${weston_ini_dir}/
-    install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting-kvm ${D}${weston_ini_dir}/
-    install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/
 }
 
 # remoting
@@ -65,15 +39,6 @@ ALTERNATIVE:${PN}-remoting = "weston.ini"
 ALTERNATIVE_TARGET_${PN}-remoting = "${weston_ini_dir}/weston.ini.default-remoting"
 ALTERNATIVE_PRIORITY_${PN}-remoting = "30"
 
-# remoting-kvm
-
-PACKAGE_BEFORE_PN += "${PN}-remoting-kvm"
-FILES:${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm"
-RPROVIDES:${PN}-remoting-kvm = "weston-ini"
-ALTERNATIVE:${PN}-remoting-kvm = "weston.ini"
-ALTERNATIVE_TARGET_${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm"
-ALTERNATIVE_PRIORITY_${PN}-remoting-kvm = "35"
-
 # landscape-remoting
 
 PACKAGE_BEFORE_PN += "${PN}-landscape-remoting"
@@ -82,21 +47,3 @@ RPROVIDES:${PN}-landscape-remoting = "weston-ini"
 ALTERNATIVE:${PN}-landscape-remoting = "weston.ini"
 ALTERNATIVE_TARGET_${PN}-landscape-remoting = "${weston_ini_dir}/weston.ini.landscape-remoting"
 ALTERNATIVE_PRIORITY_${PN}-landscape-remoting = "31"
-
-# landscape-remoting-kvm
-
-PACKAGE_BEFORE_PN += "${PN}-landscape-remoting-kvm"
-FILES:${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm"
-RPROVIDES:${PN}-landscape-remoting-kvm = "weston-ini"
-ALTERNATIVE:${PN}-landscape-remoting-kvm = "weston.ini"
-ALTERNATIVE_TARGET_${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm"
-ALTERNATIVE_PRIORITY_${PN}-landscape-remoting-kvm = "36"
-
-# kvm
-
-PACKAGE_BEFORE_PN += "${PN}-kvm"
-FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm"
-RPROVIDES:${PN}-kvm = "weston-ini"
-ALTERNATIVE:${PN}-kvm = "weston.ini"
-ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm"
-ALTERNATIVE_PRIORITY_${PN}-kvm = "40"
index 5532c3e..3516007 100644 (file)
@@ -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 \
 "
index b2581f8..dfa2562 100644 (file)
@@ -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 \
 "
 
index ecf3cd9..a63e2df 100644 (file)
@@ -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)} \
 "
index 75fd57c..5753d58 100644 (file)
@@ -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} \
 "
index 7964079..8fe988d 100644 (file)
@@ -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 \
index 12122ca..3783db9 100644 (file)
@@ -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)} \
 "
 
index 78c96fa..be2ac44 100644 (file)
@@ -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
index c3a53d5..94cee97 100644 (file)
@@ -18,6 +18,7 @@ RDEPENDS:${PN}-platform += " \
     agl-service-hvac \
     agl-service-audiomixer \
     agl-service-radio \
+    mpd \
 "
 
 RDEPENDS:${PN} += " \
diff --git a/templates/feature/agl-kvm-host-audio/50_local.conf.inc b/templates/feature/agl-kvm-host-audio/50_local.conf.inc
deleted file mode 100644 (file)
index 7bd20e3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-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
deleted file mode 100644 (file)
index 93a4b9a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: Feature agl-kvm-host-audio
-authors: Scott Murray <scott.murray@konsulko.com>
----
-
-### 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
deleted file mode 100644 (file)
index f1f0a2f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-kvm agl-kvm-host-kuksa
diff --git a/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc b/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc
deleted file mode 100644 (file)
index 6259e41..0000000
+++ /dev/null
@@ -1 +0,0 @@
-AGL_FEATURES += "agl-kvm-host-kuksa"
diff --git a/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md b/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md
deleted file mode 100644 (file)
index 1b607aa..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: Feature agl-kvm-host-kuksa
-authors: Scott Murray <scott.murray@konsulko.com>
----
-
-### Feature agl-kvm-host-kuksa
-
-* Enables support for running KUKSA.val databroker on host in KVM+QEMU demo images
-
-### Dependent features pulled by agl-kvm-host-kuksa
-
-The following features are pulled:
-
-* agl-kvm
-
-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-kuksa/included.dep b/templates/feature/agl-kvm-host-kuksa/included.dep
deleted file mode 100644 (file)
index b2b1014..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-kvm
index e5e3911..162f458 100644 (file)
@@ -2,3 +2,7 @@ AGL_META_PYTHON = "${METADIR}/external/meta-openembedded/meta-python"
 AGL_META_NETWORKING = "${METADIR}/external/meta-openembedded/meta-networking"
 AGL_META_FILESYSTEMS = "${METADIR}/external/meta-openembedded/meta-filesystems"
 AGL_META_VIRTUALIZATION = "${METADIR}/external/meta-virtualization"
+
+BBLAYERS =+ " \
+   ${METADIR}/meta-agl-demo/meta-agl-kvm-demo \
+"