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

[cyrus-sasl,lmdb,librdkafka] cannot link against librdkafka[sasl] #40320

Open
timkpaine opened this issue Aug 7, 2024 · 4 comments
Open

[cyrus-sasl,lmdb,librdkafka] cannot link against librdkafka[sasl] #40320

timkpaine opened this issue Aug 7, 2024 · 4 comments
Assignees
Labels
category:port-bug The issue is with a library, which is something the port should already support Stale

Comments

@timkpaine
Copy link
Contributor

timkpaine commented Aug 7, 2024

Describe the bug
Likely related to our ongoing work with cyrus-sasl, lmdb, and librdkafka. @dg0yt might recognize something obvious 🤞

Environment

  • OS: osx arm64
  • Compiler: N/A

To Reproduce
Steps to reproduce the behavior:

  1. ./vcpkg install librdkafka[sasl]
  2. Try to link against librdkafka

e.g.

target_link_libraries(mylib PRIVATE RdKafka::rdkafka RdKafka::rdkafka++)

Expected behavior
Works

Failure logs

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -fvisibility=hidden         -O3         -g0         -Wall         -Werror         -Wno-deprecated-declarations         -Wno-deprecated          -O3 -DNDEBUG -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -mmacosx-version-min=10.15 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -o lib/_kafkaadapterimpl.so -install_name @rpath/_mycode.so cpp/CMakeFiles/mycode.dir/mycode.cpp.o -L/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.11/lib -Wl,-rpath,@loader_path/ -Wl,-rpath,/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.11/lib  lib/libmycode.a vcpkg_installed/arm64-osx/lib/libprotoc.a  vcpkg_installed/arm64-osx/lib/libprotobuf.a  vcpkg_installed/arm64-osx/lib/libprotobuf-lite.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_check_op.a  vcpkg_installed/arm64-osx/lib/libabsl_leak_check.a  vcpkg_installed/arm64-osx/lib/libabsl_die_if_null.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_conditions.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_message.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_nullguard.a  vcpkg_installed/arm64-osx/lib/libabsl_examine_stack.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_format.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_proto.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_log_sink_set.a  vcpkg_installed/arm64-osx/lib/libabsl_log_sink.a  vcpkg_installed/arm64-osx/lib/libabsl_log_entry.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_marshalling.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_reflection.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_config.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_program_name.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_private_handle_accessor.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_commandlineflag.a  vcpkg_installed/arm64-osx/lib/libabsl_flags_commandlineflag_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_log_initialize.a  vcpkg_installed/arm64-osx/lib/libabsl_log_globals.a  vcpkg_installed/arm64-osx/lib/libabsl_vlog_config_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_fnmatch.a  vcpkg_installed/arm64-osx/lib/libabsl_log_internal_globals.a  vcpkg_installed/arm64-osx/lib/libabsl_raw_hash_set.a  vcpkg_installed/arm64-osx/lib/libabsl_hash.a  vcpkg_installed/arm64-osx/lib/libabsl_city.a  vcpkg_installed/arm64-osx/lib/libabsl_low_level_hash.a  vcpkg_installed/arm64-osx/lib/libabsl_hashtablez_sampler.a  vcpkg_installed/arm64-osx/lib/libabsl_statusor.a  vcpkg_installed/arm64-osx/lib/libabsl_status.a  vcpkg_installed/arm64-osx/lib/libabsl_cord.a  vcpkg_installed/arm64-osx/lib/libabsl_cordz_info.a  vcpkg_installed/arm64-osx/lib/libabsl_cord_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_cordz_functions.a  vcpkg_installed/arm64-osx/lib/libabsl_exponential_biased.a  vcpkg_installed/arm64-osx/lib/libabsl_cordz_handle.a  vcpkg_installed/arm64-osx/lib/libabsl_crc_cord_state.a  vcpkg_installed/arm64-osx/lib/libabsl_crc32c.a  vcpkg_installed/arm64-osx/lib/libabsl_crc_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_crc_cpu_detect.a  vcpkg_installed/arm64-osx/lib/libabsl_bad_optional_access.a  vcpkg_installed/arm64-osx/lib/libabsl_strerror.a  vcpkg_installed/arm64-osx/lib/libabsl_str_format_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_synchronization.a  vcpkg_installed/arm64-osx/lib/libabsl_stacktrace.a  vcpkg_installed/arm64-osx/lib/libabsl_symbolize.a  vcpkg_installed/arm64-osx/lib/libabsl_debugging_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_demangle_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_demangle_rust.a  vcpkg_installed/arm64-osx/lib/libabsl_decode_rust_punycode.a  vcpkg_installed/arm64-osx/lib/libabsl_utf8_for_code_point.a  vcpkg_installed/arm64-osx/lib/libabsl_graphcycles_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_kernel_timeout_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_malloc_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_time.a  vcpkg_installed/arm64-osx/lib/libabsl_civil_time.a  vcpkg_installed/arm64-osx/lib/libabsl_time_zone.a  -Wl,-framework,CoreFoundation  vcpkg_installed/arm64-osx/lib/libabsl_bad_variant_access.a  vcpkg_installed/arm64-osx/lib/libutf8_validity.a  vcpkg_installed/arm64-osx/lib/libabsl_strings.a  vcpkg_installed/arm64-osx/lib/libabsl_int128.a  vcpkg_installed/arm64-osx/lib/libabsl_strings_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_string_view.a  vcpkg_installed/arm64-osx/lib/libabsl_base.a  vcpkg_installed/arm64-osx/lib/libabsl_spinlock_wait.a  vcpkg_installed/arm64-osx/lib/libabsl_throw_delegate.a  vcpkg_installed/arm64-osx/lib/libabsl_raw_logging_internal.a  vcpkg_installed/arm64-osx/lib/libabsl_log_severity.a  vcpkg_installed/arm64-osx/lib/librdkafka++.a  vcpkg_installed/arm64-osx/lib/librdkafka.a  -lm  vcpkg_installed/arm64-osx/lib/libssl.a  vcpkg_installed/arm64-osx/lib/libcrypto.a  -lsasl2  -llmdb  -lpthread  -lresolv  -lcrypto  -lgssapi_krb5  -lkrb5  -lk5crypto  -lcom_err  -lkrb5support  -lpthread  -lresolv  -lcrypto  -lgssapi_krb5  -lkrb5  -lk5crypto  -lcom_err  -lkrb5support  -ldl  -framework Kerberos  vcpkg_installed/arm64-osx/lib/liblz4.a  vcpkg_installed/arm64-osx/lib/liblmdb.a && :
ld: warning: ignoring duplicate libraries: '-lcom_err', '-lcrypto', '-lgssapi_krb5', '-lk5crypto', '-lkrb5', '-lkrb5support', '-lpthread', '-lresolv'
ld: library 'lmdb' not found

Note the end of that long string:

-llmdb  -lpthread ... vcpkg_installed/arm64-osx/lib/liblz4.a  vcpkg_installed/arm64-osx/lib/liblmdb.a 

Seems mixing the wrong things? trying to use shared?

Additional context
A workaround appears to be statically enumerating the libs

    target_link_libraries(mylib PRIVATE
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/liblmdb.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libkrb5.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libkrb5support.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libkrb5support.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libkrb5_klmdb.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libk5crypto.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libgssapi_krb5.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/liblz4.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libsasl2.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/librdkafka.a
      ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/librdkafka++.a
    )
@dg0yt
Copy link
Contributor

dg0yt commented Aug 7, 2024

The warning for duplicate libs is typical of Apple's linker.
The -llmdb error is because there is no -Lvcpkg_installed/arm64-osx/lib to help guide the search.
The task is to find where the -l without -L comes from.

@timkpaine
Copy link
Contributor Author

timkpaine commented Aug 7, 2024

so that suggests that another viable temporary workaround is in e.g. cmake,

link_directories(${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib)
target_link_libraries(mylib PRIVATE RdKafka::rdkafka RdKafka::rdkafka++)

@dg0yt
Copy link
Contributor

dg0yt commented Aug 7, 2024

Workaround, yes. It really needs to be fixed at the root, or it will hit other uses.

@jimwang118 jimwang118 added the category:port-bug The issue is with a library, which is something the port should already support label Aug 7, 2024
Copy link

github-actions bot commented Feb 4, 2025

This is an automated message. Per our repo policy, stale issues get closed if there has been no activity in the past 180 days. The issue will be automatically closed in 14 days. If you wish to keep this issue open, please add a new comment.

@github-actions github-actions bot added the Stale label Feb 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-bug The issue is with a library, which is something the port should already support Stale
Projects
None yet
Development

No branches or pull requests

3 participants