[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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 50521@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 50521
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch