#1113632 workflow: FTBFS with CMake 4

#1113632#5
Date:
2025-08-31 23:07:02 UTC
From:
To:
Dear maintainer,

During a test rebuild for CMake 4, workflow failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/upstream_unittest.cc:19:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/algo_unittest.cc:22:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/resource_unittest.cc:22:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/task_unittest.cc:29:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/graph_unittest.cc:20:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest-message.h:57,
                 from /usr/include/gtest/gtest-assertion-result.h:46,
                 from /usr/include/gtest/gtest.h:63,
                 from /build/reproducible-path/workflow-0.11.10/test/uriparser_unittest.cc:19:
/usr/include/gtest/internal/gtest-port.h:273:2: error: #error C++ versions less than C++17 are not supported.
  273 | #error C++ versions less than C++17 are not supported.
      |  ^~~~~
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
In file included from /usr/include/gtest/gtest.h:67:
/usr/include/gtest/gtest-param-test.h:483:56: error: missing template arguments before ‘(’ token
  483 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
/usr/include/gtest/gtest-param-test.h:493:56: error: missing template arguments before ‘(’ token
  493 |           typename StdFunction = decltype(std::function(std::declval<Func>()))>
      |                                                        ^
make[6]: *** [CMakeFiles/uriparser_unittest.dir/build.make:79: CMakeFiles/uriparser_unittest.dir/uriparser_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:295: CMakeFiles/uriparser_unittest.dir/all] Error 2
make[5]: *** Waiting for unfinished jobs....
make[6]: *** [CMakeFiles/task_unittest.dir/build.make:79: CMakeFiles/task_unittest.dir/task_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:135: CMakeFiles/task_unittest.dir/all] Error 2
make[6]: *** [CMakeFiles/algo_unittest.dir/build.make:79: CMakeFiles/algo_unittest.dir/algo_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:167: CMakeFiles/algo_unittest.dir/all] Error 2
make[6]: *** [CMakeFiles/resource_unittest.dir/build.make:79: CMakeFiles/resource_unittest.dir/resource_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:263: CMakeFiles/resource_unittest.dir/all] Error 2
make[6]: *** [CMakeFiles/graph_unittest.dir/build.make:79: CMakeFiles/graph_unittest.dir/graph_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:199: CMakeFiles/graph_unittest.dir/all] Error 2
make[6]: *** [CMakeFiles/upstream_unittest.dir/build.make:79: CMakeFiles/upstream_unittest.dir/upstream_unittest.cc.o] Error 1
make[6]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[5]: *** [CMakeFiles/Makefile2:231: CMakeFiles/upstream_unittest.dir/all] Error 2
make[5]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[4]: *** [CMakeFiles/Makefile2:105: CMakeFiles/check.dir/rule] Error 2
make[4]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[3]: *** [Makefile:134: check] Error 2
make[3]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test/build.cmake'
make[2]: *** [GNUmakefile:23: check] Error 2
make[2]: Leaving directory '/build/reproducible-path/workflow-0.11.10/test'
dh_auto_test: error: cd test && make -j8 check ARGS\+=--verbose ARGS\+=-j8 VERBOSE=1 returned exit code 2
make[1]: *** [debian/rules:12: override_dh_auto_test] Error 25
make[1]: Leaving directory '/build/reproducible-path/workflow-0.11.10'
make: *** [debian/rules:8: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2025-08-30T23:58:23Z
-------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/2413692/

The most likely cause of build failures is the removed backwards compatibility for
CMake versions earlier than 3.5. You can find additional information in my
debian-devel announcement:

https://lists.debian.org/debian-devel/2025/04/msg00310.html

About the archive rebuild: The build was made on debusine.debian.net,
using sbuild.

You can find the build task here:
https://debusine.debian.net/work-request/155181/

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

Thanks,
Timo

#1113632#12
Date:
2025-09-01 11:52:48 UTC
From:
To:
I have downgraded the bug to non-RC severity temporarily and reverted
CMake in unstable to version 3.31.6. I plan to re-upgrade in about a
month's time. I realize that despite my April announcement, the upload
to unstable came rather surprising, and I don't want to cause
unnecessary pain.

Also, the build log URL has an unfortunate mistake. The correct URL
should include the workspace, i.e.,

https://debusine.debian.net/debian/developers/artifact/XXXX

CMake 4 will also be available in experimental again, so it can be
used to verify that the bug is fixed.

Cheers
Timo