Bug #115163 Contribution: Build failure with Protobuf 22+ in Linux
| Submitted: | 29 May 2024 13:42 | Modified: | 4 Aug 2024 0:04 |
|---|---|---|---|
| Reporter: | OCA Admin (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | OS: | Any | |
| Assigned to: | CPU Architecture: | Any |
[29 May 2024 13:42]
OCA Admin
[29 May 2024 13:42]
OCA Admin
Contribution submitted via Github - Build failure with Protobuf 22+ in Linux (*) Contribution by gordon wang (Github gordonwwang, mysql-server/pull/544#issuecomment-2136426181): I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.
Contribution: git_patch_1886040851.txt (text/plain), 3.62 KiB.
[30 May 2024 10:07]
Tor Didriksen
Posted by developer: with protobuf version >= 22, shouldn't this be solved by simply doing find_package(Protobuf REQUIRED CONFIG) that should look up /usr/lib64/cmake/protobuf/ProtobufTargets.cmake (or something like that) which will define a target protobuf::libprotobuf with a bunch of INTERFACE_LINK_LIBRARIES ...
[30 May 2024 10:08]
MySQL Verification Team
Thank you, Tor.
[30 May 2024 10:08]
MySQL Verification Team
Hi OCA Admin, Would you be so kind to answer Tor's VERY valid question ???? Thank you in advance .....
[30 May 2024 12:04]
gordon wang
Hi Tor~ In fact, the comment in cmake/protobuf.cmake already mentions: ` ` ` # We cannot use the IMPORTED libraries defined by FIND_PACKAGE above, # protobuf::libprotobuf may have INTERFACE properties like -std=gnu++11 # and that will break the build since we use -std=c++20 ` ` ` This should explain your question about find_package.
[30 May 2024 12:12]
Tor Didriksen
ah yes, that was a broken build on MacOS, where system headers had ifdefs hiding C++17/C++20 features. What Linux version are you using?
[30 May 2024 12:22]
gordon wang
kernel 6.6, gcc-12.3.1
[5 Jun 2024 11:23]
Tor Didriksen
thanks, but my intention was: what Linux system has system protobuf >= 22, so that I can test my cmake code?
[5 Jun 2024 11:37]
gordon wang
Hi Tor~ As far as I know, protobuf 22+ is available in both OpenCloudOS Stream and OpenSUSE Tumbleweed distributions. I compiled the verification in a Linux environment with OpenCloudOS Stream (ocs, similar to CentOS Stream 9, using rpm/dnf). The following is the ocs image download address, if you need to install and verify: https://qa.opencloudos.tech/image/20240220/x86_64/OpenCloudOS-Stream-23-20240220-netinst-x...
[6 Jun 2024 11:14]
Tor Didriksen
Posted by developer:
objdump -p /usr/lib64/libprotobuf.so | grep NEEDED
NEEDED libz.so.1
NEEDED libabsl_die_if_null.so.2401.0.0
NEEDED libabsl_statusor.so.2401.0.0
NEEDED libabsl_log_internal_check_op.so.2401.0.0
NEEDED libabsl_log_internal_conditions.so.2401.0.0
NEEDED libabsl_log_internal_message.so.2401.0.0
NEEDED libabsl_log_internal_nullguard.so.2401.0.0
NEEDED libabsl_raw_hash_set.so.2401.0.0
NEEDED libabsl_hash.so.2401.0.0
NEEDED libabsl_status.so.2401.0.0
NEEDED libabsl_cord.so.2401.0.0
NEEDED libabsl_cordz_info.so.2401.0.0
NEEDED libabsl_synchronization.so.2401.0.0
NEEDED libabsl_time.so.2401.0.0
NEEDED libabsl_time_zone.so.2401.0.0
NEEDED libabsl_bad_variant_access.so.2401.0.0
NEEDED libabsl_str_format_internal.so.2401.0.0
NEEDED libabsl_strings.so.2401.0.0
NEEDED libabsl_string_view.so.2401.0.0
NEEDED libabsl_spinlock_wait.so.2401.0.0
NEEDED libabsl_throw_delegate.so.2401.0.0
NEEDED libstdc++.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
NEEDED ld-linux-x86-64.so.2
but I still get missing symbols.
Rather than doing a transitive closure of library dependencies,
I will try to parse the output of this instead
ldd /usr/lib64/libprotobuf.so
linux-vdso.so.1 (0x00007ffe70ac4000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007fd72b0f4000)
libabsl_die_if_null.so.2401.0.0 => /usr/lib64/libabsl_die_if_null.so.2401.0.0 (0x00007fd72b0f1000)
libabsl_statusor.so.2401.0.0 => /usr/lib64/libabsl_statusor.so.2401.0.0 (0x00007fd72b0ec000)
libabsl_log_internal_check_op.so.2401.0.0 => /usr/lib64/libabsl_log_internal_check_op.so.2401.0.0 (0x00007fd72b0e3000)
libabsl_log_internal_conditions.so.2401.0.0 => /usr/lib64/libabsl_log_internal_conditions.so.2401.0.0 (0x00007fd72b0e0000)
libabsl_log_internal_message.so.2401.0.0 => /usr/lib64/libabsl_log_internal_message.so.2401.0.0 (0x00007fd72b0d5000)
libabsl_log_internal_nullguard.so.2401.0.0 => /usr/lib64/libabsl_log_internal_nullguard.so.2401.0.0 (0x00007fd72b0d2000)
libabsl_raw_hash_set.so.2401.0.0 => /usr/lib64/libabsl_raw_hash_set.so.2401.0.0 (0x00007fd72b0ce000)
libabsl_hash.so.2401.0.0 => /usr/lib64/libabsl_hash.so.2401.0.0 (0x00007fd72b0c9000)
libabsl_status.so.2401.0.0 => /usr/lib64/libabsl_status.so.2401.0.0 (0x00007fd72b0c0000)
libabsl_cord.so.2401.0.0 => /usr/lib64/libabsl_cord.so.2401.0.0 (0x00007fd72b0a8000)
libabsl_cordz_info.so.2401.0.0 => /usr/lib64/libabsl_cordz_info.so.2401.0.0 (0x00007fd72b0a2000)
libabsl_synchronization.so.2401.0.0 => /usr/lib64/libabsl_synchronization.so.2401.0.0 (0x00007fd72b092000)
libabsl_time.so.2401.0.0 => /usr/lib64/libabsl_time.so.2401.0.0 (0x00007fd72b07d000)
libabsl_time_zone.so.2401.0.0 => /usr/lib64/libabsl_time_zone.so.2401.0.0 (0x00007fd72b060000)
libabsl_bad_variant_access.so.2401.0.0 => /usr/lib64/libabsl_bad_variant_access.so.2401.0.0 (0x00007fd72b05b000)
libabsl_str_format_internal.so.2401.0.0 => /usr/lib64/libabsl_str_format_internal.so.2401.0.0 (0x00007fd72b03f000)
libabsl_strings.so.2401.0.0 => /usr/lib64/libabsl_strings.so.2401.0.0 (0x00007fd72b01f000)
libabsl_string_view.so.2401.0.0 => /usr/lib64/libabsl_string_view.so.2401.0.0 (0x00007fd72b01a000)
libabsl_spinlock_wait.so.2401.0.0 => /usr/lib64/libabsl_spinlock_wait.so.2401.0.0 (0x00007fd72b017000)
libabsl_throw_delegate.so.2401.0.0 => /usr/lib64/libabsl_throw_delegate.so.2401.0.0 (0x00007fd72b012000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fd72adcb000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd72ada7000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd72ab92000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd72b3cc000)
libabsl_raw_logging_internal.so.2401.0.0 => /usr/lib64/libabsl_raw_logging_internal.so.2401.0.0 (0x00007fd72ab8e000)
libabsl_base.so.2401.0.0 => /usr/lib64/libabsl_base.so.2401.0.0 (0x00007fd72ab88000)
libabsl_examine_stack.so.2401.0.0 => /usr/lib64/libabsl_examine_stack.so.2401.0.0 (0x00007fd72ab82000)
libabsl_log_internal_format.so.2401.0.0 => /usr/lib64/libabsl_log_internal_format.so.2401.0.0 (0x00007fd72ab7e000)
libabsl_log_internal_proto.so.2401.0.0 => /usr/lib64/libabsl_log_internal_proto.so.2401.0.0 (0x00007fd72ab7a000)
libabsl_strerror.so.2401.0.0 => /usr/lib64/libabsl_strerror.so.2401.0.0 (0x00007fd72ab76000)
libabsl_log_internal_log_sink_set.so.2401.0.0 => /usr/lib64/libabsl_log_internal_log_sink_set.so.2401.0.0 (0x00007fd72ab71000)
libabsl_log_internal_globals.so.2401.0.0 => /usr/lib64/libabsl_log_internal_globals.so.2401.0.0 (0x00007fd72ab6b000)
libabsl_log_globals.so.2401.0.0 => /usr/lib64/libabsl_log_globals.so.2401.0.0 (0x00007fd72ab66000)
libabsl_city.so.2401.0.0 => /usr/lib64/libabsl_city.so.2401.0.0 (0x00007fd72ab62000)
libabsl_low_level_hash.so.2401.0.0 => /usr/lib64/libabsl_low_level_hash.so.2401.0.0 (0x00007fd72ab5f000)
libabsl_cord_internal.so.2401.0.0 => /usr/lib64/libabsl_cord_internal.so.2401.0.0 (0x00007fd72ab51000)
libabsl_crc_cord_state.so.2401.0.0 => /usr/lib64/libabsl_crc_cord_state.so.2401.0.0 (0x00007fd72ab4a000)
libabsl_cordz_functions.so.2401.0.0 => /usr/lib64/libabsl_cordz_functions.so.2401.0.0 (0x00007fd72ab45000)
libabsl_cordz_handle.so.2401.0.0 => /usr/lib64/libabsl_cordz_handle.so.2401.0.0 (0x00007fd72ab40000)
libabsl_stacktrace.so.2401.0.0 => /usr/lib64/libabsl_stacktrace.so.2401.0.0 (0x00007fd72ab3c000)
libabsl_kernel_timeout_internal.so.2401.0.0 => /usr/lib64/libabsl_kernel_timeout_internal.so.2401.0.0 (0x00007fd72ab38000)
libabsl_malloc_internal.so.2401.0.0 => /usr/lib64/libabsl_malloc_internal.so.2401.0.0 (0x00007fd72ab32000)
libabsl_int128.so.2401.0.0 => /usr/lib64/libabsl_int128.so.2401.0.0 (0x00007fd72ab29000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd72aa3f000)
libabsl_strings_internal.so.2401.0.0 => /usr/lib64/libabsl_strings_internal.so.2401.0.0 (0x00007fd72aa3b000)
libabsl_symbolize.so.2401.0.0 => /usr/lib64/libabsl_symbolize.so.2401.0.0 (0x00007fd72aa34000)
libabsl_log_sink.so.2401.0.0 => /usr/lib64/libabsl_log_sink.so.2401.0.0 (0x00007fd72aa31000)
libabsl_crc32c.so.2401.0.0 => /usr/lib64/libabsl_crc32c.so.2401.0.0 (0x00007fd72aa2a000)
libabsl_exponential_biased.so.2401.0.0 => /usr/lib64/libabsl_exponential_biased.so.2401.0.0 (0x00007fd72aa27000)
libabsl_debugging_internal.so.2401.0.0 => /usr/lib64/libabsl_debugging_internal.so.2401.0.0 (0x00007fd72aa21000)
libabsl_demangle_internal.so.2401.0.0 => /usr/lib64/libabsl_demangle_internal.so.2401.0.0 (0x00007fd72aa18000)
libabsl_crc_internal.so.2401.0.0 => /usr/lib64/libabsl_crc_internal.so.2401.0.0 (0x00007fd72aa11000)
[6 Jun 2024 11:23]
MySQL Verification Team
Thank you, Tor. These are the issues that have to be resolved by the reporter.
[4 Aug 2024 0:04]
Jon Stephens
Documented fix as follows in the MySQL 8.0.40, 8.4.3, and 9.1.0 changelogs:
It was not possible to build MySQL using Protobuf 22 or later.
Our thanks to Gordon Wang for the contribution.
Closed.
[5 Aug 2024 9:59]
MySQL Verification Team
Thank you, Jon.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.088 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.