[PATCH core-updates-frozen] gnu: gtk+-2: Fix ‘builder’ test

  • Done
  • quality assurance status badge
Details
3 participants
  • Thiago Jung Bauermann
  • Guillaume Le Vaillant
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Thiago Jung Bauermann
Severity
normal
T
T
Thiago Jung Bauermann wrote on 11 Sep 2021 19:07
[PATCH core-updates-frozen] gnu: gtk+-2: Fix ‘builder’ test
(address . guix-patches@gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210911170732.137404-1-bauermann@kolabnow.com
The signal callbacks in the ‘builder’ testcase have wrong prototypes.
This causes it to fail the “/Builder/Signal Autoconnect” test on
powerpc64le-linux.

Solve the problem by backporting the upstream fix that was applied to
GTK+ 3.0.

* gnu/packages/patches/gtk2-fix-builder-test.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/gtk.scm (gtk+-2): Use it.
---

Hello,

This fixes the build of gtk+-2 on powerpc64le-linux.

Thanks,
Thiago

gnu/local.mk | 1 +
gnu/packages/gtk.scm | 3 +-
.../patches/gtk2-fix-builder-test.patch | 94 +++++++++++++++++++
3 files changed, 97 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/gtk2-fix-builder-test.patch

Toggle diff (126 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 07e6787642e9..6d19a6332ba0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1205,6 +1205,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-emacs-fix-configure.patch \
%D%/packages/patches/guile-ssh-fix-test-suite.patch \
%D%/packages/patches/guile-ssh-read-error.patch \
+ %D%/packages/patches/gtk2-fix-builder-test.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
%D%/packages/patches/gtk2-theme-paths.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 24c24d56530f..c7a682b37548 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -847,7 +847,8 @@ is part of the GNOME accessibility project.")
"1nn6kks1zyvb5xikr9y2k7r9bwjy1g4b0m0s66532bclymbwfamc"))
(patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
"gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
- "gtk2-theme-paths.patch"))))
+ "gtk2-theme-paths.patch"
+ "gtk2-fix-builder-test.patch"))))
(build-system gnu-build-system)
(outputs '("out" "bin" "doc"))
(propagated-inputs
diff --git a/gnu/packages/patches/gtk2-fix-builder-test.patch b/gnu/packages/patches/gtk2-fix-builder-test.patch
new file mode 100644
index 000000000000..8c41e596fe95
--- /dev/null
+++ b/gnu/packages/patches/gtk2-fix-builder-test.patch
@@ -0,0 +1,94 @@
+From e45e11238036e06c8fe78bea1691b256ca41837b Mon Sep 17 00:00:00 2001
+From: Steve Langasek <steve.langasek@ubuntu.com>
+Date: Tue, 7 Jan 2014 13:55:28 +0100
+Subject: [PATCH] fix prototypes of signal callbacks in the test suite
+
+The signal callbacks are defined to take pointers as their arguments, but the
+callbacks found in testsuite/gtk/builder.c are passing a GParamSpec by value
+as the second argument. This confuses and angers the compiler on ppc64el,
+resulting in segfaults after return from the function due to stack-smashing
+by the (completely-unused) argument.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=721700
+---
+
+This is a backport to v2.24.33 of upstream commit:
+
+https://gitlab.gnome.org/GNOME/gtk/-/commit/256561db2f0b34e01047f8882b3e0cb8c6d9dbab
+
+ gtk/tests/builder.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/gtk/tests/builder.c b/gtk/tests/builder.c
+index 8529dacc2f6e..23d5096062fa 100644
+--- a/gtk/tests/builder.c
++++ b/gtk/tests/builder.c
+@@ -132,7 +132,7 @@ static int object = 0;
+ static int object_after = 0;
+
+ void /* exported for GtkBuilder */
+-signal_normal (GtkWindow *window, GParamSpec spec)
++signal_normal (GtkWindow *window, GParamSpec *spec)
+ {
+ g_assert (GTK_IS_WINDOW (window));
+ g_assert (normal == 0);
+@@ -142,7 +142,7 @@ signal_normal (GtkWindow *window, GParamSpec spec)
+ }
+
+ void /* exported for GtkBuilder */
+-signal_after (GtkWindow *window, GParamSpec spec)
++signal_after (GtkWindow *window, GParamSpec *spec)
+ {
+ g_assert (GTK_IS_WINDOW (window));
+ g_assert (normal == 1);
+@@ -152,7 +152,7 @@ signal_after (GtkWindow *window, GParamSpec spec)
+ }
+
+ void /* exported for GtkBuilder */
+-signal_object (GtkButton *button, GParamSpec spec)
++signal_object (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (GTK_IS_BUTTON (button));
+ g_assert (object == 0);
+@@ -162,7 +162,7 @@ signal_object (GtkButton *button, GParamSpec spec)
+ }
+
+ void /* exported for GtkBuilder */
+-signal_object_after (GtkButton *button, GParamSpec spec)
++signal_object_after (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (GTK_IS_BUTTON (button));
+ g_assert (object == 1);
+@@ -172,28 +172,28 @@ signal_object_after (GtkButton *button, GParamSpec spec)
+ }
+
+ void /* exported for GtkBuilder */
+-signal_first (GtkButton *button, GParamSpec spec)
++signal_first (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (normal == 0);
+ normal = 10;
+ }
+
+ void /* exported for GtkBuilder */
+-signal_second (GtkButton *button, GParamSpec spec)
++signal_second (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (normal == 10);
+ normal = 20;
+ }
+
+ void /* exported for GtkBuilder */
+-signal_extra (GtkButton *button, GParamSpec spec)
++signal_extra (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (normal == 20);
+ normal = 30;
+ }
+
+ void /* exported for GtkBuilder */
+-signal_extra2 (GtkButton *button, GParamSpec spec)
++signal_extra2 (GtkButton *button, GParamSpec *spec)
+ {
+ g_assert (normal == 30);
+ normal = 40;
G
G
Guillaume Le Vaillant wrote on 12 Sep 2021 09:52
Re: [bug#50521] [PATCH core-updates-frozen] gnu: gtk+-2: Fix ‘builder’ test
(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
87k0jmb4xd.fsf@kitej
This patch rebuilds over 2900 packages, so maybe it could be pushed at
the same time as #50174 (static gawk), #50239 (diffutils) and #50358
(rust booststrap).
WDYT?
-----BEGIN PGP SIGNATURE-----

iIUEAREKAC0WIQTLxZxm7Ce5cXlAaz5r6CCK3yH+PwUCYT2zTg8cZ2x2QHBvc3Rl
by5uZXQACgkQa+ggit8h/j9q+gEApzAilbcroqZLtRa3rR+aiasMfV5dKXFo/aEV
QQPepWgA/RWqJiCtvB3s6yZAiWL2/XAApbpFWI2BcRIt+hGC7MSj
=HVHK
-----END PGP SIGNATURE-----

T
T
Thiago Jung Bauermann wrote on 12 Sep 2021 23:46
(name . Guillaume Le Vaillant)(address . glv@posteo.net)
2077710.hxvdFu3pm0@popigai
Hello Guillaume,

Em domingo, 12 de setembro de 2021, às 04:52:03 -03, Guillaume Le Vaillant
escreveu:
Toggle quote (5 lines)
> This patch rebuilds over 2900 packages, so maybe it could be pushed at
> the same time as #50174 (static gawk), #50239 (diffutils) and #50358
> (rust booststrap).
> WDYT?

Wow, that is true. I should have checked that, but it hadn’t occured to me
that this end-of-life toolkit could have so many dependents. Thanks for
noticing.

--
Thanks,
Thiago
T
T
Thiago Jung Bauermann wrote on 12 Sep 2021 23:55
Please consider also adding this gtk+@2 fix for the world rebuild
(name . GNU Debbugs)(address . control@debbugs.gnu.org)
2422007.ZNODRVHgDc@popigai
block 50358 by 50521
stop

Hi,

As Guillaume noticed, the patch in issue 50521 with a build fix for gtk+@2
on powerpc64le-linux causes more than 2900 packages to rebuild. I hope it’s
not too much trouble to have a look at it and consider whether it can be
added for the world rebuild.

--
Thanks,
Thiago
M
M
Maxim Cournoyer wrote on 12 Nov 2021 06:54
Re: bug#50521: [PATCH core-updates-frozen] gnu: gtk+-2: Fix ‘builder’ test
(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)(address . 50521-done@debbugs.gnu.org)
87pmr5q5q9.fsf@gmail.com
Hello,

Thiago Jung Bauermann <bauermann@kolabnow.com> writes:

Toggle quote (152 lines)
> The signal callbacks in the ‘builder’ testcase have wrong prototypes.
> This causes it to fail the “/Builder/Signal Autoconnect” test on
> powerpc64le-linux.
>
> Solve the problem by backporting the upstream fix that was applied to
> GTK+ 3.0.
>
> * gnu/packages/patches/gtk2-fix-builder-test.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/gtk.scm (gtk+-2): Use it.
> ---
>
> Hello,
>
> This fixes the build of gtk+-2 on powerpc64le-linux.
>
> Thanks,
> Thiago
>
> gnu/local.mk | 1 +
> gnu/packages/gtk.scm | 3 +-
> .../patches/gtk2-fix-builder-test.patch | 94 +++++++++++++++++++
> 3 files changed, 97 insertions(+), 1 deletion(-)
> create mode 100644 gnu/packages/patches/gtk2-fix-builder-test.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 07e6787642e9..6d19a6332ba0 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -1205,6 +1205,7 @@ dist_patch_DATA = \
> %D%/packages/patches/guile-emacs-fix-configure.patch \
> %D%/packages/patches/guile-ssh-fix-test-suite.patch \
> %D%/packages/patches/guile-ssh-read-error.patch \
> + %D%/packages/patches/gtk2-fix-builder-test.patch \
> %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
> %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
> %D%/packages/patches/gtk2-theme-paths.patch \
> diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
> index 24c24d56530f..c7a682b37548 100644
> --- a/gnu/packages/gtk.scm
> +++ b/gnu/packages/gtk.scm
> @@ -847,7 +847,8 @@ is part of the GNOME accessibility project.")
> "1nn6kks1zyvb5xikr9y2k7r9bwjy1g4b0m0s66532bclymbwfamc"))
> (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
> "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch"
> - "gtk2-theme-paths.patch"))))
> + "gtk2-theme-paths.patch"
> + "gtk2-fix-builder-test.patch"))))
> (build-system gnu-build-system)
> (outputs '("out" "bin" "doc"))
> (propagated-inputs
> diff --git a/gnu/packages/patches/gtk2-fix-builder-test.patch b/gnu/packages/patches/gtk2-fix-builder-test.patch
> new file mode 100644
> index 000000000000..8c41e596fe95
> --- /dev/null
> +++ b/gnu/packages/patches/gtk2-fix-builder-test.patch
> @@ -0,0 +1,94 @@
> +From e45e11238036e06c8fe78bea1691b256ca41837b Mon Sep 17 00:00:00 2001
> +From: Steve Langasek <steve.langasek@ubuntu.com>
> +Date: Tue, 7 Jan 2014 13:55:28 +0100
> +Subject: [PATCH] fix prototypes of signal callbacks in the test suite
> +
> +The signal callbacks are defined to take pointers as their arguments, but the
> +callbacks found in testsuite/gtk/builder.c are passing a GParamSpec by value
> +as the second argument. This confuses and angers the compiler on ppc64el,
> +resulting in segfaults after return from the function due to stack-smashing
> +by the (completely-unused) argument.
> +
> +https://bugzilla.gnome.org/show_bug.cgi?id=721700
> +---
> +
> +This is a backport to v2.24.33 of upstream commit:
> +
> +https://gitlab.gnome.org/GNOME/gtk/-/commit/256561db2f0b34e01047f8882b3e0cb8c6d9dbab
> +
> + gtk/tests/builder.c | 16 ++++++++--------
> + 1 file changed, 8 insertions(+), 8 deletions(-)
> +
> +diff --git a/gtk/tests/builder.c b/gtk/tests/builder.c
> +index 8529dacc2f6e..23d5096062fa 100644
> +--- a/gtk/tests/builder.c
> ++++ b/gtk/tests/builder.c
> +@@ -132,7 +132,7 @@ static int object = 0;
> + static int object_after = 0;
> +
> + void /* exported for GtkBuilder */
> +-signal_normal (GtkWindow *window, GParamSpec spec)
> ++signal_normal (GtkWindow *window, GParamSpec *spec)
> + {
> + g_assert (GTK_IS_WINDOW (window));
> + g_assert (normal == 0);
> +@@ -142,7 +142,7 @@ signal_normal (GtkWindow *window, GParamSpec spec)
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_after (GtkWindow *window, GParamSpec spec)
> ++signal_after (GtkWindow *window, GParamSpec *spec)
> + {
> + g_assert (GTK_IS_WINDOW (window));
> + g_assert (normal == 1);
> +@@ -152,7 +152,7 @@ signal_after (GtkWindow *window, GParamSpec spec)
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_object (GtkButton *button, GParamSpec spec)
> ++signal_object (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (GTK_IS_BUTTON (button));
> + g_assert (object == 0);
> +@@ -162,7 +162,7 @@ signal_object (GtkButton *button, GParamSpec spec)
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_object_after (GtkButton *button, GParamSpec spec)
> ++signal_object_after (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (GTK_IS_BUTTON (button));
> + g_assert (object == 1);
> +@@ -172,28 +172,28 @@ signal_object_after (GtkButton *button, GParamSpec spec)
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_first (GtkButton *button, GParamSpec spec)
> ++signal_first (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (normal == 0);
> + normal = 10;
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_second (GtkButton *button, GParamSpec spec)
> ++signal_second (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (normal == 10);
> + normal = 20;
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_extra (GtkButton *button, GParamSpec spec)
> ++signal_extra (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (normal == 20);
> + normal = 30;
> + }
> +
> + void /* exported for GtkBuilder */
> +-signal_extra2 (GtkButton *button, GParamSpec spec)
> ++signal_extra2 (GtkButton *button, GParamSpec *spec)
> + {
> + g_assert (normal == 30);
> + normal = 40;

Now in core-updates-frozen with commit
4b4e35a771cbcc7b72d28e9a4c6a0d6de2000175.

Thank you!

Closing.

Maxim
Closed
?