Reworking config creation for lxc and container manager 94/28794/7
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Thu, 4 May 2023 11:56:06 +0000 (20:56 +0900)
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Mon, 8 May 2023 23:13:10 +0000 (08:13 +0900)
At "Add initial container manager config for r-car gen3"
add container manager config recipes.  But it is not support
dynamic drm lease configuration, it require to static
configuration in each guest.

This patch enable dynamic drm lease configuration similar
to lxc-config.

Bug-AGL: SPEC-4777

Change-Id: I6161c5ff3d93ddbbde866c1c28d107d8f524d40b
Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
23 files changed:
meta-agl-ic-container/classes/cm-config.bbclass [new file with mode: 0644]
meta-agl-ic-container/conf/include/drm-lease-multi-display.inc [moved from meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/multi-display.inc with 100% similarity]
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo_%.bbappend
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo_%.bbappend
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in [deleted file]
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in [deleted file]
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo_%.bbappend
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-cluster-demo/system.conf.cluster-demo.in [deleted file]
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-cluster-demo_%.bbappend
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend
meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/system.conf.agl-flutter-ivi-demo.in
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo_1.0.bb
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/system.conf.agl-html5-ivi-demo.in
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo_1.0.bb
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi-demo.in [moved from meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-flutter-ivi-demo/system.conf.agl-flutter-ivi-demo.in with 68% similarity]
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in [deleted file]
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo_1.0.bb
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi-demo.in [moved from meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-html5-ivi-demo/system.conf.agl-html5-ivi-demo.in with 68% similarity]
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in [deleted file]
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo_1.0.bb
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo/system.conf.cluster-demo.in
meta-agl-ic-container/recipes-container/container-manager-config/cm-config-cluster-demo_1.0.bb

