google-cloud-cpp icon indicating copy to clipboard operation
google-cloud-cpp copied to clipboard

ci: upgrade cmake to Fedora:40

Open alevenberg opened this issue 1 year ago • 5 comments

https://github.com/googleapis/google-cloud-cpp/issues/14076


This change is Reviewable

alevenberg avatar May 09 '24 18:05 alevenberg

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 93.79%. Comparing base (bd6390c) to head (905d901). Report is 14 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #14195      +/-   ##
==========================================
+ Coverage   93.24%   93.79%   +0.55%     
==========================================
  Files        2206     2293      +87     
  Lines      192142   202912   +10770     
==========================================
+ Hits       179156   190316   +11160     
+ Misses      12986    12596     -390     

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

codecov[bot] avatar May 09 '24 18:05 codecov[bot]

Still getting

Step #2: T+86.144s [1049/1185] Linking CXX executable generator/protoc-gen-cpp_codegen
Step #2: FAILED: generator/protoc-gen-cpp_codegen 
Step #2: : && /usr/bin/clang++   generator/CMakeFiles/protoc-gen-cpp_codegen.dir/plugin_main.cc.o -o generator/protoc-gen-cpp_codegen  -Wl,-rpath,/usr/local/lib64:/usr/local/lib  generator/libgoogle_cloud_cpp_generator.a  /usr/local/lib64/libprotoc.so.26.1.0  generator/libgoogle_cloud_cpp_generator_config.a  google/cloud/libgoogle_cloud_cpp_rest_internal.a  google/cloud/libgoogle_cloud_cpp_common.a  /usr/lib64/libcurl.so  external/googleapis/libgoogle_cloud_cpp_api_field_info_protos.a  external/googleapis/libgoogle_cloud_cpp_api_routing_protos.a  external/googleapis/libgoogle_cloud_cpp_cloud_extended_operations_protos.a  external/googleapis/libgoogle_cloud_cpp_longrunning_operations_protos.a  external/googleapis/libgoogle_cloud_cpp_api_client_protos.a  external/googleapis/libgoogle_cloud_cpp_api_launch_stage_protos.a  external/googleapis/libgoogle_cloud_cpp_api_annotations_protos.a  external/googleapis/libgoogle_cloud_cpp_api_http_protos.a  external/googleapis/libgoogle_cloud_cpp_rpc_status_protos.a  external/googleapis/libgoogle_cloud_cpp_rpc_error_details_protos.a  /usr/local/lib/libgrpc++.so.1.63.0  /usr/local/lib64/libprotobuf.so.26.1.0  /usr/local/lib64/libabsl_log_internal_check_op.so.2401.0.0  /usr/local/lib64/libabsl_leak_check.so.2401.0.0  /usr/local/lib64/libabsl_die_if_null.so.2401.0.0  /usr/local/lib64/libabsl_log_initialize.so.2401.0.0  /usr/local/lib/libgrpc.so.40.0.0  /usr/local/lib64/libabsl_statusor.so.2401.0.0  /usr/lib64/libssl.so  /usr/lib64/libcrypto.so  /usr/local/lib/libupb_json_lib.so.40.0.0  /usr/local/lib/libupb_textformat_lib.so.40.0.0  /usr/local/lib/libutf8_range_lib.so.40.0.0  /usr/local/lib/libupb_message_lib.so.40.0.0  /usr/local/lib/libupb_base_lib.so.40.0.0  /usr/local/lib/libupb_mem_lib.so.40.0.0  /usr/lib64/libre2.so.9.0.0  /usr/lib64/libz.so  /usr/lib64/libcares.so.2.13.1  /usr/local/lib/libgpr.so.40.0.0  /usr/local/lib64/libabsl_flags_internal.so.2401.0.0  /usr/local/lib64/libabsl_flags_reflection.so.2401.0.0  /usr/local/lib64/libabsl_raw_hash_set.so.2401.0.0  /usr/local/lib64/libabsl_hashtablez_sampler.so.2401.0.0  /usr/local/lib64/libabsl_flags_config.so.2401.0.0  /usr/local/lib64/libabsl_flags_program_name.so.2401.0.0  /usr/local/lib64/libabsl_flags_private_handle_accessor.so.2401.0.0  /usr/local/lib64/libabsl_flags_commandlineflag.so.2401.0.0  /usr/local/lib64/libabsl_flags_commandlineflag_internal.so.2401.0.0  /usr/local/lib64/libabsl_status.so.2401.0.0  /usr/local/lib64/libabsl_cord.so.2401.0.0  /usr/local/lib64/libabsl_cordz_info.so.2401.0.0  /usr/local/lib64/libabsl_cord_internal.so.2401.0.0  /usr/local/lib64/libabsl_cordz_functions.so.2401.0.0  /usr/local/lib64/libabsl_exponential_biased.so.2401.0.0  /usr/local/lib64/libabsl_cordz_handle.so.2401.0.0  /usr/local/lib64/libabsl_crc_cord_state.so.2401.0.0  /usr/local/lib64/libabsl_crc32c.so.2401.0.0  /usr/local/lib64/libabsl_crc_internal.so.2401.0.0  /usr/local/lib64/libabsl_crc_cpu_detect.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_conditions.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_message.so.2401.0.0  /usr/local/lib64/libabsl_strerror.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_nullguard.so.2401.0.0  /usr/local/lib64/libabsl_examine_stack.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_format.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_proto.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_log_sink_set.so.2401.0.0  /usr/local/lib64/libabsl_log_globals.so.2401.0.0  /usr/local/lib64/libabsl_hash.so.2401.0.0  /usr/local/lib64/libabsl_bad_variant_access.so.2401.0.0  /usr/local/lib64/libabsl_city.so.2401.0.0  /usr/local/lib64/libabsl_low_level_hash.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_globals.so.2401.0.0  /usr/local/lib64/libabsl_log_sink.so.2401.0.0  /usr/local/lib64/libabsl_log_entry.so.2401.0.0  /usr/local/lib64/libabsl_vlog_config_internal.so.2401.0.0  /usr/local/lib64/libabsl_synchronization.so.2401.0.0  /usr/local/lib64/libabsl_stacktrace.so.2401.0.0  /usr/local/lib64/libabsl_symbolize.so.2401.0.0  /usr/local/lib64/libabsl_debugging_internal.so.2401.0.0  /usr/local/lib64/libabsl_demangle_internal.so.2401.0.0  /usr/local/lib64/libabsl_graphcycles_internal.so.2401.0.0  /usr/local/lib64/libabsl_kernel_timeout_internal.so.2401.0.0  /usr/local/lib64/libabsl_time.so.2401.0.0  /usr/local/lib64/libabsl_civil_time.so.2401.0.0  /usr/local/lib64/libabsl_time_zone.so.2401.0.0  /usr/local/lib64/libabsl_malloc_internal.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_fnmatch.so.2401.0.0  /usr/local/lib64/libabsl_flags_marshalling.so.2401.0.0  /usr/local/lib64/libabsl_random_distributions.so.2401.0.0  /usr/local/lib64/libabsl_random_seed_sequences.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_pool_urbg.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_hwaes.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_hwaes_impl.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_slow.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_platform.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_seed_material.so.2401.0.0  /usr/local/lib64/libabsl_bad_optional_access.so.2401.0.0  /usr/local/lib64/libabsl_random_seed_gen_exception.so.2401.0.0  /usr/local/lib/libaddress_sorting.so.40.0.0  -ldl  -lm  -lrt  /usr/local/lib64/libabsl_str_format_internal.so.2401.0.0  /usr/local/lib64/libabsl_strings.so.2401.0.0  /usr/local/lib64/libabsl_strings_internal.so.2401.0.0  /usr/local/lib64/libabsl_int128.so.2401.0.0  /usr/local/lib64/libabsl_string_view.so.2401.0.0  /usr/local/lib64/libabsl_base.so.2401.0.0  /usr/local/lib64/libabsl_spinlock_wait.so.2401.0.0  /usr/local/lib64/libabsl_throw_delegate.so.2401.0.0  /usr/local/lib64/libabsl_raw_logging_internal.so.2401.0.0  /usr/local/lib64/libabsl_log_severity.so.2401.0.0  /usr/lib64/libyaml-cpp.so.0.7.0 && :
Step #2: /usr/bin/ld: generator/libgoogle_cloud_cpp_generator_config.a(generator_config.pb.cc.o): in function `absl::log_internal::LogMessage::operator<<(unsigned long)':
Step #2: generator_config.pb.cc:(.text._ZN4absl12log_internal10LogMessagelsEm[_ZN4absl12log_internal10LogMessagelsEm]+0x19): undefined reference to `_ZN4absl12log_internal10LogMessagelsImTnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS1_RKS4_'
Step #2: clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Step #2: T+87.972s [1050/1185] Linking CXX executable generator/google-cloud-cpp-codegen

on clang-tidy-tools

I think this uses clang-tidy.sh, so not sure why it is not linking

alevenberg avatar May 10 '24 14:05 alevenberg

Still getting

Step #2: T+86.144s [1049/1185] Linking CXX executable generator/protoc-gen-cpp_codegen
Step #2: FAILED: generator/protoc-gen-cpp_codegen 
Step #2: : && /usr/bin/clang++   generator/CMakeFiles/protoc-gen-cpp_codegen.dir/plugin_main.cc.o -o generator/protoc-gen-cpp_codegen  -Wl,-rpath,/usr/local/lib64:/usr/local/lib  generator/libgoogle_cloud_cpp_generator.a  /usr/local/lib64/libprotoc.so.26.1.0  generator/libgoogle_cloud_cpp_generator_config.a  google/cloud/libgoogle_cloud_cpp_rest_internal.a  google/cloud/libgoogle_cloud_cpp_common.a  /usr/lib64/libcurl.so  external/googleapis/libgoogle_cloud_cpp_api_field_info_protos.a  external/googleapis/libgoogle_cloud_cpp_api_routing_protos.a  external/googleapis/libgoogle_cloud_cpp_cloud_extended_operations_protos.a  external/googleapis/libgoogle_cloud_cpp_longrunning_operations_protos.a  external/googleapis/libgoogle_cloud_cpp_api_client_protos.a  external/googleapis/libgoogle_cloud_cpp_api_launch_stage_protos.a  external/googleapis/libgoogle_cloud_cpp_api_annotations_protos.a  external/googleapis/libgoogle_cloud_cpp_api_http_protos.a  external/googleapis/libgoogle_cloud_cpp_rpc_status_protos.a  external/googleapis/libgoogle_cloud_cpp_rpc_error_details_protos.a  /usr/local/lib/libgrpc++.so.1.63.0  /usr/local/lib64/libprotobuf.so.26.1.0  /usr/local/lib64/libabsl_log_internal_check_op.so.2401.0.0  /usr/local/lib64/libabsl_leak_check.so.2401.0.0  /usr/local/lib64/libabsl_die_if_null.so.2401.0.0  /usr/local/lib64/libabsl_log_initialize.so.2401.0.0  /usr/local/lib/libgrpc.so.40.0.0  /usr/local/lib64/libabsl_statusor.so.2401.0.0  /usr/lib64/libssl.so  /usr/lib64/libcrypto.so  /usr/local/lib/libupb_json_lib.so.40.0.0  /usr/local/lib/libupb_textformat_lib.so.40.0.0  /usr/local/lib/libutf8_range_lib.so.40.0.0  /usr/local/lib/libupb_message_lib.so.40.0.0  /usr/local/lib/libupb_base_lib.so.40.0.0  /usr/local/lib/libupb_mem_lib.so.40.0.0  /usr/lib64/libre2.so.9.0.0  /usr/lib64/libz.so  /usr/lib64/libcares.so.2.13.1  /usr/local/lib/libgpr.so.40.0.0  /usr/local/lib64/libabsl_flags_internal.so.2401.0.0  /usr/local/lib64/libabsl_flags_reflection.so.2401.0.0  /usr/local/lib64/libabsl_raw_hash_set.so.2401.0.0  /usr/local/lib64/libabsl_hashtablez_sampler.so.2401.0.0  /usr/local/lib64/libabsl_flags_config.so.2401.0.0  /usr/local/lib64/libabsl_flags_program_name.so.2401.0.0  /usr/local/lib64/libabsl_flags_private_handle_accessor.so.2401.0.0  /usr/local/lib64/libabsl_flags_commandlineflag.so.2401.0.0  /usr/local/lib64/libabsl_flags_commandlineflag_internal.so.2401.0.0  /usr/local/lib64/libabsl_status.so.2401.0.0  /usr/local/lib64/libabsl_cord.so.2401.0.0  /usr/local/lib64/libabsl_cordz_info.so.2401.0.0  /usr/local/lib64/libabsl_cord_internal.so.2401.0.0  /usr/local/lib64/libabsl_cordz_functions.so.2401.0.0  /usr/local/lib64/libabsl_exponential_biased.so.2401.0.0  /usr/local/lib64/libabsl_cordz_handle.so.2401.0.0  /usr/local/lib64/libabsl_crc_cord_state.so.2401.0.0  /usr/local/lib64/libabsl_crc32c.so.2401.0.0  /usr/local/lib64/libabsl_crc_internal.so.2401.0.0  /usr/local/lib64/libabsl_crc_cpu_detect.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_conditions.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_message.so.2401.0.0  /usr/local/lib64/libabsl_strerror.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_nullguard.so.2401.0.0  /usr/local/lib64/libabsl_examine_stack.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_format.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_proto.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_log_sink_set.so.2401.0.0  /usr/local/lib64/libabsl_log_globals.so.2401.0.0  /usr/local/lib64/libabsl_hash.so.2401.0.0  /usr/local/lib64/libabsl_bad_variant_access.so.2401.0.0  /usr/local/lib64/libabsl_city.so.2401.0.0  /usr/local/lib64/libabsl_low_level_hash.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_globals.so.2401.0.0  /usr/local/lib64/libabsl_log_sink.so.2401.0.0  /usr/local/lib64/libabsl_log_entry.so.2401.0.0  /usr/local/lib64/libabsl_vlog_config_internal.so.2401.0.0  /usr/local/lib64/libabsl_synchronization.so.2401.0.0  /usr/local/lib64/libabsl_stacktrace.so.2401.0.0  /usr/local/lib64/libabsl_symbolize.so.2401.0.0  /usr/local/lib64/libabsl_debugging_internal.so.2401.0.0  /usr/local/lib64/libabsl_demangle_internal.so.2401.0.0  /usr/local/lib64/libabsl_graphcycles_internal.so.2401.0.0  /usr/local/lib64/libabsl_kernel_timeout_internal.so.2401.0.0  /usr/local/lib64/libabsl_time.so.2401.0.0  /usr/local/lib64/libabsl_civil_time.so.2401.0.0  /usr/local/lib64/libabsl_time_zone.so.2401.0.0  /usr/local/lib64/libabsl_malloc_internal.so.2401.0.0  /usr/local/lib64/libabsl_log_internal_fnmatch.so.2401.0.0  /usr/local/lib64/libabsl_flags_marshalling.so.2401.0.0  /usr/local/lib64/libabsl_random_distributions.so.2401.0.0  /usr/local/lib64/libabsl_random_seed_sequences.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_pool_urbg.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_hwaes.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_hwaes_impl.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_randen_slow.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_platform.so.2401.0.0  /usr/local/lib64/libabsl_random_internal_seed_material.so.2401.0.0  /usr/local/lib64/libabsl_bad_optional_access.so.2401.0.0  /usr/local/lib64/libabsl_random_seed_gen_exception.so.2401.0.0  /usr/local/lib/libaddress_sorting.so.40.0.0  -ldl  -lm  -lrt  /usr/local/lib64/libabsl_str_format_internal.so.2401.0.0  /usr/local/lib64/libabsl_strings.so.2401.0.0  /usr/local/lib64/libabsl_strings_internal.so.2401.0.0  /usr/local/lib64/libabsl_int128.so.2401.0.0  /usr/local/lib64/libabsl_string_view.so.2401.0.0  /usr/local/lib64/libabsl_base.so.2401.0.0  /usr/local/lib64/libabsl_spinlock_wait.so.2401.0.0  /usr/local/lib64/libabsl_throw_delegate.so.2401.0.0  /usr/local/lib64/libabsl_raw_logging_internal.so.2401.0.0  /usr/local/lib64/libabsl_log_severity.so.2401.0.0  /usr/lib64/libyaml-cpp.so.0.7.0 && :
Step #2: /usr/bin/ld: generator/libgoogle_cloud_cpp_generator_config.a(generator_config.pb.cc.o): in function `absl::log_internal::LogMessage::operator<<(unsigned long)':
Step #2: generator_config.pb.cc:(.text._ZN4absl12log_internal10LogMessagelsEm[_ZN4absl12log_internal10LogMessagelsEm]+0x19): undefined reference to `_ZN4absl12log_internal10LogMessagelsImTnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS1_RKS4_'
Step #2: clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Step #2: T+87.972s [1050/1185] Linking CXX executable generator/google-cloud-cpp-codegen

on clang-tidy-tools

I think this uses clang-tidy.sh, so not sure why it is not linking

I think because some of the targets in generator/... are missing the call to google_cloud_cpp_add_common_options():

https://github.com/googleapis/google-cloud-cpp/blob/bd6390c490d161e09aba466b8c35eed645670cb1/generator/CMakeLists.txt#L172-L175

That is not the only one.

coryan avatar May 10 '24 14:05 coryan

Locally

Adding

# Build protoc plugin executable
add_executable(protoc-gen-cpp_codegen plugin_main.cc)
target_link_libraries(
    protoc-gen-cpp_codegen LINK_PUBLIC google_cloud_cpp_generator
    protobuf::libprotoc ${Protobuf_LIBRARIES})
google_cloud_cpp_add_common_options(protoc-gen-cpp_codegen)

Still returns FAILED: generator/protoc-gen-cpp_codegen

alevenberg avatar May 10 '24 16:05 alevenberg

Hmm... I was able to build locally with:

diff --git a/ci/cloudbuild/builds/clang-tidy.sh b/ci/cloudbuild/builds/clang-tidy.sh
index 98c3d3de5b..02c4893f6d 100755
--- a/ci/cloudbuild/builds/clang-tidy.sh
+++ b/ci/cloudbuild/builds/clang-tidy.sh
@@ -49,6 +49,7 @@ io::run cmake "${cmake_args[@]}" \
   -DCMAKE_CXX_STANDARD=14 \
   -DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES=ON \
   -DGOOGLE_CLOUD_CPP_ENABLE="${ENABLED_FEATURES}" \
+  -DGOOGLE_CLOUD_CPP_ENABLE_CLANG_ABI_COMPAT_17=ON \
   -DGOOGLE_CLOUD_CPP_INTERNAL_DOCFX="${enable_docfx}"
 io::run cmake --build cmake-out
 
diff --git a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile
index ec3bf88b8c..e56e7f2b10 100644
--- a/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile
+++ b/ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM fedora:39
+FROM fedora:40
 ARG NCPU=4
 ARG ARCH=amd64
 
diff --git a/generator/CMakeLists.txt b/generator/CMakeLists.txt
index 505df31022..e4abeb7990 100644
--- a/generator/CMakeLists.txt
+++ b/generator/CMakeLists.txt
@@ -172,6 +172,7 @@ create_bazel_config(google_cloud_cpp_generator YEAR "2020")
 
 # Build protoc plugin executable
 add_executable(protoc-gen-cpp_codegen plugin_main.cc)
+google_cloud_cpp_add_common_options(protoc-gen-cpp_codegen)
 target_link_libraries(
     protoc-gen-cpp_codegen LINK_PUBLIC google_cloud_cpp_generator
     protobuf::libprotoc ${Protobuf_LIBRARIES})
@@ -190,11 +191,14 @@ else ()
 endif ()
 target_link_libraries(google_cloud_cpp_generator_config
                       PUBLIC protobuf::libprotobuf)
+google_cloud_cpp_add_common_options(google_cloud_cpp_generator_config
+                                    NO_WARNINGS)
 set_target_properties(google_cloud_cpp_generator_config
                       PROPERTIES CXX_CLANG_TIDY "")
 
 # Build standalone executable
 add_executable(google-cloud-cpp-codegen standalone_main.cc)
+google_cloud_cpp_add_common_options(google-cloud-cpp-codegen)
 target_link_libraries(
     google-cloud-cpp-codegen
     PUBLIC google_cloud_cpp_generator_config google_cloud_cpp_generator```

coryan avatar May 10 '24 20:05 coryan

+google_cloud_cpp_add_common_options(google-cloud-cpp-codegen)

Maybe my docker cache needed to be cleared. Trying the patch on the CI.

alevenberg avatar May 13 '24 15:05 alevenberg