* [Buildroot] [PATCH] package/catch2: bump to version 3.15.0
From: Michael Nosthoff via buildroot @ 2026-06-08 7:54 UTC (permalink / raw)
To: buildroot
changelog:
https://github.com/catchorg/Catch2/releases/tag/v3.15.0
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
---
package/catch2/catch2.hash | 2 +-
package/catch2/catch2.mk | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/catch2/catch2.hash b/package/catch2/catch2.hash
index b8fc434ffa..31f83a140e 100644
--- a/package/catch2/catch2.hash
+++ b/package/catch2/catch2.hash
@@ -1,3 +1,3 @@
# Locally computed:
-sha256 ba2a939efead3c833c499cf487e185762f419a71d30158cd1b43c6079c586490 catch2-3.14.0.tar.gz
+sha256 9650c55e497759cc39b977e45524bc8acb15256061c112080916ab6cb0b1ea66 catch2-3.15.0.tar.gz
sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE.txt
diff --git a/package/catch2/catch2.mk b/package/catch2/catch2.mk
index 58c64af55e..4c08cb4192 100644
--- a/package/catch2/catch2.mk
+++ b/package/catch2/catch2.mk
@@ -4,7 +4,7 @@
#
################################################################################
-CATCH2_VERSION = 3.14.0
+CATCH2_VERSION = 3.15.0
CATCH2_SITE = $(call github,catchorg,Catch2,v$(CATCH2_VERSION))
CATCH2_INSTALL_STAGING = YES
CATCH2_INSTALL_TARGET = NO
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH next] package/sdbus-cpp: bump to version 2.3.1
From: Michael Nosthoff via buildroot @ 2026-06-08 7:42 UTC (permalink / raw)
To: buildroot; +Cc: Sergey Bobrenok
fixes an ABI break in 2.3.0
changelog:
https://github.com/Kistler-Group/sdbus-cpp/releases/tag/v2.3.1
Signed-off-by: Michael Nosthoff <buildroot@heine.tech>
---
package/sdbus-cpp/sdbus-cpp.hash | 2 +-
package/sdbus-cpp/sdbus-cpp.mk | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/sdbus-cpp/sdbus-cpp.hash b/package/sdbus-cpp/sdbus-cpp.hash
index db1c5d5fee..839757cdcb 100644
--- a/package/sdbus-cpp/sdbus-cpp.hash
+++ b/package/sdbus-cpp/sdbus-cpp.hash
@@ -1,4 +1,4 @@
# Locally computed:
-sha256 8c01d28fa7b1a973d7a9cfdfd65480e733a52172506eaa1fea225b681590fe3c sdbus-cpp-2.3.0.tar.gz
+sha256 3a289eded586c26d06c1387de72c7bf7c809527a70d51ba6401fe61059b19626 sdbus-cpp-2.3.1.tar.gz
sha256 20c17d8b8c48a600800dfd14f95d5cb9ff47066a9641ddeab48dc54aec96e331 COPYING
sha256 a1c9e75e25d8f2ce18017c88978edab2f0dbc7814ad0697d4ff2e5e59959f657 COPYING-LGPL-Exception
diff --git a/package/sdbus-cpp/sdbus-cpp.mk b/package/sdbus-cpp/sdbus-cpp.mk
index d8743c66b3..ad5f999c5c 100644
--- a/package/sdbus-cpp/sdbus-cpp.mk
+++ b/package/sdbus-cpp/sdbus-cpp.mk
@@ -4,7 +4,7 @@
#
################################################################################
-SDBUS_CPP_VERSION = 2.3.0
+SDBUS_CPP_VERSION = 2.3.1
SDBUS_CPP_SITE = $(call github,Kistler-Group,sdbus-cpp,v$(SDBUS_CPP_VERSION))
SDBUS_CPP_INSTALL_STAGING = YES
SDBUS_CPP_DEPENDENCIES = host-pkgconf systemd
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 7/7] support/testing: add virglrenderer test
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
Add basic smoke test for glmark2 running in a nested qemu guest with
virtio-gpu-gl-pci.
The outer machine uses the Mesa softpipe driver for GLES support with
minimal dependencies. Just test virgl for now, as lavapipe
(software Vulkan driver) requires LLVM, and this validates
virglrenderer.
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
DEVELOPERS | 1 +
.../testing/tests/package/test_virglrenderer.py | 159 +++++++++++++++++++++
.../test_virglrenderer/linux-inner.fragment | 4 +
.../test_virglrenderer/linux-outer.fragment | 6 +
.../rootfs-overlay/etc/profile.d/stty-raw.sh | 3 +
5 files changed, 173 insertions(+)
diff --git a/DEVELOPERS b/DEVELOPERS
index e3f0b2a562..91dd259844 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1773,6 +1773,7 @@ F: package/sentry-cli/
F: package/sentry-native/
F: package/unclutter-xfixes/
F: package/virglrenderer/
+F: support/testing/tests/package/test_virglrenderer.py
N: Joshua Henderson <joshua.henderson@microchip.com>
F: package/qt5/qt5wayland/
diff --git a/support/testing/tests/package/test_virglrenderer.py b/support/testing/tests/package/test_virglrenderer.py
new file mode 100644
index 0000000000..61a8b3b91c
--- /dev/null
+++ b/support/testing/tests/package/test_virglrenderer.py
@@ -0,0 +1,159 @@
+import os
+
+import infra
+import infra.basetest
+from infra.builder import Builder
+
+
+class TestVirglrendererNestedQemu(infra.basetest.BRTest):
+ outer_kern_frag = \
+ infra.filepath("tests/package/test_virglrenderer/linux-outer.fragment")
+ inner_kern_frag = \
+ infra.filepath("tests/package/test_virglrenderer/linux-inner.fragment")
+ rootfs_overlay = \
+ infra.filepath("tests/package/test_virglrenderer/rootfs-overlay")
+
+ # Softpipe has no hardware dependencies and does not pull LLVM into the
+ # outer build, unlike llvmpipe/lavapipe.
+ config = \
+ f"""
+ BR2_aarch64=y
+ BR2_TOOLCHAIN_EXTERNAL=y
+ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+ BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
+ BR2_LINUX_KERNEL=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.21"
+ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
+ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{outer_kern_frag}"
+ BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
+ BR2_PACKAGE_LIBGLVND=y
+ BR2_PACKAGE_MESA3D=y
+ BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE=y
+ BR2_PACKAGE_MESA3D_OPENGL_EGL=y
+ BR2_PACKAGE_QEMU=y
+ BR2_PACKAGE_QEMU_SYSTEM=y
+ # BR2_PACKAGE_QEMU_SYSTEM_KVM is not set
+ BR2_PACKAGE_QEMU_SYSTEM_TCG=y
+ # BR2_PACKAGE_QEMU_BLOBS is not set
+ BR2_PACKAGE_QEMU_CHOOSE_TARGETS=y
+ BR2_PACKAGE_QEMU_TARGET_AARCH64=y
+ BR2_PACKAGE_QEMU_VIRGLRENDERER=y
+ BR2_TARGET_ROOTFS_INITRAMFS=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ """
+
+ inner_config = \
+ f"""
+ BR2_aarch64=y
+ BR2_TOOLCHAIN_EXTERNAL=y
+ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+ BR2_ROOTFS_OVERLAY="{rootfs_overlay}"
+ BR2_LINUX_KERNEL=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.18.21"
+ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
+ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="{inner_kern_frag}"
+ BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y
+ BR2_PACKAGE_KMSCUBE=y
+ BR2_PACKAGE_LIBDRM=y
+ BR2_PACKAGE_LIBGLVND=y
+ BR2_PACKAGE_MESA3D=y
+ BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL=y
+ BR2_PACKAGE_MESA3D_OPENGL_EGL=y
+ BR2_PACKAGE_MESA3D_OPENGL_ES=y
+ BR2_TARGET_ROOTFS_CPIO=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ """
+
+ def setUp(self):
+ self.inner_builder = None
+ super().setUp()
+
+ self.inner_builddir = os.path.join(self.outputdir,
+ f"{self.testname}-inner")
+ config = self.inner_config
+ config += f'\nBR2_DL_DIR="{self.downloaddir}"\n'
+ config += f"\nBR2_JLEVEL={self.jlevel}\n"
+ self.inner_builder = Builder(config, self.inner_builddir,
+ self.logtofile, self.jlevel)
+
+ if not self.keepbuilds:
+ self.inner_builder.delete()
+
+ if not self.inner_builder.is_finished():
+ self.show_msg("Building inner")
+ self.inner_builder.configure(
+ make_extra_opts=[f"BR2_EXTERNAL={':'.join(self.br2_external)}"])
+ self.inner_builder.build()
+ self.show_msg("Building inner done")
+
+ def tearDown(self):
+ try:
+ super().tearDown()
+ finally:
+ if self.inner_builder and not self.keepbuilds:
+ self.inner_builder.delete()
+
+ def boot_outer(self):
+ kern = os.path.join(self.builddir, "images", "Image")
+ inner_img_dir = os.path.join(self.inner_builddir, "images")
+ virtfs_tag = "br-inner"
+ virtfs_opts = [
+ f"local,path={inner_img_dir}",
+ f"mount_tag={virtfs_tag}",
+ "security_model=mapped-xattr",
+ "readonly=on"
+ ]
+ self.emulator.boot(arch="aarch64",
+ kernel=kern,
+ kernel_cmdline=["console=ttyAMA0"],
+ options=["-M", "virt",
+ "-cpu", "cortex-a57",
+ "-m", "1536M",
+ "-smp", "4",
+ "-vga", "none",
+ "-virtfs", ",".join(virtfs_opts)])
+ self.emulator.login()
+ self.assertRunOk(f"mount -t 9p {virtfs_tag} /mnt/")
+
+ def boot_inner(self):
+ qemu_cmd = "env LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=softpipe"
+ qemu_cmd += " qemu-system-aarch64"
+ qemu_cmd += " -M virt,accel=tcg"
+ qemu_cmd += " -cpu cortex-a57"
+ qemu_cmd += " -m 512M"
+ qemu_cmd += " -nodefaults"
+ qemu_cmd += " -display egl-headless,gl=on"
+ qemu_cmd += " -device virtio-gpu-gl-pci"
+ qemu_cmd += " -serial stdio"
+ qemu_cmd += " -kernel /mnt/Image"
+ qemu_cmd += " -initrd /mnt/rootfs.cpio"
+ qemu_cmd += " -append 'console=ttyAMA0 br-inner-virgl'"
+
+ # qemu runs in the foreground on the current serial console. Once it
+ # starts, the next login prompt belongs to the inner guest.
+ self.emulator.qemu.sendline(qemu_cmd)
+ self.emulator.login(timeout=180)
+
+ def test_run(self):
+ self.boot_outer()
+ self.assertRunOk("while [ ! -e /dev/dri/renderD128 ]; do sleep 1; done",
+ timeout=30)
+
+ self.boot_inner()
+
+ out, ret = self.emulator.run("cat /proc/cmdline")
+ self.assertEqual(ret, 0)
+ self.assertIn("br-inner-virgl", out[0])
+
+ cmd = "env MESA_LOADER_DRIVER_OVERRIDE=virtio_gpu"
+ cmd += " kmscube --vmode=640x480 --count=10"
+ out, ret = self.emulator.run(cmd, timeout=60)
+ self.assertEqual(ret, 0)
+
+ renderer = "\n".join([line for line in out
+ if line.strip().startswith("renderer:")])
+ self.assertRegex(renderer, r'(?i)renderer:\s*"virgl \(softpipe\)"')
diff --git a/support/testing/tests/package/test_virglrenderer/linux-inner.fragment b/support/testing/tests/package/test_virglrenderer/linux-inner.fragment
new file mode 100644
index 0000000000..f2a6b539f7
--- /dev/null
+++ b/support/testing/tests/package/test_virglrenderer/linux-inner.fragment
@@ -0,0 +1,4 @@
+CONFIG_BLK_DEV_INITRD=y
+# The inner guest runs kmscube against the virgl renderer exposed by QEMU.
+CONFIG_DRM=y
+CONFIG_DRM_VIRTIO_GPU=y
diff --git a/support/testing/tests/package/test_virglrenderer/linux-outer.fragment b/support/testing/tests/package/test_virglrenderer/linux-outer.fragment
new file mode 100644
index 0000000000..1023aedc6f
--- /dev/null
+++ b/support/testing/tests/package/test_virglrenderer/linux-outer.fragment
@@ -0,0 +1,6 @@
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_DRM_VGEM=y
+CONFIG_NET_9P=y
+CONFIG_NET_9P_VIRTIO=y
+CONFIG_9P_FS=y
+CONFIG_9P_FS_POSIX_ACL=y
diff --git a/support/testing/tests/package/test_virglrenderer/rootfs-overlay/etc/profile.d/stty-raw.sh b/support/testing/tests/package/test_virglrenderer/rootfs-overlay/etc/profile.d/stty-raw.sh
new file mode 100644
index 0000000000..4427e5a143
--- /dev/null
+++ b/support/testing/tests/package/test_virglrenderer/rootfs-overlay/etc/profile.d/stty-raw.sh
@@ -0,0 +1,3 @@
+# Avoid double-cooking the inner serial console, otherwise the test
+# infrastructure cannot reliably retrieve return codes.
+grep -Fq br-inner-virgl /proc/cmdline && stty raw
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 6/7] package/qemu: add virglrenderer integration
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
Add optional virglrenderer integration, along with enabling OpenGL when
necessary.
https://qemu.readthedocs.io/en/v10.0.3/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
package/qemu/Config.in | 21 +++++++++++++++++++++
package/qemu/qemu.mk | 7 +++++++
2 files changed, 28 insertions(+)
diff --git a/package/qemu/Config.in b/package/qemu/Config.in
index 8e932c014f..bfb8ccea88 100644
--- a/package/qemu/Config.in
+++ b/package/qemu/Config.in
@@ -126,6 +126,27 @@ config BR2_PACKAGE_QEMU_OPENGL
comment "OpenGL support needs an OpenGL and/or OpenGL EGL backend"
depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
+config BR2_PACKAGE_QEMU_VIRGLRENDERER
+ bool "Enable virglrenderer"
+ depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL
+ select BR2_PACKAGE_QEMU_OPENGL
+ select BR2_PACKAGE_VIRGLRENDERER
+ help
+ Say 'y' to enable qemu support for virglrenderer.
+ virglrenderer backends such as virgl, venus, or DRM native
+ context are configured under the virglrenderer package.
+
+ Run qemu with `-device virtio-gpu-gl`
+
+ https://qemu.readthedocs.io/en/v10.0.3/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer
+
+comment "virglrenderer needs OpenGL accelerated display frontend support"
+ depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
+
+comment "virglrenderer needs virgl, venus, or a DRM backend for guest acceleration"
+ depends on BR2_PACKAGE_QEMU_VIRGLRENDERER
+ depends on !BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+
config BR2_PACKAGE_QEMU_FDT
bool "Enable FDT"
select BR2_PACKAGE_DTC
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index aff1762fb9..4f4786532c 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -279,6 +279,13 @@ else
QEMU_OPTS += --disable-opengl
endif
+ifeq ($(BR2_PACKAGE_QEMU_VIRGLRENDERER),y)
+QEMU_OPTS += --enable-virglrenderer
+QEMU_DEPENDENCIES += virglrenderer
+else
+QEMU_OPTS += --disable-virglrenderer
+endif
+
ifeq ($(BR2_STATIC_LIBS),y)
QEMU_OPTS += --static
endif
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 5/7] package/qemu: add OpenGL config
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
Acked-by: Arnout Vandecappelle <arnout@rnout.be>
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
package/qemu/Config.in | 14 ++++++++++++++
package/qemu/qemu.mk | 8 +++++++-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/package/qemu/Config.in b/package/qemu/Config.in
index 2a6aa288d3..8e932c014f 100644
--- a/package/qemu/Config.in
+++ b/package/qemu/Config.in
@@ -112,6 +112,20 @@ config BR2_PACKAGE_QEMU_SDL
Say 'y' to enable the SDL frontend, that is, a graphical
window presenting the VM's display.
+config BR2_PACKAGE_QEMU_OPENGL
+ bool "Enable OpenGL"
+ depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL
+ select BR2_PACKAGE_LIBEPOXY
+ help
+ Say 'y' to enable OpenGL accelerated display frontend support.
+ This is necessary to efficiently display frames rendered in a
+ guest on the host.
+
+ Run qemu with `-display sdl,gl=on`
+
+comment "OpenGL support needs an OpenGL and/or OpenGL EGL backend"
+ depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL)
+
config BR2_PACKAGE_QEMU_FDT
bool "Enable FDT"
select BR2_PACKAGE_DTC
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 2199db38cf..aff1762fb9 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -272,6 +272,13 @@ else
QEMU_OPTS += --disable-usb-redir
endif
+ifeq ($(BR2_PACKAGE_QEMU_OPENGL),y)
+QEMU_OPTS += --enable-opengl
+QEMU_DEPENDENCIES += libepoxy
+else
+QEMU_OPTS += --disable-opengl
+endif
+
ifeq ($(BR2_STATIC_LIBS),y)
QEMU_OPTS += --static
endif
@@ -329,7 +336,6 @@ define QEMU_CONFIGURE_CMDS
--disable-membarrier \
--disable-mpath \
--disable-netmap \
- --disable-opengl \
--disable-oss \
--disable-pa \
--disable-plugins \
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 4/7] package/virglrenderer: new package
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
Add virglrenderer, an optional dependency of QEMU, which facilitates
acceleration of rendering and optionally video decode through
virtio-gpu.
Add an upstream patch to fix the build with glibc 2.43, not present in a
stable release yet.
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
DEVELOPERS | 1 +
package/Config.in | 1 +
.../0001-fix-build-with-glibc-2.43.patch | 39 +++++++
package/virglrenderer/Config.in | 114 +++++++++++++++++++++
package/virglrenderer/virglrenderer.hash | 5 +
package/virglrenderer/virglrenderer.mk | 62 +++++++++++
6 files changed, 222 insertions(+)
diff --git a/DEVELOPERS b/DEVELOPERS
index c71640b6b5..e3f0b2a562 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1772,6 +1772,7 @@ F: package/python-xlib/
F: package/sentry-cli/
F: package/sentry-native/
F: package/unclutter-xfixes/
+F: package/virglrenderer/
N: Joshua Henderson <joshua.henderson@microchip.com>
F: package/qt5/qt5wayland/
diff --git a/package/Config.in b/package/Config.in
index 166b666ad8..cf67c7cc1a 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -365,6 +365,7 @@ comment "Graphic libraries"
source "package/sdl2_ttf/Config.in"
source "package/spirv-headers/Config.in"
source "package/tk/Config.in"
+ source "package/virglrenderer/Config.in"
source "package/vulkan-headers/Config.in"
source "package/vulkan-loader/Config.in"
source "package/vulkan-sdk/Config.in"
diff --git a/package/virglrenderer/0001-fix-build-with-glibc-2.43.patch b/package/virglrenderer/0001-fix-build-with-glibc-2.43.patch
new file mode 100644
index 0000000000..fda1d9b218
--- /dev/null
+++ b/package/virglrenderer/0001-fix-build-with-glibc-2.43.patch
@@ -0,0 +1,39 @@
+From 986b5fc57b07c06b5e0b3a3694d06898ebc80163 Mon Sep 17 00:00:00 2001
+From: Maximilian Hofmann <maxi@maxiicodes.dev>
+Date: Thu, 26 Feb 2026 23:28:58 +0100
+Subject: [PATCH] fix: build with glibc 2.43
+
+Several glibc functions now return a const pointer if the input is a
+const pointer and a non-const pointer if the input is non-const, causing
+a build failure.
+
+Fix this by declaring the output pointers as const if they are never
+modified, and for the lone failure where the output is modified, instead
+make the input non-const.
+
+Signed-off-by: Maximilian Hofmann <maxi@maxiicodes.dev>
+Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1599>
+
+Upstream: https://gitlab.freedesktop.org/virgl/virglrenderer/-/commit/986b5fc57b07c06b5e0b3a3694d06898ebc80163
+
+Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
+---
+ src/gallium/auxiliary/tgsi/tgsi_text.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
+index db7d7b95..7e37bf79 100644
+--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
++++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
+@@ -84,7 +84,7 @@ streq_nocase_uprcase(const char *str1,
+ static inline bool skip_n_chars(const char **pcur,
+ int n)
+ {
+- char* str = memchr(*pcur, '\0', n);
++ const char* str = memchr(*pcur, '\0', n);
+ if (unlikely(str)) {
+ *pcur = str;
+ return false;
+--
+2.53.0
+
diff --git a/package/virglrenderer/Config.in b/package/virglrenderer/Config.in
new file mode 100644
index 0000000000..a60ae15b6c
--- /dev/null
+++ b/package/virglrenderer/Config.in
@@ -0,0 +1,114 @@
+config BR2_PACKAGE_VIRGLRENDERER
+ bool "virglrenderer"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 # needs gcc >= 4.1 for __sync builtins
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_USE_MMU # fork()
+ select BR2_PACKAGE_LIBEPOXY
+ help
+ A library for accelerated graphics and compute in
+ virtual machines.
+
+ A backend must be selected to enable guest acceleration.
+
+ https://qemu.readthedocs.io/en/v10.0.3/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer
+
+if BR2_PACKAGE_VIRGLRENDERER
+
+config BR2_PACKAGE_VIRGLRENDERER_VIRGL
+ bool "virgl"
+ default y
+ depends on (BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGBM) \
+ || BR2_PACKAGE_HAS_LIBGL
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ help
+ Enable API-level OpenGL acceleration over virtio-gpu.
+
+ Requires the host to support OpenGL.
+
+ https://docs.mesa3d.org/drivers/virgl.html
+
+comment "virgl needs OpenGL or OpenGL EGL and libgbm"
+ depends on !((BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGBM) \
+ || BR2_PACKAGE_HAS_LIBGL)
+
+config BR2_PACKAGE_VIRGLRENDERER_VENUS
+ bool "venus"
+ default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER
+ depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader
+ depends on !BR2_STATIC_LIBS # vulkan-loader
+ depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ select BR2_PACKAGE_VULKAN_HEADERS
+ select BR2_PACKAGE_VULKAN_LOADER
+ help
+ Enable API-level Vulkan acceleration over virtio-gpu.
+
+ Requires the host to support Vulkan.
+
+ https://docs.mesa3d.org/drivers/venus.html
+
+comment "DRM backends"
+
+config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_AMDGPU
+ bool "amdgpu"
+ default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI
+ default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ select BR2_PACKAGE_LIBDRM
+ select BR2_PACKAGE_LIBDRM_AMDGPU
+ help
+ Enable DRM backend for amdgpu, used by Gallium radeonsi
+ and RADV vulkan drivers.
+
+config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_INTEL
+ bool "intel"
+ default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915
+ default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
+ default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ select BR2_PACKAGE_LIBDRM
+ help
+ Enable DRM backend for i915, used by Gallium i915/Iris
+ and Intel vulkan drivers.
+
+config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_MSM
+ bool "msm"
+ default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
+ depends on !BR2_arm
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ select BR2_PACKAGE_LIBDRM
+ help
+ Enable DRM backend for msm, used by Gallium freedreno
+ driver.
+
+config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_PANFROST
+ bool "panfrost"
+ default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
+ default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_PANFROST
+ select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ select BR2_PACKAGE_LIBDRM
+ help
+ Enable DRM backend for Panfrost, used by the panfrost
+ Gallium/vulkan drivers.
+
+comment "Other options"
+
+comment "vaapi support needs libgbm with dma-buf"
+ depends on !BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
+
+config BR2_PACKAGE_VIRGLRENDERER_VAAPI
+ bool "vaapi support"
+ depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
+ select BR2_PACKAGE_LIBDRM
+ select BR2_PACKAGE_LIBVA
+ help
+ Enable hardware accelerated video encode/decode through
+ libva over virtio-gpu.
+
+endif
+
+comment "virglrenderer needs a toolchain w/ gcc >= 4.9"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
+config BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
+ bool
diff --git a/package/virglrenderer/virglrenderer.hash b/package/virglrenderer/virglrenderer.hash
new file mode 100644
index 0000000000..03da595091
--- /dev/null
+++ b/package/virglrenderer/virglrenderer.hash
@@ -0,0 +1,5 @@
+# Locally calculated
+sha256 065bc56e89e6f631f96101cd62eba0748e48eb888b434edc86e89d05395e76f3 virglrenderer-1.3.0.tar.gz
+
+# License
+sha256 3b32caf16e2402c2aff2b716858713f3e1feded85c25e71bf829816ee5009402 COPYING
diff --git a/package/virglrenderer/virglrenderer.mk b/package/virglrenderer/virglrenderer.mk
new file mode 100644
index 0000000000..835390919e
--- /dev/null
+++ b/package/virglrenderer/virglrenderer.mk
@@ -0,0 +1,62 @@
+################################################################################
+#
+# virglrenderer
+#
+################################################################################
+
+VIRGLRENDERER_VERSION = 1.3.0
+VIRGLRENDERER_SITE = https://gitlab.freedesktop.org/virgl/virglrenderer/-/archive/$(VIRGLRENDERER_VERSION)
+VIRGLRENDERER_LICENSE = MIT
+VIRGLRENDERER_LICENSE_FILES = COPYING
+VIRGLRENDERER_INSTALL_STAGING = YES
+VIRGLRENDERER_DEPENDENCIES = \
+ libepoxy \
+ host-pkgconf \
+ host-python3 \
+ host-python-pyyaml
+VIRGLRENDERER_CPE_ID_VALID = YES
+
+ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VIRGL),y)
+ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGBM),yy)
+VIRGLRENDERER_PLATFORMS += egl
+VIRGLRENDERER_DEPENDENCIES += \
+ libegl \
+ libgbm
+endif
+
+ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
+VIRGLRENDERER_PLATFORMS += glx
+VIRGLRENDERER_DEPENDENCIES += libgl
+endif
+endif # BR2_PACKAGE_VIRGLRENDERER_VIRGL
+
+VIRGLRENDERER_CONF_OPTS += -Dplatforms=$(subst $(space),$(comma),$(VIRGLRENDERER_PLATFORMS))
+
+ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VENUS),y)
+VIRGLRENDERER_CONF_OPTS += -Dvenus=true
+VIRGLRENDERER_DEPENDENCIES += \
+ vulkan-headers \
+ vulkan-loader
+else
+VIRGLRENDERER_CONF_OPTS += -Dvenus=false
+endif
+
+VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_AMDGPU) += amdgpu-experimental
+VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_INTEL) += i915-experimental
+VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_MSM) += msm
+VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_PANFROST) += panfrost-experimental
+
+VIRGLRENDERER_CONF_OPTS += -Ddrm-renderers=$(subst $(space),$(comma),$(VIRGLRENDERER_DRM_BACKENDS-y))
+
+ifneq ($(VIRGLRENDERER_DRM_BACKENDS-y),)
+VIRGLRENDERER_DEPENDENCIES += libdrm
+endif
+
+ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VAAPI),y)
+VIRGLRENDERER_CONF_OPTS += -Dvideo=true
+VIRGLRENDERER_DEPENDENCIES += libva libdrm
+else
+VIRGLRENDERER_CONF_OPTS += -Dvideo=false
+endif
+
+$(eval $(meson-package))
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 1/7] package/weston: add EGL dependency for XWayland
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
BR2_PACKAGE_WESTON_XWAYLAND currently depends on BR2_PACKAGE_LIBEPOXY,
which implicitly requires either libGL or libEGL. However, the XWayland
glamor support uses libepoxy with EGL, so express that dependency
directly. With only libGL and no libEGL, it fails to build. E.g.,
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV=y
BR2_PACKAGE_MESA3D_OPENGL_GLX=y
BR2_PACKAGE_XORG7=y
BR2_PACKAGE_XWAYLAND=y
BR2_PACKAGE_LIBEPOXY=y
fails with:
In file included from ../glamor/glamor_priv.h:73,
from ../glamor/glamor_composite_glyphs.c:25:
../glamor/glamor_context.h:27:10: fatal error: epoxy/egl.h: No such file or directory
27 | #include <epoxy/egl.h>
| ^~~~~~~~~~~~~
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
---
package/weston/Config.in | 6 ++++--
package/x11r7/xwayland/xwayland.mk | 2 +-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/package/weston/Config.in b/package/weston/Config.in
index 774b75d5fb..6f61c3c561 100644
--- a/package/weston/Config.in
+++ b/package/weston/Config.in
@@ -123,6 +123,7 @@ comment "X11 (nested) compositor needs X.org enabled"
config BR2_PACKAGE_WESTON_XWAYLAND
bool "XWayland support"
+ depends on BR2_PACKAGE_HAS_LIBEGL
depends on BR2_PACKAGE_LIBEPOXY
depends on BR2_PACKAGE_XORG7 # xwayland
depends on BR2_USE_MMU # xwayland
@@ -136,8 +137,9 @@ config BR2_PACKAGE_WESTON_XWAYLAND
select BR2_PACKAGE_XLIB_LIBXCURSOR
select BR2_PACKAGE_XWAYLAND
-comment "XWayland support needs libepoxy and X.org enabled"
- depends on !BR2_PACKAGE_XORG7 || !BR2_PACKAGE_LIBEPOXY
+comment "XWayland support needs libepoxy w/ EGL and X.org enabled"
+ depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_XORG7 || \
+ !BR2_PACKAGE_LIBEPOXY
comment "XWayland support needs a toolchain w/ threads, dynamic library"
depends on BR2_USE_MMU
diff --git a/package/x11r7/xwayland/xwayland.mk b/package/x11r7/xwayland/xwayland.mk
index 8fa5260f47..5902f85d4f 100644
--- a/package/x11r7/xwayland/xwayland.mk
+++ b/package/x11r7/xwayland/xwayland.mk
@@ -30,7 +30,7 @@ XWAYLAND_CONF_OPTS = \
-Ddtrace=false \
-Ddocs=false
-ifeq ($(BR2_PACKAGE_LIBEPOXY),y)
+ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_LIBEPOXY),yy)
XWAYLAND_CONF_OPTS += -Dglamor=true
XWAYLAND_DEPENDENCIES += libepoxy
else
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 3/7] package/libepoxy: remove gl/egl dependency
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
Libepoxy is a library for handling OpenGL function pointer management.
It has backends for egl/glx, which may at one point have been mandatory
to enable, but the library now builds with none of the above enabled
features, as seen below.
libepoxy 1.5.10
User defined options
Cross files : /home/joseph/br-test-pkg/arm-aarch64/build/libepoxy-1.5.10//buildroot-build/cross-compilation.conf
b_pie : false
b_staticpic : true
buildtype : release
build.cmake_prefix_path: /home/joseph/br-test-pkg/arm-aarch64/host/lib/cmake
default_library : shared
docs : false
egl : no
glx : no
libdir : lib
build.pkg_config_path : /home/joseph/br-test-pkg/arm-aarch64/host/lib/pkgconfig
prefix : /usr
strip : false
tests : false
x11 : false
Removing these dependencies allows for some applications that require it
as a build dependency, but otherwise can run headless or without GL, to
build and function, using other graphics APIs or display pipelines.
Weston, for example, can still use Vulkan and DRM when linked to
libepoxy without GL/EGL/X11 support.
Acked-by: Arnout Vanecappelle <arnout@rnout.be>
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
package/libepoxy/Config.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/package/libepoxy/Config.in b/package/libepoxy/Config.in
index 9da190b895..4b23497d46 100644
--- a/package/libepoxy/Config.in
+++ b/package/libepoxy/Config.in
@@ -1,12 +1,12 @@
config BR2_PACKAGE_LIBEPOXY
bool "libepoxy"
- depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL
select BR2_PACKAGE_XUTIL_UTIL_MACROS
help
Epoxy is a library for handling OpenGL function pointer
management for you.
- https://github.com/anholt/libepoxy
+ It can be built without EGL or GLX support for packages
+ that use libepoxy as a mandatory dependency but do not need
+ OpenGL entry points at runtime.
-comment "libepoxy needs an OpenGL and/or OpenGL EGL backend"
- depends on !BR2_PACKAGE_HAS_LIBEGL && !BR2_PACKAGE_HAS_LIBGL
+ https://github.com/anholt/libepoxy
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 2/7] package/wpewebkit: fix stale libepoxy dependency comments
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
In-Reply-To: <20260607-b4-virglrenderer-v1-0-15cd736c623c@gmail.com>
wpewebkit depends directly on OpenGL ES and EGL support, but those
dependencies are not imposed by libepoxy itself. Update the inline
comments so they describe the actual dependency source before relaxing
libepoxy's package-level EGL/GL dependency.
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
---
package/wpewebkit/Config.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package/wpewebkit/Config.in b/package/wpewebkit/Config.in
index c8602f1de6..c4ee5a27f7 100644
--- a/package/wpewebkit/Config.in
+++ b/package/wpewebkit/Config.in
@@ -38,8 +38,8 @@ config BR2_PACKAGE_WPEWEBKIT
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_11
depends on BR2_USE_WCHAR # icu, libsoup3
- depends on BR2_PACKAGE_HAS_LIBGLES # libepoxy
- depends on BR2_PACKAGE_HAS_LIBEGL # libepoxy
+ depends on BR2_PACKAGE_HAS_LIBGLES
+ depends on BR2_PACKAGE_HAS_LIBEGL # wpebackend-fdo
depends on BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS
select BR2_HOST_CMAKE_AT_LEAST_3_20
select BR2_PACKAGE_CAIRO if BR2_ENDIAN = "BIG"
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 0/7] Add virglrenderer support
From: Joseph Kogut @ 2026-06-08 2:06 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Joseph Kogut, Raphael Pavlidis, Thomas Petazzoni,
Adrian Perez de Castro, Romain Naour
Hello,
This patch series adds support for building the virglrenderer library in
buildroot.
Virglrenderer is a userspace library used to support rendering and
compute in virtual machines over virtio-gpu. Virglrenderer supports
serialized API level access to OpenGL and Vulkan through virgl and venus
respectively, as well as mediated DRM level access using host native
context [0]. Notably libkrun [1] and rutabaga_gfx [2] are also capable of
utilizing virglrenderer.
The first two patches prepare for removing libepoxy's dependency on
GL/EGL, and the third patch removes it. This allows virglrenderer to
build with its libepoxy dependency, without actually depending on
EGL/GLX.
This enables, for example, headless compute through Vulkan using Venus
or host native context inside virtual machines.
The fourth patch adds the new virglrenderer package. Optional configs
enable VirGL (API-level OpenGL passthrough), Venus (API-level Vulkan
passthrough), hardware accelerated video encode/decode through VA-API,
and DRM driver specific backends for host native context support.
The fifth patch adds an OpenGL config for qemu.
The sixth patch adds a qemu virglrenderer config that selects OpenGL
support, as virgl/venus support in qemu currently requires a GL
accelerated display frontend (a patch series on the mailing list [3] is
proposing decoupling display GL support from Venus). Other VMMs
such as libkrun don't suffer from the same coupling currently.
The seventh patch adds a new runtime test for virglrenderer with
qemu using a software GL driver and a nested guest.
[0] https://www.collabora.com/news-and-blog/blog/2025/01/15/the-state-of-gfx-virtualization-using-virglrenderer/
[1] https://github.com/containers/libkrun
[2] https://github.com/magma-gpu/rutabaga_gfx
[3] https://lore.kernel.org/qemu-devel/20260317182049.33848-1-lucaaamaral@gmail.com/
Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
Changes in v8:
- Clean up Kconfig help, indentation, comments [Arnout]
- Move virglrenderer vaapi cfg, under "Other options"
[Arnout]
- Add placeholder comment for vaapi support
- Squash glibc 2.43 build fix into virglrenderer [Arnout]
- test: Split into inner/outer kernel/rootfs [Arnout]
- test: Use aarch64 build [Arnout]
- test: disable BR2_PACKAGE_QEMU_BLOBS in outer guest config
- test: switch from glmark2 to kmscube (remove udev dep) [Arnout]
- Link to v7: https://patch.msgid.link/20260515-virglrenderer-v7-0-1f1814b65ccd@gmail.com
Changes in v7:
- History cleanup
- Link to v6: https://patch.msgid.link/20260515-virglrenderer-v6-0-d9081c13baf9@gmail.com
Changes in v6:
- Add explicit EGL dependency for weston XWayland support, and only
enable XWayland glamor when libepoxy has EGL support
- Fix stale libepoxy dependency comments in wpewebkit
- Document why libepoxy can be built without GLX or EGL support
- Improve qemu OpenGL dependency comment
- Add qemu and virglrenderer comments warning when no virglrenderer
backend is enabled
- Add a runtime test for virglrenderer using nested qemu and virgl
- Link to v5: https://lore.kernel.org/r/20260318-virglrenderer-v5-0-09a3274852d6@gmail.com
Changes in v5:
- Fixed authorship, Signed-off-by, and sent from address
- Link to v4: https://lore.kernel.org/r/20260317-virglrenderer-v4-0-ed223e222bb6@gmail.com
Changes in v4:
- Removed libepoxy dependency on GL/EGL
- Introduce explicit configs for virglrenderer DRM backends, virgl
(see above note)
- Moved virglrenderer Kconfig from Libraries -> Graphics to 'Graphics
libraries and applications' (next to mesa3d && X.org)
- Add a patch from upstream virglrenderer to fix glibc 2.43 builds
- select libdrm in virglrenderer only when required (drm backends,
video)
- BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_MSM depends on !BR2_arm
- Explicitly configure GLX and/or EGL when
BR2_PACKAGE_VIRGLRENDERER_VIRGL=y
- Separate comments for qemu GL/virglrenderer [Romain]
- Split up qemu feature configs into separate commits [Romain]
- Link to v3: https://lore.kernel.org/buildroot/20260219-virglrenderer-v3-0-e2ff1a23be3f@gmail.com/
Changes in v3:
- Bump version to v1.3.0
- Add optional deps for panfrost and i915 native context (new)
- Add config for vaapi support
- Remove GLX in favor of EGL
- Update qemu docs links, as previous ones 404 [Romain]
- Fix invalid config reference in BR2_PACKAGE_QEMU_VIRGLRENDERER
[Romain]
- Select libepoxy when enabling OpenGL support in qemu [Romain]
- Add depends on gcc >= 4.1 to virglrenderer (from meson.build)
- Add depends on libgbm to virglrenderer [Romain]
- Add comments for missing dependencies to virglrenderer Kconfig
- Select vulkan-headers when venus is enabled [Romain]
- Disable venus explicitly when the symbol isn't selected
- Link to v2: https://lore.kernel.org/buildroot/20251203-virglrenderer-v2-v2-0-2846fc1a579a@gmail.com
Changes in v2:
- Rebase onto next (python-glslang patch merged)
- Bump version to v1.2.0
- Remove hidden configs for virglrenderer vDRM backends [Romain]
- Fixed typo in qemu/Config.in [Romain]
- Split up configs for qemu OpenGL and virglrenderer support [Romain]
- More detailed qemu config help messages
- Link to v1: https://lore.kernel.org/r/20250618-virglrenderer-upstream-v1-0-57525ac8406e@gmail.com
To: buildroot@buildroot.org
Cc: Raphael Pavlidis <raphael.pavlidis@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Adrian Perez de Castro <aperez@igalia.com>
Cc: Eric Le Bihan <eric.le.bihan.dev@free.fr>
Cc: Joseph Kogut <joseph.kogut@gmail.com>
Cc: Romain Naour <romain.naour@gmail.com>
---
Joseph Kogut (7):
package/weston: add EGL dependency for XWayland
package/wpewebkit: fix stale libepoxy dependency comments
package/libepoxy: remove gl/egl dependency
package/virglrenderer: new package
package/qemu: add OpenGL config
package/qemu: add virglrenderer integration
support/testing: add virglrenderer test
DEVELOPERS | 2 +
package/Config.in | 1 +
package/libepoxy/Config.in | 8 +-
package/qemu/Config.in | 35 +++++
package/qemu/qemu.mk | 15 +-
.../0001-fix-build-with-glibc-2.43.patch | 39 +++++
package/virglrenderer/Config.in | 114 +++++++++++++++
package/virglrenderer/virglrenderer.hash | 5 +
package/virglrenderer/virglrenderer.mk | 62 ++++++++
package/weston/Config.in | 6 +-
package/wpewebkit/Config.in | 4 +-
package/x11r7/xwayland/xwayland.mk | 2 +-
.../testing/tests/package/test_virglrenderer.py | 159 +++++++++++++++++++++
.../test_virglrenderer/linux-inner.fragment | 4 +
.../test_virglrenderer/linux-outer.fragment | 6 +
.../rootfs-overlay/etc/profile.d/stty-raw.sh | 3 +
16 files changed, 455 insertions(+), 10 deletions(-)
---
base-commit: 32351f979822a0b3a45b82c2d82bdb2328b02f5a
change-id: 20260607-b4-virglrenderer-ae7616926e92
Best regards,
--
Joseph Kogut <joseph.kogut@gmail.com>
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply
* Re: [Buildroot] [PATCH] support/testing: TestOpenJdk: fix test by using bootlin toolchain
From: Julien Olivain via buildroot @ 2026-06-07 21:54 UTC (permalink / raw)
To: Romain Naour; +Cc: buildroot
In-Reply-To: <20260605231546.2876989-1-romain.naour@smile.fr>
On 06/06/2026 01:15, Romain Naour via buildroot wrote:
> The OpenJdk runtime test doesn't build since the last ARM aarch64
> toolchain version bump [1]. Indded the OpenJdk 21 code base is not
> yet ready for such bleeding edge toolchain using gcc 15. We need
> to add OpenJdk 25 [2] or use the latest OpenJdk 21.0.9 release [3]
> to build with the latest ARM aarch64 toolchain.
>
> As a short term solution, switch to the Bootlin Glibc stable
> toolchain.
>
> Fixes:
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14696526185
> (TestOpenJdk)
>
> [1] 8d413d61792724877bfd886fe3ba519fb5259566
> [2]
> https://patchwork.ozlabs.org/project/buildroot/patch/20260221164020.318115-1-thomas@devoogdt.com/
> [3]
> https://tracker.debian.org/news/1661321/accepted-openjdk-21-21095ea-1-source-into-unstable/
>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
Applied to master, thanks.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply
* [Buildroot] [git commit] support/testing: TestOpenJdk: fix test by using bootlin toolchain
From: Julien Olivain via buildroot @ 2026-06-07 20:55 UTC (permalink / raw)
To: buildroot
commit: https://gitlab.com/buildroot.org/buildroot/-/commit/5df3d6493973831e45530691802cd3d8ff2826b2
branch: https://gitlab.com/buildroot.org/buildroot/-/tree/master
The OpenJdk runtime test doesn't build since the last ARM aarch64
toolchain version bump [1]. Indded the OpenJdk 21 code base is not
yet ready for such bleeding edge toolchain using gcc 15. We need
to add OpenJdk 25 [2] or use the latest OpenJdk 21.0.9 release [3]
to build with the latest ARM aarch64 toolchain.
As a short term solution, switch to the Bootlin Glibc stable
toolchain.
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14696526185 (TestOpenJdk)
[1] 8d413d61792724877bfd886fe3ba519fb5259566
[2] https://patchwork.ozlabs.org/project/buildroot/patch/20260221164020.318115-1-thomas@devoogdt.com/
[3] https://tracker.debian.org/news/1661321/accepted-openjdk-21-21095ea-1-source-into-unstable/
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
support/testing/tests/package/test_openjdk.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/support/testing/tests/package/test_openjdk.py b/support/testing/tests/package/test_openjdk.py
index d57bc0a711..dd1456d365 100644
--- a/support/testing/tests/package/test_openjdk.py
+++ b/support/testing/tests/package/test_openjdk.py
@@ -10,6 +10,8 @@ class TestOpenJdk(infra.basetest.BRTest):
"""
BR2_aarch64=y
BR2_TOOLCHAIN_EXTERNAL=y
+ BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
+ BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_AARCH64_GLIBC_STABLE=y
BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 1/2] configs/sipeed_licheepi_4a_defconfig: glibc needs gcc >= 15
From: Romain Naour via buildroot @ 2026-06-07 21:30 UTC (permalink / raw)
To: buildroot; +Cc: Romain Naour
The sipeed_licheepi_4a defconfig doesn't build since the glibc version
bump to 2.43 [1]. Glibc increased the minimal gcc version for riscv
w/ ISA RVV in commit [2].
Select gcc 15 in this defconfig to be able to build a glibc based
toolchain.
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728914049 (sipeed_licheepi_4a_defconfig)
[1] 227378b5930b681c79a13476ae60a98753a98a03
[2] https://sourceware.org/git/?p=glibc.git;a=commit;h=47975914fb106b83c42bc0baf6435a0944a23d30
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
configs/sipeed_licheepi_4a_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/configs/sipeed_licheepi_4a_defconfig b/configs/sipeed_licheepi_4a_defconfig
index c7867ed05d..602cd50e0b 100644
--- a/configs/sipeed_licheepi_4a_defconfig
+++ b/configs/sipeed_licheepi_4a_defconfig
@@ -2,6 +2,7 @@ BR2_riscv=y
BR2_RISCV_ISA_RVC=y
BR2_RISCV_ISA_RVV=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y
+BR2_GCC_VERSION_15_X=y
BR2_GLOBAL_PATCH_DIR="board/sipeed/licheepi_4a/patches"
BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_TARGET_GENERIC_HOSTNAME="licheepi4a"
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH 2/2] package/glibc: riscv w/ ISA RVV needs gcc >= 15
From: Romain Naour via buildroot @ 2026-06-07 21:30 UTC (permalink / raw)
To: buildroot; +Cc: Romain Naour
In-Reply-To: <20260607213030.1509913-1-romain.naour@smile.fr>
The sipeed_licheepi_4a defconfig doesn't build since the glibc version
bump to 2.43 [1]. Glibc increased the minimal gcc version for riscv
w/ ISA RVV in commit [2].
Add a new glibc dependency on gcc 15 when ISA RVV is enabled.
[1] 227378b5930b681c79a13476ae60a98753a98a03
[2] https://sourceware.org/git/?p=glibc.git;a=commit;h=47975914fb106b83c42bc0baf6435a0944a23d30
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
package/glibc/Config.in | 3 +++
1 file changed, 3 insertions(+)
diff --git a/package/glibc/Config.in b/package/glibc/Config.in
index 2bf44bb70b..8e5b08ab7f 100644
--- a/package/glibc/Config.in
+++ b/package/glibc/Config.in
@@ -27,6 +27,9 @@ config BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
# glibc needs atomic instructions, and does not support
# single-precision floating point ABIs (ilp32f and lp64f)
depends on (BR2_RISCV_ISA_RVA && !BR2_RISCV_ABI_ILP32F && !BR2_RISCV_ABI_LP64F) || !BR2_riscv
+ # glibc >= 2.43 needs at gcc >= 15 when Vector
+ # Instructions (V) are enabled.
+ depends on (BR2_RISCV_ISA_RVV && BR2_TOOLCHAIN_GCC_AT_LEAST_15) || !BR2_riscv
depends on BR2_USE_MMU
config BR2_PACKAGE_GLIBC_SUPPORTS
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCHv3] package/runc: fix regression with kernel without user namespace
From: Romain Naour via buildroot @ 2026-06-07 21:18 UTC (permalink / raw)
To: buildroot; +Cc: Romain Naour
Since the runc security bump to version 1.3.5 [1], the TestOci fail due
to missing user namespace support in the kernel:
proc/self/setgroups: no such file or directory
The test was working well with runc 1.3.0. The regression is caused by
this commit [2] from the 1.3.3 security release.
The regression is fixed by a refactoring from the 1.4.1 release [3].
Backport this commit on top of runc 1.3.5 (fixing some conflicts).
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14696525946 (TestOci)
[1] e013e2df84fb36985261d7b3c6e6af06afd40f93
[2] https://github.com/opencontainers/runc/commit/7762edc82c36ba69a4ea88b86483fcdcac93f5a2
[3] https://github.com/opencontainers/runc/commit/323a54ef0d91a20f7d5be4308e5e65a98886bf4b
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
v3: backport upstream patch on top of runc 1.3.5
v2: - fix commit log about USER_NS.
- Use a kconfig fragment instead of enabling CONFIG_USER_NS from
runc package.
...ror-checking-functions-with-their-er.patch | 400 ++++++++++++++++++
1 file changed, 400 insertions(+)
create mode 100644 package/runc/0001-Replace-os.Is-error-checking-functions-with-their-er.patch
diff --git a/package/runc/0001-Replace-os.Is-error-checking-functions-with-their-er.patch b/package/runc/0001-Replace-os.Is-error-checking-functions-with-their-er.patch
new file mode 100644
index 0000000000..4e103099f9
--- /dev/null
+++ b/package/runc/0001-Replace-os.Is-error-checking-functions-with-their-er.patch
@@ -0,0 +1,400 @@
+From 87932aa3d01294886b71f9566f3bf881cf769c66 Mon Sep 17 00:00:00 2001
+From: Curd Becker <me@curd-becker.de>
+Date: Mon, 17 Nov 2025 00:28:05 +0100
+Subject: [PATCH] Replace os.Is* error checking functions with their errors.Is
+ counterpart
+
+Signed-off-by: Curd Becker <me@curd-becker.de>
+(cherry picked from commit 536e183451b7988316fdc37eecd7afd8570dc19b)
+Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
+(cherry picked from commit 323a54ef0d91a20f7d5be4308e5e65a98886bf4b)
+
+Since the runc security bump to version 1.3.5 [1], the TestOci fail due
+to missing user namespace support in the kernel:
+
+ proc/self/setgroups: no such file or directory
+
+The test was working well with runc 1.3.0. The regression is caused by
+this commit [2] from the 1.3.3 security release.
+
+The regression is fixed by a refactoring from the 1.4.1 release [3].
+
+Backport this commit on top of runc 1.3.5 (fixing some conflicts).
+
+Upstream: https://github.com/opencontainers/runc/commit/323a54ef0d91a20f7d5be4308e5e65a98886bf4b
+
+[1] https://gitlab.com/buildroot.org/buildroot/-/commit/e013e2df84fb36985261d7b3c6e6af06afd40f93
+[2] https://github.com/opencontainers/runc/commit/7762edc82c36ba69a4ea88b86483fcdcac93f5a2
+[3] https://github.com/opencontainers/runc/commit/323a54ef0d91a20f7d5be4308e5e65a98886bf4b
+[Romain:
+ rebase on 1.3.5
+ add comments about runc 1.3.5 regression
+]
+Conflicts:
+ libcontainer/configs/validate/validator_test.go
+ libcontainer/container_linux.go
+ libcontainer/intelrdt/intelrdt.go
+Signed-off-by: Romain Naour <romain.naour@smile.fr>
+---
+ libcontainer/configs/validate/validator.go | 6 +++---
+ libcontainer/configs/validate/validator_test.go | 7 ++++---
+ libcontainer/criu_linux.go | 10 +++++-----
+ libcontainer/devices/device_unix.go | 2 +-
+ libcontainer/factory_linux.go | 4 ++--
+ libcontainer/init_linux.go | 4 ++--
+ libcontainer/integration/exec_test.go | 6 +++---
+ libcontainer/notify_linux.go | 2 +-
+ libcontainer/process_linux.go | 2 +-
+ libcontainer/rootfs_linux.go | 8 ++++----
+ libcontainer/specconv/spec_linux_test.go | 5 +++--
+ libcontainer/state_linux.go | 3 ++-
+ spec.go | 4 ++--
+ 13 files changed, 33 insertions(+), 30 deletions(-)
+
+diff --git a/libcontainer/configs/validate/validator.go b/libcontainer/configs/validate/validator.go
+index e0052900..3b77617b 100644
+--- a/libcontainer/configs/validate/validator.go
++++ b/libcontainer/configs/validate/validator.go
+@@ -104,7 +104,7 @@ func security(config *configs.Config) error {
+
+ func namespaces(config *configs.Config) error {
+ if config.Namespaces.Contains(configs.NEWUSER) {
+- if _, err := os.Stat("/proc/self/ns/user"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/user"); errors.Is(err, os.ErrNotExist) {
+ return errors.New("user namespaces aren't enabled in the kernel")
+ }
+ hasPath := config.Namespaces.PathOf(configs.NEWUSER) != ""
+@@ -122,13 +122,13 @@ func namespaces(config *configs.Config) error {
+ }
+
+ if config.Namespaces.Contains(configs.NEWCGROUP) {
+- if _, err := os.Stat("/proc/self/ns/cgroup"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/cgroup"); errors.Is(err, os.ErrNotExist) {
+ return errors.New("cgroup namespaces aren't enabled in the kernel")
+ }
+ }
+
+ if config.Namespaces.Contains(configs.NEWTIME) {
+- if _, err := os.Stat("/proc/self/timens_offsets"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/timens_offsets"); errors.Is(err, os.ErrNotExist) {
+ return errors.New("time namespaces aren't enabled in the kernel")
+ }
+ hasPath := config.Namespaces.PathOf(configs.NEWTIME) != ""
+diff --git a/libcontainer/configs/validate/validator_test.go b/libcontainer/configs/validate/validator_test.go
+index d157feea..41412ba4 100644
+--- a/libcontainer/configs/validate/validator_test.go
++++ b/libcontainer/configs/validate/validator_test.go
+@@ -1,6 +1,7 @@
+ package validate
+
+ import (
++ "errors"
+ "os"
+ "path/filepath"
+ "testing"
+@@ -171,7 +172,7 @@ func TestValidateSecurityWithoutNEWNS(t *testing.T) {
+ }
+
+ func TestValidateUserNamespace(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/user"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/user"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires userns.")
+ }
+ config := &configs.Config{
+@@ -205,7 +206,7 @@ func TestValidateUsernsMappingWithoutNamespace(t *testing.T) {
+ }
+
+ func TestValidateTimeNamespace(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/time"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/time"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires timens.")
+ }
+ config := &configs.Config{
+@@ -224,7 +225,7 @@ func TestValidateTimeNamespace(t *testing.T) {
+ }
+
+ func TestValidateTimeNamespaceWithBothPathAndTimeOffset(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/time"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/time"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires timens.")
+ }
+ config := &configs.Config{
+diff --git a/libcontainer/criu_linux.go b/libcontainer/criu_linux.go
+index 53a0202a..ddf95445 100644
+--- a/libcontainer/criu_linux.go
++++ b/libcontainer/criu_linux.go
+@@ -123,7 +123,7 @@ func (c *Container) addMaskPaths(req *criurpc.CriuReq) error {
+ for _, path := range c.config.MaskPaths {
+ fi, err := os.Stat(fmt.Sprintf("/proc/%d/root/%s", c.initProcess.pid(), path))
+ if err != nil {
+- if os.IsNotExist(err) {
++ if errors.Is(err, os.ErrNotExist) {
+ continue
+ }
+ return err
+@@ -304,7 +304,7 @@ func (c *Container) Checkpoint(criuOpts *CriuOpts) error {
+
+ // Since a container can be C/R'ed multiple times,
+ // the checkpoint directory may already exist.
+- if err := os.Mkdir(criuOpts.ImagesDirectory, 0o700); err != nil && !os.IsExist(err) {
++ if err := os.Mkdir(criuOpts.ImagesDirectory, 0o700); err != nil && !errors.Is(err, os.ErrExist) {
+ return err
+ }
+
+@@ -339,7 +339,7 @@ func (c *Container) Checkpoint(criuOpts *CriuOpts) error {
+
+ // if criuOpts.WorkDirectory is not set, criu default is used.
+ if criuOpts.WorkDirectory != "" {
+- if err := os.Mkdir(criuOpts.WorkDirectory, 0o700); err != nil && !os.IsExist(err) {
++ if err := os.Mkdir(criuOpts.WorkDirectory, 0o700); err != nil && !errors.Is(err, os.ErrExist) {
+ return err
+ }
+ workDir, err := os.Open(criuOpts.WorkDirectory)
+@@ -698,7 +698,7 @@ func (c *Container) Restore(process *Process, criuOpts *CriuOpts) error {
+ if criuOpts.WorkDirectory != "" {
+ // Since a container can be C/R'ed multiple times,
+ // the work directory may already exist.
+- if err := os.Mkdir(criuOpts.WorkDirectory, 0o700); err != nil && !os.IsExist(err) {
++ if err := os.Mkdir(criuOpts.WorkDirectory, 0o700); err != nil && !errors.Is(err, os.ErrExist) {
+ return err
+ }
+ workDir, err := os.Open(criuOpts.WorkDirectory)
+@@ -1149,7 +1149,7 @@ func (c *Container) criuNotifications(resp *criurpc.CriuResp, process *Process,
+ return err
+ }
+ if err := os.Remove(filepath.Join(c.stateDir, "checkpoint")); err != nil {
+- if !os.IsNotExist(err) {
++ if !errors.Is(err, os.ErrNotExist) {
+ logrus.Error(err)
+ }
+ }
+diff --git a/libcontainer/devices/device_unix.go b/libcontainer/devices/device_unix.go
+index c533eb1c..409e58e9 100644
+--- a/libcontainer/devices/device_unix.go
++++ b/libcontainer/devices/device_unix.go
+@@ -98,7 +98,7 @@ func GetDevices(path string) ([]*Device, error) {
+ if errors.Is(err, ErrNotADevice) {
+ continue
+ }
+- if os.IsNotExist(err) {
++ if errors.Is(err, os.ErrNotExist) {
+ continue
+ }
+ return nil, err
+diff --git a/libcontainer/factory_linux.go b/libcontainer/factory_linux.go
+index 94b55eaa..d8a2d8e3 100644
+--- a/libcontainer/factory_linux.go
++++ b/libcontainer/factory_linux.go
+@@ -51,7 +51,7 @@ func Create(root, id string, config *configs.Config) (*Container, error) {
+ }
+ if _, err := os.Stat(stateDir); err == nil {
+ return nil, ErrExist
+- } else if !os.IsNotExist(err) {
++ } else if !errors.Is(err, os.ErrNotExist) {
+ return nil, err
+ }
+
+@@ -154,7 +154,7 @@ func loadState(root string) (*State, error) {
+ }
+ f, err := os.Open(stateFilePath)
+ if err != nil {
+- if os.IsNotExist(err) {
++ if errors.Is(err, os.ErrNotExist) {
+ return nil, ErrNotExist
+ }
+ return nil, err
+diff --git a/libcontainer/init_linux.go b/libcontainer/init_linux.go
+index 40529200..25c135f3 100644
+--- a/libcontainer/init_linux.go
++++ b/libcontainer/init_linux.go
+@@ -311,7 +311,7 @@ func finalizeNamespace(config *initConfig) error {
+ switch {
+ case err == nil:
+ doChdir = false
+- case os.IsPermission(err):
++ case errors.Is(err, os.ErrPermission):
+ // If we hit an EPERM, we should attempt again after setting up user.
+ // This will allow us to successfully chdir if the container user has access
+ // to the directory, but the user running runc does not.
+@@ -477,7 +477,7 @@ func setupUser(config *initConfig) error {
+ setgroups, err = io.ReadAll(setgroupsFile)
+ _ = setgroupsFile.Close()
+ }
+- if err != nil && !os.IsNotExist(err) {
++ if err != nil && !errors.Is(err, os.ErrNotExist) {
+ return err
+ }
+
+diff --git a/libcontainer/integration/exec_test.go b/libcontainer/integration/exec_test.go
+index df99da26..14006922 100644
+--- a/libcontainer/integration/exec_test.go
++++ b/libcontainer/integration/exec_test.go
+@@ -1097,7 +1097,7 @@ func TestHook(t *testing.T) {
+
+ for _, hook := range []string{"prestart", "createRuntime", "poststart"} {
+ fi, err := os.Stat(filepath.Join(config.Rootfs, hook))
+- if err == nil || !os.IsNotExist(err) {
++ if err == nil || !errors.Is(err, os.ErrNotExist) {
+ t.Fatalf("expected file '%s to not exists, but it does", fi.Name())
+ }
+ }
+@@ -1645,7 +1645,7 @@ func TestTmpfsCopyUp(t *testing.T) {
+ }
+
+ func TestCGROUPPrivate(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/cgroup"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/cgroup"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires cgroupns.")
+ }
+ if testing.Short() {
+@@ -1665,7 +1665,7 @@ func TestCGROUPPrivate(t *testing.T) {
+ }
+
+ func TestCGROUPHost(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/cgroup"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/cgroup"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires cgroupns.")
+ }
+ if testing.Short() {
+diff --git a/libcontainer/notify_linux.go b/libcontainer/notify_linux.go
+index a8762842..77e23157 100644
+--- a/libcontainer/notify_linux.go
++++ b/libcontainer/notify_linux.go
+@@ -51,7 +51,7 @@ func registerMemoryEvent(cgDir string, evName string, arg string) (<-chan struct
+ }
+ // When a cgroup is destroyed, an event is sent to eventfd.
+ // So if the control path is gone, return instead of notifying.
+- if _, err := os.Lstat(eventControlPath); os.IsNotExist(err) {
++ if _, err := os.Lstat(eventControlPath); errors.Is(err, os.ErrNotExist) {
+ return
+ }
+ ch <- struct{}{}
+diff --git a/libcontainer/process_linux.go b/libcontainer/process_linux.go
+index baf3706c..6f10a6c2 100644
+--- a/libcontainer/process_linux.go
++++ b/libcontainer/process_linux.go
+@@ -940,7 +940,7 @@ func getPipeFds(pid int) ([]string, error) {
+ // Ignore permission errors, for rootless containers and other
+ // non-dumpable processes. if we can't get the fd for a particular
+ // file, there's not much we can do.
+- if os.IsPermission(err) {
++ if errors.Is(err, os.ErrPermission) {
+ continue
+ }
+ return fds, err
+diff --git a/libcontainer/rootfs_linux.go b/libcontainer/rootfs_linux.go
+index 31d05174..abc372f3 100644
+--- a/libcontainer/rootfs_linux.go
++++ b/libcontainer/rootfs_linux.go
+@@ -361,7 +361,7 @@ func mountCgroupV1(m mountEntry, c *mountConfig) error {
+ // symlink(2) is very dumb, it will just shove the path into
+ // the link and doesn't do any checks or relative path
+ // conversion. Also, don't error out if the cgroup already exists.
+- if err := os.Symlink(mc, filepath.Join(c.root, m.Destination, ss)); err != nil && !os.IsExist(err) {
++ if err := os.Symlink(mc, filepath.Join(c.root, m.Destination, ss)); err != nil && !errors.Is(err, os.ErrExist) {
+ return err
+ }
+ }
+@@ -613,7 +613,7 @@ func mountToRootfs(c *mountConfig, m mountEntry) error {
+ return err
+ }
+ if fi, err := os.Lstat(dest); err != nil {
+- if !os.IsNotExist(err) {
++ if !errors.Is(err, os.ErrNotExist) {
+ return err
+ }
+ } else if !fi.IsDir() {
+@@ -910,7 +910,7 @@ func setupDevSymlinks(rootfs string) error {
+ src = link[0]
+ dst = filepath.Join(rootfs, link[1])
+ )
+- if err := os.Symlink(src, dst); err != nil && !os.IsExist(err) {
++ if err := os.Symlink(src, dst); err != nil && !errors.Is(err, os.ErrExist) {
+ return err
+ }
+ }
+@@ -1132,7 +1132,7 @@ func setReadonly() error {
+
+ func setupPtmx(config *configs.Config) error {
+ ptmx := filepath.Join(config.Rootfs, "dev/ptmx")
+- if err := os.Remove(ptmx); err != nil && !os.IsNotExist(err) {
++ if err := os.Remove(ptmx); err != nil && !errors.Is(err, os.ErrNotExist) {
+ return err
+ }
+ if err := os.Symlink("pts/ptmx", ptmx); err != nil {
+diff --git a/libcontainer/specconv/spec_linux_test.go b/libcontainer/specconv/spec_linux_test.go
+index 66359f79..88156516 100644
+--- a/libcontainer/specconv/spec_linux_test.go
++++ b/libcontainer/specconv/spec_linux_test.go
+@@ -1,6 +1,7 @@
+ package specconv
+
+ import (
++ "errors"
+ "os"
+ "strings"
+ "testing"
+@@ -609,7 +610,7 @@ func TestDupNamespaces(t *testing.T) {
+ }
+
+ func TestUserNamespaceMappingAndPath(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/user"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/user"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires userns.")
+ }
+
+@@ -643,7 +644,7 @@ func TestUserNamespaceMappingAndPath(t *testing.T) {
+ }
+
+ func TestNonZeroEUIDCompatibleSpecconvValidate(t *testing.T) {
+- if _, err := os.Stat("/proc/self/ns/user"); os.IsNotExist(err) {
++ if _, err := os.Stat("/proc/self/ns/user"); errors.Is(err, os.ErrNotExist) {
+ t.Skip("Test requires userns.")
+ }
+
+diff --git a/libcontainer/state_linux.go b/libcontainer/state_linux.go
+index 2b7b8b5b..1f758e2a 100644
+--- a/libcontainer/state_linux.go
++++ b/libcontainer/state_linux.go
+@@ -1,6 +1,7 @@
+ package libcontainer
+
+ import (
++ "errors"
+ "fmt"
+ "os"
+ "path/filepath"
+@@ -213,7 +214,7 @@ func (r *restoredState) transition(s containerState) error {
+
+ func (r *restoredState) destroy() error {
+ if _, err := os.Stat(filepath.Join(r.c.stateDir, "checkpoint")); err != nil {
+- if !os.IsNotExist(err) {
++ if !errors.Is(err, os.ErrNotExist) {
+ return err
+ }
+ }
+diff --git a/spec.go b/spec.go
+index d03d644e..15e933eb 100644
+--- a/spec.go
++++ b/spec.go
+@@ -91,7 +91,7 @@ created by an unprivileged user.
+ if err == nil {
+ return fmt.Errorf("File %s exists. Remove it first", name)
+ }
+- if !os.IsNotExist(err) {
++ if !errors.Is(err, os.ErrNotExist) {
+ return err
+ }
+ return nil
+@@ -117,7 +117,7 @@ created by an unprivileged user.
+ func loadSpec(cPath string) (spec *specs.Spec, err error) {
+ cf, err := os.Open(cPath)
+ if err != nil {
+- if os.IsNotExist(err) {
++ if errors.Is(err, os.ErrNotExist) {
+ return nil, fmt.Errorf("JSON specification file %s not found", cPath)
+ }
+ return nil, err
+--
+2.54.0
+
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* Re: [Buildroot] [PATCH v7 4/8] package/virglrenderer: new package
From: Joseph Kogut @ 2026-06-07 20:42 UTC (permalink / raw)
To: Arnout Vandecappelle
Cc: buildroot, Adrian Perez de Castro, Eric Le Bihan, Romain Naour,
Raphael Pavlidis, Thomas Petazzoni
In-Reply-To: <7551a523-03a3-4675-9719-36af502bf909@rnout.be>
Hello Arnout,
Looks like I missed this message earlier while I was at Open Source
Summit NA, so I'm following up now while I'm preparing the next
version of this patch series. I think we've already covered some of
this, but I'll respond inline anyway for posterity.
On Thu, May 21, 2026 at 1:08 PM Arnout Vandecappelle <arnout@rnout.be> wrote:
>
>
>
> On 16/05/2026 04:03, Joseph Kogut wrote:
> > Add virglrenderer, an optional dependency of QEMU, which facilitates
> > acceleration of rendering and optionally video decode through
> > virtio-gpu.
>
> I'm not entirely sure how this works. Do you just have the driver for the
> host's hardware in your guest OS? So e.g. you have ti-sgx-um and virglrenderer
> in your guest OS, and voila, you get acceleration?
>
Basically yes, but not just any driver. For the moment, the only
supported DRM backends are Mesa drivers. This is because modifying the
UMD to submit DRM commands over virtio-gpu is required. Virglrenderer
receives these commands on the host and submits them to the actual
device node.
> Or is virglrender just the library that you have to link into qemu to enable
> this feature to begin with? What do you need in the guest then to be able to
> make use of it? Do you need the same driver in the host and the guest? What if
> they have different versions? Or can you have e.g. etnaviv in the host and
> vivante in the guest?
>
In the guest, you need mesa with the virtio-gpu UMD for VirGL or
Venus. VirGL requires host support for OpenGL, and venus requires host
support for Vulkan.
For lower overhead and arguably better security, you can use the
native UMD (e.g. radeonsi, freedreno) in the guest with host native
context, but this requires both Mesa and virglrenderer to have this
enabled.
> Or maybe on the host you don't need anything other than virglrenderer, and the
> actual driver is purely in the guest? If that's the case, all the "default y if
> ..." in this commit are incorrect.
>
The virglrenderer DRM backends only require the corresponding DRM KMD
loaded on the host at runtime. If you're using a DRM backend and
running the native UMD inside a guest, you can get accelerated
render/compute in the guest without any UMD on the host.
In practice, many users will probably also have a graphics stack (UMD)
on the host, because they'll want an accelerated pipeline for
presenting rendered frames from guests. In this case, enabling e.g.
radeonsi or radv in the host Mesa build implies that the host has the
amdgpu KMD (and the hardware to use it), so we can safely enable the
amdgpu backend for virglrenderer. This enables guests to use
radeonsi/radv directly.
> I looked at the test, but it doesn't help much because the test uses the same
> kernel/rootfs for the host and the guest...
>
I was hoping to avoid building two kernels/rootfses for expediency,
but I see how this would illustrate the setup poorly.
> I have quite a few comments to this patch. In some cases, I expect that what
> you wrote is actually good but I misunderstood things. It would be good to add
> more explanation in the commit message about such situations.
>
> >
> > Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
> > ---
> > DEVELOPERS | 1 +
> > package/Config.in | 1 +
> > package/virglrenderer/Config.in | 117 +++++++++++++++++++++++++++++++
> > package/virglrenderer/virglrenderer.hash | 5 ++
> > package/virglrenderer/virglrenderer.mk | 60 ++++++++++++++++
> > 5 files changed, 184 insertions(+)
> >
> > diff --git a/DEVELOPERS b/DEVELOPERS
> > index 25a047cb3e..774eb0b746 100644
> > --- a/DEVELOPERS
> > +++ b/DEVELOPERS
> > @@ -1765,6 +1765,7 @@ F: package/python-xlib/
> > F: package/sentry-cli/
> > F: package/sentry-native/
> > F: package/unclutter-xfixes/
> > +F: package/virglrenderer/
> >
> > N: Joshua Henderson <joshua.henderson@microchip.com>
> > F: package/qt5/qt5wayland/
> > diff --git a/package/Config.in b/package/Config.in
> > index 9cae377fb5..01263e4c44 100644
> > --- a/package/Config.in
> > +++ b/package/Config.in
> > @@ -365,6 +365,7 @@ comment "Graphic libraries"
> > source "package/sdl2_ttf/Config.in"
> > source "package/spirv-headers/Config.in"
> > source "package/tk/Config.in"
> > + source "package/virglrenderer/Config.in"
> > source "package/vulkan-headers/Config.in"
> > source "package/vulkan-loader/Config.in"
> > source "package/vulkan-sdk/Config.in"
> > diff --git a/package/virglrenderer/Config.in b/package/virglrenderer/Config.in
> > new file mode 100644
> > index 0000000000..041bb63a1c
> > --- /dev/null
> > +++ b/package/virglrenderer/Config.in
> > @@ -0,0 +1,117 @@
> > +config BR2_PACKAGE_VIRGLRENDERER
> > + bool "virglrenderer"
> > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
>
> We usually have a comment here why it needs GCC 4.9 - typically a minimal C++
> standard version, or C11.
>
Agreed, I'll look into this again and add a comment.
> > + depends on BR2_TOOLCHAIN_HAS_THREADS
> > + depends on BR2_USE_MMU # fork()
> > + select BR2_PACKAGE_LIBEPOXY
> > + help
> > + A library for accelerated graphics and compute in
> > + virtualized guests.
> > +
> > + virglrenderer can be built without virgl, venus, or DRM
>
> I wouldn't enumerate all the backends here but just say "can be built without
> any backend".
>
+1
> > + backends, although such a build will not provide guest
> > + graphics or compute acceleration by itself.
> > +
> > + https://qemu.readthedocs.io/en/v10.0.3/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer
> > +
> > +if BR2_PACKAGE_VIRGLRENDERER
> > +comment "virglrenderer needs virgl, venus, or a DRM backend for guest acceleration"
>
> We don't normally put such comments that are just a hint for people who don't
> want to read the help text.
>
> > + depends on !BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_VIRGL
> > + bool "virgl"
> > + default y
> > + depends on (BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGBM) \
> > + || BR2_PACKAGE_HAS_LIBGL
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + help
> > + Enable API-level OpenGL acceleration over virtio-gpu.
> > +
> > + Say 'y' if you want to run applications with OpenGL
> > + acceleration in virtualized guests. Requires host
> > + support for OpenGL.
>
> We don't use the "Say 'y'" formulation. I also don't know what "virtualized
> guests" means - guests are always virtualized, right? And "Requires" may sound
> like a build-time dependency on the build system. So I'd just make the help text
> "Enable API-level OpenGL acceleration over virtio-gpu. Requires the
> virtualization host to support OpenGL." Similarly for the other help texts.
>
Yep, I think that's clearer.
> > + https://docs.mesa3d.org/drivers/virgl.html
> > +
> > +comment "virgl needs OpenGL or OpenGL EGL and libgbm"
> > + depends on !((BR2_PACKAGE_HAS_LIBEGL && BR2_PACKAGE_HAS_LIBGBM) \
> > + || BR2_PACKAGE_HAS_LIBGL)
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_VENUS
> > + bool "venus"
> > + default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER
>
> I don't understand this default y. Is it just that there's no other way to
> know if the hardware supports Vulkan?
>
As above, Venus requires Vulkan support on the host. It makes sense to
enable virglrenderer support when we know we have it, even though this
isn't the only Vulkan provider. If somebody is using, for example, the
proprietary Nvidia vulkan driver, they can explicitly select this
config to enable Venus support.
> > + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader
> > + depends on !BR2_STATIC_LIBS # vulkan-loader
> > + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + select BR2_PACKAGE_VULKAN_HEADERS
> > + select BR2_PACKAGE_VULKAN_LOADER
> > + help
> > + Enable API-level Vulkan acceleration over virtio-gpu.
> > +
> > + Say 'y' if you want to run applications with Vulkan
> > + acceleration in virtualized guests. Requires host
> > + support for Vulkan.
> > +
> > + https://docs.mesa3d.org/drivers/venus.html
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_VAAPI
> > + bool "vaapi support"
>
> I would move this either to the beginning or the end to separate it from the
> backends. E.g.
>
> comment "Virtio backends"
>
> ...
>
> comment "DRM backends"
>
> ...
>
> comment "Other options"
>
> bool "vaapi support"
>
>
+1
> > + depends on BR2_PACKAGE_LIBGBM_HAS_FEATURE_DMA_BUF
> > + select BR2_PACKAGE_LIBDRM
> > + select BR2_PACKAGE_LIBVA
> > + help
> > + Enable hardware accelerated video encode/decode through
> > + libva over virtio-gpu.
> > +
> > +comment "DRM backends"
>
> Not sure what is the distinction between virtio and DRM backends, but I don't
> suppose I really need to know :-)
>
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_AMDGPU
> > + bool "amdgpu"
> > + default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI
> > + default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_AMD
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + select BR2_PACKAGE_LIBDRM
> > + select BR2_PACKAGE_LIBDRM_AMDGPU
> > + help
> > + Enable DRM backend for amdgpu, used by Gallium radeonsi
> > + and RADV vulkan drivers.
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_INTEL
> > + bool "intel"
> > + default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915
> > + default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS
> > + default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_INTEL
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + select BR2_PACKAGE_LIBDRM
> > + help
> > + Enable DRM backend for i915, used by Gallium i915/Iris
> > + and Intel vulkan drivers.
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_MSM
> > + bool "msm"
> > + default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_FREEDRENO
> > + depends on !BR2_arm
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + select BR2_PACKAGE_LIBDRM
> > + help
> > + Enable DRM backend for msm, used by Gallium freedreno
> > + driver.
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_PANFROST
> > + bool "panfrost"
> > + default y if BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_PANFROST
> > + default y if BR2_PACKAGE_MESA3D_VULKAN_DRIVER_PANFROST
> > + select BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + select BR2_PACKAGE_LIBDRM
> > + help
> > + Enable DRM backend for Panfrost, used by the panfrost
> > + Gallium/vulkan drivers.
> > +
> > +endif
> > +
> > +comment "virglrenderer needs a toolchain w/ gcc >= 4.9"
> > + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
> > +
> > +config BR2_PACKAGE_VIRGLRENDERER_HAS_BACKEND
> > + bool
> > diff --git a/package/virglrenderer/virglrenderer.hash b/package/virglrenderer/virglrenderer.hash
> > new file mode 100644
> > index 0000000000..03da595091
> > --- /dev/null
> > +++ b/package/virglrenderer/virglrenderer.hash
> > @@ -0,0 +1,5 @@
> > +# Locally calculated
> > +sha256 065bc56e89e6f631f96101cd62eba0748e48eb888b434edc86e89d05395e76f3 virglrenderer-1.3.0.tar.gz
> > +
> > +# License
> > +sha256 3b32caf16e2402c2aff2b716858713f3e1feded85c25e71bf829816ee5009402 COPYING
> > diff --git a/package/virglrenderer/virglrenderer.mk b/package/virglrenderer/virglrenderer.mk
> > new file mode 100644
> > index 0000000000..4e7bcbb849
> > --- /dev/null
> > +++ b/package/virglrenderer/virglrenderer.mk
> > @@ -0,0 +1,60 @@
> > +################################################################################
> > +#
> > +# virglrenderer
> > +#
> > +################################################################################
> > +
> > +VIRGLRENDERER_VERSION = 1.3.0
> > +VIRGLRENDERER_SITE = https://gitlab.freedesktop.org/virgl/virglrenderer/-/archive/$(VIRGLRENDERER_VERSION)
> > +VIRGLRENDERER_LICENSE = MIT
> > +VIRGLRENDERER_LICENSE_FILES = COPYING
> > +VIRGLRENDERER_INSTALL_STAGING = YES
> > +VIRGLRENDERER_DEPENDENCIES = \
> > + libepoxy \
> > + host-pkgconf \
> > + host-python3 \
> > + host-python-pyyaml
> > +VIRGLRENDERER_CPE_ID_VALID = YES
> > +
> > +ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VIRGL),y)
> > +ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGBM),yy)
> > +VIRGLRENDERER_PLATFORMS += egl
> > +VIRGLRENDERER_DEPENDENCIES += libegl \
> > + libgbm
>
> The indentation is a bit wonky here. Either put it all on a single line, or
> put the values on separate lines indented with a single tab (so 3 lines total).
>
Yes, it is... I'll fix it, thanks for the feedback.
> Regards,
> Arnout
>
>
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
> > +VIRGLRENDERER_PLATFORMS += glx
> > +VIRGLRENDERER_DEPENDENCIES += libgl
> > +endif
> > +endif # BR2_PACKAGE_VIRGLRENDERER_VIRGL
> > +
> > +VIRGLRENDERER_CONF_OPTS += -Dplatforms=$(subst $(space),$(comma),$(VIRGLRENDERER_PLATFORMS))
> > +
> > +ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VENUS),y)
> > +VIRGLRENDERER_CONF_OPTS += -Dvenus=true
> > +VIRGLRENDERER_DEPENDENCIES += vulkan-headers \
> > + vulkan-loader
> > +else
> > +VIRGLRENDERER_CONF_OPTS += -Dvenus=false
> > +endif
> > +
> > +VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_AMDGPU) += amdgpu-experimental
> > +VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_INTEL) += i915-experimental
> > +VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_MSM) += msm
> > +VIRGLRENDERER_DRM_BACKENDS-$(BR2_PACKAGE_VIRGLRENDERER_DRM_BACKEND_PANFROST) += panfrost-experimental
> > +
> > +VIRGLRENDERER_CONF_OPTS += -Ddrm-renderers=$(subst $(space),$(comma),$(VIRGLRENDERER_DRM_BACKENDS-y))
> > +
> > +ifneq ($(VIRGLRENDERER_DRM_BACKENDS-y),)
> > +VIRGLRENDERER_DEPENDENCIES += libdrm
> > +endif
> > +
> > +ifeq ($(BR2_PACKAGE_VIRGLRENDERER_VAAPI),y)
> > +VIRGLRENDERER_CONF_OPTS += -Dvideo=true
> > +VIRGLRENDERER_DEPENDENCIES += libva libdrm
> > +else
> > +VIRGLRENDERER_CONF_OPTS += -Dvideo=false
> > +endif
> > +
> > +$(eval $(meson-package))
> >
>
Best,
Joseph
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply
* Re: [Buildroot] [PATCH 7/7] configs/arcturus_ucp1020: specify Linux license file
From: Julien Olivain via buildroot @ 2026-06-07 20:16 UTC (permalink / raw)
To: Romain Naour; +Cc: buildroot, Michael Durrant
In-Reply-To: <20260606225120.409046-7-romain.naour@smile.fr>
On 07/06/2026 00:51, Romain Naour via buildroot wrote:
> The used Linux kernel (4.4.144) does not contain the default license
> files as those were only added in 4.16 with commit e00a844aca
> ("LICENSES: Add Linux syscall note exception"), so specify the correct
> license file to fix:
>
> make legal-info
> ..
> cp: cannot stat
> '/path/to/output/build/linux-headers-custom/LICENSES/preferred/GPL-2.0':
> No such file or directory
>
> And add the sha256sum to the .hash file.
> Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES.
>
> Fixes:
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913808
> (arcturus_ucp1020_defconfig)
>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
> Cc: Michael Durrant <mdurrant@ArcturusNetworks.com>
Since this patch is fixing a build issue, I applied it on master.
I also fixed a check-package error (by removing the .checkpackageignore
entry).
I'm giving more time to the rest of the series, in case a defconfig
maintainer
would like to comment.
Best regards,
Julien.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply
* [Buildroot] [git commit] configs/arcturus_ucp1020: specify Linux license file
From: Julien Olivain via buildroot @ 2026-06-07 19:50 UTC (permalink / raw)
To: buildroot
commit: https://gitlab.com/buildroot.org/buildroot/-/commit/bbb1e2c8df3d6eee107b64c949557009489aaaac
branch: https://gitlab.com/buildroot.org/buildroot/-/tree/master
The used Linux kernel (4.4.144) does not contain the default license
files as those were only added in 4.16 with commit e00a844aca
("LICENSES: Add Linux syscall note exception"), so specify the correct
license file to fix:
make legal-info
..
cp: cannot stat '/path/to/output/build/linux-headers-custom/LICENSES/preferred/GPL-2.0': No such file or directory
And add the sha256sum to the .hash file.
Enable BR2_DOWNLOAD_FORCE_CHECK_HASHES.
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913808 (arcturus_ucp1020_defconfig)
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Cc: Michael Durrant <mdurrant@ArcturusNetworks.com>
[Julien: remove .checkpackageignore entry to fix check-package error]
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
.checkpackageignore | 1 -
| 1 +
board/arcturus/ppc-ucp1020/patches/linux/linux.hash | 2 ++
board/arcturus/ppc-ucp1020/patches/uboot/uboot.hash | 2 ++
configs/arcturus_ucp1020_defconfig | 3 +++
5 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/.checkpackageignore b/.checkpackageignore
index b4e7919c07..cf197e4b16 100644
--- a/.checkpackageignore
+++ b/.checkpackageignore
@@ -71,7 +71,6 @@ boot/syslinux/0014-Fix-build-with-binutils-note-gnu-property-section.patch lib_p
boot/syslinux/0016-Workaround-multiple-definition-of-symbol-errors.patch lib_patch.Upstream
boot/syslinux/0017-Replace-builtin-strlen-that-appears-to-get-optimized.patch lib_patch.Upstream
configs/arcturus_ucls1012a_defconfig lib_defconfig.ForceCheckHash
-configs/arcturus_ucp1020_defconfig lib_defconfig.ForceCheckHash
configs/asus_tinker-s_rk3288_defconfig lib_defconfig.ForceCheckHash
configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig lib_defconfig.ForceCheckHash
configs/atmel_sama5d2_xplained_mmc_defconfig lib_defconfig.ForceCheckHash
--git a/board/arcturus/ppc-ucp1020/patches/linux-headers/linux-headers.hash b/board/arcturus/ppc-ucp1020/patches/linux-headers/linux-headers.hash
new file mode 120000
index 0000000000..5808d92afe
--- /dev/null
+++ b/board/arcturus/ppc-ucp1020/patches/linux-headers/linux-headers.hash
@@ -0,0 +1 @@
+../linux/linux.hash
\ No newline at end of file
diff --git a/board/arcturus/ppc-ucp1020/patches/linux/linux.hash b/board/arcturus/ppc-ucp1020/patches/linux/linux.hash
new file mode 100644
index 0000000000..eafb86d8cb
--- /dev/null
+++ b/board/arcturus/ppc-ucp1020/patches/linux/linux.hash
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 5ad0192e5cd10eca5f9fabb3234f2bfcbafba3382a9577139cc66be629e5bafa linux-v20190618.tar.gz
diff --git a/board/arcturus/ppc-ucp1020/patches/uboot/uboot.hash b/board/arcturus/ppc-ucp1020/patches/uboot/uboot.hash
new file mode 100644
index 0000000000..eb9744043c
--- /dev/null
+++ b/board/arcturus/ppc-ucp1020/patches/uboot/uboot.hash
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 eba8aaf634affec7c27a55b899c404a85a0c219c3f814d576793e3c21b711b05 uboot-v20190618.tar.gz
diff --git a/configs/arcturus_ucp1020_defconfig b/configs/arcturus_ucp1020_defconfig
index 8e489f7f19..c0423032bc 100644
--- a/configs/arcturus_ucp1020_defconfig
+++ b/configs/arcturus_ucp1020_defconfig
@@ -1,6 +1,8 @@
BR2_powerpc=y
BR2_powerpc_8548=y
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y
+BR2_GLOBAL_PATCH_DIR="board/arcturus/ppc-ucp1020/patches"
+BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
BR2_TARGET_GENERIC_HOSTNAME="UCP1020"
BR2_TARGET_GENERIC_ISSUE="Welcome to Arcturus uCP1020 System on Module"
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
@@ -8,6 +10,7 @@ BR2_SYSTEM_DHCP="eth0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCP1020-kernel,v20190618)/linux-v20190618.tar.gz"
+BR2_LINUX_KERNEL_LICENSE_FILES="COPYING"
BR2_LINUX_KERNEL_DEFCONFIG="ucp1020"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="ucp1020"
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* Re: [Buildroot] [PATCH] configs/at91sam9x5ek*: remove at91bootstrap3 license
From: Julien Olivain via buildroot @ 2026-06-07 19:47 UTC (permalink / raw)
To: Romain Naour; +Cc: buildroot
In-Reply-To: <20260607190044.850030-1-romain.naour@smile.fr>
On 07/06/2026 21:00, Romain Naour via buildroot wrote:
> When using a specific git repo and version for at91bootstrap3,
> BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES defaults to "LICENSES/MIT.txt".
> However the git version we use (namely v3.10.3) does not provide this
> file. Actually, it does not provide a license file at all. This causes
> ‘make legal-info’ to fail with:
>
> >>> at91bootstrap3 v3.10.3 Collecting legal info
> sha256sum:
> /builds/buildroot.org/buildroot/output/build/at91bootstrap3-v3.10.3/LICENSES/MIT.txt:
> No such file or directory
> ERROR: while checking hashes from
> boot/at91bootstrap3/at91bootstrap3.hash
> ERROR: LICENSES/MIT.txt has wrong sha256 hash:
> ERROR: expected:
> 5a3809b1c2ba13b7242572322951311c584419f1f8516f665d6c06f0668d78de
> ERROR: got :
> ERROR: Incomplete download, or man-in-the-middle (MITM) attack
> make[1]: *** [boot/at91bootstrap3/at91bootstrap3.mk:112:
> at91bootstrap3-legal-info] Error 1
>
> Let's be explicit that there is no license file to check.
>
> Fixes:
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913821
> (at91sam9x5ek_mmc_dev_defconfig)
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913820
> (at91sam9x5ek_mmc_defconfig)
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913819
> (at91sam9x5ek_dev_defconfig)
> https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913818
> (at91sam9x5ek_defconfig)
>
> Signed-off-by: Romain Naour <romain.naour@smile.fr>
Applied to master, thanks.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply
* [Buildroot] [git commit] configs/at91sam9x5ek*: remove at91bootstrap3 license
From: Julien Olivain via buildroot @ 2026-06-07 19:43 UTC (permalink / raw)
To: buildroot
[-- Attachment #1: Type: text/plain, Size: 4223 bytes --]
commit: https://gitlab.com/buildroot.org/buildroot/-/commit/1339bba787deecda28461bff591e029a38d14b53
branch: https://gitlab.com/buildroot.org/buildroot/-/tree/master
When using a specific git repo and version for at91bootstrap3,
BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES defaults to "LICENSES/MIT.txt".
However the git version we use (namely v3.10.3) does not provide this
file. Actually, it does not provide a license file at all. This causes
âmake legal-infoâ to fail with:
>>> at91bootstrap3 v3.10.3 Collecting legal info
sha256sum: /builds/buildroot.org/buildroot/output/build/at91bootstrap3-v3.10.3/LICENSES/MIT.txt: No such file or directory
ERROR: while checking hashes from boot/at91bootstrap3/at91bootstrap3.hash
ERROR: LICENSES/MIT.txt has wrong sha256 hash:
ERROR: expected: 5a3809b1c2ba13b7242572322951311c584419f1f8516f665d6c06f0668d78de
ERROR: got :
ERROR: Incomplete download, or man-in-the-middle (MITM) attack
make[1]: *** [boot/at91bootstrap3/at91bootstrap3.mk:112: at91bootstrap3-legal-info] Error 1
Let's be explicit that there is no license file to check.
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913821 (at91sam9x5ek_mmc_dev_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913820 (at91sam9x5ek_mmc_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913819 (at91sam9x5ek_dev_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913818 (at91sam9x5ek_defconfig)
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
configs/at91sam9x5ek_defconfig | 1 +
configs/at91sam9x5ek_dev_defconfig | 1 +
configs/at91sam9x5ek_mmc_defconfig | 1 +
configs/at91sam9x5ek_mmc_dev_defconfig | 1 +
4 files changed, 4 insertions(+)
diff --git a/configs/at91sam9x5ek_defconfig b/configs/at91sam9x5ek_defconfig
index 775fcceae3..246d34edef 100644
--- a/configs/at91sam9x5ek_defconfig
+++ b/configs/at91sam9x5ek_defconfig
@@ -16,6 +16,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_dev_defconfig b/configs/at91sam9x5ek_dev_defconfig
index 0f29216736..36441f38e7 100644
--- a/configs/at91sam9x5ek_dev_defconfig
+++ b/configs/at91sam9x5ek_dev_defconfig
@@ -67,6 +67,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index a6fd7e05fc..4c2a6255bc 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -17,6 +17,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_mmc_dev_defconfig b/configs/at91sam9x5ek_mmc_dev_defconfig
index 344c6c2eae..908907acda 100644
--- a/configs/at91sam9x5ek_mmc_dev_defconfig
+++ b/configs/at91sam9x5ek_mmc_dev_defconfig
@@ -69,6 +69,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
[-- Attachment #2: Type: text/plain, Size: 150 bytes --]
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH] configs/at91sam9x5ek*: remove at91bootstrap3 license
From: Romain Naour via buildroot @ 2026-06-07 19:00 UTC (permalink / raw)
To: buildroot; +Cc: Romain Naour
When using a specific git repo and version for at91bootstrap3,
BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES defaults to "LICENSES/MIT.txt".
However the git version we use (namely v3.10.3) does not provide this
file. Actually, it does not provide a license file at all. This causes
‘make legal-info’ to fail with:
>>> at91bootstrap3 v3.10.3 Collecting legal info
sha256sum: /builds/buildroot.org/buildroot/output/build/at91bootstrap3-v3.10.3/LICENSES/MIT.txt: No such file or directory
ERROR: while checking hashes from boot/at91bootstrap3/at91bootstrap3.hash
ERROR: LICENSES/MIT.txt has wrong sha256 hash:
ERROR: expected: 5a3809b1c2ba13b7242572322951311c584419f1f8516f665d6c06f0668d78de
ERROR: got :
ERROR: Incomplete download, or man-in-the-middle (MITM) attack
make[1]: *** [boot/at91bootstrap3/at91bootstrap3.mk:112: at91bootstrap3-legal-info] Error 1
Let's be explicit that there is no license file to check.
Fixes:
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913821 (at91sam9x5ek_mmc_dev_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913820 (at91sam9x5ek_mmc_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913819 (at91sam9x5ek_dev_defconfig)
https://gitlab.com/buildroot.org/buildroot/-/jobs/14728913818 (at91sam9x5ek_defconfig)
Signed-off-by: Romain Naour <romain.naour@smile.fr>
---
configs/at91sam9x5ek_defconfig | 1 +
configs/at91sam9x5ek_dev_defconfig | 1 +
configs/at91sam9x5ek_mmc_defconfig | 1 +
configs/at91sam9x5ek_mmc_dev_defconfig | 1 +
4 files changed, 4 insertions(+)
diff --git a/configs/at91sam9x5ek_defconfig b/configs/at91sam9x5ek_defconfig
index 775fcceae3..246d34edef 100644
--- a/configs/at91sam9x5ek_defconfig
+++ b/configs/at91sam9x5ek_defconfig
@@ -16,6 +16,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_dev_defconfig b/configs/at91sam9x5ek_dev_defconfig
index 0f29216736..36441f38e7 100644
--- a/configs/at91sam9x5ek_dev_defconfig
+++ b/configs/at91sam9x5ek_dev_defconfig
@@ -67,6 +67,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_mmc_defconfig b/configs/at91sam9x5ek_mmc_defconfig
index a6fd7e05fc..4c2a6255bc 100644
--- a/configs/at91sam9x5ek_mmc_defconfig
+++ b/configs/at91sam9x5ek_mmc_defconfig
@@ -17,6 +17,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
diff --git a/configs/at91sam9x5ek_mmc_dev_defconfig b/configs/at91sam9x5ek_mmc_dev_defconfig
index 344c6c2eae..908907acda 100644
--- a/configs/at91sam9x5ek_mmc_dev_defconfig
+++ b/configs/at91sam9x5ek_mmc_dev_defconfig
@@ -69,6 +69,7 @@ BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.10.3"
+BR2_TARGET_AT91BOOTSTRAP3_LICENSE_FILES=""
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot"
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
--
2.54.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH v2 8/8] package/libglib2: add m68k ColdFire support
From: Jean-Michel Hautbois @ 2026-06-07 13:02 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Jean-Michel Hautbois, Fabrice Fontaine,
Thomas Petazzoni, Giulio Benetti, Romain Naour
In-Reply-To: <20260424132326.825570-1-jeanmichel.hautbois@yoseli.org>
On m68k ColdFire, two issues prevent libglib2 from building.
First, libgio's GOT exceeds the default 16-bit GOT entry limit (8192
entries: its .got holds ~12800 entries), so the 16-bit R_68K_GOT16O
relocation overflows. Add -mxgot to use 32-bit GOT offsets.
Second, glib optionally enables a C++ language (add_languages()), so
meson probes some dependencies (such as iconv) using the C++ compiler.
On ColdFire that link pulls libstdc++, which references the __sync_*
helpers that libgcc only provides as hidden symbols, so the link fails
with "hidden symbol ... referenced by DSO" and the probe (and thus the
whole configure step) fails. Link libstdc++ and libgcc statically to
keep these probes working. This is the same root cause addressed for
gmp and gdb earlier in this series.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>
---
Changes since v1:
- Drop the b_staticpic hunk (moved to pkg-meson.mk) and the
sysprof hunk (sent separately). Add -static-libstdc++ and
-static-libgcc for glib's C++ iconv probe; keep -mxgot.
package/libglib2/libglib2.mk | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk
index cae8a85a28..77a7172392 100644
--- a/package/libglib2/libglib2.mk
+++ b/package/libglib2/libglib2.mk
@@ -55,6 +55,21 @@ endif
# containing ${libdir} in gio-2.0.pc. Indeed, a value depending on
# ${libdir} would be prefixed by the sysroot by pkg-config, causing a
# bogus installation path once combined with $(DESTDIR).
+# libgio's GOT exceeds the 16-bit offset window on m68k ColdFire
+# (relocation truncated to fit: R_68K_GOT16O); use 32-bit GOT offsets.
+#
+# glib optionally enables a C++ language (add_languages()), so meson
+# probes some dependencies (such as iconv) with the C++ compiler. On
+# ColdFire that link pulls libstdc++, which references the __sync_*
+# helpers that libgcc only provides as hidden symbols, so the link
+# fails ("hidden symbol ... referenced by DSO"). Link libstdc++ and
+# libgcc statically to keep these probes (and any C++ object) working.
+# See the gmp and gdb commits for the same root cause.
+ifeq ($(BR2_m68k_cf),y)
+LIBGLIB2_CFLAGS += -mxgot
+LIBGLIB2_LDFLAGS += -static-libstdc++ -static-libgcc
+endif
+
LIBGLIB2_CONF_OPTS = \
-Dglib_debug=disabled \
-Dlibelf=disabled \
--
2.39.5
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH v2 7/8] package/dropbear: disable ML-KEM768 on m68k
From: Jean-Michel Hautbois @ 2026-06-07 13:02 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Jean-Michel Hautbois, Fabrice Fontaine,
Thomas Petazzoni, Giulio Benetti, Romain Naour
In-Reply-To: <20260424132326.825570-1-jeanmichel.hautbois@yoseli.org>
ML-KEM768 post-quantum key exchange code (in the vendored header
src/libcrux_mlkem768_sha3.h) triggers a GCC internal compiler error
(ICE) in cselib_record_set during the postreload CSE pass when
compiled at -O2 on m68k. Reproduced with the Buildroot default
GCC 14.3.0 on ColdFire (cselib.cc:2727); GCC 15.2.0 hits the same ICE
(cselib.cc:2869).
The bug is tracked upstream as GCC PR rtl-optimization/125078:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125078
A new BR2_TOOLCHAIN_HAS_GCC_BUG_125078 helper symbol is added in
toolchain/Config.in following the convention used for other
known-broken toolchains, and the dropbear build hook is gated on it so
the workaround is removed automatically once GCC ships a fix. It is
enabled for all m68k, conservatively, as the ICE is present in the
default GCC 14.3.0.
Standard key exchange algorithms remain available.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>
---
Changes since v1:
- Gate on the new BR2_TOOLCHAIN_HAS_GCC_BUG_125078 (added in
toolchain/Config.in), as requested by Baruch on v1.
package/dropbear/dropbear.mk | 7 +++++++
toolchain/Config.in | 10 ++++++++++
2 files changed, 17 insertions(+)
diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk
index a7de8432af..f40520d4d8 100644
--- a/package/dropbear/dropbear.mk
+++ b/package/dropbear/dropbear.mk
@@ -62,6 +62,13 @@ endef
DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PASSWORD_AUTH
endif
+ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_125078),y)
+define DROPBEAR_DISABLE_MLKEM
+ echo '#define DROPBEAR_MLKEM768 0' >> $(@D)/localoptions.h
+endef
+DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_DISABLE_MLKEM
+endif
+
ifeq ($(BR2_PACKAGE_DROPBEAR_LEGACY_CRYPTO),y)
define DROPBEAR_ENABLE_LEGACY_CRYPTO
echo '#define DROPBEAR_3DES 1' >> $(@D)/localoptions.h
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 910cd103dc..3bb7ab269d 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -246,6 +246,16 @@ config BR2_TOOLCHAIN_HAS_GCC_BUG_111001
BR2_OPTIMIZE_2 || \
BR2_OPTIMIZE_3
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125078
+# ICE in cselib_record_set during the postreload CSE pass when
+# compiling ML-KEM code at -O2 on m68k (cselib.cc:2727 with gcc
+# 14.3.0, cselib.cc:2869 with gcc 15.2.0). Reproduced at -O2 with the
+# Buildroot default gcc 14.3.0 on ColdFire. Enabled for all m68k
+# conservatively, as the bug is present in the default gcc 14.3.0.
+config BR2_TOOLCHAIN_HAS_GCC_BUG_125078
+ bool
+ default y if BR2_m68k
+
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
bool
--
2.39.5
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH v2 4/8] package/Makefile.in: use 32-bit jump table offsets on m68k ColdFire
From: Jean-Michel Hautbois @ 2026-06-07 13:02 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Jean-Michel Hautbois, Fabrice Fontaine,
Thomas Petazzoni, Giulio Benetti, Romain Naour
In-Reply-To: <20260424132326.825570-1-jeanmichel.hautbois@yoseli.org>
On m68k ColdFire, switch statement jump tables use signed 16-bit .word
offsets by default. Large functions (for example in pcre2 and
nftables) overflow this, causing an assembler error:
Error: Adjusted signed .word overflows: `switch'-statement too large
This affects every ColdFire core: the 16-bit jump table offset is
independent of the core ISA (verified to fail identically on the V2
5208 and the V4e MCF5441x). Add -mlong-jump-table-offsets globally for
BR2_m68k_cf, alongside the existing -fno-dwarf2-cfi-asm. The flag is
harmless when not needed and the overflow is not predictable from the
package list, so a global setting is preferable to a per-package one.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>
---
Changes since v1:
- Keep only -mlong-jump-table-offsets; drop the
-fno-schedule-insns/-fno-schedule-insns2 flags, which had no
upstream backing and triggered the dropbear ML-KEM ICE.
package/Makefile.in | 2 ++
1 file changed, 2 insertions(+)
diff --git a/package/Makefile.in b/package/Makefile.in
index 5ebb5f9ba8..7017649c09 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -211,6 +211,8 @@ TARGET_FCFLAGS = $(TARGET_ABI) $(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING)
ifeq ($(BR2_m68k_cf),y)
TARGET_CFLAGS += -fno-dwarf2-cfi-asm
TARGET_CXXFLAGS += -fno-dwarf2-cfi-asm
+TARGET_CFLAGS += -mlong-jump-table-offsets
+TARGET_CXXFLAGS += -mlong-jump-table-offsets
endif
ifeq ($(BR2_BINFMT_FLAT),y)
--
2.39.5
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
* [Buildroot] [PATCH v2 6/8] package/gdb: link libstdc++ and libgcc statically on m68k ColdFire
From: Jean-Michel Hautbois @ 2026-06-07 13:02 UTC (permalink / raw)
To: buildroot
Cc: Eric Le Bihan, Jean-Michel Hautbois, Fabrice Fontaine,
Thomas Petazzoni, Giulio Benetti, Romain Naour
In-Reply-To: <20260424132326.825570-1-jeanmichel.hautbois@yoseli.org>
ColdFire has no hardware atomic instructions, so libstdc++ references
the libgcc __sync_* helpers, which are exported with hidden ELF
visibility. Linking gdb (a C++ program) dynamically against libstdc++
fails because those hidden symbols cannot satisfy the cross-DSO
references. The same root cause is addressed for gmp in a separate
patch.
Link libstdc++ and libgcc statically to avoid the hidden-symbol
references. The flags are appended to TARGET_LDFLAGS rather than
overwriting LDFLAGS.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@yoseli.org>
---
Changes since v1:
- Reword the commit message; fold the flags into GDB_LDFLAGS
(appended to TARGET_LDFLAGS) instead of overwriting LDFLAGS.
package/gdb/gdb.mk | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/package/gdb/gdb.mk b/package/gdb/gdb.mk
index 2a2fdb260d..271ab9d942 100644
--- a/package/gdb/gdb.mk
+++ b/package/gdb/gdb.mk
@@ -121,6 +121,13 @@ GDB_LDFLAGS = $(TARGET_LDFLAGS)
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
GDB_LDFLAGS += -latomic
endif
+# On m68k ColdFire (no hardware atomics), libstdc++ references the
+# hidden libgcc __sync_* helpers, so linking gdb dynamically against
+# libstdc++ fails. Link libstdc++ and libgcc statically instead; see
+# also the gmp package.
+ifeq ($(BR2_m68k_cf),y)
+GDB_LDFLAGS += -static-libstdc++ -static-libgcc
+endif
GDB_CONF_ENV += \
LDFLAGS="$(GDB_LDFLAGS)"
--
2.39.5
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related
page: next (older)
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox