diff mbox series

[v3,2/2,meta-oe] kmscon: Add recipe

Message ID 20260116104816.513803-2-adam.duskett@amarulasolutions.com
State Superseded, archived
Headers show
Series [v3,1/2,meta-oe] libtsm: add recipe for kmscon dependency | expand

Commit Message

Adam Duskett Jan. 16, 2026, 10:48 a.m. UTC
Provide sane defaults that do not have dependencies, such as
a dummy and terminal session support and basic fbdev support.

kmsconvt@.service must be added separatly or else
do_rootfs fails with the following error:

```
do_rootfs: Postinstall scriptlets of ['kmscon'] have failed. If the intention
is to defer them to first boot, then please place them into
pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no
longer supported.
```

Add a small patch to fix a compiling error when using LLVM as the
preferred toolchain.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v1 -> v2: add tag=v${PV} to the SRC_URI
v2 -> v3: Add a small patch to fix LLVM compiling errors

 ..._conf.c-Fix-llvm-compilation-failure.patch | 40 +++++++++++
 .../recipes-graphics/kmscon/kmscon_9.2.1.bb   | 66 +++++++++++++++++++
 2 files changed, 106 insertions(+)
 create mode 100644 meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
 create mode 100644 meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb

Comments

Khem Raj Jan. 18, 2026, 6:56 a.m. UTC | #1
There are packaging errors seen with this

https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/4999930/raw_inline

ERROR: kmscon-9.2.1-r0 do_package: QA Issue: kmscon: Files/directories were
installed but not shipped in any package:
  /usr/lib/systemd
  /usr/lib/systemd/system
  /usr/lib/systemd/system/kmscon.service
  /usr/lib/systemd/system/kmsconvt@.service
Please set FILES such that these items are packaged. Alternatively if they
are unneeded, avoid installing them or delete them within do_install.
kmscon: 4 installed and not shipped files. [installed-vs-shipped]

This happens when systemd is not in DISTRO_FEATURES

On Fri, Jan 16, 2026 at 2:48 AM Adam Duskett via lists.openembedded.org
<adam.duskett=amarulasolutions.com@lists.openembedded.org> wrote:

