* [Buildroot] [PATCH v1 2/2] package/libgtk4: bump to version 4.24.1
2026-10-31 18:36 [Buildroot] [PATCH v1 1/2] package/libglib2: bump to version 2.90.1 Thomas Devoogdt
@ 2026-10-31 18:36 ` Thomas Devoogdt
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Devoogdt @ 2026-10-31 18:36 UTC (permalink / raw)
To: buildroot; +Cc: Fabrice Fontaine, Thomas Devoogdt
Changelog: https://gitlab.gnome.org/GNOME/gtk/-/blob/4.24.1/NEWS
Highlights of the changes since 4.21.0:
- librsvg is no longer a dependency, as GTK can now render SVG
images natively; this also drops the rustc host requirement
- New GtkSvgWidget for displaying (interactive) SVG, used for all
SVG icons and GtkSpinner
- Wayland: support for text protocol v3.2 and
xdg-session-management-v1
- GSK: 10bit image formats support, rewritten cache allocator,
clip masks to reduce the number of offscreens
- Session saving support is back
Since 4.24, GTK unconditionally links against libpng and libjpeg
(previously only needed via the gdk-pixbuf loaders), so select
BR2_PACKAGE_LIBPNG and BR2_PACKAGE_JPEG.
Also list cairo, harfbuzz and libfribidi in LIBGTK4_DEPENDENCIES
as GTK links against them directly, and add the X11 libraries
(GTK links against x11, xext, xrender, xi, xcursor, xdamage,
xfixes, xrandr, xinerama, fontconfig) that are missing from the
X11 backend dependency list, so that all direct dependencies are
correctly built before libgtk4.
Finally, added two patches to fix fenv usage on uclibc toolchains.
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
---
BR2_PACKAGE_LIBGTK4=y
BR2_PACKAGE_LIBGTK4_WAYLAND=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y
BR2_PACKAGE_MESA3D_OPENGL_ES=y
BR2_PACKAGE_MESA3D_GBM=y
./utils/test-pkg -p libgtk4 -c libgtk4-mesa-wayland.config -a
arm-aarch64 [ 1/32]: OK
bootlin-aarch64-glibc [ 2/32]: OK
bootlin-aarch64-glibc-old [ 3/32]: SKIPPED
bootlin-arcle-hs38-uclibc [ 4/32]: OK
bootlin-armv5-uclibc [ 5/32]: OK
bootlin-armv7-glibc [ 6/32]: OK
bootlin-armv7m-uclibc [ 7/32]: SKIPPED
bootlin-armv7-musl [ 8/32]: OK
bootlin-m68k-5208-uclibc [ 9/32]: SKIPPED
bootlin-m68k-68040-uclibc [10/32]: FAILED
bootlin-microblazeel-uclibc [11/32]: SKIPPED
bootlin-mips64el-glibc [12/32]: OK
bootlin-mipsel32r6-glibc [13/32]: OK
bootlin-mipsel-uclibc [14/32]: OK
bootlin-openrisc-uclibc [15/32]: OK
bootlin-powerpc64le-power8-glibc [16/32]: OK
bootlin-powerpc-e500mc-uclibc [17/32]: OK
bootlin-riscv32-glibc [18/32]: OK
bootlin-riscv64-glibc [19/32]: OK
bootlin-riscv64-musl [20/32]: OK
bootlin-s390x-z13-glibc [21/32]: OK
bootlin-sh4-uclibc [22/32]: OK
bootlin-sparc64-glibc [23/32]: OK
bootlin-sparc-uclibc [24/32]: SKIPPED
bootlin-x86-64-glibc [25/32]: OK
bootlin-x86-64-musl [26/32]: OK
bootlin-x86-64-uclibc [27/32]: OK
bootlin-x86-i686-musl [28/32]: OK
bootlin-xtensa-uclibc [29/32]: OK
br-arm-basic [30/32]: SKIPPED
br-arm-full-nothread [31/32]: SKIPPED
br-arm-full-static [32/32]: SKIPPED
32 builds, 8 skipped, 1 build failed, 0 legal-info failed, 0 show-info failed
BR2_PACKAGE_LIBGTK4=y
BR2_PACKAGE_LIBGTK4_X11=y
BR2_PACKAGE_MESA3D=y
BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SOFTPIPE=y
BR2_PACKAGE_MESA3D_OPENGL_EGL=y
BR2_PACKAGE_MESA3D_OPENGL_GLX=y
BR2_PACKAGE_XORG7=y
./utils/test-pkg -p libgtk4 -c libgtk4-mesa-x11.config -a
arm-aarch64 [ 1/32]: OK
bootlin-aarch64-glibc [ 2/32]: OK
bootlin-aarch64-glibc-old [ 3/32]: SKIPPED
bootlin-arcle-hs38-uclibc [ 4/32]: OK
bootlin-armv5-uclibc [ 5/32]: OK
bootlin-armv7-glibc [ 6/32]: OK
bootlin-armv7m-uclibc [ 7/32]: SKIPPED
bootlin-armv7-musl [ 8/32]: OK
bootlin-m68k-5208-uclibc [ 9/32]: SKIPPED
bootlin-m68k-68040-uclibc [10/32]: FAILED
bootlin-microblazeel-uclibc [11/32]: SKIPPED
bootlin-mips64el-glibc [12/32]: OK
bootlin-mipsel32r6-glibc [13/32]: OK
bootlin-mipsel-uclibc [14/32]: OK
bootlin-openrisc-uclibc [15/32]: OK
bootlin-powerpc64le-power8-glibc [16/32]: OK
bootlin-powerpc-e500mc-uclibc [17/32]: OK
bootlin-riscv32-glibc [18/32]: OK
bootlin-riscv64-glibc [19/32]: OK
bootlin-riscv64-musl [20/32]: OK
bootlin-s390x-z13-glibc [21/32]: OK
bootlin-sh4-uclibc [22/32]: OK
bootlin-sparc64-glibc [23/32]: OK
bootlin-sparc-uclibc [24/32]: SKIPPED
bootlin-x86-64-glibc [25/32]: OK
bootlin-x86-64-musl [26/32]: OK
bootlin-x86-64-uclibc [27/32]: OK
bootlin-x86-i686-musl [28/32]: OK
bootlin-xtensa-uclibc [29/32]: OK
br-arm-basic [30/32]: SKIPPED
br-arm-full-nothread [31/32]: SKIPPED
br-arm-full-static [32/32]: SKIPPED
32 builds, 8 skipped, 1 build failed, 0 legal-info failed, 0 show-info failed
One fail on bootlin-m68k-68040-uclibc:
In file included from ../src/util/list.h:40,
from ../src/compiler/nir/nir.h:40,
from ../src/compiler/nir/nir_opt_varyings.c:524:
../src/compiler/nir/nir_opt_varyings.c:3207:1: error: static assertion failed: "dedup_entry layout changed"
3207 | static_assert(sizeof(dedup_entry) == (sizeof(void *) == 8 ? 48 : 28),
| ^~~~~~~~~~~~~
Reported here: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42235#note_3751861
---
| 26 +++++
...value.c-fix-compilation-if-fenv.h-is.patch | 106 ++++++++++++++++++
package/libgtk4/Config.in | 5 +-
package/libgtk4/libgtk4.hash | 4 +-
package/libgtk4/libgtk4.mk | 23 +++-
5 files changed, 155 insertions(+), 9 deletions(-)
create mode 100644 package/libgtk4/0001-meson.build-add-a-check-for-the-fenv-header.patch
create mode 100644 package/libgtk4/0002-gtk-gtkcssnumbervalue.c-fix-compilation-if-fenv.h-is.patch
--git a/package/libgtk4/0001-meson.build-add-a-check-for-the-fenv-header.patch b/package/libgtk4/0001-meson.build-add-a-check-for-the-fenv-header.patch
new file mode 100644
index 00000000000..788c190d865
--- /dev/null
+++ b/package/libgtk4/0001-meson.build-add-a-check-for-the-fenv-header.patch
@@ -0,0 +1,26 @@
+From d126fca3178004ab7d540d067e8c39745b69820f Mon Sep 17 00:00:00 2001
+From: Thomas Devoogdt <thomas@devoogdt.com>
+Date: Fri, 15 Nov 2024 08:22:23 +0100
+Subject: [PATCH] meson.build: add a check for the fenv header
+
+Upstream: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7925
+Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
+---
+ meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/meson.build b/meson.build
+index f8a6d35e3c..ca8e63b93d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -198,6 +198,7 @@ cdata.set_quoted('SYMBOL_VISIBILITY', get_option('symbol-visibility'))
+
+ check_headers = [
+ 'dev/evdev/input.h',
++ 'fenv.h',
+ 'ftw.h',
+ 'linux/input.h',
+ 'sys/mman.h',
+--
+2.43.0
+
diff --git a/package/libgtk4/0002-gtk-gtkcssnumbervalue.c-fix-compilation-if-fenv.h-is.patch b/package/libgtk4/0002-gtk-gtkcssnumbervalue.c-fix-compilation-if-fenv.h-is.patch
new file mode 100644
index 00000000000..38c5b7573e1
--- /dev/null
+++ b/package/libgtk4/0002-gtk-gtkcssnumbervalue.c-fix-compilation-if-fenv.h-is.patch
@@ -0,0 +1,106 @@
+From 734fcd35e1d82a9b68b7c6aff7cd2b27d557b29e Mon Sep 17 00:00:00 2001
+From: Thomas Devoogdt <thomas@devoogdt.com>
+Date: Fri, 15 Nov 2024 08:22:40 +0100
+Subject: [PATCH] gtk/gtkcssnumbervalue.c: fix compilation if fenv.h is missing
+
+../gtk/gtkcssnumbervalue.c:29:10: fatal error: fenv.h: No such file or directory
+ 29 | #include <fenv.h>
+ |
+
+Upstream: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7925
+Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
+---
+ gtk/gtkcssnumbervalue.c | 59 ++++++++++++++++++++++++++++++++---------
+ 1 file changed, 47 insertions(+), 12 deletions(-)
+
+diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
+index 1181c1a802..03cf30262a 100644
+--- a/gtk/gtkcssnumbervalue.c
++++ b/gtk/gtkcssnumbervalue.c
+@@ -26,7 +26,9 @@
+ #include "gtkcssstyleprivate.h"
+ #include "gtkprivate.h"
+
++#ifdef HAVE_FENV_H
+ #include <fenv.h>
++#endif
+
+ #define RAD_TO_DEG(x) ((x) * 180.0 / G_PI)
+ #define DEG_TO_RAD(x) ((x) * G_PI / 180.0)
+@@ -1846,13 +1848,25 @@ gtk_css_dimension_value_is_zero (const GtkCssValue *value)
+ return value->dimension.value == 0;
+ }
+
+-static double
+-_round (guint mode, double a, double b)
++#ifdef HAVE_FENV_H
++static inline double
++_round_fenv (int mode, double a, double b)
+ {
+- int old_mode;
+- int modes[] = { FE_TONEAREST, FE_UPWARD, FE_DOWNWARD, FE_TOWARDZERO };
+ double result;
++ int old_mode;
+
++ old_mode = fegetround ();
++ fesetround (mode);
++ result = nearbyint (a/b) * b;
++ fesetround (old_mode);
++
++ return result;
++}
++#endif
++
++static double
++_round (guint mode, double a, double b)
++{
+ if (b == 0)
+ return NAN;
+
+@@ -1880,14 +1894,35 @@ _round (guint mode, double a, double b)
+ }
+ }
+
+- old_mode = fegetround ();
+- fesetround (modes[mode]);
+-
+- result = nearbyint (a/b) * b;
+-
+- fesetround (old_mode);
+-
+- return result;
++ switch (mode)
++ {
++ case ROUND_NEAREST:
++#ifdef FE_TONEAREST
++ return _round_fenv (FE_TONEAREST, a, b);
++#else
++ return round (a/b) * b;
++#endif
++ case ROUND_UP:
++#ifdef FE_UPWARD
++ return _round_fenv (FE_UPWARD, a, b);
++#else
++ return (((a/b) >= 0) ? ceil (a/b) : floor (a/b)) * b;
++#endif
++ case ROUND_DOWN:
++#ifdef FE_DOWNWARD
++ return _round_fenv (FE_DOWNWARD, a, b);
++#else
++ return (((a/b) >= 0) ? floor (a/b) : ceil (a/b)) * b;
++#endif
++ case ROUND_TO_ZERO:
++#ifdef FE_TOWARDZERO
++ return _round_fenv (FE_TOWARDZERO, a, b);
++#else
++ return (((a/b) >= 0) ? floor (a/b) : ceil (a/b)) * b;
++#endif
++ default:
++ g_assert_not_reached ();
++ }
+ }
+
+ static double
+--
+2.43.0
+
diff --git a/package/libgtk4/Config.in b/package/libgtk4/Config.in
index c1f3928b8aa..689d963228c 100644
--- a/package/libgtk4/Config.in
+++ b/package/libgtk4/Config.in
@@ -1,5 +1,4 @@
comment "libgtk4 needs a toolchain w/ dynamic library, wchar, threads, C++, gcc >= 4.9"
- depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
depends on BR2_USE_MMU
depends on BR2_TOOLCHAIN_HAS_SYNC_4
depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \
@@ -14,7 +13,6 @@ comment "libgtk4 needs an OpenGL(ES) EGL backend"
config BR2_PACKAGE_LIBGTK4
bool "libgtk4"
- depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS # librsvg
depends on BR2_USE_WCHAR # glib2
depends on BR2_TOOLCHAIN_HAS_THREADS # glib2, graphene, libepoxy
depends on BR2_USE_MMU # glib2
@@ -29,9 +27,10 @@ config BR2_PACKAGE_LIBGTK4
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_GDK_PIXBUF
select BR2_PACKAGE_GRAPHENE
+ select BR2_PACKAGE_JPEG
select BR2_PACKAGE_LIBEPOXY
select BR2_PACKAGE_LIBGLIB2
- select BR2_PACKAGE_LIBRSVG
+ select BR2_PACKAGE_LIBPNG
select BR2_PACKAGE_PANGO
select BR2_PACKAGE_TIFF
# At least one backend is required
diff --git a/package/libgtk4/libgtk4.hash b/package/libgtk4/libgtk4.hash
index dff32c57b48..ffa90911e58 100644
--- a/package/libgtk4/libgtk4.hash
+++ b/package/libgtk4/libgtk4.hash
@@ -1,5 +1,5 @@
-# From https://download.gnome.org/sources/gtk/4.21/gtk-4.21.0.sha256sum
-sha256 f52475c5041dfd02cc4eed22ee94f12ec310c16a68fda9203dc54ffd5daa6e6f gtk-4.21.0.tar.xz
+# From https://download.gnome.org/sources/gtk/4.24/gtk-4.24.1.sha256sum
+sha256 e98abe720e16129c8c0f50761dee0a2e9ae2478055e31018f6cf977fcf6513e9 gtk-4.24.1.tar.xz
# Hash for license file:
sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING
diff --git a/package/libgtk4/libgtk4.mk b/package/libgtk4/libgtk4.mk
index 9a5ed651a82..26346dad29d 100644
--- a/package/libgtk4/libgtk4.mk
+++ b/package/libgtk4/libgtk4.mk
@@ -4,8 +4,8 @@
#
################################################################################
-LIBGTK4_VERSION_MAJOR = 4.21
-LIBGTK4_VERSION = $(LIBGTK4_VERSION_MAJOR).0
+LIBGTK4_VERSION_MAJOR = 4.24
+LIBGTK4_VERSION = $(LIBGTK4_VERSION_MAJOR).1
LIBGTK4_SOURCE = gtk-$(LIBGTK4_VERSION).tar.xz
LIBGTK4_SITE = https://download.gnome.org/sources/gtk/$(LIBGTK4_VERSION_MAJOR)
LIBGTK4_LICENSE = LGPL-2.0+
@@ -17,12 +17,17 @@ LIBGTK4_INSTALL_STAGING = YES
LIBGTK4_DEPENDENCIES = \
host-pkgconf \
host-libgtk4 \
+ cairo \
gdk-pixbuf \
graphene \
+ harfbuzz \
+ jpeg \
libepoxy \
+ libfribidi \
libglib2 \
- librsvg \
+ libpng \
pango \
+ tiff \
$(TARGET_NLS_DEPENDENCIES)
LIBGTK4_CONF_OPTS = \
@@ -46,7 +51,17 @@ LIBGTK4_CONF_OPTS += -Dintrospection=disabled
endif
ifeq ($(BR2_PACKAGE_LIBGTK4_X11),y)
-LIBGTK4_DEPENDENCIES += xlib_libXcursor xlib_libXi xlib_libXinerama
+LIBGTK4_DEPENDENCIES += \
+ fontconfig \
+ xlib_libX11 \
+ xlib_libXcursor \
+ xlib_libXdamage \
+ xlib_libXext \
+ xlib_libXfixes \
+ xlib_libXi \
+ xlib_libXinerama \
+ xlib_libXrandr \
+ xlib_libXrender
LIBGTK4_CONF_OPTS += -Dx11-backend=true
else
LIBGTK4_CONF_OPTS += -Dx11-backend=false
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread