Gentoo Archives: gentoo-commits

From: Matt Turner <mattst88@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: gui-libs/libadwaita/files/, gui-libs/libadwaita/
Date: Sat, 06 Aug 2022 02:17:44
Message-Id: 1659752248.33e354c16be0dbd7b8033e4ae76e0800a78e6dde.mattst88@gentoo
1 commit: 33e354c16be0dbd7b8033e4ae76e0800a78e6dde
2 Author: Matt Turner <mattst88 <AT> gentoo <DOT> org>
3 AuthorDate: Fri Aug 5 22:34:53 2022 +0000
4 Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org>
5 CommitDate: Sat Aug 6 02:17:28 2022 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=33e354c1
7
8 gui-libs/libadwaita: Version bump to 1.1.4
9
10 Closes: https://bugs.gentoo.org/859466
11 Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>
12
13 gui-libs/libadwaita/Manifest | 1 +
14 gui-libs/libadwaita/files/1.1.4-fix-aliasing.patch | 204 +++++++++++++++++++++
15 gui-libs/libadwaita/libadwaita-1.1.4.ebuild | 69 +++++++
16 3 files changed, 274 insertions(+)
17
18 diff --git a/gui-libs/libadwaita/Manifest b/gui-libs/libadwaita/Manifest
19 index d88f49c18c2b..41e4338d5650 100644
20 --- a/gui-libs/libadwaita/Manifest
21 +++ b/gui-libs/libadwaita/Manifest
22 @@ -1,2 +1,3 @@
23 DIST libadwaita-1.1.2.tar.xz 2731632 BLAKE2B e60201f6d2f51713350b3ec18dae10a5993c6fcea3491495b5e9878461a558609c306a418a59515f2b827b6ee8049ff09b710c4326a87e372e975519bec61274 SHA512 ae89c49986d1bddc5eacc736be8ff0842634bf564e73d4a456b6d899ecc0fcc337f27a17cbb5f8921009f45d82434ab22cf7c2bc9541c4179cd298c2d6706587
24 DIST libadwaita-1.1.3.tar.xz 2731856 BLAKE2B 743d238779da843935149871f476426933b2b27424d449a32f0ac8a844e4980d65946f9a9cc79480e688fdd73c0e43cfbbc547aef2605dc34c800977825f33a1 SHA512 ffe3f5d3277d243a17b27055856e8c111fd856c22f07e990aff5fb48cd760928ff9389943b118ffba6671655af670cd0f0b8d2d5b34ee2265ac37249ddcaca7c
25 +DIST libadwaita-1.1.4.tar.xz 2733108 BLAKE2B 7a1dc225215f1090365a1ae7b4cd281c253699ee8e6dadbeb95ac0995688b5dd567af875b270cb8b537a0153c6d3204490c5fb38606fc7261c770ae4e27dfe73 SHA512 0e24fd2dff81eeabb658eca12e1a6065c97de9871b05e3eb2f305c789377c85d5719d70c3d4e69c42ef3b4474b6270055e0579dbafd1258a644d84879302e1ca
26
27 diff --git a/gui-libs/libadwaita/files/1.1.4-fix-aliasing.patch b/gui-libs/libadwaita/files/1.1.4-fix-aliasing.patch
28 new file mode 100644
29 index 000000000000..659d81b2713b
30 --- /dev/null
31 +++ b/gui-libs/libadwaita/files/1.1.4-fix-aliasing.patch
32 @@ -0,0 +1,204 @@
33 +https://bugs.gentoo.org/859466
34 +
35 +From 200c33021dbe93eae270aa1cc9a4428365a8d7a4 Mon Sep 17 00:00:00 2001
36 +From: Matt Turner <mattst88@×××××.com>
37 +Date: Tue, 26 Jul 2022 11:00:18 -0400
38 +Subject: [PATCH 1/2] tab-view: Retype _AdwTabView::stack to fix aliasing
39 + violation
40 +
41 +../src/adw-tab-view.c:1269:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
42 +| g_clear_pointer ((GtkWidget **) &self->stack, gtk_widget_unparent);
43 +
44 +Closes: https://gitlab.gnome.org/GNOME/libadwaita/-/issues/522
45 +(cherry picked from commit 5b6ea17d51a5b42a99128afa562f52aa32eff7b2)
46 +---
47 + src/adw-tab-view.c | 20 ++++++++++----------
48 + 1 file changed, 10 insertions(+), 10 deletions(-)
49 +
50 +diff --git a/src/adw-tab-view.c b/src/adw-tab-view.c
51 +index 26b64436..9c5fbe00 100644
52 +--- a/src/adw-tab-view.c
53 ++++ b/src/adw-tab-view.c
54 +@@ -115,7 +115,7 @@ struct _AdwTabView
55 + {
56 + GtkWidget parent_instance;
57 +
58 +- GtkStack *stack;
59 ++ GtkWidget *stack;
60 + GListStore *children;
61 +
62 + int n_pages;
63 +@@ -763,7 +763,7 @@ page_belongs_to_this_view (AdwTabView *self,
64 + if (!page)
65 + return FALSE;
66 +
67 +- return gtk_widget_get_parent (page->child) == GTK_WIDGET (self->stack);
68 ++ return gtk_widget_get_parent (page->child) == self->stack;
69 + }
70 +
71 + static inline gboolean
72 +@@ -786,7 +786,7 @@ attach_page (AdwTabView *self,
73 +
74 + g_list_store_insert (self->children, position, page);
75 +
76 +- gtk_stack_add_child (self->stack, child);
77 ++ gtk_stack_add_child (GTK_STACK (self->stack), child);
78 +
79 + g_object_freeze_notify (G_OBJECT (self));
80 +
81 +@@ -829,7 +829,7 @@ set_selected_page (AdwTabView *self,
82 + if (notify_pages && self->pages)
83 + new_position = adw_tab_view_get_page_position (self, self->selected_page);
84 +
85 +- gtk_stack_set_visible_child (self->stack,
86 ++ gtk_stack_set_visible_child (GTK_STACK (self->stack),
87 + adw_tab_page_get_child (selected_page));
88 + set_page_selected (self->selected_page, TRUE);
89 + }
90 +@@ -922,7 +922,7 @@ detach_page (AdwTabView *self,
91 +
92 + g_object_thaw_notify (G_OBJECT (self));
93 +
94 +- gtk_stack_remove (self->stack, child);
95 ++ gtk_stack_remove (GTK_STACK (self->stack), child);
96 +
97 + g_signal_emit (self, signals[SIGNAL_PAGE_DETACHED], 0, page, pos);
98 +
99 +@@ -1305,7 +1305,7 @@ adw_tab_view_dispose (GObject *object)
100 +
101 + g_clear_object (&self->children);
102 +
103 +- g_clear_pointer ((GtkWidget **) &self->stack, gtk_widget_unparent);
104 ++ g_clear_pointer (&self->stack, gtk_widget_unparent);
105 +
106 + G_OBJECT_CLASS (adw_tab_view_parent_class)->dispose (object);
107 + }
108 +@@ -1737,9 +1737,9 @@ adw_tab_view_init (AdwTabView *self)
109 + self->children = g_list_store_new (ADW_TYPE_TAB_PAGE);
110 + self->default_icon = G_ICON (g_themed_icon_new ("adw-tab-icon-missing-symbolic"));
111 +
112 +- self->stack = GTK_STACK (gtk_stack_new ());
113 +- gtk_widget_show (GTK_WIDGET (self->stack));
114 +- gtk_widget_set_parent (GTK_WIDGET (self->stack), GTK_WIDGET (self));
115 ++ self->stack = gtk_stack_new ();
116 ++ gtk_widget_show (self->stack);
117 ++ gtk_widget_set_parent (self->stack, GTK_WIDGET (self));
118 +
119 + g_object_bind_property (self, "is-transferring-page",
120 + self->stack, "can-target",
121 +@@ -2569,7 +2569,7 @@ adw_tab_view_get_page (AdwTabView *self,
122 +
123 + g_return_val_if_fail (ADW_IS_TAB_VIEW (self), NULL);
124 + g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
125 +- g_return_val_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (self->stack), NULL);
126 ++ g_return_val_if_fail (gtk_widget_get_parent (child) == self->stack, NULL);
127 +
128 + for (i = 0; i < self->n_pages; i++) {
129 + AdwTabPage *page = adw_tab_view_get_nth_page (self, i);
130 +--
131 +2.35.1
132 +
133 +From e6d911fae1cbebe3769ccfb0c665ce5162c86a24 Mon Sep 17 00:00:00 2001
134 +From: Matt Turner <mattst88@×××××.com>
135 +Date: Tue, 26 Jul 2022 11:02:14 -0400
136 +Subject: [PATCH 2/2] tab-box: Retype _AdwTabBox::context_menu to fix aliasing
137 + violation
138 +
139 +../src/adw-tab-box.c:3410:20: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
140 +| g_clear_pointer ((GtkWidget **) &self->context_menu, gtk_widget_unparent);
141 +
142 +Closes: https://gitlab.gnome.org/GNOME/libadwaita/-/issues/522
143 +(cherry picked from commit 33ab48efb62ae331f48521de1cf45960e609ff26)
144 +---
145 + src/adw-tab-box.c | 28 ++++++++++++++--------------
146 + 1 file changed, 14 insertions(+), 14 deletions(-)
147 +
148 +diff --git a/src/adw-tab-box.c b/src/adw-tab-box.c
149 +index 54178555..2e0b62bf 100644
150 +--- a/src/adw-tab-box.c
151 ++++ b/src/adw-tab-box.c
152 +@@ -100,7 +100,7 @@ struct _AdwTabBox
153 + GList *tabs;
154 + int n_tabs;
155 +
156 +- GtkPopover *context_menu;
157 ++ GtkWidget *context_menu;
158 + GtkWidget *background;
159 +
160 + int allocated_width;
161 +@@ -2618,7 +2618,7 @@ reset_setup_menu_cb (AdwTabBox *self)
162 + static void
163 + touch_menu_notify_visible_cb (AdwTabBox *self)
164 + {
165 +- if (!self->context_menu || gtk_widget_get_visible (GTK_WIDGET (self->context_menu)))
166 ++ if (!self->context_menu || gtk_widget_get_visible (self->context_menu))
167 + return;
168 +
169 + self->hovering = FALSE;
170 +@@ -2642,15 +2642,15 @@ do_popup (AdwTabBox *self,
171 + g_signal_emit_by_name (self->view, "setup-menu", info->page);
172 +
173 + if (!self->context_menu) {
174 +- self->context_menu = GTK_POPOVER (gtk_popover_menu_new_from_model (model));
175 +- gtk_widget_set_parent (GTK_WIDGET (self->context_menu), GTK_WIDGET (self));
176 +- gtk_popover_set_position (self->context_menu, GTK_POS_BOTTOM);
177 +- gtk_popover_set_has_arrow (self->context_menu, FALSE);
178 ++ self->context_menu = gtk_popover_menu_new_from_model (model);
179 ++ gtk_widget_set_parent (self->context_menu, GTK_WIDGET (self));
180 ++ gtk_popover_set_position (GTK_POPOVER (self->context_menu), GTK_POS_BOTTOM);
181 ++ gtk_popover_set_has_arrow (GTK_POPOVER (self->context_menu), FALSE);
182 +
183 + if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
184 +- gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_END);
185 ++ gtk_widget_set_halign (self->context_menu, GTK_ALIGN_END);
186 + else
187 +- gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_START);
188 ++ gtk_widget_set_halign (self->context_menu, GTK_ALIGN_START);
189 +
190 + g_signal_connect_object (self->context_menu, "notify::visible",
191 + G_CALLBACK (touch_menu_notify_visible_cb), self,
192 +@@ -2672,9 +2672,9 @@ do_popup (AdwTabBox *self,
193 + rect.width = 0;
194 + rect.height = 0;
195 +
196 +- gtk_popover_set_pointing_to (self->context_menu, &rect);
197 ++ gtk_popover_set_pointing_to (GTK_POPOVER (self->context_menu), &rect);
198 +
199 +- gtk_popover_popup (self->context_menu);
200 ++ gtk_popover_popup (GTK_POPOVER (self->context_menu));
201 + }
202 +
203 + static void
204 +@@ -2958,7 +2958,7 @@ adw_tab_box_size_allocate (GtkWidget *widget,
205 + value = gtk_adjustment_get_value (self->adjustment);
206 +
207 + if (self->context_menu)
208 +- gtk_popover_present (self->context_menu);
209 ++ gtk_popover_present (GTK_POPOVER (self->context_menu));
210 +
211 + if (!self->n_tabs)
212 + return;
213 +@@ -3169,7 +3169,7 @@ adw_tab_box_unrealize (GtkWidget *widget)
214 + {
215 + AdwTabBox *self = ADW_TAB_BOX (widget);
216 +
217 +- g_clear_pointer ((GtkWidget **) &self->context_menu, gtk_widget_unparent);
218 ++ g_clear_pointer (&self->context_menu, gtk_widget_unparent);
219 +
220 + GTK_WIDGET_CLASS (adw_tab_box_parent_class)->unrealize (widget);
221 + }
222 +@@ -3213,9 +3213,9 @@ adw_tab_box_direction_changed (GtkWidget *widget,
223 +
224 + if (self->context_menu) {
225 + if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
226 +- gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_END);
227 ++ gtk_widget_set_halign (self->context_menu, GTK_ALIGN_END);
228 + else
229 +- gtk_widget_set_halign (GTK_WIDGET (self->context_menu), GTK_ALIGN_START);
230 ++ gtk_widget_set_halign (self->context_menu, GTK_ALIGN_START);
231 + }
232 + }
233 +
234 +--
235 +2.35.1
236 +
237
238 diff --git a/gui-libs/libadwaita/libadwaita-1.1.4.ebuild b/gui-libs/libadwaita/libadwaita-1.1.4.ebuild
239 new file mode 100644
240 index 000000000000..e7e4b05600de
241 --- /dev/null
242 +++ b/gui-libs/libadwaita/libadwaita-1.1.4.ebuild
243 @@ -0,0 +1,69 @@
244 +# Copyright 2022 Gentoo Authors
245 +# Distributed under the terms of the GNU General Public License v2
246 +
247 +EAPI=8
248 +PYTHON_COMPAT=( python3_{8..11} )
249 +VALA_MIN_API_VERSION="0.52"
250 +inherit gnome.org meson python-any-r1 vala virtualx
251 +
252 +DESCRIPTION="Building blocks for modern adaptive GNOME applications"
253 +HOMEPAGE="https://gnome.pages.gitlab.gnome.org/libadwaita/ https://gitlab.gnome.org/GNOME/libadwaita"
254 +
255 +LICENSE="LGPL-2.1+"
256 +SLOT="1"
257 +IUSE="+introspection test +vala"
258 +REQUIRED_USE="vala? ( introspection )"
259 +
260 +KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86"
261 +
262 +DEPEND="
263 + >=dev-libs/glib-2.66:2
264 + >=gui-libs/gtk-4.5.0:4[introspection?]
265 + dev-libs/fribidi
266 + introspection? ( >=dev-libs/gobject-introspection-1.54:= )
267 +"
268 +RDEPEND="${DEPEND}"
269 +BDEPEND="
270 + ${PYTHON_DEPS}
271 + vala? ( $(vala_depend) )
272 + >=dev-util/meson-0.59.0
273 + dev-util/glib-utils
274 + sys-devel/gettext
275 + virtual/pkgconfig
276 +"
277 +
278 +PATCHES=(
279 + "${FILESDIR}"/${PV}-fix-aliasing.patch
280 +)
281 +
282 +src_prepare() {
283 + default
284 + use vala && vala_setup
285 +}
286 +
287 +src_configure() {
288 + local emesonargs=(
289 + # Never use gi-docgen subproject
290 + --wrap-mode nofallback
291 +
292 + -Dprofiling=false
293 + $(meson_feature introspection)
294 + $(meson_use vala vapi)
295 + -Dgtk_doc=false # we ship pregenerated docs
296 + $(meson_use test tests)
297 + -Dexamples=false
298 + )
299 + meson_src_configure
300 +}
301 +
302 +src_test() {
303 + virtx meson_src_test --timeout-multiplier 2
304 +}
305 +
306 +src_install() {
307 + meson_src_install
308 +
309 + insinto /usr/share/gtk-doc/html
310 + # This will install libadwaita API docs unconditionally, but this is intentional
311 + doins -r "${S}"/doc/libadwaita-1
312 +}