summaryrefslogtreecommitdiffstats
path: root/meta-agl-ic-container
diff options
context:
space:
mode:
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>2022-08-09 11:33:17 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2022-08-09 15:45:17 +0200
commit68fa652a418a5dfcee12386fd58939bfd626144d (patch)
tree35db36536266979f085683985f5f0e5249df8e1f /meta-agl-ic-container
parent17087e4083b2b6b070cec55c38288644689fa55c (diff)
Rename Instrument Cluster Container layerneedlefish_14.0.0needlefish/14.0.014.0.0
meta-agl-lxc is no longer reflecting the actual content and use of the layer. Rename it to 'meta-agl-ic-container' and the feature to 'agl-ic-container'. Also rename the main image to 'agl-cluster-demo-lxc-host' to match the pattern used by all other images e.g. agl-<ivi,cluster,telematics>-demo-* . But keep the names of the underlying images as-is. Bug-AGL: SPEC-4464 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Change-Id: I898c786ca884331b302a3be8e150379fcf5bdc9b
Diffstat (limited to 'meta-agl-ic-container')
-rw-r--r--meta-agl-ic-container/classes/guest-kernel-module.bbclass21
-rw-r--r--meta-agl-ic-container/classes/lxc-config.bbclass58
-rw-r--r--meta-agl-ic-container/conf/layer.conf17
-rw-r--r--meta-agl-ic-container/conf/multiconfig/agl-container-cluster.conf29
-rw-r--r--meta-agl-ic-container/conf/multiconfig/agl-container-guest.conf23
-rw-r--r--meta-agl-ic-container/conf/multiconfig/agl-container-ivi.conf32
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-connectivity/openssl/openssl_%.bbappend4
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in17
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend8
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in22
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in5
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend5
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/multi-display.inc3
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init.bbappend2
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init/drm-lease-manager.ini7
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bbappend22
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend1
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend7
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend6
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend6
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend9
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend8
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspm-if.bbappend6
-rw-r--r--meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.%.bbappend4
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in9
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in7
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in14
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/network.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/system.conf.cluster-demo.in8
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bb7
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/basic.in9
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/environment.in2
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/misc.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/mount.in7
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/network.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/system.conf.dummy.in2
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy_1.0.bb5
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in9
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in8
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in17
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/network.in3
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in9
-rw-r--r--meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bb7
-rw-r--r--meta-agl-ic-container/recipes-container/lxc/files/lxc-net.service15
-rw-r--r--meta-agl-ic-container/recipes-container/lxc/files/lxc.service19
-rw-r--r--meta-agl-ic-container/recipes-container/lxc/lxc_%.bbappend25
-rw-r--r--meta-agl-ic-container/recipes-core/base-files/base-files/fstab3
-rw-r--r--meta-agl-ic-container/recipes-core/base-files/base-files_%.bbappend2
-rw-r--r--meta-agl-ic-container/recipes-core/libclusterapi/libclusterapi_git.bb16
-rw-r--r--meta-agl-ic-container/recipes-core/libclusteripc/libclusteripc_git.bb14
-rw-r--r--meta-agl-ic-container/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend8
-rw-r--r--meta-agl-ic-container/recipes-core/systemd/systemd-netif-config/20-wired.network6
-rw-r--r--meta-agl-ic-container/recipes-core/systemd/systemd-netif-config_0.1.bb19
-rw-r--r--meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster5
-rw-r--r--meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster.service11
-rw-r--r--meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui_git.bb49
-rw-r--r--meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/agl.json70
-rw-r--r--meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/ilm-manager.service12
-rw-r--r--meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager_git.bb31
-rw-r--r--meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi7
-rw-r--r--meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi.service12
-rw-r--r--meta-agl-ic-container/recipes-demo/mominavi/mominavi_git.bb57
-rw-r--r--meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay8
-rw-r--r--meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay.service12
-rw-r--r--meta-agl-ic-container/recipes-demo/momiplay/momiplay_git.bb48
-rw-r--r--meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen8
-rw-r--r--meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen.service12
-rw-r--r--meta-agl-ic-container/recipes-demo/momiscreen/momiscreen_git.bb43
-rw-r--r--meta-agl-ic-container/recipes-extended/librefop/librefop_git.bb16
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0001-ivi-input-controller-update-to-weston-7-header-files.patch31
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-update-to-weston-7-header-files.patch33
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-id-agent-update-dependencies-to-build-on-weston-.patch31
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-id-agent-update-dependencies-to-build-on-weston-.patch28
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0005-Fix-buld-error-in-krikston.patch68
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0006-Drop-weston-6-support-and-adjust-weston-7-8-10.patch31
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension_git.bb33
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.cluster-guest.ini9
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.default.ini9
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.ivi-guest.ini14
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest_0.1.bb34
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf.bbappend2
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf/shell.cfg3
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.env4
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.service19
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest_0.1.bb46
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-init.bbappend40
-rw-r--r--meta-agl-ic-container/recipes-graphics/wayland/weston-init/drm-lease.conf.in4
-rw-r--r--meta-agl-ic-container/recipes-kernel/linux/linux-%.bbappend1
-rw-r--r--meta-agl-ic-container/recipes-kernel/linux/linux/lxc-net.cfg5
-rw-r--r--meta-agl-ic-container/recipes-kernel/linux/linux/lxc.cfg26
-rw-r--r--meta-agl-ic-container/recipes-kernel/linux/linux_lxc.inc10
-rw-r--r--meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb37
-rw-r--r--meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend8
-rw-r--r--meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch64
-rw-r--r--meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend5
-rw-r--r--meta-agl-ic-container/recipes-platform/images/agl-cluster-demo-lxc-host.bb31
-rw-r--r--meta-agl-ic-container/recipes-platform/images/guest-image-cluster-demo.bb12
-rw-r--r--meta-agl-ic-container/recipes-platform/images/guest-image-ivi-demo.bb30
-rw-r--r--meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb11
-rw-r--r--meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb62
-rw-r--r--meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-ic-core.bb17
-rw-r--r--meta-agl-ic-container/recipes-qt5/qt5/qtbase_git.bbappend1
-rw-r--r--meta-agl-ic-container/recipes-qt5/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch47
-rw-r--r--meta-agl-ic-container/recipes-qt5/qt5/qtlocation_git.bbappend7
106 files changed, 1801 insertions, 0 deletions
diff --git a/meta-agl-ic-container/classes/guest-kernel-module.bbclass b/meta-agl-ic-container/classes/guest-kernel-module.bbclass
new file mode 100644
index 00000000..6c8da4a2
--- /dev/null
+++ b/meta-agl-ic-container/classes/guest-kernel-module.bbclass
@@ -0,0 +1,21 @@
+DEPENDS:remove:aglcontainerguest = "${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-dummy", "linux-renesas", "", d)}"
+
+do_configure[depends] = "${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-dummy", "", "make-mod-scripts:do_compile", d)}"
+
+python __anonymous () {
+ # Need to use inline python here as, contrary to the BitBake docs,
+ # having noexec set at all disables the task, so using
+ # oe.utils.conditional to set it to "0" still ends up with the task
+ # disabled.
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") == "linux-dummy":
+ d.setVarFlag("do_compile", "noexec", "1")
+}
+
+do_install:aglcontainerguest() {
+ # Create destination directory
+ install -d ${D}/${includedir}/
+}
+
+# Guest doesn't build the module, so go ahead and quiet warnings about
+# double '/' in base recipe definition
+FILES:${PN}:aglcontainerguest = ""
diff --git a/meta-agl-ic-container/classes/lxc-config.bbclass b/meta-agl-ic-container/classes/lxc-config.bbclass
new file mode 100644
index 00000000..921aaf92
--- /dev/null
+++ b/meta-agl-ic-container/classes/lxc-config.bbclass
@@ -0,0 +1,58 @@
+# Helper class for installing LXC guest configuration.
+# Assumes that:
+# - Recipe name is 'lxc-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
+# As well:
+# - The .in files can optionally use the @LXC_AUTO_START@ parameter
+# to pick up the value of the LXC_AUTO_START variable for use in
+# defining lxc.start.auto. The default value is "0", so recipes
+# need to assign the variable to "1" to have the associated
+# container start automatically.
+
+python __anonymous() {
+ bpn = d.getVar('BPN')
+ if not bpn.startswith('lxc-config-'):
+ bb.error('Recipe name does not start with \'lxc-config-\'')
+ config = bpn[11:]
+ d.setVar('LXC_CONFIG_NAME', config)
+ 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)
+}
+
+S = "${WORKDIR}"
+
+inherit allarch
+
+DRM_LEASE_DEVICE ??= "card0-HDMI-A-1"
+
+DRM_LEASE_DEVICE:qemuall ?= "card0-Virtual-1"
+
+LXC_AUTO_START ??= "0"
+
+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' \
+ -e 's|@LXC_AUTO_START@|${LXC_AUTO_START}|g' \
+ ${WORKDIR}/$f > ${D}${localstatedir}/lib/lxc/${LXC_CONFIG_NAME}/${f%.${LXC_CONFIG_NAME}.in}
+ done
+}
+
+FILES:${PN} = "${localstatedir}/lib/lxc/"
diff --git a/meta-agl-ic-container/conf/layer.conf b/meta-agl-ic-container/conf/layer.conf
new file mode 100644
index 00000000..acf7dbbe
--- /dev/null
+++ b/meta-agl-ic-container/conf/layer.conf
@@ -0,0 +1,17 @@
+# 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 += "aglcontainermc"
+BBFILE_PATTERN_aglcontainermc = "^${LAYERDIR}/"
+BBFILE_PRIORITY_aglcontainermc = "100"
+
+BBFILES_DYNAMIC += " \
+ rcar-gen3:${LAYERDIR}/dynamic-layers/meta-rcar-gen3/*/*/*.bb \
+ rcar-gen3:${LAYERDIR}/dynamic-layers/meta-rcar-gen3/*/*/*.bbappend \
+"
+
+LAYERSERIES_COMPAT_aglcontainermc = "kirkstone"
diff --git a/meta-agl-ic-container/conf/multiconfig/agl-container-cluster.conf b/meta-agl-ic-container/conf/multiconfig/agl-container-cluster.conf
new file mode 100644
index 00000000..29272c78
--- /dev/null
+++ b/meta-agl-ic-container/conf/multiconfig/agl-container-cluster.conf
@@ -0,0 +1,29 @@
+# The aglcontainerguest is a common keyword for agl container.
+OVERRIDES:append = ":aglcontainerguest"
+
+# The aglcontainercluster is specific keyword for cluster guest.
+OVERRIDES:append = ":aglcontainercluster"
+
+TMPDIR = "${TOPDIR}/tmp-${BB_CURRENT_MC}"
+
+# Can be blank as container image type results in a .tar.bz2
+AGL_DEFAULT_IMAGE_FSTYPES = ""
+AGL_EXTRA_IMAGE_FSTYPES = ""
+
+IMAGE_FSTYPES:aglcontainerguest = "container"
+
+IMAGE_LINGUAS:append:aglcontainercluster = " en-us"
+
+PREFERRED_PROVIDER_virtual/kernel:aglcontainerguest = "linux-dummy"
+KERNEL_DEVICETREE:aglcontainercluster = ""
+
+# Disable serial consoles
+SERIAL_CONSOLES:aglcontainerguest = ""
+
+# Remove unneeded firmware packages
+EXTRA_IMAGEDEPENDS:remove:aglcontainerguest = "arm-trusted-firmware optee-os u-boot"
+
+# We assume rngd is running on the host, so unnecessary in container
+VIRTUAL-RUNTIME_rngd = ""
+
+hostname:append:aglcontainercluster = "-cluster"
diff --git a/meta-agl-ic-container/conf/multiconfig/agl-container-guest.conf b/meta-agl-ic-container/conf/multiconfig/agl-container-guest.conf
new file mode 100644
index 00000000..db25b3b7
--- /dev/null
+++ b/meta-agl-ic-container/conf/multiconfig/agl-container-guest.conf
@@ -0,0 +1,23 @@
+OVERRIDES:append = ":aglcontainerguest"
+
+TMPDIR = "${TOPDIR}/tmp-${BB_CURRENT_MC}"
+
+# Can be blank as container image type results in a .tar.bz2
+AGL_DEFAULT_IMAGE_FSTYPES:aglcontainerguest = ""
+AGL_EXTRA_IMAGE_FSTYPES:aglcontainerguest = ""
+
+IMAGE_FSTYPES:aglcontainerguest = "container"
+
+IMAGE_LINGUAS:append:aglcontainerguest = " en-us"
+
+PREFERRED_PROVIDER_virtual/kernel:aglcontainerguest = "linux-dummy"
+KERNEL_DEVICETREE:aglcontainerguest = ""
+
+# Disable serial consoles
+SERIAL_CONSOLES:aglcontainerguest = ""
+
+# Remove unneeded firmware packages
+EXTRA_IMAGEDEPENDS:remove:aglcontainerguest = "arm-trusted-firmware optee-os u-boot"
+
+# We assume rngd is running on the host, so unnecessary in container
+VIRTUAL-RUNTIME_rngd = ""
diff --git a/meta-agl-ic-container/conf/multiconfig/agl-container-ivi.conf b/meta-agl-ic-container/conf/multiconfig/agl-container-ivi.conf
new file mode 100644
index 00000000..4553e7a2
--- /dev/null
+++ b/meta-agl-ic-container/conf/multiconfig/agl-container-ivi.conf
@@ -0,0 +1,32 @@
+# The aglcontainerguest is a common keyword for agl container.
+OVERRIDES:append = ":aglcontainerguest"
+
+# The aglcontainerivi is specific keyword for ivi guest.
+OVERRIDES:append = ":aglcontainerivi"
+
+TMPDIR = "${TOPDIR}/tmp-${BB_CURRENT_MC}"
+
+# Can be blank as container image type results in a .tar.bz2
+AGL_DEFAULT_IMAGE_FSTYPES:aglcontainerivi = ""
+AGL_EXTRA_IMAGE_FSTYPES:aglcontainerivi = ""
+
+IMAGE_FSTYPES:aglcontainerguest = "container"
+
+IMAGE_LINGUAS:append:aglcontainerivi = " en-us"
+
+PREFERRED_PROVIDER_virtual/kernel:aglcontainerguest = "linux-dummy"
+KERNEL_DEVICETREE:aglcontainerivi = ""
+
+# Disable serial consoles
+SERIAL_CONSOLES:aglcontainerguest = ""
+
+# Remove unneeded firmware packages
+EXTRA_IMAGEDEPENDS:remove:aglcontainerguest = "arm-trusted-firmware optee-os u-boot"
+
+# We assume rngd is running on the host, so unnecessary in container
+VIRTUAL-RUNTIME_rngd = ""
+
+# network manager to use
+VIRTUAL-RUNTIME_net_manager = "systemd"
+
+hostname:append:aglcontainerivi = "-ivi"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-connectivity/openssl/openssl_%.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-connectivity/openssl/openssl_%.bbappend
new file mode 100644
index 00000000..6060e6b1
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-connectivity/openssl/openssl_%.bbappend
@@ -0,0 +1,4 @@
+# Add a hook to disable depending on cryptodev-module for containers
+CRYPTODEV_RDEPENDS = "cryptodev-module"
+CRYPTODEV_RDEPENDS:aglcontainerguest = ""
+PACKAGECONFIG[cryptodev-linux] = "enable-devcryptoeng,disable-devcryptoeng,cryptodev-linux,,${CRYPTODEV_RDEPENDS}"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in
new file mode 100644
index 00000000..523b5272
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in
@@ -0,0 +1,17 @@
+# 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/lease-cluster var/display/drm-lease-manager/lease 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.mount.entry = /run/pipewire/icipc-0 var/icipc-0 none bind,optional,create=file
+
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend
new file mode 100644
index 00000000..92888ba8
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bbappend
@@ -0,0 +1,8 @@
+require multi-display.inc
+
+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("HAS_MULTI_DISPLAY", "1", "card0-HDMI-A-2", "card0-HDMI-A-1" ,d)}"
+
+LXC_AUTO_START ?= "1"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in
new file mode 100644
index 00000000..2fbf4193
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in
@@ -0,0 +1,22 @@
+# 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.mount.entry = tmpfs run tmpfs defaults
+lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir
+
+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/lease-ivi var/display/drm-lease-manager/lease none bind,create=file
+
+lxc.cgroup.devices.allow = c 13:* rwm
+lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
+
+lxc.cgroup.devices.allow = c 10:* rwm
+lxc.mount.entry = /dev/pvr_sync dev/pvr_sync none bind,optional,create=file
+
+lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file
+
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
new file mode 100644
index 00000000..6545b1ad
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
@@ -0,0 +1,5 @@
+# lxc network setting
+lxc.net.0.type = veth
+lxc.net.0.link = lxcbr0
+lxc.net.0.flags = up
+lxc.net.0.hwaddr = 00:16:3e:69:87:a4
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend
new file mode 100644
index 00000000..f58fe2cb
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bbappend
@@ -0,0 +1,5 @@
+require multi-display.inc
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+LXC_AUTO_START ?= "${@bb.utils.contains("HAS_MULTI_DISPLAY", "1", "1", "0" ,d)}"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/multi-display.inc b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/multi-display.inc
new file mode 100644
index 00000000..96a3e29e
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-container/lxc-config/multi-display.inc
@@ -0,0 +1,3 @@
+HAS_MULTI_DISPLAY ?= ""
+HAS_MULTI_DISPLAY += "${@bb.utils.contains("AGL_FEATURES", "kingfisher", "1", "" ,d)}"
+HAS_MULTI_DISPLAY += "${@bb.utils.contains("AGL_FEATURES", "agl-refhw-h3", "1", "" ,d)}"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init.bbappend
new file mode 100644
index 00000000..371f6539
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+SRC_URI = "file://drm-lease-manager.ini"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init/drm-lease-manager.ini b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init/drm-lease-manager.ini
new file mode 100644
index 00000000..45ecfc27
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/drm-lease-manager/drm-lease-manager-init/drm-lease-manager.ini
@@ -0,0 +1,7 @@
+[[lease]]
+name="lease-ivi"
+connectors=["HDMI-A-1"]
+
+[[lease]]
+name="lease-cluster"
+connectors=["HDMI-A-2"]
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bbappend
new file mode 100644
index 00000000..462dd5fc
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-graphics/gles-module/gles-user-module.bbappend
@@ -0,0 +1,22 @@
+RDEPENDS:${PN}:remove:aglcontainerguest = "kernel-module-gles"
+
+PACKAGES:prepend = "\
+ ${PN}-firmware \
+"
+
+FILES:${PN} = " \
+ ${libdir}/* \
+ ${sysconfdir}/* \
+ ${RENESAS_DATADIR}/bin/dlcsrv_REL \
+"
+SYSTEMD_SERVICE:${PN} = ""
+
+FILES:${PN}-firmware = " \
+ ${systemd_system_unitdir}/* \
+ ${sysconfdir}/udev/* \
+ ${nonarch_base_libdir}/firmware/* \
+ ${exec_prefix}/bin/pvrinit \
+"
+SYSTEMD_SERVICE:${PN}-firmware = "rc.pvr.service"
+SYSTEMD_PACKAGES = "${PN}-firmware"
+SYSTEMD_AUTO_ENABLE = "enable"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend
new file mode 100644
index 00000000..d0a6a502
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend
@@ -0,0 +1 @@
+RDEPENDS:${PN}:append = " gles-user-module-firmware"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend
new file mode 100644
index 00000000..a9d09a77
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngr.bbappend
@@ -0,0 +1,7 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header file to ${includedir}
+ install -m 644 ${S}/${MMNGR_DRV_DIR}/include/mmngr_public_cmn.h ${D}/${includedir}/
+ install -m 644 ${S}/${MMNGR_DRV_DIR}/include/mmngr_private_cmn.h ${D}/${includedir}/
+}
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend
new file mode 100644
index 00000000..2323de93
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-mmngr/kernel-module-mmngrbuf.bbappend
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header files to ${includedir}
+ install -m 644 ${S}/${MMNGRBUF_DRV_DIR}/include/mmngr_buf_private_cmn.h ${D}/${includedir}/
+}
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend
new file mode 100644
index 00000000..7c221585
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-uvcs/kernel-module-uvcs-drv.bbappend
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header file
+ install -m 644 ${S}/include/uvcs_ioctl.h ${D}/${includedir}/
+}
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend
new file mode 100644
index 00000000..057613fb
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vsp2driver/kernel-module-vsp2driver.bbappend
@@ -0,0 +1,9 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header file to ${includedir}
+ install -m 644 ${S}/vsp2driver/linux/vsp2.h ${D}/${includedir}/
+}
+
+PACKAGES:append:aglcontainerguest = " ${PN}-dev"
+FILES:${PN}-dev:aglcontainerguest += "${includedir}"
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend
new file mode 100644
index 00000000..eb478bea
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspm/kernel-module-vspm.bbappend
@@ -0,0 +1,8 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header files
+ install -m 644 ${S}/${VSPM_DRV_DIR}/include/vspm_cmn.h ${D}/${includedir}/
+ install -m 644 ${S}/${VSPM_DRV_DIR}/include/vsp_drv.h ${D}/${includedir}/
+ install -m 644 ${S}/${VSPM_DRV_DIR}/include/fdp_drv.h ${D}/${includedir}/
+}
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspm-if.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspm-if.bbappend
new file mode 100644
index 00000000..00078b9c
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-vspmif/kernel-module-vspm-if.bbappend
@@ -0,0 +1,6 @@
+inherit guest-kernel-module
+
+do_install:aglcontainerguest:append() {
+ # Install shared header file
+ install -m 644 ${S}/${VSPMIF_DRV_DIR}/include/vspm_if.h ${D}/${includedir}/
+}
diff --git a/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.%.bbappend b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.%.bbappend
new file mode 100644
index 00000000..204b6902
--- /dev/null
+++ b/meta-agl-ic-container/dynamic-layers/meta-rcar-gen3/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.%.bbappend
@@ -0,0 +1,4 @@
+DEPENDS:remove:aglcontainerguest = "linux-renesas"
+
+EXTRA_OECONF:remove:aglcontainerguest = "--enable-kms"
+PACKAGECONFIG:remove:aglcontainerguest = "kms"
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in
new file mode 100644
index 00000000..22a8f8de
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/basic.in
@@ -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-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in
new file mode 100644
index 00000000..374b9c03
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/environment.in
@@ -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-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in
new file mode 100644
index 00000000..9b4f4883
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/misc.in
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in
new file mode 100644
index 00000000..a87322ba
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/mount.in
@@ -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/lease-cluster var/display/drm-lease-manager/lease none bind,create=file
+
+lxc.mount.entry = /run/pipewire/icipc-0 var/icipc-0 none bind,optional,create=file
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/network.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/network.in
new file mode 100644
index 00000000..573f4796
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/network.in
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/system.conf.cluster-demo.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/system.conf.cluster-demo.in
new file mode 100644
index 00000000..29a49b6c
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo/system.conf.cluster-demo.in
@@ -0,0 +1,8 @@
+[Manager]
+DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
+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/
+DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/
+DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bb b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bb
new file mode 100644
index 00000000..a30505e9
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-cluster-demo_1.0.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "AGL cluster demo container LXC config"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit lxc-config
+
+LXC_AUTO_START ??= "1"
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/basic.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/basic.in
new file mode 100644
index 00000000..603e902e
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/basic.in
@@ -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-ic-container/recipes-container/lxc-config/lxc-config-dummy/environment.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/environment.in
new file mode 100644
index 00000000..b7cde1c8
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/environment.in
@@ -0,0 +1,2 @@
+# lxc environment variable setting
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/misc.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/misc.in
new file mode 100644
index 00000000..9b4f4883
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/misc.in
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/mount.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/mount.in
new file mode 100644
index 00000000..686fdcb9
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/mount.in
@@ -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-ic-container/recipes-container/lxc-config/lxc-config-dummy/network.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/network.in
new file mode 100644
index 00000000..573f4796
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/network.in
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/system.conf.dummy.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/system.conf.dummy.in
new file mode 100644
index 00000000..f496c589
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy/system.conf.dummy.in
@@ -0,0 +1,2 @@
+[Manager]
+#DefaultEnvironment =
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy_1.0.bb b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy_1.0.bb
new file mode 100644
index 00000000..41246391
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-dummy_1.0.bb
@@ -0,0 +1,5 @@
+DESCRIPTION = "AGL dummy container LXC config"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit lxc-config
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in
new file mode 100644
index 00000000..1fd9f347
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/basic.in
@@ -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-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in
new file mode 100644
index 00000000..632252d5
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/environment.in
@@ -0,0 +1,8 @@
+# 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
+lxc.environment = PIPEWIRE_RUNTIME_DIR=/var
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in
new file mode 100644
index 00000000..9b4f4883
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/misc.in
@@ -0,0 +1,3 @@
+# lxc misc setting
+lxc.start.auto = @LXC_AUTO_START@
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in
new file mode 100644
index 00000000..262f09bd
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/mount.in
@@ -0,0 +1,17 @@
+# 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.mount.entry = tmpfs run tmpfs defaults
+lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir
+
+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/lease-ivi var/display/drm-lease-manager/lease none bind,create=file
+
+lxc.cgroup.devices.allow = c 13:* rwm
+lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
+lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/network.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
new file mode 100644
index 00000000..573f4796
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/network.in
@@ -0,0 +1,3 @@
+# lxc network setting
+lxc.net.0.type = empty
+
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in
new file mode 100644
index 00000000..de7c6cdd
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo/system.conf.ivi-demo.in
@@ -0,0 +1,9 @@
+[Manager]
+DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager
+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/
+DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/
+DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell
+DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var
diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bb b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bb
new file mode 100644
index 00000000..0bc7e11c
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-ivi-demo_1.0.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "AGL simple IVI demo container LXC config"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+inherit lxc-config
+
+LXC_AUTO_START ??= "0"
diff --git a/meta-agl-ic-container/recipes-container/lxc/files/lxc-net.service b/meta-agl-ic-container/recipes-container/lxc/files/lxc-net.service
new file mode 100644
index 00000000..1b6e8451
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc/files/lxc-net.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=LXC network bridge setup
+After=network-online.target systemd-resolved.service
+Before=lxc.service
+Documentation=man:lxc
+ConditionVirtualization=!lxc
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@LIBEXECDIR@/lxc/lxc-net start
+ExecStop=@LIBEXECDIR@/lxc/lxc-net stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-container/lxc/files/lxc.service b/meta-agl-ic-container/recipes-container/lxc/files/lxc.service
new file mode 100644
index 00000000..acf8da39
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc/files/lxc.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=LXC Container Initialization and Autoboot Code
+After=network.target lxc-net.service remote-fs.target drm-lease-manager.service
+Wants=lxc-net.service
+Documentation=man:lxc-autostart man:lxc
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStartPre=@LIBEXECDIR@/lxc/lxc-apparmor-load
+ExecStart=@LIBEXECDIR@/lxc/lxc-containers start
+ExecStop=@LIBEXECDIR@/lxc/lxc-containers stop
+ExecReload=@LIBEXECDIR@/lxc/lxc-apparmor-load
+# Environment=BOOTUP=serial
+# Environment=CONSOLETYPE=serial
+Delegate=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-container/lxc/lxc_%.bbappend b/meta-agl-ic-container/recipes-container/lxc/lxc_%.bbappend
new file mode 100644
index 00000000..75ab98c0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-container/lxc/lxc_%.bbappend
@@ -0,0 +1,25 @@
+PACKAGECONFIG:remove = "templates"
+
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+SRC_URI += " \
+ file://lxc.service \
+ file://lxc-net.service \
+ "
+
+do_install:append () {
+ for service in lxc.service lxc-net.service; do
+ install -D -m 0644 ${WORKDIR}/$service ${D}${systemd_system_unitdir}/$service
+ sed -i -e 's,@LIBEXECDIR@,${libexecdir},g' ${D}${systemd_system_unitdir}/$service
+ done
+}
+
+# NOTE:
+# This needs to be replaced with a rework of the upstream packaging
+# to do a proper split of core from the template support.
+RDEPENDS:${PN} = ""
+
+
+
diff --git a/meta-agl-ic-container/recipes-core/base-files/base-files/fstab b/meta-agl-ic-container/recipes-core/base-files/base-files/fstab
new file mode 100644
index 00000000..a27f8cd6
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/base-files/base-files/fstab
@@ -0,0 +1,3 @@
+# Reference fstab for container guest
+devpts /dev/pts devpts mode=0620,gid=5 0 0
+tmpfs /var/volatile tmpfs defaults 0 0
diff --git a/meta-agl-ic-container/recipes-core/base-files/base-files_%.bbappend b/meta-agl-ic-container/recipes-core/base-files/base-files_%.bbappend
new file mode 100644
index 00000000..2df9447b
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/base-files/base-files_%.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS:prepend:aglcontainerguest := "${THISDIR}/base-files:"
+
diff --git a/meta-agl-ic-container/recipes-core/libclusterapi/libclusterapi_git.bb b/meta-agl-ic-container/recipes-core/libclusterapi/libclusterapi_git.bb
new file mode 100644
index 00000000..af974e49
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/libclusterapi/libclusterapi_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "AGL Instrument Cluster API library"
+DESCRIPTION = "AGL Instrument Cluster API is defined common function API for Instrument Cluster.\
+ This library was contributed by four EG member company."
+HOMEPAGE = "https://confluence.automotivelinux.org/display/IC"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+DEPENDS = "libclusteripc"
+
+SRC_URI = "git://git.automotivelinux.org/src/libcluster-api;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "3ef96b9efb7c80f3f7a731379dcbfa9a21e2ceed"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
diff --git a/meta-agl-ic-container/recipes-core/libclusteripc/libclusteripc_git.bb b/meta-agl-ic-container/recipes-core/libclusteripc/libclusteripc_git.bb
new file mode 100644
index 00000000..c55906f8
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/libclusteripc/libclusteripc_git.bb
@@ -0,0 +1,14 @@
+SUMMARY = "AGL Instrument Cluster IPC library"
+DESCRIPTION = "AGL Instrument Cluster IPC is IPC framework for the AGL Instrument Cluster API.\
+ This library was contributed by four EG member company."
+HOMEPAGE = "https://confluence.automotivelinux.org/display/IC"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+SRC_URI = "git://git.automotivelinux.org/src/libcluster-ipc;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "464ed5a672700436a1cb89d41afe8c088d2f3c5b"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
diff --git a/meta-agl-ic-container/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/meta-agl-ic-container/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend
new file mode 100644
index 00000000..13f85b59
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend
@@ -0,0 +1,8 @@
+# Disable LTTng dependencies when building for container guest to avoid
+# lttng-modules being pulled in as a dependency.
+LTTNGUST:aglcontainerguest = ""
+LTTNGTOOLS:aglcontainerguest = ""
+LTTNGMODULES:aglcontainerguest = ""
+
+# Similarly, disable perf since it builds out of the kernel source tree.
+PERF:aglcontainerguest = ""
diff --git a/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config/20-wired.network b/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config/20-wired.network
new file mode 100644
index 00000000..abd371bd
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config/20-wired.network
@@ -0,0 +1,6 @@
+[Match]
+Name=eth0
+
+[Network]
+DHCP=ipv4
+
diff --git a/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config_0.1.bb b/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config_0.1.bb
new file mode 100644
index 00000000..0714f62b
--- /dev/null
+++ b/meta-agl-ic-container/recipes-core/systemd/systemd-netif-config_0.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Systemd network interface configuration"
+DESCRIPTION = "Systemd network interface configuration \
+ "
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = " \
+ file://20-wired.network \
+ "
+
+do_install() {
+ install -D -m0644 ${WORKDIR}/20-wired.network ${D}${sysconfdir}/systemd/network/20-wired.network
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+FILES:${PN} = "\
+ ${sysconfdir}/systemd/network/* \
+"
diff --git a/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster
new file mode 100644
index 00000000..ff5166d0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster
@@ -0,0 +1,5 @@
+XDG_RUNTIME_DIR=/run/user/0
+QT_QPA_PLATFORM=wayland-egl
+QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+QT_QPA_FONTDIR=/usr/share/fonts/truetype
+WAYLAND_DISPLAY=wayland-1
diff --git a/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster.service b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster.service
new file mode 100644
index 00000000..a82c4127
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui/cluster.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=AGL Cluster Reference GUI
+After=multi-user.target weston.service
+Requires=multi-user.target weston.service
+
+[Service]
+EnvironmentFile=/etc/default/cluster
+ExecStart=/opt/apps/cluster
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui_git.bb b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui_git.bb
new file mode 100644
index 00000000..4327c8de
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/cluster-refgui/cluster-refgui_git.bb
@@ -0,0 +1,49 @@
+DESCRIPTION = "AGL Cluster Reference GUI"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5335066555b14d832335aa4660d6c376"
+
+DEPENDS = " \
+ qttools-native \
+ qtmultimedia \
+"
+
+BRANCH = "master"
+SRC_URI = "git://git.automotivelinux.org/src/cluster-refgui;protocol=https;branch=${BRANCH} \
+ file://cluster.service \
+ file://cluster \
+"
+SRCREV = "a16c6201be94a57eb8151a91699084d99694877c"
+
+S = "${WORKDIR}/git"
+
+inherit cmake cmake_qt5 systemd
+
+# NOTE:
+# The app currently assumes the mp4 video file is in the same
+# directory, so changing this to ${bindir} to better match FHS
+# requires code changes.
+APP_DIR = "/opt/apps"
+EXTRA_OECMAKE = "-DAPPS_INST_DIR=${APP_DIR}"
+
+SYSTEMD_SERVICE:${PN} = "cluster.service"
+
+do_install:append() {
+ install -d ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/cluster.service ${D}${systemd_unitdir}/system/
+
+ install -m 0755 -d ${D}${sysconfdir}/default/
+ install -m 0755 ${WORKDIR}/cluster ${D}${sysconfdir}/default/
+}
+
+FILES:${PN} += "${APP_DIR}/"
+
+RDEPENDS:${PN} = " \
+ qtbase \
+ qtdeclarative \
+ qt3d \
+ qtgraphicaleffects \
+ qtmultimedia \
+ qtquickcontrols \
+ qtquickcontrols2 \
+ qtwayland \
+"
diff --git a/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/agl.json b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/agl.json
new file mode 100644
index 00000000..80028c50
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/agl.json
@@ -0,0 +1,70 @@
+{
+ "screen": [
+ {
+ "name": "ivi-screen",
+ "dispname": "HDMI-A-1"
+ }
+ ],
+ "layer": [
+ {
+ "name": "ivi-layer",
+ "id": 2000,
+ "width": 1920,
+ "height": 1080,
+ "x": 0,
+ "y": 0,
+ "z": 10,
+ "attach": "ivi-screen"
+ }
+ ],
+ "surface": [
+ {
+ "name": "momiscreen",
+ "id": 2000,
+ "x": 0,
+ "y": 988,
+ "z": 10,
+ "attach": "ivi-layer"
+ },
+ {
+ "name": "mominavi",
+ "id": 2010,
+ "x": 0,
+ "y": 0,
+ "z": 100,
+ "attach": "ivi-layer"
+ },
+ {
+ "name": "momiplay",
+ "id": 2011,
+ "x": 0,
+ "y": 0,
+ "z": 110,
+ "attach": "ivi-layer"
+ },
+ {
+ "name": "momiradio",
+ "id": 2012,
+ "x": 0,
+ "y": 0,
+ "z": 120,
+ "attach": "ivi-layer"
+ },
+ {
+ "name": "momisetting",
+ "id": 2013,
+ "x": 0,
+ "y": 0,
+ "z": 130,
+ "attach": "ivi-layer"
+ },
+ {
+ "name": "xdg-test",
+ "id": 9801,
+ "x": 0,
+ "y": 0,
+ "z": 300,
+ "attach": "ivi-layer"
+ }
+ ]
+}
diff --git a/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/ilm-manager.service b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/ilm-manager.service
new file mode 100644
index 00000000..b91b65f1
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager/ilm-manager.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Tiny Window Manager
+After=weston.service
+Wants=weston.service
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/default/weston
+ExecStart=/usr/bin/ilmmanager
+
+[Install]
+WantedBy=weston.service
diff --git a/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager_git.bb b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager_git.bb
new file mode 100644
index 00000000..2f976b39
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/ilm-manager/ilm-manager_git.bb
@@ -0,0 +1,31 @@
+SUMMARY = "Tiny window manager for wayland-ivi-extension"
+DESCRIPTION = "Tiny window manager for wayland-ivi-extension"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+DEPENDS = "jsoncpp wayland-ivi-extension"
+
+PV = "0.1.0+rev${SRCPV}"
+
+SRCREV = "e3a33d47195e4656f7117753d27a0f2d6b21aab9"
+SRC_URI = " \
+ git://github.com/AGLExport/ilm-manager.git;branch=master;protocol=https \
+ file://agl.json \
+ file://ilm-manager.service \
+ "
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig systemd
+
+do_install:append() {
+ #install scripts
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/agl.json ${D}${sysconfdir}
+
+ install -d ${D}/${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/ilm-manager.service ${D}${systemd_system_unitdir}
+}
+
+FILES:${PN} += " ${systemd_system_unitdir} ${sysconfdir} "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "ilm-manager.service"
diff --git a/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi b/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi
new file mode 100644
index 00000000..bd017dc9
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi
@@ -0,0 +1,7 @@
+XDG_RUNTIME_DIR=/run/user/0
+QT_QPA_PLATFORM=wayland-egl
+QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+QT_QPA_FONTDIR=/usr/share/fonts/truetype
+QT_IVI_SURFACE_ID=2010
+QT_WAYLAND_SHELL_INTEGRATION=ivi-shell
+WAYLAND_DISPLAY=wayland-1
diff --git a/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi.service b/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi.service
new file mode 100644
index 00000000..b49609e0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/mominavi/mominavi/mominavi.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=mominavi
+After=multi-user.target weston.service network-online.target
+Requires=multi-user.target weston.service network-online.target
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/default/mominavi
+ExecStart=/usr/bin/mominavi
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-demo/mominavi/mominavi_git.bb b/meta-agl-ic-container/recipes-demo/mominavi/mominavi_git.bb
new file mode 100644
index 00000000..124252b5
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/mominavi/mominavi_git.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Momiyama navigation example based on mapbox."
+DESCRIPTION = "The mominavi is a navigation example based on mapbox. It's based on aglqtnavigation. \
+ The mominavi is not require agl-appfw."
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+ qtbase \
+ qtquickcontrols2 \
+ qtlocation \
+ qtgraphicaleffects \
+ qtsvg \
+ qtwebsockets \
+ "
+
+PV = "0.2.0"
+
+SRC_URI = "git://github.com/AGLExport/mominavi.git;protocol=https;branch=master \
+ file://mominavi.service \
+ file://mominavi \
+ "
+SRCREV = "553776e75da02b27224748756da55d38b6c7241f"
+
+S = "${WORKDIR}/git"
+
+inherit qmake5 systemd
+
+MOMIMAP_MAPBOX_ACCESS_TOKEN ??= "YOU_NEED_TO_SET_IT_IN_LOCAL_CONF"
+QT_INSTALL_PREFIX = "/usr"
+
+do_configure:prepend() {
+ if [ "${MOMIMAP_MAPBOX_ACCESS_TOKEN}" = "YOU_NEED_TO_SET_IT_IN_LOCAL_CONF" ]; then
+ bbwarn "WARNING: You should set MapBox development key to MOMIMAP_MAPBOX_ACCESS_TOKEN variable in local.conf."
+ fi
+}
+do_install:append() {
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/mominavi.service ${D}/${systemd_unitdir}/system
+
+ install -m 0755 -d ${D}${sysconfdir}/default/
+ install -m 0755 ${WORKDIR}/mominavi ${D}${sysconfdir}/default/
+
+ echo 'MOMIMAP_MAPBOX_ACCESS_TOKEN=${MOMIMAP_MAPBOX_ACCESS_TOKEN}' >> ${D}${sysconfdir}/default/mominavi
+}
+
+FILES:${PN} += " \
+ ${systemd_unitdir} \
+ ${sysconfdir}/*/* \
+ "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "mominavi.service"
+
+RDEPENDS:${PN} = " \
+ qtsvg \
+ qtwebsockets \
+ qtlocation \
+ "
diff --git a/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay b/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay
new file mode 100644
index 00000000..be5a97a1
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay
@@ -0,0 +1,8 @@
+XDG_RUNTIME_DIR=/run/user/0
+QT_QPA_PLATFORM=wayland-egl
+QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+QT_QPA_FONTDIR=/usr/share/fonts/truetype
+QT_IVI_SURFACE_ID=2011
+QT_WAYLAND_SHELL_INTEGRATION=ivi-shell
+WAYLAND_DISPLAY=wayland-1
+HOME=/home/root
diff --git a/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay.service b/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay.service
new file mode 100644
index 00000000..ef974023
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiplay/momiplay/momiplay.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=momiplayer
+After=multi-user.target weston.service
+Requires=multi-user.target weston.service
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/default/momiplay
+ExecStart=/usr/bin/momiplay
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-demo/momiplay/momiplay_git.bb b/meta-agl-ic-container/recipes-demo/momiplay/momiplay_git.bb
new file mode 100644
index 00000000..02fc6f66
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiplay/momiplay_git.bb
@@ -0,0 +1,48 @@
+SUMMARY = "Momiyama mediaplayer example based on AGL sample app. at CC"
+DESCRIPTION = "The momiplay is a mediaplayer example based on AGL sample app. \
+ The momiplay is not require agl-appfw."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://main.cpp;beginline=1;endline=17;md5=f4ad6901289f57f62d15bfefb5cc3633"
+
+DEPENDS = " \
+ qtbase \
+ qtquickcontrols2 \
+ qtgraphicaleffects \
+ qtsvg \
+ qtmultimedia \
+ "
+
+PV = "0.2.0"
+
+SRC_URI = "git://github.com/AGLExport/momiplayer.git;protocol=https;branch=master \
+ file://momiplay.service \
+ file://momiplay \
+ "
+SRCREV = "b4715bf924ea295feaaf8fbdb4a9c3da75f57591"
+
+S = "${WORKDIR}/git"
+
+inherit qmake5 systemd
+
+QT_INSTALL_PREFIX = "/usr"
+
+do_install:append() {
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/momiplay.service ${D}/${systemd_unitdir}/system
+
+ install -m 0755 -d ${D}${sysconfdir}/default/
+ install -m 0755 ${WORKDIR}/momiplay ${D}${sysconfdir}/default/
+}
+
+FILES:${PN} += " \
+ ${systemd_unitdir} \
+ ${sysconfdir}/*/* \
+ "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "momiplay.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+
+RDEPENDS:${PN} = " \
+ qtsvg \
+ qtmultimedia \
+ "
diff --git a/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen
new file mode 100644
index 00000000..2c0e461c
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen
@@ -0,0 +1,8 @@
+XDG_RUNTIME_DIR=/run/user/0
+QT_QPA_PLATFORM=wayland-egl
+QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+QT_QPA_FONTDIR=/usr/share/fonts/truetype
+QT_IVI_SURFACE_ID=2000
+QT_WAYLAND_SHELL_INTEGRATION=ivi-shell
+WAYLAND_DISPLAY=wayland-1
+HOME=/home/root
diff --git a/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen.service b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen.service
new file mode 100644
index 00000000..a3f54e0c
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen/momiscreen.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=momiscreen
+After=multi-user.target weston.service
+Requires=multi-user.target weston.service
+
+[Service]
+Type=simple
+EnvironmentFile=/etc/default/momiscreen
+ExecStart=/usr/bin/momiscreen
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen_git.bb b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen_git.bb
new file mode 100644
index 00000000..f37a5365
--- /dev/null
+++ b/meta-agl-ic-container/recipes-demo/momiscreen/momiscreen_git.bb
@@ -0,0 +1,43 @@
+SUMMARY = "Momiyama home screen example"
+DESCRIPTION = "The momiscreen is a home screen example. \
+ The momiscreen is not require agl-appfw."
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
+
+DEPENDS = " \
+ qtbase \
+ qtquickcontrols2 \
+ qtgraphicaleffects \
+ qtsvg \
+ "
+
+PV = "0.2.0"
+
+SRC_URI = "git://github.com/AGLExport/momiscreen.git;protocol=https;branch=main \
+ file://momiscreen.service \
+ file://momiscreen \
+ "
+SRCREV = "bc3ef09ffad15b97941f28b165dc2019f5950105"
+
+S = "${WORKDIR}/git"
+
+inherit qmake5 systemd
+
+QT_INSTALL_PREFIX = "/usr"
+
+do_install:append() {
+ install -d ${D}/${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/momiscreen.service ${D}/${systemd_unitdir}/system
+
+ install -m 0755 -d ${D}${sysconfdir}/default/
+ install -m 0755 ${WORKDIR}/momiscreen ${D}${sysconfdir}/default/
+}
+
+FILES:${PN} += " \
+ ${systemd_unitdir} \
+ ${sysconfdir}/*/* \
+ "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "momiscreen.service"
+
+RDEPENDS:${PN} = "qtsvg "
diff --git a/meta-agl-ic-container/recipes-extended/librefop/librefop_git.bb b/meta-agl-ic-container/recipes-extended/librefop/librefop_git.bb
new file mode 100644
index 00000000..36876fc3
--- /dev/null
+++ b/meta-agl-ic-container/recipes-extended/librefop/librefop_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Redundancy file operation library (librefop)"
+DESCRIPTION = "Redundancy file operation library is a another implementation for \
+ the backup manager. It aim to tiny implementation."
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+PV = "1.0.0+rev${SRCPV}"
+
+SRCREV = "2dd3bafb0c21d7f49fcc2945836924d9c052d268"
+SRC_URI = " \
+ git://git.automotivelinux.org/src/librefop;branch=master;protocol=https \
+ "
+S = "${WORKDIR}/git"
+
+inherit autotools-brokensep pkgconfig
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0001-ivi-input-controller-update-to-weston-7-header-files.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0001-ivi-input-controller-update-to-weston-7-header-files.patch
new file mode 100644
index 00000000..b19243e0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0001-ivi-input-controller-update-to-weston-7-header-files.patch
@@ -0,0 +1,31 @@
+From 6432f46f500321518e9a588215d4635ef7466692 Mon Sep 17 00:00:00 2001
+From: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Date: Mon, 6 Jan 2020 06:41:57 -0500
+Subject: [PATCH 1/6] ivi-input-controller: update to weston 7 header files
+
+update the header file path.
+
+Upstream-Status: Submitted [https://github.com/GENIVI/wayland-ivi-extension/pull/110]
+
+Signed-off-by: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
+---
+ .../ivi-input-controller/src/ivi-input-controller.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
+index b4d54d1..8974115 100644
+--- a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
++++ b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
+@@ -31,7 +31,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+
+-#include "plugin-registry.h"
++#include <libweston/plugin-registry.h>
+ #include "ilm_types.h"
+
+ #include "ivi-input-server-protocol.h"
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-update-to-weston-7-header-files.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-update-to-weston-7-header-files.patch
new file mode 100644
index 00000000..87e286ab
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-update-to-weston-7-header-files.patch
@@ -0,0 +1,33 @@
+From 7b7a5e96388f2431e750583a035962d261292b43 Mon Sep 17 00:00:00 2001
+From: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Date: Mon, 6 Jan 2020 06:45:11 -0500
+Subject: [PATCH 2/6] ivi-id-agent: update to weston 7 header files
+
+update the header file path.
+
+Upstream-Status: Submitted [https://github.com/GENIVI/wayland-ivi-extension/pull/110]
+
+Signed-off-by: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
+---
+ ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c
+index 8f0c199..b80e2a4 100644
+--- a/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c
++++ b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c
+@@ -26,8 +26,8 @@
+ #include <limits.h>
+
+ #include <weston.h>
+-#include <libweston-6/libweston-desktop.h>
+-#include "config-parser.h"
++#include <libweston-desktop/libweston-desktop.h>
++#include <libweston/config-parser.h>
+ #include <weston/ivi-layout-export.h>
+
+ #ifndef INVALID_ID
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-id-agent-update-dependencies-to-build-on-weston-.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-id-agent-update-dependencies-to-build-on-weston-.patch
new file mode 100644
index 00000000..dcb21a1a
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-id-agent-update-dependencies-to-build-on-weston-.patch
@@ -0,0 +1,31 @@
+From 46ef7140611d684d1dbecd866608333e67a1985e Mon Sep 17 00:00:00 2001
+From: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Date: Mon, 6 Jan 2020 06:45:54 -0500
+Subject: [PATCH 3/6] ivi-id-agent: update dependencies to build on weston 8
+
+upgrade libweston-desktop version.
+
+Upstream-Status: Submitted [https://github.com/GENIVI/wayland-ivi-extension/pull/110]
+
+Signed-off-by: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
+Signed-off-by: Gowtham Tammana <g-tammana@ti.com>
+---
+ ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+index 3e604a5..4f285c2 100644
+--- a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
++++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+@@ -25,7 +25,7 @@ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
+ pkg_check_modules(WESTON weston>=6.0.0 REQUIRED)
+ pkg_check_modules(PIXMAN pixman-1 REQUIRED)
+-pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-6 REQUIRED)
++pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-8 REQUIRED)
+
+ find_package(Threads REQUIRED)
+
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-id-agent-update-dependencies-to-build-on-weston-.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-id-agent-update-dependencies-to-build-on-weston-.patch
new file mode 100644
index 00000000..509becb6
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-id-agent-update-dependencies-to-build-on-weston-.patch
@@ -0,0 +1,28 @@
+From 7b301a1832c81d814a8475c8679eddd3d43f3487 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Thu, 28 Apr 2022 07:18:50 +0900
+Subject: [PATCH 4/6] ivi-id-agent: update dependencies to build on weston 10
+
+upgrade libweston-desktop version.
+
+Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+---
+ ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+index 4f285c2..a67ac5a 100644
+--- a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
++++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+@@ -25,7 +25,7 @@ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
+ pkg_check_modules(WESTON weston>=6.0.0 REQUIRED)
+ pkg_check_modules(PIXMAN pixman-1 REQUIRED)
+-pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-8 REQUIRED)
++pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-10 REQUIRED)
+
+ find_package(Threads REQUIRED)
+
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0005-Fix-buld-error-in-krikston.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0005-Fix-buld-error-in-krikston.patch
new file mode 100644
index 00000000..ab9c13f2
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0005-Fix-buld-error-in-krikston.patch
@@ -0,0 +1,68 @@
+From c54194acfc807fa3e1f5ce14e83826ebc6966ca7 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Thu, 28 Apr 2022 07:26:09 +0900
+Subject: [PATCH 5/6] Fix buld error in krikston
+
+Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+---
+ ivi-layermanagement-api/ilmClient/include/ilm_client_platform.h | 2 +-
+ .../ilmClient/src/ilm_client_wayland_platform.c | 2 ++
+ ivi-layermanagement-api/ilmCommon/include/ilm_common_platform.h | 2 +-
+ .../ilmCommon/src/ilm_common_wayland_platform.c | 2 ++
+ 4 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/ivi-layermanagement-api/ilmClient/include/ilm_client_platform.h b/ivi-layermanagement-api/ilmClient/include/ilm_client_platform.h
+index 1fb10af..56368dc 100644
+--- a/ivi-layermanagement-api/ilmClient/include/ilm_client_platform.h
++++ b/ivi-layermanagement-api/ilmClient/include/ilm_client_platform.h
+@@ -35,7 +35,7 @@ typedef struct _ILM_CLIENT_PLATFORM_FUNC
+ ilmErrorTypes (*destroy)();
+ } ILM_CLIENT_PLATFORM_FUNC;
+
+-ILM_CLIENT_PLATFORM_FUNC gIlmClientPlatformFunc;
++extern ILM_CLIENT_PLATFORM_FUNC gIlmClientPlatformFunc;
+
+ void init_ilmClientPlatformTable();
+
+diff --git a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
+index 55b1621..8786251 100644
+--- a/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
++++ b/ivi-layermanagement-api/ilmClient/src/ilm_client_wayland_platform.c
+@@ -35,6 +35,8 @@ static ilmErrorTypes wayland_surfaceRemove(const t_ilm_surface surfaceId);
+ static ilmErrorTypes wayland_init(t_ilm_nativedisplay nativedisplay);
+ static ilmErrorTypes wayland_destroy(void);
+
++ILM_CLIENT_PLATFORM_FUNC gIlmClientPlatformFunc;
++
+ void init_ilmClientPlatformTable(void)
+ {
+ gIlmClientPlatformFunc.surfaceCreate =
+diff --git a/ivi-layermanagement-api/ilmCommon/include/ilm_common_platform.h b/ivi-layermanagement-api/ilmCommon/include/ilm_common_platform.h
+index 4e7b55e..ec49467 100644
+--- a/ivi-layermanagement-api/ilmCommon/include/ilm_common_platform.h
++++ b/ivi-layermanagement-api/ilmCommon/include/ilm_common_platform.h
+@@ -32,7 +32,7 @@ typedef struct _ILM_COMMON_PLATFORM_FUNC
+ ilmErrorTypes (*destroy)();
+ } ILM_COMMON_PLATFORM_FUNC;
+
+-ILM_COMMON_PLATFORM_FUNC gIlmCommonPlatformFunc;
++extern ILM_COMMON_PLATFORM_FUNC gIlmCommonPlatformFunc;
+
+ void init_ilmCommonPlatformTable();
+
+diff --git a/ivi-layermanagement-api/ilmCommon/src/ilm_common_wayland_platform.c b/ivi-layermanagement-api/ilmCommon/src/ilm_common_wayland_platform.c
+index 7470d0d..eef842d 100644
+--- a/ivi-layermanagement-api/ilmCommon/src/ilm_common_wayland_platform.c
++++ b/ivi-layermanagement-api/ilmCommon/src/ilm_common_wayland_platform.c
+@@ -32,6 +32,8 @@ static t_ilm_nativedisplay wayland_getNativedisplay(void);
+ static t_ilm_bool wayland_isInitialized(void);
+ static ilmErrorTypes wayland_destroy(void);
+
++ILM_COMMON_PLATFORM_FUNC gIlmCommonPlatformFunc;
++
+ void init_ilmCommonPlatformTable(void)
+ {
+ gIlmCommonPlatformFunc.init = wayland_init;
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0006-Drop-weston-6-support-and-adjust-weston-7-8-10.patch b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0006-Drop-weston-6-support-and-adjust-weston-7-8-10.patch
new file mode 100644
index 00000000..035e597b
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension/0006-Drop-weston-6-support-and-adjust-weston-7-8-10.patch
@@ -0,0 +1,31 @@
+From d25c266858ffbea51b435190ea8697d4a4511355 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Thu, 28 Apr 2022 08:00:07 +0900
+Subject: [PATCH 6/6] Drop weston 6 support and adjust weston 7,8,10
+
+Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+---
+ ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+index a67ac5a..a4b4e1a 100644
+--- a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
++++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
+@@ -23,9 +23,11 @@ project(ivi-id-agent)
+
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
+-pkg_check_modules(WESTON weston>=6.0.0 REQUIRED)
++pkg_check_modules(WESTON weston>=7.0.0 REQUIRED)
+ pkg_check_modules(PIXMAN pixman-1 REQUIRED)
+-pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-10 REQUIRED)
++pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-10)
++pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-8)
++pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-7)
+
+ find_package(Threads REQUIRED)
+
+--
+2.17.1
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension_git.bb b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension_git.bb
new file mode 100644
index 00000000..b99331aa
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/wayland-ivi-extension_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Wayland IVI Extension"
+DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension"
+HOMEPAGE = "https://github.com/COVESA/wayland-ivi-extension"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1f1a56bb2dadf5f2be8eb342acf4ed79"
+
+DEPENDS = "weston virtual/libgles2 pixman wayland-native"
+
+SRC_URI = " \
+ git://github.com/COVESA/${BPN}.git;protocol=https;branch=master \
+ file://0001-ivi-input-controller-update-to-weston-7-header-files.patch \
+ file://0002-ivi-id-agent-update-to-weston-7-header-files.patch \
+ file://0003-ivi-id-agent-update-dependencies-to-build-on-weston-.patch \
+ file://0004-ivi-id-agent-update-dependencies-to-build-on-weston-.patch \
+ file://0005-Fix-buld-error-in-krikston.patch \
+ file://0006-Drop-weston-6-support-and-adjust-weston-7-8-10.patch \
+ "
+SRCREV = "f6911a11dc911a5bcb380d0895db6cfd533a3569"
+
+S = "${WORKDIR}/git"
+
+inherit cmake pkgconfig
+
+EXTRA_OECMAKE := "-DWITH_ILM_INPUT=1"
+EXTRA_OECMAKE += "-DLIB_SUFFIX=${@d.getVar('baselib').replace('lib', '')}"
+
+FILES:${PN} += "${datadir}/wayland-protocols/stable/ivi-application/ivi-application.xml"
+FILES:${PN} += "${libdir}/weston/*"
+FILES:${PN}-dbg += "${libdir}/weston/.debug/*"
+
+# Need these temporarily to prevent a non-fatal do_package_qa issue
+INSANE_SKIP:${PN} += "dev-deps"
+INSANE_SKIP:${PN}-dev += "dev-elf dev-so"
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.cluster-guest.ini b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.cluster-guest.ini
new file mode 100644
index 00000000..c709d60d
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.cluster-guest.ini
@@ -0,0 +1,9 @@
+[core]
+backend=drm-backend.so
+require-input=false
+modules=systemd-notify.so
+repaint-window=34
+
+[shell]
+panel-position=none
+background-color=0xff000000
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.default.ini b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.default.ini
new file mode 100644
index 00000000..c709d60d
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.default.ini
@@ -0,0 +1,9 @@
+[core]
+backend=drm-backend.so
+require-input=false
+modules=systemd-notify.so
+repaint-window=34
+
+[shell]
+panel-position=none
+background-color=0xff000000
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.ivi-guest.ini b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.ivi-guest.ini
new file mode 100644
index 00000000..a664f5e0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest/weston.ivi-guest.ini
@@ -0,0 +1,14 @@
+[core]
+shell=ivi-shell.so
+backend=drm-backend.so
+require-input=false
+modules=systemd-notify.so,ivi-controller.so
+
+[ivi-shell]
+ivi-input-module=ivi-input-controller.so
+ivi-id-agent-module=ivi-id-agent.so
+
+[desktop-app-default]
+default-surface-id=9801
+default-surface-id-max=9821
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest_0.1.bb b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest_0.1.bb
new file mode 100644
index 00000000..740fa8ff
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-guest_0.1.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Configuration file for the Weston and AGL Wayland compositors for guest container"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = " \
+ file://weston.default.ini \
+ file://weston.cluster-guest.ini \
+ file://weston.ivi-guest.ini \
+"
+
+S = "${WORKDIR}"
+
+inherit allarch
+
+# Default weston.ini
+WESTON_INI_FILE ??= "weston.default.ini"
+
+# Set container specific weston.ini
+WESTON_INI_FILE:aglcontainercluster ?= "weston.cluster-guest.ini"
+WESTON_INI_FILE:aglcontainerivi ?= "weston.ivi-guest.ini"
+
+do_install() {
+ install -D -p -m0644 ${WORKDIR}/${WESTON_INI_FILE} ${D}${sysconfdir}/xdg/weston/weston.ini
+}
+
+FILES:${PN} += " \
+ ${sysconfdir}/xdg/weston/weston.ini \
+ "
+CONFFILES:${PN} += " \
+ ${sysconfdir}/xdg/weston/weston.ini \
+ "
+RDEPENDS:${PN} = "weston-init-guest"
+RPROVIDES:${PN} = "weston-ini"
+RCONFLICTS:${PN} = "weston-ini-conf"
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf.bbappend
new file mode 100644
index 00000000..46dfc124
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf.bbappend
@@ -0,0 +1,2 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf/shell.cfg b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf/shell.cfg
new file mode 100644
index 00000000..6fe34ea7
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf/shell.cfg
@@ -0,0 +1,3 @@
+[shell]
+panel-position=none
+background-color=0xff000000
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.env b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.env
new file mode 100644
index 00000000..ed5f2621
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.env
@@ -0,0 +1,4 @@
+XDG_RUNTIME_DIR=/run/user/0
+DLM_RUNTIME_PATH=/var/display/drm-lease-manager
+DRM_LEASE_DEVICE=lease
+WAYLAND_DISPLAY=wayland-1
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.service b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.service
new file mode 100644
index 00000000..5f23ea79
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest/weston.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Weston Wayland Compositor
+RequiresMountsFor=/run
+After=multi-user.target
+Wants=multi-user.target
+
+[Service]
+User=root
+PAMName=login
+EnvironmentFile=-/etc/default/weston
+StandardError=journal
+PermissionsStartOnly=true
+IgnoreSIGPIPE=no
+Type=notify
+
+ExecStart=/usr/bin/weston --config /etc/xdg/weston/weston.ini --idle-time=0 --drm-lease=${DRM_LEASE_DEVICE} --log=/var/log/weston.log
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest_0.1.bb b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest_0.1.bb
new file mode 100644
index 00000000..c95f92e0
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-init-guest_0.1.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Startup script and systemd unit file for the Weston Wayland compositor in guest cotainer"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://weston.env \
+ file://weston.service \
+ "
+
+S = "${WORKDIR}"
+
+inherit features_check systemd
+
+do_install() {
+ install -Dm644 ${WORKDIR}/weston.env ${D}${sysconfdir}/default/weston
+
+ # Install Weston systemd service and accompanying udev rule
+ install -D -p -m0644 ${WORKDIR}/weston.service ${D}${systemd_system_unitdir}/weston.service
+ sed -i -e s:/etc:${sysconfdir}:g \
+ -e s:/usr/bin:${bindir}:g \
+ -e s:/var:${localstatedir}:g \
+ ${D}${systemd_unitdir}/system/weston.service
+}
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+# rdepends on weston-init-guest which depends on wayland
+REQUIRED_DISTRO_FEATURES = "wayland"
+
+FILES:${PN} += " \
+ ${sysconfdir}/xdg/weston/weston.ini \
+ ${systemd_system_unitdir}/weston.service \
+ ${sysconfdir}/default/weston \
+ "
+CONFFILES:${PN} += " \
+ ${sysconfdir}/xdg/weston/weston.ini \
+ ${sysconfdir}/default/weston \
+ "
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "weston.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+RDEPENDS:${PN} = " \
+ weston \
+ weston-ini \
+ "
+RCONFLICTS:${PN} = "weston-init"
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-ic-container/recipes-graphics/wayland/weston-init.bbappend
new file mode 100644
index 00000000..4374c455
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-init.bbappend
@@ -0,0 +1,40 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+AGL_DEFAULT_WESTONSTART ??= "/usr/bin/weston --config ${sysconfdir}/xdg/weston/weston.ini"
+WESTONARGS ?= "--idle-time=0 --drm-lease=\${DRM_LEASE_DEVICE}"
+
+WESTONSTART ??= "${AGL_DEFAULT_WESTONSTART} ${WESTONARGS}"
+WESTONSTART:append = " ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", " --debug", "",d)}"
+
+WIFILES = " \
+ file://drm-lease.conf.in \
+"
+
+SRC_URI:append = " ${WIFILES}"
+
+do_install:append() {
+ # Process ".in" files
+ files=$(echo ${WIFILES} | sed s,file://,,g)
+ for f in ${files}; do
+ g=${f%.in}
+ if [ "${f}" != "${g}" ]; then
+ sed -e "s,@WESTONUSER@,${WESTONUSER},g" \
+ -e "s,@WESTONGROUP@,${WESTONGROUP},g" \
+ -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \
+ -e "s,@WESTONSTART@,${WESTONSTART},g" \
+ -e "s,@WESTON_DRM_DEVICE@,${WESTON_DRM_DEVICE},g" \
+ ${WORKDIR}/${f} > ${WORKDIR}/${g}
+ fi
+ done
+
+ # Install weston drop-in
+ install -d ${D}${systemd_system_unitdir}/weston@.service.d
+ install -m644 ${WORKDIR}/drm-lease.conf ${D}/${systemd_system_unitdir}/weston@.service.d/
+
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ ln -s ../weston@.service ${D}${systemd_system_unitdir}/multi-user.target.wants/weston@root.service
+}
+
+FILES:${PN} += " \
+ ${systemd_system_unitdir}/ \
+"
diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-init/drm-lease.conf.in b/meta-agl-ic-container/recipes-graphics/wayland/weston-init/drm-lease.conf.in
new file mode 100644
index 00000000..025cd58e
--- /dev/null
+++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-init/drm-lease.conf.in
@@ -0,0 +1,4 @@
+[Service]
+Type=notify
+ExecStart=
+ExecStart=@WESTONSTART@
diff --git a/meta-agl-ic-container/recipes-kernel/linux/linux-%.bbappend b/meta-agl-ic-container/recipes-kernel/linux/linux-%.bbappend
new file mode 100644
index 00000000..d50b5d66
--- /dev/null
+++ b/meta-agl-ic-container/recipes-kernel/linux/linux-%.bbappend
@@ -0,0 +1 @@
+include ${@'linux_lxc.inc' if bb.data.inherits_class('kernel', d) else ''}
diff --git a/meta-agl-ic-container/recipes-kernel/linux/linux/lxc-net.cfg b/meta-agl-ic-container/recipes-kernel/linux/linux/lxc-net.cfg
new file mode 100644
index 00000000..e9bd7b80
--- /dev/null
+++ b/meta-agl-ic-container/recipes-kernel/linux/linux/lxc-net.cfg
@@ -0,0 +1,5 @@
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_NF_NAT=m
+CONFIG_NF_CONNTRACK=y
diff --git a/meta-agl-ic-container/recipes-kernel/linux/linux/lxc.cfg b/meta-agl-ic-container/recipes-kernel/linux/linux/lxc.cfg
new file mode 100644
index 00000000..fb87ea19
--- /dev/null
+++ b/meta-agl-ic-container/recipes-kernel/linux/linux/lxc.cfg
@@ -0,0 +1,26 @@
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+CONFIG_MEMCG=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+
+CONFIG_NET_CLS_CGROUP=m
+CONFIG_BLK_CGROUP=y
+CONFIG_CGROUP_NET_PRIO=y
+
+# Virtual drivers
+CONFIG_HVC_DRIVER=y
+
+# Support for virtual ethernet and LXC
+CONFIG_VETH=y
+CONFIG_MACVLAN=y
+CONFIG_VXLAN=m
diff --git a/meta-agl-ic-container/recipes-kernel/linux/linux_lxc.inc b/meta-agl-ic-container/recipes-kernel/linux/linux_lxc.inc
new file mode 100644
index 00000000..87e1edc5
--- /dev/null
+++ b/meta-agl-ic-container/recipes-kernel/linux/linux_lxc.inc
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/linux:"
+
+# Disable all other AGL provided kernel configuration (barring
+# base BSP provided configuration), and just enable a locally
+# provided fragment with minimal LXC required configuration.
+AGL_KCONFIG_FRAGMENTS += "lxc.cfg "
+AGL_KCONFIG_FRAGMENTS += "lxc-net.cfg "
+
+
+
diff --git a/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb b/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb
new file mode 100644
index 00000000..27f6bfc5
--- /dev/null
+++ b/meta-agl-ic-container/recipes-multimedia/pipewire-ic-ipc/pipewire-ic-ipc_git.bb
@@ -0,0 +1,37 @@
+SUMMARY = "PipeWire AGL Instrument Cluster IPC"
+AUTHOR = "George Kiagiadakis <george.kiagiadakis@collabora.com>"
+SECTION = "multimedia"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;beginline=3;md5=e8ad01a5182f2c1b3a2640e9ea268264"
+
+PV = "0.1+git${SRCPV}"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/pipewire-ic-ipc.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "f93f9cda5d8a380bc8846b5de3fc24613466adf3"
+
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig systemd
+
+# build the server on the host
+PACKAGECONFIG = "\
+ server \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+# only the example client in the guest
+PACKAGECONFIG:aglcontainerguest = "client"
+
+# systemd integration for the server-side component
+PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
+# server-side component
+PACKAGECONFIG[server] = "-Dserver=true,-Dserver=false,pipewire"
+# example client; not needed if you use the icipc library in your IC applciation
+PACKAGECONFIG[client] = "-Dclient=true,-Dclient=false,"
+
+# server-side systemd service
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'pipewire-ic-ipc.service', '', d)}"
+
+FILES:${PN} += "\
+ ${datadir}/pipewire/* \
+ ${libdir}/pipewire-0.3/* \
+"
diff --git a/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend
new file mode 100644
index 00000000..fe6dab86
--- /dev/null
+++ b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber-policy-config-agl_git.bbappend
@@ -0,0 +1,8 @@
+do_install:append() {
+ config_dir="${D}${sysconfdir}/wireplumber/"
+ systemd_dir="${D}${sysconfdir}/systemd/system/sockets.target.wants"
+
+ # enable additional systemd services
+ install -d ${systemd_dir}
+ ln -s ${systemd_system_unitdir}/wireplumber@.service ${systemd_dir}/wireplumber@policy.service
+}
diff --git a/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch
new file mode 100644
index 00000000..0da0bfb6
--- /dev/null
+++ b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber/0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch
@@ -0,0 +1,64 @@
+From a2d324c75057f0ddd66cbe5b5e419fddda213cc2 Mon Sep 17 00:00:00 2001
+From: Ashok Sidipotu <ashok.sidipotu@collabora.com>
+Date: Mon, 28 Feb 2022 06:46:19 +0530
+Subject: [PATCH] systemd: changes to run wireplumber instances in containers
+
+- remove the pipewire daemon dependencies so that
+only wireplumber policy daemon can run in containers.
+- remove pipewire user
+---
+ src/systemd/system/wireplumber@.service.in | 8 +++-----
+ src/systemd/user/wireplumber@.service.in | 5 ++---
+ 2 files changed, 5 insertions(+), 8 deletions(-)
+
+ Inappropriate [configuration]
+
+diff --git a/src/systemd/system/wireplumber@.service.in b/src/systemd/system/wireplumber@.service.in
+index ba8eefe..e4b985b 100644
+--- a/src/systemd/system/wireplumber@.service.in
++++ b/src/systemd/system/wireplumber@.service.in
+@@ -5,8 +5,7 @@
+ # wireplumber@policy.service loads policy.conf, etc.
+ [Unit]
+ Description=Multimedia Service Session Manager (%i)
+-After=pipewire.service
+-BindsTo=pipewire.service
++After=sockets.target
+ Conflicts=pipewire-media-session.service
+
+ [Service]
+@@ -19,9 +18,8 @@ SystemCallFilter=@system-service
+ Type=simple
+ ExecStart=@WP_BINARY@ -c %i.conf
+ Restart=on-failure
+-User=pipewire
+-Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire
++Environment=PIPEWIRE_RUNTIME_DIR=/var
+ Environment=GIO_USE_VFS=local
+
+ [Install]
+-WantedBy=pipewire.service
++WantedBy=multi-user.target
+diff --git a/src/systemd/user/wireplumber@.service.in b/src/systemd/user/wireplumber@.service.in
+index 9dbceff..7e21194 100644
+--- a/src/systemd/user/wireplumber@.service.in
++++ b/src/systemd/user/wireplumber@.service.in
+@@ -5,8 +5,7 @@
+ # wireplumber@policy.service loads policy.conf, etc.
+ [Unit]
+ Description=Multimedia Service Session Manager (%i)
+-After=pipewire.service
+-BindsTo=pipewire.service
++After=sockets.target
+ Conflicts=pipewire-media-session.service
+
+ [Service]
+@@ -23,4 +22,4 @@ Slice=session.slice
+ Environment=GIO_USE_VFS=local
+
+ [Install]
+-WantedBy=pipewire.service
++WantedBy=multi-user.target
+--
+2.35.1
+
diff --git a/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend
new file mode 100644
index 00000000..56f03a4c
--- /dev/null
+++ b/meta-agl-ic-container/recipes-multimedia/wireplumber/wireplumber_git.bbappend
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/wireplumber:"
+
+SRC_URI += "\
+ file://0001-systemd-wireplumber-to-not-depend-on-the-pipewire-de.patch \
+"
diff --git a/meta-agl-ic-container/recipes-platform/images/agl-cluster-demo-lxc-host.bb b/meta-agl-ic-container/recipes-platform/images/agl-cluster-demo-lxc-host.bb
new file mode 100644
index 00000000..c7424f57
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/images/agl-cluster-demo-lxc-host.bb
@@ -0,0 +1,31 @@
+SUMMARY = "LXC host demo image"
+LICENSE = "MIT"
+
+require lxc-host-image-minimal.bb
+
+CONTAINER_IMAGES ?= "agl-container-cluster:guest-image-cluster-demo \
+ agl-container-ivi:guest-image-ivi-demo \
+ "
+
+IMAGE_INSTALL += " \
+ kernel-modules \
+ alsa-utils \
+ packagegroup-pipewire \
+ pipewire-ic-ipc \
+ wireplumber-config-agl \
+"
+
+# packages required for network bridge settings via lxc-net
+IMAGE_INSTALL += " \
+ lxc-networking \
+ iptables-modules \
+ dnsmasq \
+ systemd-netif-config \
+ kernel-module-xt-addrtype \
+ kernel-module-xt-multiport \
+"
+
+# network manager to use
+VIRTUAL-RUNTIME_net_manager = "systemd"
+
+IMAGE_INSTALL:append:rcar-gen3 = " kernel-module-gles "
diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-cluster-demo.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-cluster-demo.bb
new file mode 100644
index 00000000..1476d7ab
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/images/guest-image-cluster-demo.bb
@@ -0,0 +1,12 @@
+SUMMARY = "LXC cluster demo guest image"
+LICENSE = "MIT"
+
+require guest-image-minimal.bb
+
+IMAGE_INSTALL += " \
+ weston \
+ weston-init-guest \
+ weston-ini-conf-guest \
+ cluster-refgui \
+ pipewire-ic-ipc \
+"
diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-ivi-demo.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-ivi-demo.bb
new file mode 100644
index 00000000..22a59114
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/images/guest-image-ivi-demo.bb
@@ -0,0 +1,30 @@
+SUMMARY = "LXC ivi demo guest image"
+LICENSE = "MIT"
+
+require guest-image-minimal.bb
+
+IMAGE_INSTALL += " \
+ weston \
+ weston-init-guest \
+ weston-ini-conf-guest \
+ wayland-ivi-extension \
+ ilm-manager \
+ mominavi \
+ momiplay \
+ momiscreen \
+ qtquickcontrols \
+ qtquickcontrols2 \
+ qtwayland \
+ systemd-netif-config \
+ ttf-dejavu-sans \
+ ttf-dejavu-sans-mono \
+ ttf-dejavu-sans-condensed \
+ ttf-dejavu-serif \
+ ttf-dejavu-serif-condensed \
+ ttf-dejavu-mathtexgyre \
+ ttf-dejavu-common \
+ ca-certificates \
+ wireplumber \
+ packagegroup-pipewire-base \
+ wireplumber-policy-config-agl \
+" \ No newline at end of file
diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb
new file mode 100644
index 00000000..6a47cfe5
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/images/guest-image-minimal.bb
@@ -0,0 +1,11 @@
+SUMMARY = "A minimal container guest image"
+
+require recipes-platform/images/agl-image-boot.inc
+
+IMAGE_LINGUAS = " "
+
+IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"
+
+IMAGE_INSTALL:append = " \
+ packagegroup-agl-ic-core \
+"
diff --git a/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb b/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb
new file mode 100644
index 00000000..38fc7b26
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/images/lxc-host-image-minimal.bb
@@ -0,0 +1,62 @@
+SUMMARY = "A minimal container host image"
+
+require recipes-platform/images/agl-image-boot.inc
+
+IMAGE_INSTALL += " \
+ kernel-image \
+ lxc \
+ ${LXC_CONTAINER_CONFIGS} \
+ drm-lease-manager \
+"
+
+CONTAINER_IMAGES ??= ""
+
+LXC_CONTAINER_CONFIGS ?= ""
+
+IMAGE_LINGUAS = " "
+
+NO_RECOMMENDATIONS = "1"
+
+# Handle modification of IMAGE_LINK_NAME done by ULCB builds with Kingfisher support
+MACHINE_SUFFIX = "${@bb.utils.contains('AGL_FEATURES', 'kingfisher', '-kf', '', d)}"
+
+python __anonymous() {
+ for c in (d.getVar('CONTAINER_IMAGES') or "").split():
+ (mc, image) = c.split(':')
+ dependency = 'mc::' + mc + ':' + image + ':do_image_complete'
+ d.appendVarFlag('do_rootfs', 'mcdepends', ' ' + dependency)
+
+ # Assume there is a X-lxc-config package for guest-image-X
+ config = image
+ if config.startswith('guest-image-'):
+ config = config[len('guest-image-'):]
+ d.appendVar('LXC_CONTAINER_CONFIGS', ' ' + 'lxc-config-' + config)
+}
+
+install_container_images() {
+ for c in ${CONTAINER_IMAGES}; do
+ config=${c%:*}
+ image=${c#*:}
+ name=${image#guest-image-}
+ rm -rf ${IMAGE_ROOTFS}/var/lib/machines/${name}
+ install -m 0755 -d ${IMAGE_ROOTFS}/var/lib/machines/${name}
+ src="${TOPDIR}/tmp-${config}/deploy/images/${MACHINE}/${image}-${MACHINE}${MACHINE_SUFFIX}.tar.bz2"
+ bbnote "Installing ${src}"
+ tar -C ${IMAGE_ROOTFS}/var/lib/machines/${name} -xf ${src}
+ done
+}
+
+#
+# Force rebuild of rootfs on every build to work around mcdepends issue
+#
+# NOTE:
+# This is currently required as bitbake fails to trigger do_rootfs
+# sometimes even when the guest image has in fact rebuilt. This is
+# being investigated with upstream.
+#
+do_rootfs[nostamp] = "1"
+
+ROOTFS_POSTPROCESS_COMMAND += "install_container_images; "
+
+IMAGE_ROOTFS_EXTRA_SPACE:append = "${@bb.utils.contains("DISTRO_FEATURES", "systemd", " + 4096", "" ,d)}"
+
diff --git a/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-ic-core.bb b/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-ic-core.bb
new file mode 100644
index 00000000..d54685c8
--- /dev/null
+++ b/meta-agl-ic-container/recipes-platform/packagegroups/packagegroup-agl-ic-core.bb
@@ -0,0 +1,17 @@
+SUMMARY = "AGL Instrument Cluster Core Packages"
+DESCRIPTION = "This pacage group including AGL Instrument Cluster function core packages such as \
+ common library,framework."
+HOMEPAGE = "https://confluence.automotivelinux.org/display/IC"
+
+LICENSE = "Apache-2.0"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-ic-core \
+"
+RDEPENDS:${PN} += "\
+ libclusteripc \
+ libclusterapi \
+ librefop \
+"
diff --git a/meta-agl-ic-container/recipes-qt5/qt5/qtbase_git.bbappend b/meta-agl-ic-container/recipes-qt5/qt5/qtbase_git.bbappend
new file mode 100644
index 00000000..7f2e9aa3
--- /dev/null
+++ b/meta-agl-ic-container/recipes-qt5/qt5/qtbase_git.bbappend
@@ -0,0 +1 @@
+PACKAGECONFIG:append:aglcontainerivi = " sql-sqlite"
diff --git a/meta-agl-ic-container/recipes-qt5/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch b/meta-agl-ic-container/recipes-qt5/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch
new file mode 100644
index 00000000..ba8a991e
--- /dev/null
+++ b/meta-agl-ic-container/recipes-qt5/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch
@@ -0,0 +1,47 @@
+From 58197439eade86e7efc6fe98116c0092ea429d29 Mon Sep 17 00:00:00 2001
+From: Matt Ranostay <matt.ranostay@konsulko.com>
+Date: Tue, 10 Mar 2020 13:59:58 -0700
+Subject: [PATCH] mapbox: update API url to match new schema
+
+---
+ src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp | 7 ++++---
+ src/plugins/geoservices/mapbox/qmapboxcommon.h | 2 +-
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
+index 0b128556..bd2be6b6 100644
+--- a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
++++ b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
+@@ -88,12 +88,13 @@ QGeoTiledMapReply *QGeoTileFetcherMapbox::getTileImage(const QGeoTileSpec &spec)
+ request.setRawHeader("User-Agent", m_userAgent);
+
+ request.setUrl(QUrl(mapboxTilesApiPath +
+- ((spec.mapId() >= m_mapIds.size()) ? QStringLiteral("mapbox.streets") : m_mapIds[spec.mapId() - 1]) + QLatin1Char('/') +
++ m_mapIds[m_mapIds.size() - 1] +
++ QStringLiteral("/tiles/256/") +
+ QString::number(spec.zoom()) + QLatin1Char('/') +
+ QString::number(spec.x()) + QLatin1Char('/') +
+ QString::number(spec.y()) +
+- ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x.")) : QLatin1String(".")) +
+- m_format + QLatin1Char('?') +
++ ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x")) : QLatin1String("")) +
++ QLatin1Char('?') +
+ QStringLiteral("access_token=") + m_accessToken));
+
+ QNetworkReply *reply = m_networkManager->get(request);
+diff --git a/src/plugins/geoservices/mapbox/qmapboxcommon.h b/src/plugins/geoservices/mapbox/qmapboxcommon.h
+index e60c4e83..4b2ea98d 100644
+--- a/src/plugins/geoservices/mapbox/qmapboxcommon.h
++++ b/src/plugins/geoservices/mapbox/qmapboxcommon.h
+@@ -46,7 +46,7 @@
+
+ QT_BEGIN_NAMESPACE
+
+-static const QString mapboxTilesApiPath = QStringLiteral("http://api.tiles.mapbox.com/v4/");
++static const QString mapboxTilesApiPath = QStringLiteral("https://api.mapbox.com/");
+
+ // https://www.mapbox.com/api-documentation/#geocoding
+ static const QString mapboxGeocodingApiPath = QStringLiteral("https://api.mapbox.com/geocoding/v5/mapbox.places/");
+--
+2.25.0
+
diff --git a/meta-agl-ic-container/recipes-qt5/qt5/qtlocation_git.bbappend b/meta-agl-ic-container/recipes-qt5/qt5/qtlocation_git.bbappend
new file mode 100644
index 00000000..674aabcd
--- /dev/null
+++ b/meta-agl-ic-container/recipes-qt5/qt5/qtlocation_git.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/qtlocation:"
+
+SRC_URI += "\
+ file://0001-mapbox-update-API-url-to-match-new-schema.patch \
+ "
+
+PACKAGECONFIG:append:aglcontainerivi = " geoservices_mapbox geoservices_mapboxgl"