diff --git a/meta-agl-ic-container/classes/cm-config.bbclass b/meta-agl-ic-container/classes/cm-config.bbclass
new file mode 100644 (file)
index 0000000..60dec95
--- /dev/null
@@ -0,0 +1,34 @@
+# Helper class for container manager config creation.
+# Assumes that:
+# - Recipe name is 'cm-config-' + <guest name>
+# - Corresponding files {config,system.conf}.<guest name>.in are in
+#   the file search path
+# - That references to the DRM lease device name are parameterized
+#   with @DRM_LEASE_DEVICE@ in the .in files
+
+python __anonymous() {
+    bpn = d.getVar('BPN')
+    if not bpn.startswith('cm-config-'):
+        bb.error('Recipe name does not start with \'cm-config-\'')
+    config = bpn[10:]
+    d.setVar('CM_CONFIG_NAME', config)
+}
+
+S = "${WORKDIR}"
+
+inherit allarch
+
+DRM_LEASE_DEVICE ??= "card0-HDMI-A-1"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install:append () {
+    install -m 0755 -d ${D}/opt/container/guests/${CM_CONFIG_NAME}
+    for f in system.conf.${CM_CONFIG_NAME}.in; do
+        sed -e 's|@DRM_LEASE_DEVICE@|${DRM_LEASE_DEVICE}|g' \
+            ${WORKDIR}/$f > ${D}/opt/container/guests/${CM_CONFIG_NAME}/${f%.${CM_CONFIG_NAME}.in}
+    done
+}
+
+FILES:${PN}:append = "/opt/container/guests/${CM_CONFIG_NAME}"
index 1301f1d..bd73278 100644 (file)
@@ -1,21 +1,2 @@
-DESCRIPTION = "AGL flutter IVI demo container config"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
-
-SRC_URI = "file://agl-flutter-ivi-demo.json \
-           file://system.conf.agl-flutter-ivi-demo.in \
-          "
-
-inherit allarch
-
-do_install:append() {
-    install -Dm644 ${WORKDIR}/agl-flutter-ivi-demo.json ${D}/opt/container/conf/agl-flutter-ivi-demo.json
-    install -d ${D}/opt/container/guests/agl-flutter-ivi-demo/rootfs
-    install -d ${D}/opt/container/guests/agl-flutter-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-flutter-ivi-demo.in ${D}/opt/container/guests/agl-flutter-ivi-demo/system.conf
-}
-
-FILES:${PN} += " \
-    /opt/container/conf/* \
-    /opt/container/guests/agl-flutter-ivi-demo/* \
-    "
+# Container Manager config for AGL flutter IVI demo on R-Car Gen3
+FILESEXTRAPATHS:prepend := "${THISDIR}/cm-config-agl-flutter-ivi-demo:"
index 596e499..e810a7f 100644 (file)
@@ -1,21 +1,2 @@
-DESCRIPTION = "AGL HTML5 IVI demo container config"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
-
-SRC_URI = "file://agl-html5-ivi-demo.json \
-           file://system.conf.agl-html5-ivi-demo.in \
-          "
-
-inherit allarch
-
-do_install:append() {
-    install -Dm644 ${WORKDIR}/agl-html5-ivi-demo.json ${D}/opt/container/conf/agl-html5-ivi-demo.json
-    install -d ${D}/opt/container/guests/agl-html5-ivi-demo/rootfs
-    install -d ${D}/opt/container/guests/agl-html5-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-html5-ivi-demo.in ${D}/opt/container/guests/agl-html5-ivi-demo/system.conf
-}
-
-FILES:${PN} += " \
-    /opt/container/conf/* \
-    /opt/container/guests/agl-html5-ivi-demo/* \
-    "
+# Container Manager config for AGL HTML5 IVI demo on R-Car Gen3
+FILESEXTRAPATHS:prepend := "${THISDIR}/cm-config-agl-html5-ivi-demo:"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in
deleted file mode 100644 (file)
index ee7a410..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[Manager]
-DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-1
-DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in
deleted file mode 100644 (file)
index ee7a410..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[Manager]
-DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-1
-DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var
index 3b99845..9c0ff8c 100644 (file)
@@ -1,21 +1,2 @@
-DESCRIPTION = "AGL Qt IVI demo container config"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
-
-SRC_URI = "file://agl-qt-ivi-demo.json \
-           file://system.conf.agl-qt-ivi.in \
-          "
-
-inherit allarch
-
-do_install:append() {
-    install -Dm644 ${WORKDIR}/agl-qt-ivi-demo.json ${D}/opt/container/conf/agl-qt-ivi-demo.json
-    install -d ${D}/opt/container/guests/agl-qt-ivi-demo/rootfs
-    install -d ${D}/opt/container/guests/agl-qt-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-qt-ivi.in ${D}/opt/container/guests/agl-qt-ivi-demo/system.conf
-}
-
-FILES:${PN} += " \
-    /opt/container/conf/* \
-    /opt/container/guests/agl-qt-ivi-demo/* \
-    "
+# Container Manager config for AGL Qt IVI demo on R-Car Gen3
+FILESEXTRAPATHS:prepend := "${THISDIR}/cm-config-agl-qt-ivi-demo:"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-cluster-demo/system.conf.cluster-demo.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/container-manager-config/cm-config-cluster-demo/system.conf.cluster-demo.in
deleted file mode 100644 (file)
index 2802899..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-[Manager]
-DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-2
-DefaultEnvironment = QT_QPA_PLATFORM=wayland
-DefaultEnvironment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
-DefaultEnvironment = QML_IMPORT_PATH=/usr/lib/qml/
-DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/
-DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
index eca0cbc..0a487ad 100644 (file)
@@ -1,2 +1,7 @@
 # Container Manager config for cluster demo on R-Car Gen3
 FILESEXTRAPATHS:prepend := "${THISDIR}/cm-config-cluster-demo:"
+
+require conf/include/drm-lease-multi-display.inc
+
+# If you want to change display assign in your board, please change this line in your recipe.
+DRM_LEASE_DEVICE ?= "${@bb.utils.contains("HAS_MULTI_DISPLAY", "1", "card0-HDMI-A-2", "card0-HDMI-A-1" ,d)}"
index a27e03b..fb34288 100644 (file)
@@ -6,13 +6,12 @@ SRC_URI = "file://agl-flutter-ivi-demo.json \
            file://system.conf.agl-flutter-ivi-demo.in \
           "
 
-inherit allarch
+inherit cm-config
 
 do_install:append() {
     install -Dm644 ${WORKDIR}/agl-flutter-ivi-demo.json ${D}/opt/container/conf/agl-flutter-ivi-demo.json
     install -d ${D}/opt/container/guests/agl-flutter-ivi-demo/rootfs
     install -d ${D}/opt/container/guests/agl-flutter-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-flutter-ivi-demo.in ${D}/opt/container/guests/agl-flutter-ivi-demo/system.conf
 }
 
 FILES:${PN} += " \
index 169ea4e..e346157 100644 (file)
@@ -6,13 +6,12 @@ SRC_URI = "file://agl-html5-ivi-demo.json \
            file://system.conf.agl-html5-ivi-demo.in \
           "
 
-inherit allarch
+inherit cm-config
 
 do_install:append() {
     install -Dm644 ${WORKDIR}/agl-html5-ivi-demo.json ${D}/opt/container/conf/agl-html5-ivi-demo.json
     install -d ${D}/opt/container/guests/agl-html5-ivi-demo/rootfs
     install -d ${D}/opt/container/guests/agl-html5-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-html5-ivi-demo.in ${D}/opt/container/guests/agl-html5-ivi-demo/system.conf
 }
 
 FILES:${PN} += " \
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-momi-ivi-demo/system.conf.agl-momi-ivi.in
deleted file mode 100644 (file)
index ee7a410..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[Manager]
-DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-1
-DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var
index 1e10c18..2adfe0c 100644 (file)
@@ -3,16 +3,15 @@ LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
 
 SRC_URI = "file://agl-momi-ivi-demo.json \
-           file://system.conf.agl-momi-ivi.in \
+           file://system.conf.agl-momi-ivi-demo.in \
           "
 
-inherit allarch
+inherit cm-config
 
 do_install:append() {
     install -Dm644 ${WORKDIR}/agl-momi-ivi-demo.json ${D}/opt/container/conf/agl-momi-ivi-demo.json
     install -d ${D}/opt/container/guests/agl-momi-ivi-demo/rootfs
     install -d ${D}/opt/container/guests/agl-momi-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-momi-ivi.in ${D}/opt/container/guests/agl-momi-ivi-demo/system.conf
 }
 
 FILES:${PN} += " \
diff --git a/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in b/meta-agl-ic-container/recipes-container/container-manager-config/cm-config-agl-qt-ivi-demo/system.conf.agl-qt-ivi.in
deleted file mode 100644 (file)
index ee7a410..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[Manager]
-DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-1
-DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var
index 2dc84b8..f0550b0 100644 (file)
@@ -3,16 +3,15 @@ LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
 
 SRC_URI = "file://agl-qt-ivi-demo.json \
-           file://system.conf.agl-qt-ivi.in \
+           file://system.conf.agl-qt-ivi-demo.in \
           "
 
-inherit allarch
+inherit cm-config
 
 do_install:append() {
     install -Dm644 ${WORKDIR}/agl-qt-ivi-demo.json ${D}/opt/container/conf/agl-qt-ivi-demo.json
     install -d ${D}/opt/container/guests/agl-qt-ivi-demo/rootfs
     install -d ${D}/opt/container/guests/agl-qt-ivi-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.agl-qt-ivi.in ${D}/opt/container/guests/agl-qt-ivi-demo/system.conf
 }
 
 FILES:${PN} += " \
index 2802899..29a49b6 100644 (file)
@@ -1,6 +1,6 @@
 [Manager]
 DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
-DefaultEnvironment = DRM_LEASE_DEVICE=card0-HDMI-A-2
+DefaultEnvironment = DRM_LEASE_DEVICE=@DRM_LEASE_DEVICE@
 DefaultEnvironment = QT_QPA_PLATFORM=wayland
 DefaultEnvironment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
 DefaultEnvironment = QML_IMPORT_PATH=/usr/lib/qml/
index 4417974..37be471 100644 (file)
@@ -7,13 +7,12 @@ SRC_URI = "file://cluster-demo.json \
            file://system.conf.cluster-demo.in \
           "
 
-inherit allarch
+inherit cm-config
 
 do_install:append() {
     install -Dm644 ${WORKDIR}/cluster-demo.json ${D}/opt/container/conf/cluster-demo.json
     install -d ${D}/opt/container/guests/cluster-demo/rootfs
     install -d ${D}/opt/container/guests/cluster-demo/nv
-    install -Dm644 ${WORKDIR}/system.conf.cluster-demo.in  ${D}/opt/container/guests/cluster-demo/system.conf
 }
 
 FILES:${PN} += " \