From 6cce1d8fcff72bd429a6f0aea23fc5666fd67878 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 7 Mar 2022 16:21:05 -0500 Subject: [PATCH] Restore cluster and telematics demo images Changes: - Restore the image recipes for the agl-cluster-demo-platform and agl-telematics-demo-platform images, with updates to them and their associated packagegroups for the app framework removal. - Restore updated recipes required for the above, including: * cluster-dashboard * cluster-receiver * qt-cluster-receiver * tbtnavi - Simple systemd unit files have been added for the cluster applications and are installed as user session units. Starting of cluster-dashboard (the XDG version) and cluster-receiver in the AGL user session is enabled by default. - The recipes to install the dedicated network configuration for the cluster demo have been restored so that the agl-cluster-demo-support and agl-demo-preload features will do what is expected again. Known outstanding issues: - The previous signal-composer binding support has been removed from cluster-dashboard, so related functionality (i.e. driving it from CAN) is disabled until replacement is worked out. - While tbtnavi builds, the previous use of the navigation binding is stubbed out in libqtappfw, so it will not receive location and route information from ondemandnavi. - Nothing has been added yet to start tbtnavi in the AGL user session, the plan is to do so with a systemd user unit once a new mechanism for controlling it from ondemandnavi has been implemented. - The telematics-recorder application has not yet been updated to replace its signal-composer, gps, and network binding use. The intent is to address these issues in the 13.0.x point releases. Bug-AGL: SPEC-4283 Signed-off-by: Scott Murray Change-Id: I520c23775b21504cb7dd92538319cc5bf826ff64 --- .../cluster-demo-network-config_1.0.bb | 33 ++++++++++++++++ .../files/cluster-demo-network-conf.sh | 17 ++++++++ .../files/cluster-demo-network-conf@.service | 12 ++++++ .../cluster-dashboard/cluster-dashboard.service | 20 ++++++++++ .../cluster-dashboard/cluster-dashboard_git.bb | 46 ++++++++++++++++++++++ .../cluster-receiver/cluster-receiver.service | 20 ++++++++++ .../cluster-receiver/cluster-receiver_git.bb | 38 ++++++++++++++++++ .../qt-cluster-receiver.service | 20 ++++++++++ .../cluster-receiver/qt-cluster-receiver_git.bb | 40 +++++++++++++++++++ recipes-demo/navigation/tbtnavi_git.bb | 36 +++++++++++++++++ .../images/agl-cluster-demo-platform.bb | 18 +++++++++ .../images/agl-telematics-demo-platform.bb | 13 ++++++ .../packagegroup-agl-cluster-demo-platform.bb | 30 ++++++++++++++ .../packagegroup-agl-demo-platform.bb | 8 ++++ .../packagegroup-agl-profile-cluster-qt5.bb | 1 - .../packagegroup-agl-telematics-demo-platform.bb | 1 - 16 files changed, 351 insertions(+), 2 deletions(-) create mode 100644 recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb create mode 100644 recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh create mode 100644 recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service create mode 100644 recipes-demo/cluster-dashboard/cluster-dashboard/cluster-dashboard.service create mode 100644 recipes-demo/cluster-dashboard/cluster-dashboard_git.bb create mode 100644 recipes-demo/cluster-receiver/cluster-receiver/cluster-receiver.service create mode 100644 recipes-demo/cluster-receiver/cluster-receiver_git.bb create mode 100644 recipes-demo/cluster-receiver/qt-cluster-receiver/qt-cluster-receiver.service create mode 100644 recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb create mode 100644 recipes-demo/navigation/tbtnavi_git.bb create mode 100644 recipes-platform/images/agl-cluster-demo-platform.bb create mode 100644 recipes-platform/images/agl-telematics-demo-platform.bb create mode 100644 recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb diff --git a/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb b/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb new file mode 100644 index 000000000..8d737282d --- /dev/null +++ b/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb @@ -0,0 +1,33 @@ +SUMMARY = "Setting files for cluster network for the AGL Demonstrator" +DESCRIPTION = "Setting files for cluster network for the AGL Demonstrator" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +inherit systemd allarch + +SRC_URI = "file://cluster-demo-network-conf@.service \ + file://cluster-demo-network-conf.sh \ +" + +# Network device for dedicated connection to cluster +AGL_CLUSTER_NET_DEVICE ?= "eth1" + +do_configure[noexec] = "1" +do_compile[noexec] = "1" + +do_install() { + # Install helper script + install -d ${D}${sbindir} + install -m 0755 ${WORKDIR}/cluster-demo-network-conf.sh ${D}${sbindir}/ + + # Install service unit + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/cluster-demo-network-conf@.service ${D}${systemd_system_unitdir}/ + + # Add symlink to network.target.wants + install -d ${D}${sysconfdir}/systemd/system/network.target.wants + ln -s ${systemd_system_unitdir}/cluster-demo-network-conf@.service \ + ${D}${sysconfdir}/systemd/system/network.target.wants/cluster-demo-network-conf@${AGL_CLUSTER_NET_DEVICE}.service +} + +FILES:${PN} += "${systemd_system_unitdir}" diff --git a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh new file mode 100644 index 000000000..3f538175f --- /dev/null +++ b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +CONNMAN_CONF=/etc/connman/main.conf +CLUSTER_ADDRESS=192.168.20.93 + +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +# Need to blacklist given device with connman if it isn't already, +# otherwise connman will over-ride address configuration. +if ! grep '^NetworkInterfaceBlacklist=' ${CONNMAN_CONF} | grep -q $1; then + sed -i "s/^\(NetworkInterfaceBlacklist=.*\)/\1,$1/" ${CONNMAN_CONF} +fi + +/sbin/ifconfig $1 ${CLUSTER_ADDRESS} diff --git a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service new file mode 100644 index 000000000..5fc29b7a0 --- /dev/null +++ b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service @@ -0,0 +1,12 @@ +[Unit] +Description=Configure dedicated link for cluster demo network +After=sys-subsystem-net-devices-%i.device +Requires=sys-subsystem-net-devices-%i.device +Before=network.target + +[Service] +ExecStart=/usr/sbin/cluster-demo-network-conf.sh %i +Type=oneshot + +[Install] +WantedBy=network.target diff --git a/recipes-demo/cluster-dashboard/cluster-dashboard/cluster-dashboard.service b/recipes-demo/cluster-dashboard/cluster-dashboard/cluster-dashboard.service new file mode 100644 index 000000000..d96c738bb --- /dev/null +++ b/recipes-demo/cluster-dashboard/cluster-dashboard/cluster-dashboard.service @@ -0,0 +1,20 @@ +[Unit] +Description=cluster-dashboard + +Requires=agl-compositor.service +After=agl-compositor.service + +# Since we are part of the agl session, make sure we are started before +# it is complete. +Before=agl-session.target + +[Service] +ExecStart=/usr/bin/cluster-dashboard + +Restart=always + +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=agl-session.target diff --git a/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb b/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb new file mode 100644 index 000000000..2f5bbecf5 --- /dev/null +++ b/recipes-demo/cluster-dashboard/cluster-dashboard_git.bb @@ -0,0 +1,46 @@ +SUMMARY = "Instrument Cluster Dashboard application" +DESCRIPTION = "AGL demonstration instrument cluster dashboard application" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-cluster-demo-dashboard" +SECTION = "apps" + +LICENSE = "Apache-2.0 & BSD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ + file://app/cluster-gauges.qml;beginline=9;endline=48;md5=54187d50b29429abee6095fe8b7c1a78" + +DEPENDS = " \ + qtquickcontrols2 \ + libqtappfw \ + glib-2.0 \ + wayland wayland-native \ + qtwayland qtwayland-native \ +" + +PV = "1.0+git${SRCPV}" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-dashboard;protocol=https;branch=${AGL_BRANCH} \ + file://cluster-dashboard.service \ +" +SRCREV = "${AGL_APP_REVISION}" + +S = "${WORKDIR}/git" + +inherit pkgconfig cmake_qt5 + +do_install:append() { + install -d ${D}${systemd_user_unitdir}/agl-session.target.wants + install -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_user_unitdir}/${BPN}.service + ln -s ../${BPN}.service ${D}${systemd_user_unitdir}/agl-session.target.wants/${BPN}.service +} + +FILES:${PN} += " ${systemd_user_unitdir}" + +RDEPENDS:${PN} += " \ + qtwayland \ + qtbase-qmlplugins \ + qtquickcontrols \ + qtquickcontrols-qmlplugins \ + qtquickcontrols2 \ + qtquickcontrols2-qmlplugins \ + qtgraphicaleffects-qmlplugins \ + qtsvg-plugins \ +" diff --git a/recipes-demo/cluster-receiver/cluster-receiver/cluster-receiver.service b/recipes-demo/cluster-receiver/cluster-receiver/cluster-receiver.service new file mode 100644 index 000000000..e544e25fc --- /dev/null +++ b/recipes-demo/cluster-receiver/cluster-receiver/cluster-receiver.service @@ -0,0 +1,20 @@ +[Unit] +Description=cluster-receiver + +Requires=agl-compositor.service +After=agl-compositor.service + +# Since we are part of the agl session, make sure we are started before +# it is complete. +Before=agl-session.target + +[Service] +ExecStart=/usr/bin/xdg-cluster-receiver + +Restart=always + +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=agl-session.target diff --git a/recipes-demo/cluster-receiver/cluster-receiver_git.bb b/recipes-demo/cluster-receiver/cluster-receiver_git.bb new file mode 100644 index 000000000..3b1dd6a08 --- /dev/null +++ b/recipes-demo/cluster-receiver/cluster-receiver_git.bb @@ -0,0 +1,38 @@ +SUMMARY = "Instrument Cluster receiver application" +DESCRIPTION = "AGL demonstration instrument cluster XDG remote display application" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-cluster-demo-receiver" +SECTION = "apps" + +LICENSE = "Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=374fee6a7817f1e1a5a7bfb7b7989553" + +DEPENDS = " \ + wayland wayland-native \ + agl-compositor \ + gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad \ +" + +PV = "1.0+git${SRCPV}" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-receiver;protocol=https;branch=${AGL_BRANCH} \ + file://cluster-receiver.service \ +" +SRCREV = "${AGL_APP_REVISION}" + +S = "${WORKDIR}/git" + +inherit cmake pkgconfig + +do_install:append() { + install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_user_unitdir}/${BPN}.service + install -d ${D}${systemd_user_unitdir}/agl-session.target.wants + ln -s ../${BPN}.service ${D}${systemd_user_unitdir}/agl-session.target.wants/${BPN}.service +} + +FILES:${PN} += " ${systemd_user_unitdir}" + +RDEPENDS:${PN} += " \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ +" diff --git a/recipes-demo/cluster-receiver/qt-cluster-receiver/qt-cluster-receiver.service b/recipes-demo/cluster-receiver/qt-cluster-receiver/qt-cluster-receiver.service new file mode 100644 index 000000000..bc328f9e5 --- /dev/null +++ b/recipes-demo/cluster-receiver/qt-cluster-receiver/qt-cluster-receiver.service @@ -0,0 +1,20 @@ +[Unit] +Description=qt-cluster-receiver + +Requires=agl-compositor.service +After=agl-compositor.service + +# Since we are part of the agl session, make sure we are started before +# it is complete. +Before=agl-session.target + +[Service] +ExecStart=/usr/bin/qt-cluster-receiver + +Restart=always + +StandardOutput=journal +StandardError=journal + +[Install] +WantedBy=agl-session.target diff --git a/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb new file mode 100644 index 000000000..d43ab4376 --- /dev/null +++ b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb @@ -0,0 +1,40 @@ +SUMMARY = "Instrument Cluster receiver application" +DESCRIPTION = "AGL demonstration instrument cluster Qt remote display application" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/admin/repos/apps/agl-qt-cluster-demo-receiver" +SECTION = "apps" + +LICENSE = "Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ + file://app/surface.hpp;beginline=5;endline=21;md5=5351c531a191f0e3463aafcd0a6a00a3" + +DEPENDS = " \ + wayland wayland-native \ + qtwayland qtwayland-native \ + qtquickcontrols2 qtwebsockets qtbase qtdeclarative \ + gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad \ +" + +PV = "1.0+git${SRCPV}" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-qt-cluster-demo-receiver;protocol=https;branch=${AGL_BRANCH} \ + file://qt-cluster-receiver.service \ +" +SRCREV = "${AGL_APP_REVISION}" + +S = "${WORKDIR}/git" + +inherit cmake_qt5 pkgconfig + +do_install:append() { + # Only install unit, do not enable it by default + install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_user_unitdir}/${BPN}.service +} + +FILES:${PN} += " ${systemd_user_unitdir}" + +RDEPENDS:${PN} += " \ + qtwayland \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ +" diff --git a/recipes-demo/navigation/tbtnavi_git.bb b/recipes-demo/navigation/tbtnavi_git.bb new file mode 100644 index 000000000..5981cc584 --- /dev/null +++ b/recipes-demo/navigation/tbtnavi_git.bb @@ -0,0 +1,36 @@ +SUMMARY = "AGL Reference Navigation Cluster Streaming application" +DESCRIPTION = "Demo AGL turn by turn cluster navigation application based on QtLocation widget." +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/admin/repos/apps/tbtnavi" +SECTION = "apps" + +LICENSE = "Apache-2.0 & ISC & BSD-3-Clause & BSL-1.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ + file://LICENSE.mapbox-cheap-ruler-cpp;md5=761263ee6bdc98e8697d9fbc897021ba \ + file://LICENSE.mapbox-geometry.hpp;md5=6e44f5d6aeec54f40fc84eebe3c6fc6c \ + file://LICENSE.mapbox-variant;md5=79558839a9db3e807e4ae6f8cd100c1c \ + file://include/mapbox/recursive_wrapper.hpp;beginline=4;endline=13;md5=cd3341aae76c0cf8345935abd20f0051 \ +" + +DEPENDS = " \ + qtbase \ + qtquickcontrols2 \ + qtlocation \ + libqtappfw \ + wayland-native \ + qtwayland-native \ +" + +PV = "2.0+git${SRCPV}" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/tbtnavi;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +S = "${WORKDIR}/git" + +inherit qmake5 pkgconfig + +RDEPENDS:${PN} += " \ + qtlocation \ + ondemandnavi-config \ + libqtappfw \ +" diff --git a/recipes-platform/images/agl-cluster-demo-platform.bb b/recipes-platform/images/agl-cluster-demo-platform.bb new file mode 100644 index 000000000..d5c92742f --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-platform.bb @@ -0,0 +1,18 @@ +DESCRIPTION = "AGL Cluster Demo Platform image currently contains a simple cluster interface." + +LICENSE = "MIT" + +require recipes-platform/images/agl-image-boot.inc + +IMAGE_FEATURES += "splash package-management ssh-server-openssh" + +inherit features_check + +REQUIRED_DISTRO_FEATURES = "wayland" + +# add packages for cluster demo platform (include demo apps) here +IMAGE_INSTALL:append = " \ + packagegroup-agl-cluster-demo-platform \ + ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "cluster-dashboard-demo-config", "", d)} \ + ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "weston-ini-conf-landscape-inverted", "weston-ini-conf-landscape", d)} \ + " diff --git a/recipes-platform/images/agl-telematics-demo-platform.bb b/recipes-platform/images/agl-telematics-demo-platform.bb new file mode 100644 index 000000000..b8a99617c --- /dev/null +++ b/recipes-platform/images/agl-telematics-demo-platform.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "AGL Telematics Demo Platform image." + +LICENSE = "MIT" + +require recipes-platform/images/agl-image-boot.inc + +inherit features_check + +REQUIRED_DISTRO_FEATURES = "3g" + +IMAGE_INSTALL:append = " \ + packagegroup-agl-telematics-demo-platform \ +" diff --git a/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb b/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb new file mode 100644 index 000000000..c414adf47 --- /dev/null +++ b/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb @@ -0,0 +1,30 @@ +SUMMARY = "The software for demo platform of AGL cluster profile" +DESCRIPTION = "A set of packages belong to AGL Cluster Demo Platform" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-cluster-demo-platform \ + " + +ALLOW_EMPTY:${PN} = "1" + +RDEPENDS:${PN} += "\ + packagegroup-agl-profile-cluster-qt5 \ + packagegroup-agl-ttf-fonts \ + packagegroup-agl-source-han-sans-ttf-fonts \ + packagegroup-agl-networking \ + " + +AGL_APPS = " \ + cluster-dashboard \ + cluster-receiver \ + qt-cluster-receiver \ + " + +RDEPENDS:${PN}:append = " \ + can-utils \ + ${AGL_APPS} \ +" diff --git a/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb b/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb index a86da2e24..9c4553f29 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb @@ -34,6 +34,13 @@ AGL_APPS = " \ radio \ " +# Cluster demo support. +CLUSTER_SUPPORT_PACKAGES = " \ + tbtnavi \ + cluster-demo-network-config \ +" +CLUSTER_SUPPORT = "${@bb.utils.contains("AGL_FEATURES", "agl-cluster-demo-support", "${CLUSTER_SUPPORT_PACKAGES}", "",d)}" + # Hook for demo platform configuration # ATM used for: # 1) Adding udev configuration and scripts for supporting USB attached @@ -49,5 +56,6 @@ RDEPENDS:${PN}:append = " \ qtquickcontrols2-agl-style \ ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'unzip mpc' , '', d)} \ ${AGL_APPS} \ + ${CLUSTER_SUPPORT} \ ${DEMO_PRELOAD} \ " diff --git a/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb b/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb index aeef45daa..39b0c3739 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb @@ -15,7 +15,6 @@ RDEPENDS:${PN} += "\ packagegroup-agl-image-boot \ packagegroup-agl-core-security \ packagegroup-agl-graphical-weston \ - packagegroup-agl-appfw-native-qt5 \ " RDEPENDS:profile-cluster-qt5 = "${PN}" diff --git a/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb b/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb index 17b5c8b24..d598de4ec 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb @@ -30,4 +30,3 @@ RDEPENDS:${PN}:append = " \ ${AGL_APPS} \ ${AGL_APIS} \ " -# packagegroup-agl-core-navigation? (brings in geoclue...) -- 2.16.6