Subject: Bug#1097959: swt4-gtk: ftbfs with GCC-15

From: Matthias Klose <[email-masked]>
Date: Mon, 17 Feb 2025 17:55:58 +0000

Package: src:swt4-gtk
Version: 4.29.0-1
Severity: important
Tags: sid forky
User: [email-masked]
Usertags: ftbfs-gcc-15

[This bug is NOT targeted to the upcoming trixie release]

Please keep this issue open in the bug tracker for the package it
was filed for.  If a fix in another package is required, please
file a bug for the other package (or clone), and add a block in this
package. Please keep the issue open until the package can be built in
a follow-up test rebuild.

The package fails to build in a test rebuild on at least amd64 with
gcc-15/g++-15, but succeeds to build with gcc-14/g++-14. The
severity of this report will be raised before the forky release.

The full build log can be found at:
http://qa-logs.debian.net/2025/02/16/amd64exp/swt4-gtk_4.29.0-1_unstable_gccexp.log.gz
The last lines of the build log are at the end of this report.

To build with GCC 15, either set CC=gcc-15 CXX=g++-15 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++ 

GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other Common build failures are new warnings resulting in build failures
with -Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-15/porting_to.html

[...]
      |                                ^
os_structs.c:51:27: error: assignment to ‘void (*)(GObject *)’ {aka ‘void (*)(struct _GObject *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
   51 |         lpStruct->dispose = (void (*)())(*env)->GetLongField(env, lpObject, GObjectClassFc.dispose);
      |                           ^
os_structs.c:52:28: error: assignment to ‘void (*)(GObject *)’ {aka ‘void (*)(struct _GObject *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
   52 |         lpStruct->finalize = (void (*)())(*env)->GetLongField(env, lpObject, GObjectClassFc.finalize);
      |                            ^
os_structs.c:53:47: error: assignment to ‘void (*)(GObject *, guint,  GParamSpec **)’ {aka ‘void (*)(struct _GObject *, unsigned int,  struct _GParamSpec **)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
   53 |         lpStruct->dispatch_properties_changed = (void (*)())(*env)->GetLongField(env, lpObject, GObjectClassFc.dispatch_properties_changed);
      |                                               ^
os_structs.c:54:26: error: assignment to ‘void (*)(GObject *, GParamSpec *)’ {aka ‘void (*)(struct _GObject *, struct _GParamSpec *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
   54 |         lpStruct->notify = (void (*)())(*env)->GetLongField(env, lpObject, GObjectClassFc.notify);
      |                          ^
os_structs.c: In function ‘getGtkCellRendererClassFields’:
os_structs.c:349:26: error: assignment to ‘void (*)(GtkCellRenderer *, cairo_t *, GtkWidget *, const GdkRectangle *, const GdkRectangle *, GtkCellRendererState)’ {aka ‘void (*)(struct _GtkCellRenderer *, struct _cairo *, struct _GtkWidget *, const struct _cairo_rectangle_int *, const struct _cairo_rectangle_int *, GtkCellRendererState)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  349 |         lpStruct->render = (void(*)())(*env)->GetLongField(env, lpObject, GtkCellRendererClassFc.render);
      |                          ^
os_structs.c:354:39: error: assignment to ‘void (*)(GtkCellRenderer *, GtkWidget *, gint *, gint *)’ {aka ‘void (*)(struct _GtkCellRenderer *, struct _GtkWidget *, int *, int *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  354 |         lpStruct->get_preferred_width = (void(*)())(*env)->GetLongField(env, lpObject, GtkCellRendererClassFc.get_preferred_width);
      |                                       ^
os_structs.c: In function ‘getGtkWidgetClassFields’:
os_structs.c:429:23: error: assignment to ‘void (*)(GtkWidget *)’ {aka ‘void (*)(struct _GtkWidget *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  429 |         lpStruct->map = (void(*)())(*env)->GetLongField(env, lpObject, GtkWidgetClassFc.map);
      |                       ^
os_structs.c:430:33: error: assignment to ‘void (*)(GtkWidget *, GtkAllocation *)’ {aka ‘void (*)(struct _GtkWidget *, struct _cairo_rectangle_int *)’} from incompatible pointer type ‘void (*)(void)’ [-Wincompatible-pointer-types]
  430 |         lpStruct->size_allocate = (void(*)())(*env)->GetLongField(env, lpObject, GtkWidgetClassFc.size_allocate);
      |                                 ^
make[2]: *** [make_linux.mak:151: os_structs.o] Error 1
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_Call__JJII’:
os.c:10106:21: error: too many arguments to function ‘(jint (*)(void))arg0’; expected 0, have 3
10106 |         rc = (jint)((jint (*)())arg0)(arg1, arg2, arg3);
      |                    ~^~~~~~~~~~~~~~~~~ ~~~~
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_Call__JJJ’:
os.c:10118:21: error: too many arguments to function ‘(jint (*)(void))arg0’; expected 0, have 2
10118 |         rc = (jint)((jint (*)())arg0)(arg1, arg2);
      |                    ~^~~~~~~~~~~~~~~~~ ~~~~
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_XCheckIfEvent’:
os.c:10512:71: error: passing argument 3 of ‘XCheckIfEvent’ from incompatible pointer type [-Wincompatible-pointer-types]
10512 |         rc = (jboolean)XCheckIfEvent((Display *)arg0, (XEvent *)arg1, (Bool (*)())arg2, (XPointer)arg3);
      |                                                                       ^~~~~~~~~~~~~~~~
      |                                                                       |
      |                                                                       int (*)(void)
In file included from /usr/include/gtk-3.0/gdk/gdkx.h:30,
                 from /usr/include/gtk-3.0/gtk/gtksocket.h:34,
                 from /usr/include/gtk-3.0/gtk/gtkx.h:29,
                 from os.h:60,
                 from os_structs.h:19,
                 from os.c:20:
/usr/include/X11/Xlib.h:2105:5: note: expected ‘int (*)(Display *, XEvent *, char *)’ but argument is of type ‘int (*)(void)’
 2105 |     Bool (*) (
      |     ^
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_call__JJJJJ’:
os.c:10724:22: error: too many arguments to function ‘(jlong (*)(void))arg0’; expected 0, have 4
10724 |         rc = (jlong)((jlong (*)())arg0)(arg1, arg2, arg3, arg4);
      |                     ~^~~~~~~~~~~~~~~~~~ ~~~~
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_call__JJJJJJJ’:
os.c:10736:22: error: too many arguments to function ‘(jlong (*)(void))arg0’; expected 0, have 6
10736 |         rc = (jlong)((jlong (*)())arg0)(arg1, arg2, arg3, arg4, arg5, arg6);
      |                     ~^~~~~~~~~~~~~~~~~~ ~~~~
os.c: In function ‘Java_org_eclipse_swt_internal_gtk_OS_call__JJJJJJJJ’:
os.c:10748:22: error: too many arguments to function ‘(jlong (*)(void))arg0’; expected 0, have 7
10748 |         rc = (jlong)((jlong (*)())arg0)(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
      |                     ~^~~~~~~~~~~~~~~~~~ ~~~~
make[2]: *** [make_linux.mak:149: os.o] Error 1
make[2]: Leaving directory '/build/reproducible-path/swt4-gtk-4.29.0/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library'
dh_auto_build: error: make -j8 "INSTALL=install --strip-program=true" -C "bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library" "-I../../../Eclipse SWT/common/library/" -f make_linux.mak make_atk make_awt make_cairo make_glx make_swt make_webkit make_swtpi returned exit code 2
make[1]: *** [debian/rules:37: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/swt4-gtk-4.29.0'
make: *** [debian/rules:27: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

---

From: "Debian Bug Tracking System" <[email-masked]>
Date: Mon, 17 Feb 2025 17:57:02 +0000

Thank you for filing a new Bug report with Debian.

You can follow progress on this Bug here: 1097959: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1097959.

This is an automatically generated reply to let you know your message
has been received.

Your message has been forwarded to the package maintainers (but not
other interested parties, as you requested) for their attention; they
will reply in due course.

Your message has been sent to the package maintainer(s):
 Debian Java Maintainers <[email-masked]>

If you wish to submit further information on this problem, please
send it to [email-masked].

Please do not send mail to [email-masked] unless you wish
to report a problem with the Bug-tracking system.

-- 
1097959: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1097959
Debian Bug Tracking System
Contact [email-masked] with problems