#1133552 mir: ftbfs with GCC-16

Package:
src:mir
Source:
src:mir
Submitter:
Emanuele Rocca
Date:
2026-04-13 13:08:05 UTC
Severity:
normal
Tags:
#1133552#5
Date:
2026-04-13 13:07:12 UTC
From:
To:
Hi,

mir fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/mir_arm64.build.xz

The last lines of the build log are at the end of this report.

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

  apt-get -t=experimental install g++

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.

[...]


      | ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/utils.h:30:23: error: ‘FdEvents’ was not declared in this scope
   30 | int fd_event_to_epoll(FdEvents const& event);
      |                       ^~~~~~~~
make[3]: *** [src/common/CMakeFiles/mircommon.dir/build.make:236: src/common/CMakeFiles/mircommon.dir/dispatch/readable_fd.cpp.o] Error 1
/build/reproducible-path/mir-2.25.2/include/common/mir/dispatch/action_queue.h:40:19: error: ‘FdEvents’ has not been declared
   40 |     bool dispatch(FdEvents events) override;
      |                   ^~~~~~~~
/build/reproducible-path/mir-2.25.2/include/common/mir/dispatch/action_queue.h:41:5: error: ‘FdEvents’ does not name a type
   41 |     FdEvents relevant_events() const override;
      |     ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/action_queue.cpp:43:6: error: ‘bool mir::dispatch::ActionQueue::dispatch’ is not a static data member of ‘class mir::dispatch::ActionQueue’
   43 | bool mir::dispatch::ActionQueue::dispatch(FdEvents events)
      |      ^~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/action_queue.cpp:43:43: error: ‘FdEvents’ was not declared in this scope
   43 | bool mir::dispatch::ActionQueue::dispatch(FdEvents events)
      |                                           ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/action_queue.cpp:68:16: error: ‘FdEvents’ in namespace ‘mir::dispatch’ does not name a type
   68 | mir::dispatch::FdEvents mir::dispatch::ActionQueue::relevant_events() const
      |                ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:47:19: error: ‘md::FdEvents’ has not been declared
   47 |     bool dispatch(md::FdEvents events) override
      |                   ^~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:57:9: error: ‘FdEvents’ in namespace ‘md’ does not name a type
   57 |     md::FdEvents relevant_events() const override
      |         ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp: In member function ‘virtual bool {anonymous}::DispatchableAdaptor::dispatch(int)’:
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:49:26: error: ‘md::FdEvent’ has not been declared
   49 |         if (events & md::FdEvent::error)
      |                          ^~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp: At global scope:
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:98:6: error: ‘bool mir::dispatch::MultiplexingDispatchable::dispatch’ is not a static data member of ‘class mir::dispatch::MultiplexingDispatchable’
   98 | bool md::MultiplexingDispatchable::dispatch(md::FdEvents events)
      |      ^~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:98:49: error: ‘FdEvents’ is not a member of ‘md’
   98 | bool md::MultiplexingDispatchable::dispatch(md::FdEvents events)
      |                                                 ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:147:5: error: ‘FdEvents’ in namespace ‘md’ does not name a type
  147 | md::FdEvents md::MultiplexingDispatchable::relevant_events() const
      |     ^~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp: In member function ‘void mir::dispatch::MultiplexingDispatchable::add_watch(const std::shared_ptr<mir::dispatch::Dispatchable>&, mir::dispatch::DispatchReentrancy)’:
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:171:46: error: ‘using std::__shared_ptr_access<mir::dispatch::Dispatchable, __gnu_cxx::_S_atomic, false, false>::element_type = class mir::dispatch::Dispatchable’ {aka ‘class mir::dispatch::Dispatchable’} has no member named ‘relevant_events’
  171 |     e.events = fd_event_to_epoll(dispatchee->relevant_events());
      |                                              ^~~~~~~~~~~~~~~
/build/reproducible-path/mir-2.25.2/src/common/dispatch/multiplexing_dispatchable.cpp:171:63: error: ‘mir::dispatch::fd_event_to_epoll’ cannot be used as a function
  171 |     e.events = fd_event_to_epoll(dispatchee->relevant_events());
      |                                                               ^
make[3]: *** [src/common/CMakeFiles/mircommon.dir/build.make:208: src/common/CMakeFiles/mircommon.dir/dispatch/action_queue.cpp.o] Error 1
make[3]: *** [src/common/CMakeFiles/mircommon.dir/build.make:222: src/common/CMakeFiles/mircommon.dir/dispatch/multiplexing_dispatchable.cpp.o] Error 1
make[3]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
[ 11%] Built target mir-test-doubles-udev
[ 11%] Linking CXX static library libGMock.a
/usr/bin/cmake -P CMakeFiles/GMock.dir/cmake_clean_target.cmake
/usr/bin/cmake -E cmake_link_script CMakeFiles/GMock.dir/link.txt --verbose=1
/usr/bin/ar qc libGMock.a "CMakeFiles/GMock.dir/usr/src/googletest/googlemock/src/gmock-all.cc.o"
/usr/bin/ranlib libGMock.a
make[3]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
[ 11%] Built target GMock
[ 11%] Linking CXX executable ../../../bin/mir_wayland_generator
cd /build/reproducible-path/mir-2.25.2/build-arm64/src/wayland/generator && /usr/bin/cmake -E cmake_link_script CMakeFiles/mir_wayland_generator.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=/build/reproducible-path/mir-2.25.2=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -g -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC -Wno-mismatched-tags -Wno-psabi -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -Wl,--no-undefined -Wl,--dependency-file=CMakeFiles/mir_wayland_generator.dir/link.d CMakeFiles/mir_wayland_generator.dir/wrapper_generator.cpp.o CMakeFiles/mir_wayland_generator.dir/utils.cpp.o CMakeFiles/mir_wayland_generator.dir/enum.cpp.o CMakeFiles/mir_wayland_generator.dir/argument.cpp.o CMakeFiles/mir_wayland_generator.dir/method.cpp.o CMakeFiles/mir_wayland_generator.dir/request.cpp.o CMakeFiles/mir_wayland_generator.dir/event.cpp.o CMakeFiles/mir_wayland_generator.dir/interface.cpp.o CMakeFiles/mir_wayland_generator.dir/global.cpp.o CMakeFiles/mir_wayland_generator.dir/emitter.cpp.o -o ../../../bin/mir_wayland_generator  /usr/lib/aarch64-linux-gnu/libxml++-2.6.so /usr/lib/aarch64-linux-gnu/libxml2.so /usr/lib/aarch64-linux-gnu/libglibmm-2.4.so /usr/lib/aarch64-linux-gnu/libgobject-2.0.so /usr/lib/aarch64-linux-gnu/libglib-2.0.so /usr/lib/aarch64-linux-gnu/libsigc-2.0.so
make[3]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
[ 11%] Built target mir_wayland_generator
make[3]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
make[2]: *** [CMakeFiles/Makefile2:4666: src/common/CMakeFiles/mircommon.dir/all] Error 2
make[2]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
make[1]: *** [Makefile:149: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/mir-2.25.2/build-arm64'
dh_auto_build: error: cd build-arm64 && make -j128 INSTALL="install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:21: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2