> Provide sane defaults that do not have dependencies, such as
> a dummy and terminal session support and basic fbdev support.
>
> kmsconvt@.service must be added separatly or else
> do_rootfs fails with the following error:
>
> ```
> do_rootfs: Postinstall scriptlets of ['kmscon'] have failed. If the
> intention
> is to defer them to first boot, then please place them into
> pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no
> longer supported.
> ```
>
> Add a small patch to fix a compiling error when using LLVM as the
> preferred toolchain.
>
> Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> ---
> v1 -> v2: add tag=v${PV} to the SRC_URI
> v2 -> v3: Add a small patch to fix LLVM compiling errors
>
>  ..._conf.c-Fix-llvm-compilation-failure.patch | 40 +++++++++++
>  .../recipes-graphics/kmscon/kmscon_9.2.1.bb   | 66 +++++++++++++++++++
>  2 files changed, 106 insertions(+)
>  create mode 100644
> meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
>  create mode 100644 meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
>
> diff --git
> a/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
> b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
> new file mode 100644
> index 0000000000..0806f9bb04
> --- /dev/null
> +++
> b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
> @@ -0,0 +1,40 @@
> +From 03a330d486132e3798a125d26d4f10252ffd8e2d Mon Sep 17 00:00:00 2001
> +From: Adam Duskett <adam.duskett@amarulasolutions.com>
> +Date: Fri, 16 Jan 2026 11:35:39 +0100
> +Subject: [PATCH] kmscon_conf.c: Fix llvm compilation failure
> +
> +When building with an LLVM toolchain, the follow error occurs:
> +
> +```
> +kmscon_conf.c:757:72:
> +error: expression which evaluates to zero treated as a null pointer
> constant
> +of type 'void *' [-Werror,-Wnon-literal-null-conversion]
> +CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL, &conf->gpus,
> KMSCON_GPU_ALL),
> +
>  ^~~~~~~~~~~~~~
> +1 error generated.
> +```
> +
> +Fix the error by adding a cast to (void *).
> +
> +Upstream-Status: Submitted [https://github.com/kmscon/kmscon/pull/225]
> +Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
> +---
> + src/kmscon_conf.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c
> +index df2e51d..9e9a839 100644
> +--- a/src/kmscon_conf.c
> ++++ b/src/kmscon_conf.c
> +@@ -754,7 +754,7 @@ int kmscon_conf_new(struct conf_ctx **out)
> +               /* Video Options */
> +               CONF_OPTION_BOOL_FULL(0, "drm", aftercheck_drm, NULL,
> NULL, &conf->drm, true),
> +               CONF_OPTION_BOOL(0, "hwaccel", &conf->hwaccel, false),
> +-              CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL,
> &conf->gpus, KMSCON_GPU_ALL),
> ++              CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL,
> &conf->gpus, (void *)KMSCON_GPU_ALL),
> +               CONF_OPTION_STRING(0, "render-engine",
> &conf->render_engine, NULL),
> +               CONF_OPTION_BOOL(0, "use-original-mode",
> &conf->use_original_mode, true),
> +               CONF_OPTION_STRING(0, "mode", &conf->mode, NULL),
> +--
> +2.52.0
> +
> diff --git a/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
> b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
> new file mode 100644
> index 0000000000..925bebee81
> --- /dev/null
> +++ b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
> @@ -0,0 +1,66 @@
> +SUMMARY = "Simple terminal emulator based on linux kernel mode setting
> (KMS)."
> +DESCRIPTION = "\
> +    Kmscon is a simple terminal emulator based on linux kernel mode
> setting \
> +    (KMS). It is an attempt to replace the in-kernel VT implementation
> with \
> +    a userspace console. \
> +"
> +HOMEPAGE = "https://github.com/kmscon/kmscon"
> +BUGTRACKER = "https://github.com/kmscon/kmscon/issues"
> +CVE_PRODUCT = "kmscon"
> +
> +SECTION = "graphics"
> +
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=6d4602d249f8a3401040238e98367d9e"
> +
> +DEPENDS = "\
> +    libtsm \
> +    libxkbcommon \
> +    udev \
> +"
> +
> +SRC_URI = "\
> +    git://github.com/kmscon/kmscon;branch=main;protocol=https \
> +    file://0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch \
> +"
> +SRCREV = "7d46650dbb0826f9b89de42f879be879391c14fd"
> +
> +inherit meson pkgconfig systemd
> +
> +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
> +
> +PACKAGECONFIG[backspace_sends_delete] = "-Dbackspace_sends_delete=true,
> -Dbackspace_sends_delete=false"
> +PACKAGECONFIG[font_pango] = "-Dfont_pango=enabled, -Dfont_pango=disabled,
> pango"
> +PACKAGECONFIG[multi_seat] = "-Dmulti_seat=enabled, -Dmulti_seat=disabled,
> systemd"
> +PACKAGECONFIG[opengl] = "-Drenderer_gltex=enabled -Dvideo_drm3d=enabled,
> -Drenderer_gltex=disabled -Dvideo_drm3d=disabled, libdrm virtual/egl
> virtual/libgles2 virtual/libgbm"
> +PACKAGECONFIG[video_drm2d] = "-Dvideo_drm2d=enabled,
> -Dvideo_drm2d=disabled, libdrm"
> +
> +EXTRA_OEMESON = "\
> +    -Delogind=disabled \
> +    -Dextra_debug=false \
> +    -Dfont_unifont=enabled \
> +    -Dsession_dummy=enabled \
> +    -Dsession_terminal=enabled \
> +    -Dtests=false \
> +    -Dvideo_fbdev=enabled \
> +"
> +
> +SYSTEMD_SERVICE:${PN} = "kmscon.service"
> +FILES:${PN} += "${systemd_system_unitdir}/kmsconvt@.service"
> +
> +do_install:append() {
> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true',
> 'false', d)}; then
> +        install -d ${D}${sysconfdir}/systemd/system
> +        ln -sf ${systemd_system_unitdir}/kmsconvt@.service \
> +            ${D}${sysconfdir}/systemd/system/autovt@.service
> +    fi
> +
> +    if ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'true', 'false',
> d)}; then
> +        sed -e "s@#drm@drm@g" \
> +            -e "s@#hwaccel@hwaccel@g" \
> +            -e "s@#render-engine=gltex@render-engine=gltex@g" \
> +            -i ${D}${sysconfdir}/kmscon/kmscon.conf
> +    fi
> +}
> +
> +RDEPENDS:${PN} = "xkeyboard-config"
> --
> 2.52.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#123531):
> https://lists.openembedded.org/g/openembedded-devel/message/123531
> Mute This Topic: https://lists.openembedded.org/mt/117295606/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Adam Duskett Jan. 20, 2026, 9:10 a.m. UTC | #2
Hi Khem;

