Opened 2 years ago
Closed 2 years ago
#65624 closed defect (fixed)
davix: builds fail for multiple macOS releases: undefined symbols during link, originating from libcurl.a
Reported by: | mascguy (Christopher Nielsen) | Owned by: | cjones051073 (Chris Jones) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | Cc: | ||
Port: | davix root6 |
Description
While the undefined symbols differ between macOS releases, they seem to consistently originate from libcurl.a
:
For 10.12:
Undefined symbols for architecture x86_64: "_SSLCopyALPNProtocols", referenced from: _sectransp_connect_step2 in libcurl.a(sectransp.c.o) "_SSLSetALPNProtocols", referenced from: _sectransp_connect_step1 in libcurl.a(sectransp.c.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [src/libdavix.0.8.2.dylib] Error 1
For 10.8:
Undefined symbols for architecture x86_64: "___sincos_stret", referenced from: ___sincos in libcurl.a(sectransp.c.o) "___sincosf_stret", referenced from: ___sincosf in libcurl.a(sectransp.c.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [src/libdavix.0.8.2.dylib] Error 1
For 10.7:
Undefined symbols for architecture x86_64: "_SSLCreateContext", referenced from: _Curl_sectransp_close in libcurl.a(sectransp.c.o) _sectransp_connect_step1 in libcurl.a(sectransp.c.o) "_SSLSetProtocolVersionMax", referenced from: _sectransp_connect_step1 in libcurl.a(sectransp.c.o) _set_ssl_version_min_max in libcurl.a(sectransp.c.o) "_SSLSetProtocolVersionMin", referenced from: _sectransp_connect_step1 in libcurl.a(sectransp.c.o) _set_ssl_version_min_max in libcurl.a(sectransp.c.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [src/libdavix.0.8.2.dylib] Error 1
Change History (7)
comment:1 Changed 2 years ago by mascguy (Christopher Nielsen)
Summary: | davix: builds fail for multiple macOS releases: undefined symbols during link → davix: builds fail for multiple macOS releases: undefined symbols during link, originating from libcurl.a |
---|
comment:2 Changed 2 years ago by mascguy (Christopher Nielsen)
Port: | root6 added |
---|
comment:3 Changed 2 years ago by cjones051073 (Chris Jones)
The issue appears to be davix uses its own internal libcurl build
cd /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_net_davix/davix/work/build/src && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/libdavix.dir/link.txt --verbose=ON /usr/bin/clang++ -pipe -I/opt/local/libexec/openssl3/include -Os -DNDEBUG -I/opt/local/libexec/openssl3/include -isystem/opt/local/include/LegacySupport -isystem/opt/local/include -stdlib=libc++ -std=c++0x -arch x86_64 -mmacosx-version-min=10.12 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/libexec/openssl3/lib -Wl,-headerpad_max_install_names -L/opt/local/lib -lMacportsLegacySupport -current_version 0.8.2 -o libdavix.0.8.2.dylib -install_name /opt/local/lib/libdavix.0.dylib CMakeFiles/libdavix.dir/auth/davix_openssl.cpp.o CMakeFiles/libdavix.dir/auth/davixauth.cpp.o CMakeFiles/libdavix.dir/auth/davixx509cred.cpp.o CMakeFiles/libdavix.dir/backend/BackendRequest.cpp.o CMakeFiles/libdavix.dir/backend/SessionFactory.cpp.o CMakeFiles/libdavix.dir/backend/StandaloneNeonRequest.cpp.o CMakeFiles/libdavix.dir/core/ContentProvider.cpp.o CMakeFiles/libdavix.dir/core/RedirectionResolver.cpp.o CMakeFiles/libdavix.dir/curl/CurlSession.cpp.o CMakeFiles/libdavix.dir/curl/CurlSessionFactory.cpp.o CMakeFiles/libdavix.dir/curl/HeaderlineParser.cpp.o CMakeFiles/libdavix.dir/curl/ResponseBuffer.cpp.o CMakeFiles/libdavix.dir/curl/StandaloneCurlRequest.cpp.o CMakeFiles/libdavix.dir/deprecated/httpcachetoken.cpp.o CMakeFiles/libdavix.dir/file/davfile.cpp.o CMakeFiles/libdavix.dir/file/davposix.cpp.o CMakeFiles/libdavix.dir/fileops/AzureIO.cpp.o CMakeFiles/libdavix.dir/fileops/chain_factory.cpp.o CMakeFiles/libdavix.dir/fileops/davix_reliability_ops.cpp.o CMakeFiles/libdavix.dir/fileops/davmeta.cpp.o CMakeFiles/libdavix.dir/fileops/fileutils.cpp.o CMakeFiles/libdavix.dir/fileops/httpiochain.cpp.o CMakeFiles/libdavix.dir/fileops/httpiovec.cpp.o CMakeFiles/libdavix.dir/fileops/iobuffmap.cpp.o CMakeFiles/libdavix.dir/fileops/S3IO.cpp.o CMakeFiles/libdavix.dir/fileops/SwiftIO.cpp.o CMakeFiles/libdavix.dir/hooks/davix_hooks.cpp.o CMakeFiles/libdavix.dir/libs/alibxx/chrono/timepoint.cpp.o CMakeFiles/libdavix.dir/libs/alibxx/crypto/base64.cpp.o CMakeFiles/libdavix.dir/libs/alibxx/crypto/hmacsha.cpp.o CMakeFiles/libdavix.dir/libs/alibxx/str/format.cpp.o CMakeFiles/libdavix.dir/libs/datetime/datetime_utils.cpp.o CMakeFiles/libdavix.dir/modules/modules_profiles.cpp.o CMakeFiles/libdavix.dir/neon/neonrequest.cpp.o CMakeFiles/libdavix.dir/neon/neonsession.cpp.o CMakeFiles/libdavix.dir/neon/neonsessionfactory.cpp.o CMakeFiles/libdavix.dir/params/davixrequestparams.cpp.o CMakeFiles/libdavix.dir/request/httprequest.cpp.o CMakeFiles/libdavix.dir/status/DavixStatus.cpp.o CMakeFiles/libdavix.dir/status/davixstatusrequest.cpp.o CMakeFiles/libdavix.dir/utils/checksum_extractor.cpp.o CMakeFiles/libdavix.dir/utils/CompatibilityHacks.cpp.o CMakeFiles/libdavix.dir/utils/davix_azure_utils.cpp.o CMakeFiles/libdavix.dir/utils/davix_gcloud_utils.cpp.o CMakeFiles/libdavix.dir/utils/davix_logger.cpp.o CMakeFiles/libdavix.dir/utils/davix_misc_utils.cpp.o CMakeFiles/libdavix.dir/utils/davix_s3_utils.cpp.o CMakeFiles/libdavix.dir/utils/davix_swift_utils.cpp.o CMakeFiles/libdavix.dir/utils/simple_get_pass.cpp.o CMakeFiles/libdavix.dir/utils/stringutils.cpp.o CMakeFiles/libdavix.dir/utils/davixuri.cpp.o CMakeFiles/libdavix.dir/xml/azurepropparser.cpp.o CMakeFiles/libdavix.dir/xml/davdeletexmlparser.cpp.o CMakeFiles/libdavix.dir/xml/davix_ptree.cpp.o CMakeFiles/libdavix.dir/xml/davpropxmlparser.cpp.o CMakeFiles/libdavix.dir/xml/davxmlparser.cpp.o CMakeFiles/libdavix.dir/xml/metalinkparser.cpp.o CMakeFiles/libdavix.dir/xml/s3deleteparser.cpp.o CMakeFiles/libdavix.dir/xml/S3MultiPartInitiationParser.cpp.o CMakeFiles/libdavix.dir/xml/s3propparser.cpp.o CMakeFiles/libdavix.dir/xml/swiftpropparser.cpp.o CMakeFiles/libdavix.dir/davixcontext.cpp.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_207.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_acl3744.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_alloc.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_auth.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_basic.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_compress.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_dates.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_i18n.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_locks.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_md5.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_ntlm.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_oldacl.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_pkcs11.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_props.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_redirect.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_request.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_session.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_socket.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_socks.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_sspi.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_string.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_uri.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_utils.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_xml.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_xmlreq.c.o ../deps/libneon/CMakeFiles/LibNeonObjects.dir/src/ne_openssl.c.o -Wl,-rpath,/opt/local/lib ../deps/curl-install/usr/lib/libcurl.a /opt/local/libexec/openssl3/lib/libssl.dylib /opt/local/libexec/openssl3/lib/libcrypto.dylib /opt/local/lib/libxml2.dylib -lz -framework CoreFoundation -framework Security
see the ./deps/curl-install/usr/lib/libcurl.a
bit in the above.
A quick look at the configure options doesn show a way to use an external libcurl, just options to enable/disable it. So perhaps this is the way forward on the very old systems.
On 10.12, going to see if extending the compiler blackist, as used on 10.11 and older at the moment helps first.
comment:4 Changed 2 years ago by ryandesign (Ryan Carsten Schmidt)
Instead, please try patching davix to use MacPorts curl, per the changes posted at https://github.com/cern-fts/davix/issues/77, and if that works, or if further changes are necessary, leave comments there and encourage the developer to offer this option without patching.
comment:5 Changed 2 years ago by Chris Jones <jonesc@…>
comment:6 Changed 2 years ago by cjones051073 (Chris Jones)
thanks for that pointer. Turns out I didn't check the davie configuration well enough and indeed there is already the make option to disable the internal lib curl build, and thus use an external source. Lets see if the above now helps on older systems (worked just fine here on macOS12).
comment:7 Changed 2 years ago by cjones051073 (Chris Jones)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
seems to have done the trick.
Thankfully
root6
is the sole dependent. Nonetheless, this is blocking builds for that port.