Skip to content

Commit 6e06015

Browse files
package/libgtk4: bump to 4.17.0
https://gitlab.gnome.org/GNOME/gtk/-/blob/4.17.0/NEWS Note that libgtk4 never selected BR2_PACKAGE_CAIRO_{PNG,ZLIB}, this is also not needed since [1]. Instead, we have to select BR2_PACKAGE_LIBPNG ourselves, which libgtk3 indirectly did by including BR2_PACKAGE_CAIRO_PNG. Also, add patches for: - toolchains without fenv.h. [2] - when cairo has been compiled without surfaces. [3] [1] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7717 [2] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7925 [3] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7926 Signed-off-by: Thomas Devoogdt <[email protected]>
1 parent 44b2adf commit 6e06015

6 files changed

+234
-4
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
From 67cf230a85dcde61ba335cb8de52c4ea2e19caf2 Mon Sep 17 00:00:00 2001
2+
From: Thomas Devoogdt <[email protected]>
3+
Date: Fri, 15 Nov 2024 08:22:23 +0100
4+
Subject: [PATCH] meson.build: add a check for the fenv header
5+
6+
Upstream: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7925
7+
Signed-off-by: Thomas Devoogdt <[email protected]>
8+
---
9+
meson.build | 1 +
10+
1 file changed, 1 insertion(+)
11+
12+
diff --git a/meson.build b/meson.build
13+
index 2bb6f7c299..5f51aeb8a7 100644
14+
--- a/meson.build
15+
+++ b/meson.build
16+
@@ -180,6 +180,7 @@ check_headers = [
17+
'crt/externs.h',
18+
'dev/evdev/input.h',
19+
'dlfcn.h',
20+
+ 'fenv.h',
21+
'ftw.h',
22+
'inttypes.h',
23+
'linux/input.h',
24+
--
25+
2.43.0
26+
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
From 4fb5e414b627d9c5c35ea85d467b06b56f5c7ee1 Mon Sep 17 00:00:00 2001
2+
From: Thomas Devoogdt <[email protected]>
3+
Date: Fri, 15 Nov 2024 08:22:40 +0100
4+
Subject: [PATCH] gtk/gtkcssnumbervalue.c: fix compilation if fenv.h is missing
5+
6+
../gtk/gtkcssnumbervalue.c:29:10: fatal error: fenv.h: No such file or directory
7+
29 | #include <fenv.h>
8+
|
9+
10+
Upstream: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7925
11+
Signed-off-by: Thomas Devoogdt <[email protected]>
12+
---
13+
gtk/gtkcssnumbervalue.c | 59 ++++++++++++++++++++++++++++++++---------
14+
1 file changed, 47 insertions(+), 12 deletions(-)
15+
16+
diff --git a/gtk/gtkcssnumbervalue.c b/gtk/gtkcssnumbervalue.c
17+
index 1181c1a802..03cf30262a 100644
18+
--- a/gtk/gtkcssnumbervalue.c
19+
+++ b/gtk/gtkcssnumbervalue.c
20+
@@ -26,7 +26,9 @@
21+
#include "gtkcssstyleprivate.h"
22+
#include "gtkprivate.h"
23+
24+
+#ifdef HAVE_FENV_H
25+
#include <fenv.h>
26+
+#endif
27+
28+
#define RAD_TO_DEG(x) ((x) * 180.0 / G_PI)
29+
#define DEG_TO_RAD(x) ((x) * G_PI / 180.0)
30+
@@ -1846,13 +1848,25 @@ gtk_css_dimension_value_is_zero (const GtkCssValue *value)
31+
return value->dimension.value == 0;
32+
}
33+
34+
-static double
35+
-_round (guint mode, double a, double b)
36+
+#ifdef HAVE_FENV_H
37+
+static inline double
38+
+_round_fenv (int mode, double a, double b)
39+
{
40+
- int old_mode;
41+
- int modes[] = { FE_TONEAREST, FE_UPWARD, FE_DOWNWARD, FE_TOWARDZERO };
42+
double result;
43+
+ int old_mode;
44+
45+
+ old_mode = fegetround ();
46+
+ fesetround (mode);
47+
+ result = nearbyint (a/b) * b;
48+
+ fesetround (old_mode);
49+
+
50+
+ return result;
51+
+}
52+
+#endif
53+
+
54+
+static double
55+
+_round (guint mode, double a, double b)
56+
+{
57+
if (b == 0)
58+
return NAN;
59+
60+
@@ -1880,14 +1894,35 @@ _round (guint mode, double a, double b)
61+
}
62+
}
63+
64+
- old_mode = fegetround ();
65+
- fesetround (modes[mode]);
66+
-
67+
- result = nearbyint (a/b) * b;
68+
-
69+
- fesetround (old_mode);
70+
-
71+
- return result;
72+
+ switch (mode)
73+
+ {
74+
+ case ROUND_NEAREST:
75+
+#ifdef FE_TONEAREST
76+
+ return _round_fenv (FE_TONEAREST, a, b);
77+
+#else
78+
+ return round (a/b) * b;
79+
+#endif
80+
+ case ROUND_UP:
81+
+#ifdef FE_UPWARD
82+
+ return _round_fenv (FE_UPWARD, a, b);
83+
+#else
84+
+ return (((a/b) >= 0) ? ceil (a/b) : floor (a/b)) * b;
85+
+#endif
86+
+ case ROUND_DOWN:
87+
+#ifdef FE_DOWNWARD
88+
+ return _round_fenv (FE_DOWNWARD, a, b);
89+
+#else
90+
+ return (((a/b) >= 0) ? floor (a/b) : ceil (a/b)) * b;
91+
+#endif
92+
+ case ROUND_TO_ZERO:
93+
+#ifdef FE_TOWARDZERO
94+
+ return _round_fenv (FE_TOWARDZERO, a, b);
95+
+#else
96+
+ return (((a/b) >= 0) ? floor (a/b) : ceil (a/b)) * b;
97+
+#endif
98+
+ default:
99+
+ g_assert_not_reached ();
100+
+ }
101+
}
102+
103+
static double
104+
--
105+
2.43.0
106+
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
From b60bee17ddce7c44a455fa533e23aebebbfeea59 Mon Sep 17 00:00:00 2001
2+
From: Thomas Devoogdt <[email protected]>
3+
Date: Fri, 15 Nov 2024 13:42:58 +0100
4+
Subject: [PATCH] modules/printbackends/gtkprintbackendfile.c: fix compilation
5+
if no cairo surfaces are present
6+
MIME-Version: 1.0
7+
Content-Type: text/plain; charset=UTF-8
8+
Content-Transfer-Encoding: 8bit
9+
10+
../modules/printbackends/gtkprintbackendfile.c: In function ‘output_file_from_settings’:
11+
../modules/printbackends/gtkprintbackendfile.c:241:20: error: label at end of compound statement
12+
241 | case N_FORMATS:
13+
| ^~~~~~~~~
14+
../modules/printbackends/gtkprintbackendfile.c: In function ‘file_printer_create_cairo_surface’:
15+
../modules/printbackends/gtkprintbackendfile.c:363:12: error: label at end of compound statement
16+
363 | case N_FORMATS:
17+
| ^~~~~~~~~
18+
19+
Upstream: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/7926
20+
Signed-off-by: Thomas Devoogdt <[email protected]>
21+
---
22+
modules/printbackends/gtkprintbackendfile.c | 16 +++++++++++++++-
23+
1 file changed, 15 insertions(+), 1 deletion(-)
24+
25+
diff --git a/modules/printbackends/gtkprintbackendfile.c b/modules/printbackends/gtkprintbackendfile.c
26+
index ddfd8d4425..436c767e4f 100644
27+
--- a/modules/printbackends/gtkprintbackendfile.c
28+
+++ b/modules/printbackends/gtkprintbackendfile.c
29+
@@ -55,6 +55,12 @@ typedef struct _GtkPrintBackendFileClass GtkPrintBackendFileClass;
30+
31+
#define _STREAM_MAX_CHUNK_SIZE 8192
32+
33+
+#if defined(CAIRO_HAS_PDF_SURFACE) || \
34+
+ defined(CAIRO_HAS_PS_SURFACE) || \
35+
+ defined(CAIRO_HAS_SVG_SURFACE)
36+
+#define _CAIRO_HAS_SURFACE 1
37+
+#endif
38+
+
39+
struct _GtkPrintBackendFileClass
40+
{
41+
GtkPrintBackendClass parent_class;
42+
@@ -237,8 +243,10 @@ output_file_from_settings (GtkPrintSettings *settings,
43+
format = format_from_settings (settings);
44+
switch (format)
45+
{
46+
+#ifdef _CAIRO_HAS_SURFACE
47+
default:
48+
case N_FORMATS:
49+
+#endif
50+
#ifdef CAIRO_HAS_PDF_SURFACE
51+
case FORMAT_PDF:
52+
extension = "pdf";
53+
@@ -359,8 +367,10 @@ file_printer_create_cairo_surface (GtkPrinter *printer,
54+
55+
switch (format)
56+
{
57+
+#ifdef _CAIRO_HAS_SURFACE
58+
default:
59+
case N_FORMATS:
60+
+#endif
61+
#ifdef CAIRO_HAS_PDF_SURFACE
62+
case FORMAT_PDF:
63+
surface = cairo_pdf_surface_create_for_stream (_cairo_write, cache_io, width, height);
64+
@@ -727,8 +737,10 @@ file_printer_get_options (GtkPrinter *printer,
65+
{
66+
switch (format)
67+
{
68+
+#ifdef _CAIRO_HAS_SURFACE
69+
default:
70+
case N_FORMATS:
71+
+#endif
72+
#ifdef CAIRO_HAS_PDF_SURFACE
73+
case FORMAT_PDF:
74+
current_format = FORMAT_PDF;
75+
@@ -741,7 +753,7 @@ file_printer_get_options (GtkPrinter *printer,
76+
#endif
77+
#ifdef CAIRO_HAS_SVG_SURFACE
78+
case FORMAT_SVG:
79+
- current_format = FORMAT_SVG;
80+
+ current_format = FORMAT_SVG;
81+
break;
82+
#endif
83+
}
84+
@@ -854,7 +866,9 @@ file_printer_prepare_for_print (GtkPrinter *printer,
85+
#ifdef CAIRO_HAS_PDF_SURFACE
86+
case FORMAT_PDF:
87+
#endif
88+
+#ifdef _CAIRO_HAS_SURFACE
89+
case N_FORMATS:
90+
+#endif
91+
gtk_print_job_set_rotate (print_job, FALSE);
92+
break;
93+
default:
94+
--
95+
2.43.0
96+

package/libgtk4/Config.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ config BR2_PACKAGE_LIBGTK4
2727
select BR2_PACKAGE_GRAPHENE
2828
select BR2_PACKAGE_LIBEPOXY
2929
select BR2_PACKAGE_LIBGLIB2
30+
select BR2_PACKAGE_LIBPNG
3031
select BR2_PACKAGE_PANGO
3132
select BR2_PACKAGE_TIFF
3233
# At least one backend is required

package/libgtk4/libgtk4.hash

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# From https://download.gnome.org/sources/gtk/4.14/gtk-4.14.5.sha256sum
2-
sha256 5547f2b9f006b133993e070b87c17804e051efda3913feaca1108fa2be41e24d gtk-4.14.5.tar.xz
1+
# From https://download.gnome.org/sources/gtk/4.17/gtk-4.17.0.sha256sum
2+
sha256 efcef355b5d903fc62a70934b1c644f39661e3c2ff44c8c53a8fcdb70c7dd97e gtk-4.17.0.tar.xz
33

44
# Hash for license file:
55
sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING

package/libgtk4/libgtk4.mk

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#
55
################################################################################
66

7-
LIBGTK4_VERSION_MAJOR = 4.14
8-
LIBGTK4_VERSION = $(LIBGTK4_VERSION_MAJOR).5
7+
LIBGTK4_VERSION_MAJOR = 4.17
8+
LIBGTK4_VERSION = $(LIBGTK4_VERSION_MAJOR).0
99
LIBGTK4_SOURCE = gtk-$(LIBGTK4_VERSION).tar.xz
1010
LIBGTK4_SITE = https://download.gnome.org/sources/gtk/$(LIBGTK4_VERSION_MAJOR)
1111
LIBGTK4_LICENSE = LGPL-2.0+
@@ -21,6 +21,7 @@ LIBGTK4_DEPENDENCIES = \
2121
graphene \
2222
libepoxy \
2323
libglib2 \
24+
libpng \
2425
pango \
2526
$(TARGET_NLS_DEPENDENCIES)
2627

0 commit comments

Comments
 (0)