This is quite odd as I have tested this package without systemd in
DISTRO_FEATURES and I don't receive any
packaging errors. I will take a look at this specific setup and try to
replicate on my side.

Adam

On Sun, Jan 18, 2026 at 7:56 AM Khem Raj <raj.khem@gmail.com> wrote:

> There are packaging errors seen with this
>
>
> https://autobuilder.yoctoproject.org/valkyrie/api/v2/logs/4999930/raw_inline
>
> ERROR: kmscon-9.2.1-r0 do_package: QA Issue: kmscon: Files/directories
> were installed but not shipped in any package:
>   /usr/lib/systemd
>   /usr/lib/systemd/system
>   /usr/lib/systemd/system/kmscon.service
>   /usr/lib/systemd/system/kmsconvt@.service
> Please set FILES such that these items are packaged. Alternatively if they
> are unneeded, avoid installing them or delete them within do_install.
> kmscon: 4 installed and not shipped files. [installed-vs-shipped]
>
> This happens when systemd is not in DISTRO_FEATURES
>
> On Fri, Jan 16, 2026 at 2:48 AM Adam Duskett via lists.openembedded.org
> <adam.duskett=amarulasolutions.com@lists.openembedded.org> wrote:
>
>> Provide sane defaults that do not have dependencies, such as
>> a dummy and terminal session support and basic fbdev support.
>>
>> kmsconvt@.service must be added separatly or else
>> do_rootfs fails with the following error:
>>
>> ```
>> do_rootfs: Postinstall scriptlets of ['kmscon'] have failed. If the
>> intention
>> is to defer them to first boot, then please place them into
>> pkg_postinst_ontarget:${PN} (). Deferring to first boot via 'exit 1' is no
>> longer supported.
>> ```
>>
>> Add a small patch to fix a compiling error when using LLVM as the
>> preferred toolchain.
>>
>> Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
>> ---
>> v1 -> v2: add tag=v${PV} to the SRC_URI
>> v2 -> v3: Add a small patch to fix LLVM compiling errors
>>
>>  ..._conf.c-Fix-llvm-compilation-failure.patch | 40 +++++++++++
>>  .../recipes-graphics/kmscon/kmscon_9.2.1.bb   | 66 +++++++++++++++++++
>>  2 files changed, 106 insertions(+)
>>  create mode 100644
>> meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
>>  create mode 100644 meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
>>
>> diff --git
>> a/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
>> b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
>> new file mode 100644
>> index 0000000000..0806f9bb04
>> --- /dev/null
>> +++
>> b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
>> @@ -0,0 +1,40 @@
>> +From 03a330d486132e3798a125d26d4f10252ffd8e2d Mon Sep 17 00:00:00 2001
>> +From: Adam Duskett <adam.duskett@amarulasolutions.com>
>> +Date: Fri, 16 Jan 2026 11:35:39 +0100
>> +Subject: [PATCH] kmscon_conf.c: Fix llvm compilation failure
>> +
>> +When building with an LLVM toolchain, the follow error occurs:
>> +
>> +```
>> +kmscon_conf.c:757:72:
>> +error: expression which evaluates to zero treated as a null pointer
>> constant
>> +of type 'void *' [-Werror,-Wnon-literal-null-conversion]
>> +CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL, &conf->gpus,
>> KMSCON_GPU_ALL),
>> +
>>  ^~~~~~~~~~~~~~
>> +1 error generated.
>> +```
>> +
>> +Fix the error by adding a cast to (void *).
>> +
>> +Upstream-Status: Submitted [https://github.com/kmscon/kmscon/pull/225]
>> +Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
>> +---
>> + src/kmscon_conf.c | 2 +-
>> + 1 file changed, 1 insertion(+), 1 deletion(-)
>> +
>> +diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c
>> +index df2e51d..9e9a839 100644
>> +--- a/src/kmscon_conf.c
>> ++++ b/src/kmscon_conf.c
>> +@@ -754,7 +754,7 @@ int kmscon_conf_new(struct conf_ctx **out)
>> +               /* Video Options */
>> +               CONF_OPTION_BOOL_FULL(0, "drm", aftercheck_drm, NULL,
>> NULL, &conf->drm, true),
>> +               CONF_OPTION_BOOL(0, "hwaccel", &conf->hwaccel, false),
>> +-              CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL,
>> &conf->gpus, KMSCON_GPU_ALL),
>> ++              CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL,
>> &conf->gpus, (void *)KMSCON_GPU_ALL),
>> +               CONF_OPTION_STRING(0, "render-engine",
>> &conf->render_engine, NULL),
>> +               CONF_OPTION_BOOL(0, "use-original-mode",
>> &conf->use_original_mode, true),
>> +               CONF_OPTION_STRING(0, "mode", &conf->mode, NULL),
>> +--
>> +2.52.0
>> +
>> diff --git a/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
>> b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
>> new file mode 100644
>> index 0000000000..925bebee81
>> --- /dev/null
>> +++ b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
>> @@ -0,0 +1,66 @@
>> +SUMMARY = "Simple terminal emulator based on linux kernel mode setting
>> (KMS)."
>> +DESCRIPTION = "\
>> +    Kmscon is a simple terminal emulator based on linux kernel mode
>> setting \
>> +    (KMS). It is an attempt to replace the in-kernel VT implementation
>> with \
>> +    a userspace console. \
>> +"
>> +HOMEPAGE = "https://github.com/kmscon/kmscon"
>> +BUGTRACKER = "https://github.com/kmscon/kmscon/issues"
>> +CVE_PRODUCT = "kmscon"
>> +
>> +SECTION = "graphics"
>> +
>> +LICENSE = "MIT"
>> +LIC_FILES_CHKSUM = "file://COPYING;md5=6d4602d249f8a3401040238e98367d9e"
>> +
>> +DEPENDS = "\
>> +    libtsm \
>> +    libxkbcommon \
>> +    udev \
>> +"
>> +
>> +SRC_URI = "\
>> +    git://github.com/kmscon/kmscon;branch=main;protocol=https \
>> +    file://0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch \
>> +"
>> +SRCREV = "7d46650dbb0826f9b89de42f879be879391c14fd"
>> +
>> +inherit meson pkgconfig systemd
>> +
>> +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
>> +
>> +PACKAGECONFIG[backspace_sends_delete] = "-Dbackspace_sends_delete=true,
>> -Dbackspace_sends_delete=false"
>> +PACKAGECONFIG[font_pango] = "-Dfont_pango=enabled,
>> -Dfont_pango=disabled, pango"
>> +PACKAGECONFIG[multi_seat] = "-Dmulti_seat=enabled,
>> -Dmulti_seat=disabled, systemd"
>> +PACKAGECONFIG[opengl] = "-Drenderer_gltex=enabled -Dvideo_drm3d=enabled,
>> -Drenderer_gltex=disabled -Dvideo_drm3d=disabled, libdrm virtual/egl
>> virtual/libgles2 virtual/libgbm"
>> +PACKAGECONFIG[video_drm2d] = "-Dvideo_drm2d=enabled,
>> -Dvideo_drm2d=disabled, libdrm"
>> +
>> +EXTRA_OEMESON = "\
>> +    -Delogind=disabled \
>> +    -Dextra_debug=false \
>> +    -Dfont_unifont=enabled \
>> +    -Dsession_dummy=enabled \
>> +    -Dsession_terminal=enabled \
>> +    -Dtests=false \
>> +    -Dvideo_fbdev=enabled \
>> +"
>> +
>> +SYSTEMD_SERVICE:${PN} = "kmscon.service"
>> +FILES:${PN} += "${systemd_system_unitdir}/kmsconvt@.service"
>> +
>> +do_install:append() {
>> +    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true',
>> 'false', d)}; then
>> +        install -d ${D}${sysconfdir}/systemd/system
>> +        ln -sf ${systemd_system_unitdir}/kmsconvt@.service \
>> +            ${D}${sysconfdir}/systemd/system/autovt@.service
>> +    fi
>> +
>> +    if ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'true', 'false',
>> d)}; then
>> +        sed -e "s@#drm@drm@g" \
>> +            -e "s@#hwaccel@hwaccel@g" \
>> +            -e "s@#render-engine=gltex@render-engine=gltex@g" \
>> +            -i ${D}${sysconfdir}/kmscon/kmscon.conf
>> +    fi
>> +}
>> +
>> +RDEPENDS:${PN} = "xkeyboard-config"
>> --
>> 2.52.0
>>
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#123531):
>> https://lists.openembedded.org/g/openembedded-devel/message/123531
>> Mute This Topic: https://lists.openembedded.org/mt/117295606/1997914
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
>> raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
>>
diff mbox series

Patch

diff --git a/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
new file mode 100644
index 0000000000..0806f9bb04
--- /dev/null
+++ b/meta-oe/recipes-graphics/kmscon/files/0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch
@@ -0,0 +1,40 @@ 
+From 03a330d486132e3798a125d26d4f10252ffd8e2d Mon Sep 17 00:00:00 2001
+From: Adam Duskett <adam.duskett@amarulasolutions.com>
+Date: Fri, 16 Jan 2026 11:35:39 +0100
+Subject: [PATCH] kmscon_conf.c: Fix llvm compilation failure
+
+When building with an LLVM toolchain, the follow error occurs:
+
+```
+kmscon_conf.c:757:72:
+error: expression which evaluates to zero treated as a null pointer constant
+of type 'void *' [-Werror,-Wnon-literal-null-conversion]
+CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL, &conf->gpus, KMSCON_GPU_ALL),
+                                                                     ^~~~~~~~~~~~~~
+1 error generated.
+```
+
+Fix the error by adding a cast to (void *).
+
+Upstream-Status: Submitted [https://github.com/kmscon/kmscon/pull/225]
+Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
+---
+ src/kmscon_conf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kmscon_conf.c b/src/kmscon_conf.c
+index df2e51d..9e9a839 100644
+--- a/src/kmscon_conf.c
++++ b/src/kmscon_conf.c
+@@ -754,7 +754,7 @@ int kmscon_conf_new(struct conf_ctx **out)
+ 		/* Video Options */
+ 		CONF_OPTION_BOOL_FULL(0, "drm", aftercheck_drm, NULL, NULL, &conf->drm, true),
+ 		CONF_OPTION_BOOL(0, "hwaccel", &conf->hwaccel, false),
+-		CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL, &conf->gpus, KMSCON_GPU_ALL),
++		CONF_OPTION(0, 0, "gpus", &conf_gpus, NULL, NULL, NULL, &conf->gpus, (void *)KMSCON_GPU_ALL),
+ 		CONF_OPTION_STRING(0, "render-engine", &conf->render_engine, NULL),
+ 		CONF_OPTION_BOOL(0, "use-original-mode", &conf->use_original_mode, true),
+ 		CONF_OPTION_STRING(0, "mode", &conf->mode, NULL),
+-- 
+2.52.0
+
diff --git a/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
new file mode 100644
index 0000000000..925bebee81
--- /dev/null
+++ b/meta-oe/recipes-graphics/kmscon/kmscon_9.2.1.bb
@@ -0,0 +1,66 @@ 
+SUMMARY = "Simple terminal emulator based on linux kernel mode setting (KMS)."
+DESCRIPTION = "\
+    Kmscon is a simple terminal emulator based on linux kernel mode setting \
+    (KMS). It is an attempt to replace the in-kernel VT implementation with \
+    a userspace console. \
+"
+HOMEPAGE = "https://github.com/kmscon/kmscon"
+BUGTRACKER = "https://github.com/kmscon/kmscon/issues"
+CVE_PRODUCT = "kmscon"
+
+SECTION = "graphics"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6d4602d249f8a3401040238e98367d9e"
+
+DEPENDS = "\
+    libtsm \
+    libxkbcommon \
+    udev \
+"
+
+SRC_URI = "\
+    git://github.com/kmscon/kmscon;branch=main;protocol=https \
+    file://0001-kmscon_conf.c-Fix-llvm-compilation-failure.patch \
+"
+SRCREV = "7d46650dbb0826f9b89de42f879be879391c14fd"
+
+inherit meson pkgconfig systemd
+
+PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl', d)}"
+
+PACKAGECONFIG[backspace_sends_delete] = "-Dbackspace_sends_delete=true, -Dbackspace_sends_delete=false"
+PACKAGECONFIG[font_pango] = "-Dfont_pango=enabled, -Dfont_pango=disabled, pango"
+PACKAGECONFIG[multi_seat] = "-Dmulti_seat=enabled, -Dmulti_seat=disabled, systemd"
+PACKAGECONFIG[opengl] = "-Drenderer_gltex=enabled -Dvideo_drm3d=enabled, -Drenderer_gltex=disabled -Dvideo_drm3d=disabled, libdrm virtual/egl virtual/libgles2 virtual/libgbm"
+PACKAGECONFIG[video_drm2d] = "-Dvideo_drm2d=enabled, -Dvideo_drm2d=disabled, libdrm"
+
+EXTRA_OEMESON = "\
+    -Delogind=disabled \
+    -Dextra_debug=false \
+    -Dfont_unifont=enabled \
+    -Dsession_dummy=enabled \
+    -Dsession_terminal=enabled \
+    -Dtests=false \
+    -Dvideo_fbdev=enabled \
+"
+
+SYSTEMD_SERVICE:${PN} = "kmscon.service"
+FILES:${PN} += "${systemd_system_unitdir}/kmsconvt@.service"
+
+do_install:append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+        install -d ${D}${sysconfdir}/systemd/system
+        ln -sf ${systemd_system_unitdir}/kmsconvt@.service \
+            ${D}${sysconfdir}/systemd/system/autovt@.service
+    fi
+
+    if ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'true', 'false', d)}; then
+        sed -e "s@#drm@drm@g" \
+            -e "s@#hwaccel@hwaccel@g" \
+            -e "s@#render-engine=gltex@render-engine=gltex@g" \
+            -i ${D}${sysconfdir}/kmscon/kmscon.conf
+    fi
+}
+
+RDEPENDS:${PN} = "xkeyboard-config"