Improvement flexibility for lxc-config 16/26916/1
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Sat, 13 Nov 2021 10:20:31 +0000 (19:20 +0900)
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Mon, 22 Nov 2021 06:46:27 +0000 (15:46 +0900)
Existing lxc config creation recipe is supporting two type string
replacing.  The network interface setting has required to multi line
replacing at aec683913cd645fcf18d7633a12a7b4b42215f69.
These flexibility will support by container manager that is under
developing. But we need quick solution for that now.

This patch provide quick solution. This patch support any network
interface usage in guest.

Bug-AGL: SPEC-4132

Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
Change-Id: I5da97492610124ddfe050660e0cc2c2c5559d5b9

26 files changed:
meta-agl-lxc/classes/lxc-config.bbclass
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in [moved from meta-agl-lxc/recipes-container/lxc-config/files/config.cluster-demo.in with 50% similarity]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in.orig [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in [moved from meta-agl-lxc/recipes-container/lxc-config/files/config.ivi-demo.in with 50% similarity]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in [new file with mode: 0644]
meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend
meta-agl-lxc/recipes-container/lxc-config/files/config.dummy.in [deleted file]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/network.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/system.conf.cluster-demo.in [moved from meta-agl-lxc/recipes-container/lxc-config/files/system.conf.cluster-demo.in with 100% similarity]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/basic.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/environment.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/misc.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/mount.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/network.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/system.conf.dummy.in [moved from meta-agl-lxc/recipes-container/lxc-config/files/system.conf.dummy.in with 100% similarity]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/network.in [new file with mode: 0644]
meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in [moved from meta-agl-lxc/recipes-container/lxc-config/files/system.conf.ivi-demo.in with 100% similarity]

index a3bdf80..921aaf9 100644 (file)
@@ -18,8 +18,12 @@ python __anonymous() {
         bb.error('Recipe name does not start with \'lxc-config-\'')
     config = bpn[11:]
     d.setVar('LXC_CONFIG_NAME', config)
-    src_uri = 'file://config.' + config + \
-              '.in file://system.conf.' + config + '.in'
+    src_uri = 'file://basic.in' \
+              + ' file://mount.in' \
+              + ' file://network.in' \
+              + ' file://environment.in' \
+              + ' file://misc.in' \
+              + ' file://system.conf.' + config + '.in'
     d.setVar('SRC_URI', src_uri)
 }
 
@@ -37,6 +41,12 @@ do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 
 do_install () {
+    rm -f ${WORKDIR}/config.${LXC_CONFIG_NAME}.in
+    files="basic.in mount.in network.in environment.in misc.in"
+    for f in ${files}; do
+        cat ${WORKDIR}/$f >> ${WORKDIR}/config.${LXC_CONFIG_NAME}.in
+    done
+
     install -m 0755 -d ${D}/var/lib/lxc/${LXC_CONFIG_NAME}
     for f in config.${LXC_CONFIG_NAME}.in system.conf.${LXC_CONFIG_NAME}.in; do
         sed -e 's|@DRM_LEASE_DEVICE@|${DRM_LEASE_DEVICE}|g' \
@@ -1,11 +1,4 @@
-lxc.rootfs.path = dir:/var/lib/machines/cluster-demo
-lxc.signal.halt = SIGRTMIN+3
-lxc.signal.reboot = SIGTERM
-lxc.uts.name = "cluster"
-lxc.tty.max = 1
-lxc.pty.max = 1
-lxc.cap.drop = sys_module mac_admin mac_override sys_time
-
+# lxc mount setting
 lxc.mount.entry = /var/lib/lxc/cluster-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
 
 lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
@@ -15,19 +8,8 @@ lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional
 lxc.cgroup.devices.allow = c 226:* rwm
 lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
 
-#lxc.mount.entry = /lxc/share lxc/share none bind,optional,create=dir
 lxc.mount.entry = /run/drm-lease-manager/@DRM_LEASE_DEVICE@ var/display/drm-lease-manager/@DRM_LEASE_DEVICE@ none bind,create=file
 
 lxc.cgroup.devices.allow = c 10:* rwm
 lxc.mount.entry = /dev/pvr_sync dev/pvr_sync none bind,optional,create=file
 
-lxc.net.0.type = empty
-
-lxc.environment = QT_QPA_PLATFORM=wayland
-lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
-#lxc.environment = QT_DEBUG_PLUGINS=1
-lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/
-lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/
-lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
-
-lxc.start.auto = @LXC_AUTO_START@
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in.orig b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in.orig
new file mode 100644 (file)
index 0000000..e69de29
index 127d09d..1f6ef54 100644 (file)
@@ -1,3 +1,4 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
 
 # If you want to change display assign in your board, please change this line in your recipe.
 DRM_LEASE_DEVICE ?= "${@bb.utils.contains("AGL_FEATURES", "kingfisher", "card0-HDMI-A-2", "card0-HDMI-A-1" ,d)}"
@@ -1,11 +1,4 @@
-lxc.rootfs.path = dir:/var/lib/machines/ivi-demo
-lxc.signal.halt = SIGRTMIN+3
-lxc.signal.reboot = SIGTERM
-lxc.uts.name = "ivi"
-lxc.tty.max = 1
-lxc.pty.max = 1
-lxc.cap.drop = sys_module mac_admin mac_override sys_time
-
+# lxc mount setting
 lxc.mount.entry = /var/lib/lxc/ivi-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
 
 lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
@@ -15,20 +8,8 @@ lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional
 lxc.cgroup.devices.allow = c 226:* rwm
 lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
 
-#lxc.mount.entry = /lxc/share lxc/share none bind,optional,create=dir
 lxc.mount.entry = /run/drm-lease-manager/@DRM_LEASE_DEVICE@ var/display/drm-lease-manager/@DRM_LEASE_DEVICE@ none bind,create=file
 
 lxc.cgroup.devices.allow = c 10:* rwm
 lxc.mount.entry = /dev/pvr_sync dev/pvr_sync none bind,optional,create=file
 
-lxc.net.0.type = phys
-lxc.net.0.link = eth0
-
-lxc.environment = QT_QPA_PLATFORM=wayland
-lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
-#lxc.environment = QT_DEBUG_PLUGINS=1
-lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/
-lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/
-lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
-
-lxc.start.auto = @LXC_AUTO_START@
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
new file mode 100644 (file)
index 0000000..5af82a2
--- /dev/null
@@ -0,0 +1,4 @@
+# lxc network setting
+lxc.net.0.type = phys
+lxc.net.0.link = eth0
+
index 5a504ff..013bdfb 100644 (file)
@@ -1,3 +1,4 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
 
 # If you want to change display assign in your board, please change this line in your recipe.
 DRM_LEASE_DEVICE ?= "${@bb.utils.contains("AGL_FEATURES", "kingfisher", "card0-HDMI-A-1", "card0-HDMI-A-1" ,d)}"
diff --git a/meta-agl-lxc/recipes-container/lxc-config/files/config.dummy.in b/meta-agl-lxc/recipes-container/lxc-config/files/config.dummy.in
deleted file mode 100644 (file)
index 8a1d647..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-lxc.rootfs.path = dir:/var/lib/machines/dummy
-lxc.signal.halt = SIGRTMIN+3
-lxc.signal.reboot = SIGTERM
-lxc.uts.name = "guest-dummy"
-lxc.tty.max = 1
-lxc.pty.max = 1
-lxc.cap.drop = sys_module mac_admin mac_override sys_time
-
-lxc.mount.entry = /var/lib/lxc/dummy/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
-
-lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
-lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0
-lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0
-
-#lxc.cgroup.devices.allow = c 226:* rwm
-#lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
-
-#lxc.mount.entry = /lxc/share lxc/share none bind,optional,create=dir
-
-lxc.net.0.type = empty
-
-lxc.start.auto = @LXC_AUTO_START@
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in
new file mode 100644 (file)
index 0000000..22a8f8d
--- /dev/null
@@ -0,0 +1,9 @@
+# lxc basic setting
+lxc.rootfs.path = dir:/var/lib/machines/cluster-demo
+lxc.signal.halt = SIGRTMIN+3
+lxc.signal.reboot = SIGTERM
+lxc.uts.name = "cluster"
+lxc.tty.max = 1
+lxc.pty.max = 1
+lxc.cap.drop = sys_module mac_admin mac_override sys_time
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in
new file mode 100644 (file)
index 0000000..374b9c0
--- /dev/null
@@ -0,0 +1,7 @@
+# lxc environment variable setting
+lxc.environment = QT_QPA_PLATFORM=wayland
+lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
+lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/
+lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/
+lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in
new file mode 100644 (file)
index 0000000..9b4f488
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in
new file mode 100644 (file)
index 0000000..c2bf91b
--- /dev/null
@@ -0,0 +1,14 @@
+# lxc mount setting
+lxc.mount.entry = /var/lib/lxc/cluster-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
+
+lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
+lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0
+lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0
+
+lxc.cgroup.devices.allow = c 226:* rwm
+lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
+
+lxc.mount.entry = /run/drm-lease-manager/@DRM_LEASE_DEVICE@ var/display/drm-lease-manager/@DRM_LEASE_DEVICE@ none bind,create=file
+
+lxc.mount.entry = /run/pipewire/icipc-0 var/icipc-0 none bind,optional,create=file
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/network.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-cluster-demo/network.in
new file mode 100644 (file)
index 0000000..573f479
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/basic.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/basic.in
new file mode 100644 (file)
index 0000000..603e902
--- /dev/null
@@ -0,0 +1,9 @@
+# lxc basic setting
+lxc.rootfs.path = dir:/var/lib/machines/dummy
+lxc.signal.halt = SIGRTMIN+3
+lxc.signal.reboot = SIGTERM
+lxc.uts.name = "guest-dummy"
+lxc.tty.max = 1
+lxc.pty.max = 1
+lxc.cap.drop = sys_module mac_admin mac_override sys_time
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/environment.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/environment.in
new file mode 100644 (file)
index 0000000..b7cde1c
--- /dev/null
@@ -0,0 +1,2 @@
+# lxc environment variable setting
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/misc.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/misc.in
new file mode 100644 (file)
index 0000000..9b4f488
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/mount.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/mount.in
new file mode 100644 (file)
index 0000000..686fdcb
--- /dev/null
@@ -0,0 +1,7 @@
+# lxc mount setting
+lxc.mount.entry = /var/lib/lxc/dummy/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
+
+lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
+lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0
+lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/network.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-dummy/network.in
new file mode 100644 (file)
index 0000000..573f479
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in
new file mode 100644 (file)
index 0000000..1fd9f34
--- /dev/null
@@ -0,0 +1,9 @@
+# lxc basic setting
+lxc.rootfs.path = dir:/var/lib/machines/ivi-demo
+lxc.signal.halt = SIGRTMIN+3
+lxc.signal.reboot = SIGTERM
+lxc.uts.name = "ivi"
+lxc.tty.max = 1
+lxc.pty.max = 1
+lxc.cap.drop = sys_module mac_admin mac_override sys_time
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in
new file mode 100644 (file)
index 0000000..374b9c0
--- /dev/null
@@ -0,0 +1,7 @@
+# lxc environment variable setting
+lxc.environment = QT_QPA_PLATFORM=wayland
+lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/
+lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/
+lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/
+lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in
new file mode 100644 (file)
index 0000000..9b4f488
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in
new file mode 100644 (file)
index 0000000..781cdb7
--- /dev/null
@@ -0,0 +1,12 @@
+# lxc mount setting
+lxc.mount.entry = /var/lib/lxc/ivi-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file
+
+lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed
+lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0
+lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0
+
+lxc.cgroup.devices.allow = c 226:* rwm
+lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
+
+lxc.mount.entry = /run/drm-lease-manager/@DRM_LEASE_DEVICE@ var/display/drm-lease-manager/@DRM_LEASE_DEVICE@ none bind,create=file
+
diff --git a/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/network.in b/meta-agl-lxc/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
new file mode 100644 (file)
index 0000000..573f479
--- /dev/null
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+