From 2e0fd28b2470f6d81bfb1b0b273af5742060ed6a Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 12 May 2024 15:28:59 -0400 Subject: [PATCH] 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 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 --- meta-agl-kvm-demo/conf/layer.conf | 15 +++++ ...l-cluster-demo-flutter-guest-preconfigured.conf | 1 + .../files/agl-cluster-demo-flutter-guest.conf | 5 +- .../agl-ivi-demo-flutter-guest-preconfigured.conf | 1 + .../files/agl-ivi-demo-flutter-guest.conf | 1 + .../recipes-config}/qemu-config/files/bridge.conf | 0 .../qemu-config/files/connman-nodnsproxy.conf | 0 .../qemu-config/files/dnsmasq-qemu.conf | 0 .../qemu-config/files/vmnet0.netdev | 0 .../qemu-config/files/vmnet0.network | 0 ...agl-cluster-demo-flutter-guest-preconfigured.bb | 3 + .../qemu-config-agl-cluster-demo-flutter-guest.bb | 2 +- ...fig-agl-ivi-demo-flutter-guest-preconfigured.bb | 3 + .../qemu-config-agl-ivi-demo-flutter-guest.bb | 2 +- .../qemu-config/qemu-config-vmnet0.bb | 0 .../agl-qemu-runner/agl-qemu-runner.bb | 0 .../agl-qemu-runner/files/agl-qemu-runner.sh | 5 +- .../agl-qemu-runner/files/agl-qemu-runner@.service | 0 .../wayland/weston-ini-conf.bbappend | 1 + .../wayland/weston-ini-conf/weston.ini.kvm.in | 4 +- .../wayland/weston-ini-conf_agldemo.inc | 66 ++++++++++++++++++++++ ...agl-cluster-demo-flutter-guest-preconfigured.bb | 12 ++++ .../images/agl-cluster-demo-flutter-guest.bb | 8 +++ .../agl-ivi-demo-flutter-guest-preconfigured.bb | 12 ++++ .../images/agl-ivi-demo-flutter-guest.bb | 14 +++++ .../images/agl-kvm-demo-flutter-preconfigured.bb | 38 +++++++++++++ .../recipes-platform}/images/agl-kvm-demo.bb | 34 ++--------- .../qemu-config/qemu-config-agl-cluster-demo-qt.bb | 29 ---------- .../qemu-config/qemu-config-agl-ivi-demo-qt.bb | 29 ---------- .../files/cluster-dashboard.yaml.kvm-demo | 4 ++ .../flutter-cluster-dashboard_git.bb | 18 ++++-- .../flutter-ics-homescreen_git.bb | 1 - recipes-demo/libqtappfw/libqtappfw_git.bb | 1 - .../wayland/weston-ini-conf_agldemo.inc | 59 +------------------ .../agl-cluster-demo-flutter-preconfigured.bb | 3 +- .../images/agl-cluster-demo-flutter.bb | 4 +- recipes-platform/images/agl-ivi-demo-features.inc | 8 ++- recipes-platform/images/agl-ivi-demo-flutter.bb | 7 ++- recipes-platform/images/agl-ivi-demo-qt.bb | 4 +- recipes-platform/images/agl-ivi-image.bb | 9 ++- .../packagegroup-agl-ivi-multimedia.bb | 20 +++++-- .../packagegroups/packagegroup-agl-ivi-services.bb | 1 + .../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 - .../feature/agl-kvm-host-kuksa/50_local.conf.inc | 1 - .../README_feature_agl-kvm-host-kuksa.md | 17 ------ templates/feature/agl-kvm-host-kuksa/included.dep | 1 - templates/feature/agl-kvm/50_bblayers.conf.inc | 4 ++ 49 files changed, 253 insertions(+), 213 deletions(-) create mode 100644 meta-agl-kvm-demo/conf/layer.conf rename recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf (88%) rename recipes-config/qemu-config/files/agl-cluster-demo-qt.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf (73%) rename recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf (96%) rename recipes-config/qemu-config/files/agl-ivi-demo-qt.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf (96%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/bridge.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/connman-nodnsproxy.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/dnsmasq-qemu.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/vmnet0.netdev (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/vmnet0.network (100%) create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb rename recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb => meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb (95%) create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb rename recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb => meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb (95%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/qemu-config-vmnet0.bb (100%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/agl-qemu-runner.bb (100%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/files/agl-qemu-runner.sh (92%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/files/agl-qemu-runner@.service (100%) create mode 100644 meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend rename {recipes-graphics => meta-agl-kvm-demo/recipes-graphics}/wayland/weston-ini-conf/weston.ini.kvm.in (77%) create mode 100644 meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb rename {recipes-platform => meta-agl-kvm-demo/recipes-platform}/images/agl-kvm-demo.bb (60%) delete mode 100644 recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb delete mode 100644 recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb create mode 100644 recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo delete mode 100644 templates/feature/agl-kvm-host-audio/50_local.conf.inc delete mode 100644 templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md delete mode 100644 templates/feature/agl-kvm-host-audio/included.dep delete mode 100644 templates/feature/agl-kvm-host-kuksa/50_local.conf.inc delete mode 100644 templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md delete mode 100644 templates/feature/agl-kvm-host-kuksa/included.dep diff --git a/meta-agl-kvm-demo/conf/layer.conf b/meta-agl-kvm-demo/conf/layer.conf new file mode 100644 index 000000000..0799d4f4e --- /dev/null +++ b/meta-agl-kvm-demo/conf/layer.conf @@ -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" + diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf similarity index 88% rename from recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf index 99d1f10c9..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf @@ -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" diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-qt.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf similarity index 73% rename from recipes-config/qemu-config/files/agl-cluster-demo-qt.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf index 1ecefc477..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-qt.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf @@ -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" diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf similarity index 96% rename from recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf index 7ff32bc18..c2d420eb6 100644 --- a/recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf @@ -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/recipes-config/qemu-config/files/agl-ivi-demo-qt.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf similarity index 96% rename from recipes-config/qemu-config/files/agl-ivi-demo-qt.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf index 7ff32bc18..c2d420eb6 100644 --- a/recipes-config/qemu-config/files/agl-ivi-demo-qt.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf @@ -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/recipes-config/qemu-config/files/bridge.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf similarity index 100% rename from recipes-config/qemu-config/files/bridge.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf diff --git a/recipes-config/qemu-config/files/connman-nodnsproxy.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf similarity index 100% rename from recipes-config/qemu-config/files/connman-nodnsproxy.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf diff --git a/recipes-config/qemu-config/files/dnsmasq-qemu.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf similarity index 100% rename from recipes-config/qemu-config/files/dnsmasq-qemu.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf diff --git a/recipes-config/qemu-config/files/vmnet0.netdev b/meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev similarity index 100% rename from recipes-config/qemu-config/files/vmnet0.netdev rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev diff --git a/recipes-config/qemu-config/files/vmnet0.network b/meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network similarity index 100% rename from recipes-config/qemu-config/files/vmnet0.network rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network 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 index 000000000..b58dcae6e --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-cluster-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured" diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb index f0bc93fd3..96d95113f 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb @@ -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 index 000000000..642876b5a --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-ivi-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured" diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb index a9f2be43a..cfab8b1a7 100644 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb @@ -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() { diff --git a/recipes-config/qemu-config/qemu-config-vmnet0.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb similarity index 100% rename from recipes-config/qemu-config/qemu-config-vmnet0.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb diff --git a/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb similarity index 100% rename from recipes-extended/agl-qemu-runner/agl-qemu-runner.bb rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh similarity index 92% rename from recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh index ab3a02c91..f0136b6d5 100755 --- a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh +++ b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh @@ -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/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service similarity index 100% rename from recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service 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 index 000000000..423a46944 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'weston-ini-conf_agldemo.inc', '', d)} diff --git a/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in similarity index 77% rename from recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in rename to meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in index 79ca30cd4..3369853f4 100644 --- a/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in @@ -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 index 000000000..28f871a8d --- /dev/null +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -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 index 000000000..d5c8fcec2 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb @@ -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 index 000000000..3cde0d07b --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb @@ -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 index 000000000..a98cb5887 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb @@ -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 index 000000000..f6e748bfd --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb @@ -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 index 000000000..9b02c68ce --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb @@ -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" diff --git a/recipes-platform/images/agl-kvm-demo.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb similarity index 60% rename from recipes-platform/images/agl-kvm-demo.bb rename to meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb index c27757005..33f2b921f 100644 --- a/recipes-platform/images/agl-kvm-demo.bb +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb @@ -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 index e22e40271..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb +++ /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 index 46e043c05..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb +++ /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 index 000000000..9267b4d40 --- /dev/null +++ b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo @@ -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" 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 beee7005f..f81d8e733 100644 --- a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb +++ b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb @@ -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" 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 576e5a7d1..17e55994e 100644 --- a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb +++ b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb @@ -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" diff --git a/recipes-demo/libqtappfw/libqtappfw_git.bb b/recipes-demo/libqtappfw/libqtappfw_git.bb index 85d20f41b..f4e360723 100644 --- a/recipes-demo/libqtappfw/libqtappfw_git.bb +++ b/recipes-demo/libqtappfw/libqtappfw_git.bb @@ -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" diff --git a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc index 11818f686..14290b998 100644 --- a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc +++ b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -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" 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/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} += " \ 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 index 7bd20e391..000000000 --- a/templates/feature/agl-kvm-host-audio/50_local.conf.inc +++ /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 index 93a4b9ade..000000000 --- a/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -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 deleted file mode 100644 index f1f0a2f99..000000000 --- a/templates/feature/agl-kvm-host-audio/included.dep +++ /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 index 6259e41f2..000000000 --- a/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc +++ /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 index 1b607aa3c..000000000 --- a/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Feature agl-kvm-host-kuksa -authors: Scott Murray ---- - -### 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 index b2b1014cf..000000000 --- a/templates/feature/agl-kvm-host-kuksa/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-kvm diff --git a/templates/feature/agl-kvm/50_bblayers.conf.inc b/templates/feature/agl-kvm/50_bblayers.conf.inc index e5e39118a..162f458be 100644 --- a/templates/feature/agl-kvm/50_bblayers.conf.inc +++ b/templates/feature/agl-kvm/50_bblayers.conf.inc @@ -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 \ +" -- 2.16.6