Skip to content

[C++] Building Flight with bundled gRPC / Abseil fails with gcc-15 and C++20 #48926

@raulcd

Description

@raulcd

Describe the bug, including details regarding any error messages, version, and platform.

I am trying to build Arrow Flight locally using our bundled (non-system) dependencies on Debian 14 Forky with gcc-15 and I get the following errors:

[1608/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/server_tracing_middleware.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/server_tracing_middleware.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/server_tracing_middleware.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/server_tracing_middleware.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/server_tracing_middleware.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/server_tracing_middleware.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.h:25,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/util_internal.h:20,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/server_tracing_middleware.cc:26:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1609/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_server.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_server.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_server.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_server.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_server.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/grpc_server.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/grpc_server.cc:28:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1610/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/serialization_internal.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/serialization_internal.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/serialization_internal.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/serialization_internal.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/serialization_internal.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/serialization_internal.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.h:25,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/serialization_internal.h:26,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/serialization_internal.cc:18:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1611/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/util_internal.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/util_internal.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/util_internal.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/util_internal.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/util_internal.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/util_internal.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.h:25,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/util_internal.h:20,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/util_internal.cc:18:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1612/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_client.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_client.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_client.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_client.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/grpc_client.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/grpc_client.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/grpc_client.cc:32:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1613/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/protocol_grpc_internal.cc.o
FAILED: [code=1] src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/protocol_grpc_internal.cc.o 
/usr/bin/c++ -DARROW_EXTRA_ERROR_CONTEXT -DARROW_FLIGHT_EXPORTING -DARROW_HAVE_RUNTIME_AVX2 -DARROW_HAVE_RUNTIME_AVX512 -DARROW_HAVE_RUNTIME_BMI2 -DARROW_HAVE_RUNTIME_SSE4_2 -DARROW_HAVE_SSE4_2 -DARROW_WITH_TIMING_TESTS -DCARES_STATICLIB -DGRPC_ENABLE_ASYNC -DGRPC_NAMESPACE_FOR_TLS_CREDENTIALS_OPTIONS=grpc::experimental -DGRPC_USE_CERTIFICATE_VERIFIER -DGRPC_USE_TLS_CHANNEL_CREDENTIALS_OPTIONS -I/home/raulcd/code/arrow/cpp/build/src -I/home/raulcd/code/arrow/cpp/src -I/home/raulcd/code/arrow/cpp/src/generated -I/home/raulcd/code/arrow/cpp/build/_deps/cares-build -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src -I/home/raulcd/code/arrow/cpp/build/_deps/cares-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/grpc-src/include -isystem /home/raulcd/code/arrow/cpp/build/_deps/protobuf-src/src -isystem /home/raulcd/code/arrow/cpp/build/_deps/re2-src -isystem /home/raulcd/code/arrow/cpp/build/_deps/absl-src -Wredundant-move -Wno-noexcept-type -Wno-self-move  -fdiagnostics-color=always  -Wall -Wno-conversion -Wno-sign-conversion -Wdate-time -Wimplicit-fallthrough -Wunused-result -fno-semantic-interposition -msse4.2  -g -Werror -O0 -ggdb  -std=c++20 -fPIC -Wmissing-declarations -Wno-error=deprecated-declarations -MD -MT src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/protocol_grpc_internal.cc.o -MF src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/protocol_grpc_internal.cc.o.d -o src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/transport/grpc/protocol_grpc_internal.cc.o -c /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.cc
In file included from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/options.h:73,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/config.h:66,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/base/const_init.h:25,
                 from /home/raulcd/code/arrow/cpp/build/_deps/absl-src/absl/synchronization/mutex.h:65,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/customize_grpc.h:35,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.h:25,
                 from /home/raulcd/code/arrow/cpp/src/arrow/flight/transport/grpc/protocol_grpc_internal.cc:17:
/usr/include/c++/15/ciso646:49:6: error: #warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros" [-Werror=cpp]
   49 | #    warning "<ciso646> is not a standard header since C++20, use <version> to detect implementation-specific macros"
      |      ^~~~~~~
cc1plus: all warnings being treated as errors
[1614/1969] Building CXX object src/arrow/flight/CMakeFiles/arrow_flight_objlib.dir/types.cc.o
ninja: build stopped: subcommand failed.

We are testing GCC 15 on test-debian-experimental-cpp-gcc-15 but we seem to be using system dependencies for Abseil, gRPC, protobuf.

We should probably upgrade our bundled dependencies as that Abseil version uses the deprecated include:
https://github.com/abseil/abseil-cpp/blob/215105818dfde3174fe799600bb0f3cae233d0bf/absl/base/options.h#L70-L74

It was updated and finally removed on those two commits:
abseil/abseil-cpp@634311e
abseil/abseil-cpp@3e54e87

Component(s)

C++

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions