Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: upgrade cmake to Fedora:40 #14195

Merged
merged 4 commits into from May 13, 2024
Merged

ci: upgrade cmake to Fedora:40 #14195

merged 4 commits into from May 13, 2024

Conversation

alevenberg
Copy link
Member

@alevenberg alevenberg commented May 9, 2024

#14076


This change is Reviewable

Copy link

codecov bot commented May 9, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

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     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@alevenberg
Copy link
Member Author

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

@coryan
Copy link
Member

coryan commented May 10, 2024

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():

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})

That is not the only one.

@alevenberg
Copy link
Member Author

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

@coryan
Copy link
Member

coryan commented May 10, 2024

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```

@alevenberg
Copy link
Member Author

+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 alevenberg marked this pull request as ready for review May 13, 2024 16:22
@alevenberg alevenberg requested a review from a team as a code owner May 13, 2024 16:22
@alevenberg alevenberg enabled auto-merge (squash) May 13, 2024 16:22
@alevenberg alevenberg merged commit e469a54 into googleapis:main May 13, 2024
63 checks passed
@alevenberg alevenberg deleted the cmake branch May 13, 2024 17:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants