mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-24 02:20:37 +00:00
before this change, in the CMake-based building system, we rely on Seastar to provide this linkage, but this is wrong and fragile. as Seastar is not supposed to expose and provide GnuTLS symbols. that's why we have following build failure: ``` : && /home/kefu/.local/bin/clang++ -g -Og -g -gz -Xlinker --build-id=sha1 --ld-path=ld.lld -dynamic-linker=/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////lib64/ld-linux-x86-64.so.2 /home/kefu/dev/scylladb/build/Debug/seastar/libseastar.so -fsanitize=address -fsanitize=undefined /usr/lib64/libboost_program_options.so /usr/lib64/libboost_thread.so /usr/lib64/libcares.so /usr/lib64/libfmt.so.11.0.2 -L/usr/lib64 -llz4 CMakeFiles/scylla_version.dir/Debug/release.cc.o CMakeFiles/scylla.dir/Debug/main.cc.o -o Debug/scylla -L/home/kefu/dev/scylladb/idl/absl::headers -Wl,-rpath,/home/kefu/dev/scylladb/idl/absl::headers:/home/kefu/dev/scylladb/build/Debug/seastar Debug/libscylla-main.a api/Debug/libapi.a alternator/Debug/libalternator.a db/Debug/libdb.a cdc/Debug/libcdc.a compaction/Debug/libcompaction.a cql3/Debug/libcql3.a data_dictionary/Debug/libdata_dictionary.a gms/Debug/libgms.a index/Debug/libindex.a lang/Debug/liblang.a message/Debug/libmessage.a mutation/Debug/libmutation.a mutation_writer/Debug/libmutation_writer.a raft/Debug/libraft.a readers/Debug/libreaders.a redis/Debug/libredis.a repair/Debug/librepair.a replica/Debug/libreplica.a schema/Debug/libschema.a service/Debug/libservice.a sstables/Debug/libsstables.a streaming/Debug/libstreaming.a test/perf/Debug/libtest-perf.a tools/Debug/libtools.a transport/Debug/libtransport.a types/Debug/libtypes.a utils/Debug/libutils.a Debug/seastar/libseastar.so /usr/lib64/libyaml-cpp.so /usr/lib64/libboost_program_options.so.1.83.0 test/lib/Debug/libtest-lib.a -Xlinker --push-state -Xlinker --whole-archive auth/Debug/libscylla_auth.a -Xlinker --pop-state /usr/lib64/libcrypt.so cdc/Debug/libcdc.a compaction/Debug/libcompaction.a mutation_writer/Debug/libmutation_writer.a -Xlinker --push-state -Xlinker --whole-archive dht/Debug/libscylla_dht.a -Xlinker --pop-state index/Debug/libindex.a -Xlinker --push-state -Xlinker --whole-archive locator/Debug/libscylla_locator.a -Xlinker --pop-state message/Debug/libmessage.a gms/Debug/libgms.a sstables/Debug/libsstables.a readers/Debug/libreaders.a schema/Debug/libschema.a -Xlinker --push-state -Xlinker --whole-archive tracing/Debug/libscylla_tracing.a -Xlinker --pop-state Debug/libscylla-main.a -Xlinker --push-state -Xlinker --whole-archive Debug/libscylla-zstd.a -Xlinker --pop-state /usr/lib64/libzstd.so abseil/absl/strings/Debug/libabsl_cord.a abseil/absl/strings/Debug/libabsl_cordz_info.a abseil/absl/strings/Debug/libabsl_cord_internal.a abseil/absl/strings/Debug/libabsl_cordz_functions.a abseil/absl/strings/Debug/libabsl_cordz_handle.a abseil/absl/crc/Debug/libabsl_crc_cord_state.a abseil/absl/crc/Debug/libabsl_crc32c.a abseil/absl/crc/Debug/libabsl_crc_internal.a abseil/absl/crc/Debug/libabsl_crc_cpu_detect.a abseil/absl/strings/Debug/libabsl_str_format_internal.a service/Debug/libservice.a node_ops/Debug/libnode_ops.a service/Debug/libservice.a node_ops/Debug/libnode_ops.a raft/Debug/libraft.a repair/Debug/librepair.a streaming/Debug/libstreaming.a replica/Debug/libreplica.a abseil/absl/container/Debug/libabsl_raw_hash_set.a abseil/absl/hash/Debug/libabsl_hash.a abseil/absl/hash/Debug/libabsl_city.a abseil/absl/types/Debug/libabsl_bad_variant_access.a abseil/absl/hash/Debug/libabsl_low_level_hash.a abseil/absl/types/Debug/libabsl_bad_optional_access.a abseil/absl/container/Debug/libabsl_hashtablez_sampler.a abseil/absl/profiling/Debug/libabsl_exponential_biased.a abseil/absl/synchronization/Debug/libabsl_synchronization.a abseil/absl/debugging/Debug/libabsl_stacktrace.a abseil/absl/synchronization/Debug/libabsl_graphcycles_internal.a abseil/absl/synchronization/Debug/libabsl_kernel_timeout_internal.a abseil/absl/debugging/Debug/libabsl_symbolize.a abseil/absl/debugging/Debug/libabsl_debugging_internal.a abseil/absl/base/Debug/libabsl_malloc_internal.a abseil/absl/debugging/Debug/libabsl_demangle_internal.a abseil/absl/time/Debug/libabsl_time.a abseil/absl/strings/Debug/libabsl_strings.a abseil/absl/strings/Debug/libabsl_strings_internal.a abseil/absl/strings/Debug/libabsl_string_view.a abseil/absl/base/Debug/libabsl_throw_delegate.a abseil/absl/numeric/Debug/libabsl_int128.a abseil/absl/base/Debug/libabsl_base.a abseil/absl/base/Debug/libabsl_raw_logging_internal.a abseil/absl/base/Debug/libabsl_log_severity.a abseil/absl/base/Debug/libabsl_spinlock_wait.a -lrt abseil/absl/time/Debug/libabsl_civil_time.a abseil/absl/time/Debug/libabsl_time_zone.a -lsystemd /usr/lib64/libz.so /usr/lib64/libdeflate.so types/Debug/libtypes.a utils/Debug/libutils.a /usr/lib64/libyaml-cpp.so /usr/lib64/libcryptopp.so /usr/lib64/libboost_regex.so.1.83.0 /usr/lib64/libicui18n.so /usr/lib64/libicuuc.so -ldl /usr/lib64/libboost_unit_test_framework.so.1.83.0 Debug/seastar/libseastar_perf_testing.so /usr/lib64/libjsoncpp.so.1.9.5 db/Debug/libdb.a data_dictionary/Debug/libdata_dictionary.a cql3/Debug/libcql3.a transport/Debug/libtransport.a cql3/Debug/libcql3.a transport/Debug/libtransport.a lang/Debug/liblang.a /usr/lib64/liblua-5.4.so -lm rust/Debug/libwasmtime_bindings.a rust/librust_combined.a /usr/lib64/libsnappy.so.1.2.1 mutation/Debug/libmutation.a Debug/seastar/libseastar.so /usr/lib64/liblz4.so /usr/lib64/libxxhash.so && : ld.lld: error: undefined symbol: gnutls_hmac_fast >>> referenced by aws_sigv4.cc:21 (/home/kefu/dev/scylladb/utils/aws_sigv4.cc:21) >>> aws_sigv4.cc.o:(utils::aws::hmac_sha256(std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>)) in archive utils/Debug/libutils.a ld.lld: error: undefined symbol: gnutls_strerror >>> referenced by aws_sigv4.cc:23 (/home/kefu/dev/scylladb/utils/aws_sigv4.cc:23) >>> aws_sigv4.cc.o:(utils::aws::hmac_sha256(std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>)) in archive utils/Debug/libutils.a ``` in this change, we detect this library, and link its caller against it. this addresses the link failure. Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>