Opened 16 months ago
Closed 16 months ago
#67803 closed defect (fixed)
curl @8.2.0: libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not found
Reported by: | BjarneDMat | Owned by: | ryandesign (Ryan Carsten Schmidt) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.8.1 |
Keywords: | Cc: | tehcog (tehcog), acjones8 (Alex Jones), mascguy (Christopher Nielsen) | |
Port: | curl |
Description (last modified by BjarneDMat)
Hardware: Hardware Overview: Model Name: Mac mini Model Identifier: Macmini2,1 Processor Name: Intel Core 2 Duo Boot ROM Version: MM21.009A.B00 SMC Version (system): 1.19f2 Software: System Software Overview: System Version: Mac OS X 10.6.8 (10K549) Kernel Version: Darwin 10.8.0
So, I've got a PHP script that uses php82-curl @8.2.8_0. When run w/ curl @8.2.0_0+ssl, I get the following:
dyld: Symbol not found: _SCDynamicStoreCopyProxies Referenced from: /opt/local/lib/libcurl.4.dylib Expected in: flat namespace
I've tried force re-installing both curl @8.2.0_0+ssl & php82-curl @8.2.8_0
Downgrading to curl @8.1.2_0+ssl fixes the issue:
#=> port installed | grep curl curl @8.1.2_0+ssl (active) curl-ca-bundle @8.2.0_0 (active) php82-curl @8.2.8_0 (active)
This problem is not seen on a
Hardware: Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro8,3 Boot ROM Version: 87.0.0.0.0 SMC Version (system): 1.70f6 Software: System Software Overview: System Version: macOS 10.15.7 (19H2) Kernel Version: Darwin 19.6.0
Change History (12)
comment:1 Changed 16 months ago by jmroot (Joshua Root)
Owner: | set to ryandesign |
---|---|
Port: | 8.2.0 removed |
Status: | new → assigned |
Summary: | libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not found → curl @8.2.0: libcurl.4.dylib : _SCDynamicStoreCopyProxies Symbol not found |
comment:2 Changed 16 months ago by BjarneDMat
Description: | modified (diff) |
---|
comment:3 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
Status: | assigned → accepted |
---|
comment:4 follow-up: 7 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
This didn't change in 8.2.0. What did change in 8.2.0 is that the code that calls SCDynamicStoreCopyProxies
moved from the Curl_resolv
function (where you might not've seen the problem if you never called that function) to the global_init
function (which I guess is called automatically by curl during its startup process so now you get the error no matter what you do with curl).
comment:5 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
And indeed the problem occurs on the command line too (this is on OS X 10.8):
$ curl --version dyld: lazy symbol binding failed: Symbol not found: _SCDynamicStoreCopyProxies Referenced from: /opt/local/lib/libcurl.4.dylib Expected in: flat namespace dyld: Symbol not found: _SCDynamicStoreCopyProxies Referenced from: /opt/local/lib/libcurl.4.dylib Expected in: flat namespace Trace/BPT trap: 5
config.log says of this test:
configure:21697: checking whether to link macOS CoreFoundation and SystemConfiguration framework configure:21721: /usr/bin/clang -std=gnu11 -c -pipe -Os -mmacosx-version-min=10.8 -arch x86_64 -Qunused-arguments -Wno-pointer-bool-conversion -Werror=partial-availability -I/opt/local/include conftest.c >&5 warning: unknown warning option '-Wno-pointer-bool-conversion'; did you mean '-Wno-literal-conversion'? [-Wunknown-warning-option] warning: unknown warning option '-Werror=partial-availability'; did you mean '-Werror=availability'? [-Wunknown-warning-option] conftest.c:34:2: error: Not a macOS #error Not a macOS ^ 2 warnings and 1 error generated. configure:21721: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "curl" | #define PACKAGE_TARNAME "curl" | #define PACKAGE_VERSION "-" | #define PACKAGE_STRING "curl -" | #define PACKAGE_BUGREPORT "a suitable curl mailing list: https://curl.se/mail/" | #define PACKAGE_URL "" | #define HAVE_STDIO_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_UNISTD_H 1 | #define STDC_HEADERS 1 | #define PACKAGE "curl" | #define VERSION "-" | #define OS "x86_64-apple-darwin12.6.0" | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | /* end confdefs.h. */ | | | #include <TargetConditionals.h> | | int main (void) | { | | #if (TARGET_OS_OSX) | return 0; | #else | #error Not a macOS | #endif | | ; | return 0; | } | configure:21737: result: no
It's checking for TARGET_OS_OSX
which didn't exist until the macOS 10.12 SDK. I filed a bug with the curl developers: https://github.com/curl/curl/issues/11502
comment:6 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
You can work around the problem for now by using the +ares variant (sudo port install curl +ares
). The code that calls SCDynamicStoreCopyProxies
is only compiled in when c-ares is not used.
comment:7 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
Replying to ryandesign:
This didn't change in 8.2.0. What did change in 8.2.0 is [...]
Actually the relevant change is probably this one. Previously, because TARGET_OS_OSX
was not defined on 10.11 and earlier, the code to call SCDynamicStoreCopyProxies
wasn't compiled in, and the framework wasn't linked in, which was fine. After that change, the code to call the function was compiled in but the configure script code to link in the framework wasn't also adjusted.
comment:8 Changed 16 months ago by tehcog (tehcog)
Cc: | tehcog added |
---|
comment:9 Changed 16 months ago by acjones8 (Alex Jones)
Cc: | acjones8 added |
---|
comment:10 Changed 16 months ago by mascguy (Christopher Nielsen)
Cc: | mascguy added |
---|
comment:11 Changed 16 months ago by mascguy (Christopher Nielsen)
Ryan, this is also causing failures for librsvg-devel
; issue:67817
comment:12 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Thanks for the report.
_SCDynamicStoreCopyProxies
is part of Apple's SystemConfiguration framework in Mac OS X 10.1 and later. However I see from the buildbot logs that on OS X 10.11 and earlier, curl apparently erroneously decides not to link it in:On macOS 10.12 and later it does link it in:
I will have to boot up an older OS X and see what the config.log has to say about why it made that decision.