Subject: kwayland: ftbfs with GCC-15

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

Package: src:kwayland
Version: 4:6.3.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/kwayland_6.3.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

[...]
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/registry.cpp.o (symbol from plugin): in function `KWayland::Client::Registry::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/relativepointer.cpp.o (symbol from plugin): in function `KWayland::Client::RelativePointerManager::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/seat.cpp.o (symbol from plugin): in function `KWayland::Client::Seat::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/shadow.cpp.o (symbol from plugin): in function `KWayland::Client::Shadow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/shell.cpp.o (symbol from plugin): in function `KWayland::Client::Shell::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/shm_pool.cpp.o (symbol from plugin): in function `KWayland::Client::ShmPool::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/subcompositor.cpp.o (symbol from plugin): in function `KWayland::Client::SubCompositor::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/subsurface.cpp.o (symbol from plugin): in function `KWayland::Client::SubSurface::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/surface.cpp.o (symbol from plugin): in function `KWayland::Client::Surface::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/touch.cpp.o (symbol from plugin): in function `KWayland::Client::Touch::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/textinput.cpp.o (symbol from plugin): in function `KWayland::Client::TextInputManagerUnstableV0::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/textinput_v0.cpp.o (symbol from plugin): in function `KWayland::Client::TextInputUnstableV0::Private::modifiersMapCallback(void*, wl_text_input*, wl_array*)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/textinput_v2.cpp.o (symbol from plugin): in function `KWayland::Client::TextInputUnstableV2::Private::preeditStylingCallback(void*, zwp_text_input_v2*, unsigned int, unsigned int, unsigned int)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgdecoration.cpp.o (symbol from plugin): in function `KWayland::Client::XdgDecorationManager::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgshell.cpp.o (symbol from plugin): in function `KWayland::Client::XdgShellStable::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgforeign_v2.cpp.o (symbol from plugin): in function `KWayland::Client::XdgExporterUnstableV2::Private::exporterV2()':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgforeign.cpp.o (symbol from plugin): in function `KWayland::Client::XdgExporter::staticMetaObject':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgshell_v5.cpp.o (symbol from plugin): in function `KWayland::Client::XdgShellUnstableV5::Private::isValid() const':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgshell_v6.cpp.o (symbol from plugin): in function `KWayland::Client::XdgShellUnstableV6::Private::isValid() const':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgshell_stable.cpp.o (symbol from plugin): in function `KWayland::Client::XdgShellStable::Private::isValid() const':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/xdgoutput.cpp.o (symbol from plugin): in function `KWayland::Client::XdgOutput::Private::logical_positionCallback(void*, zxdg_output_v1*, int, int)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/logging.cpp.o (symbol from plugin): in function `KWAYLAND_CLIENT()':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
/usr/bin/ld: CMakeFiles/KWaylandClient.dir/surface_p.cpp.o (symbol from plugin): in function `KWayland::Client::Surface::fromWindow(QWindow*)':
(.text+0x0): multiple definition of `QtPrivate::IsFloatType_v<_Float16>'; CMakeFiles/KWaylandClient.dir/KWaylandClient_autogen/mocs_compilation.cpp.o (symbol from plugin):(.text+0x0): first defined here
./src/client/buffer_p.h:17:29: warning: type ‘struct Private’ violates the C++ One Definition Rule [-Wodr]
./src/client/buffer_p.h:17:29: note: a different type is defined in another translation unit
./src/client/buffer_p.h:25:50: note: the first difference of corresponding definitions is field ‘nativeBuffer’
./src/client/buffer_p.h:25:50: note: a field of same name but different type is defined in another translation unit
./src/client/wayland_pointer_p.h:16:7: note: type ‘struct WaylandPointer’ defined in anonymous namespace cannot match across the translation unit boundary
./src/client/surface_p.h:18:30: warning: type ‘struct Private’ violates the C++ One Definition Rule [-Wodr]
./src/client/surface_p.h:18:30: note: a different type is defined in another translation unit
./src/client/surface_p.h:24:52: note: the first difference of corresponding definitions is field ‘surface’
./src/client/surface_p.h:24:52: note: a field of same name but different type is defined in another translation unit
./src/client/wayland_pointer_p.h:16:7: note: type ‘struct WaylandPointer’ defined in anonymous namespace cannot match across the translation unit boundary
./src/client/buffer_p.h:22:10: warning: type of ‘destroy’ does not match original declaration [-Wlto-type-mismatch]
./src/client/buffer.cpp:41:6: note: ‘destroy’ was previously declared here
./src/client/buffer.cpp:41:6: note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
collect2: error: ld returned 1 exit status
ol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-pointer-constraints-unstable-v1-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-xdg-foreign-unstable-v2-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-idle-inhibit-unstable-v1-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-appmenu-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-xdg-output-unstable-v1-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-xdg-shell-protocol.c.o" "CMakeFiles/KWaylandClient.dir/wayland-xdg-decoration-unstable-v1-protocol.c.o" CMakeFiles/KWaylandClient.dir/surface_p.cpp.o  /usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libQt6Concurrent.so.6.7.2 /usr/lib/x86_64-linux-gnu/libxkbcommon.so /usr/lib/x86_64-linux-gnu/libQt6WaylandClient.so.6.7.2 /usr/lib/x86_64-linux-gnu/libwayland-client.so /usr/lib/x86_64-linux-gnu/libQt6Gui.so.6.7.2 /usr/lib/x86_64-linux-gnu/libGLX.so /usr/lib/x86_64-linux-gnu/libOpenGL.so /usr/lib/x86_64-linux-gnu/libQt6Core.so.6.7.2 /usr/lib/x86_64-linux-gnu/libwayland-cursor.so
make[3]: *** [src/client/CMakeFiles/KWaylandClient.dir/build.make:1424: bin/libKWaylandClient.so.6.3.0] Error 1
make[3]: Leaving directory '/build/reproducible-path/kwayland-6.3.0/obj-x86_64-linux-gnu'
make[2]: *** [CMakeFiles/Makefile2:258: src/client/CMakeFiles/KWaylandClient.dir/all] Error 2
make[2]: Leaving directory '/build/reproducible-path/kwayland-6.3.0/obj-x86_64-linux-gnu'
make[1]: *** [Makefile:139: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/kwayland-6.3.0/obj-x86_64-linux-gnu'
dh_auto_build: error: cd obj-x86_64-linux-gnu && make -j8 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2