Open kellyjonbrazil opened 4 years ago
wonder if it has anything to do with https://github.com/alexcrichton/ssh2-rs/issues/176
To summarize:
- libssh2-sys build adds /usr/lib as a search path for libraries.
- openssl-sys build adds /usr/local/opt/openssl@1.1/lib as a search path for libraries. It, however, goes after /usr/lib.
- openssl-sys uses includes from /usr/local/opt/openssl@1.1/include (correct), but when final binary is linked, it is linked against openssl in /usr/lib (incorrect).
I think this is an issue with libssh2-sys build (but could be caused by downstream libraries like, pkg_config).
Yeah, this is likely an environment variable / path order issue related to finding the appropriate OpenSSL library on your machine. Linking OpenSSL has been a pain on macOS for several years...
This is probably fixable by changing your system environment a bit. We should definitely capture the workaround in the documentation somewhere.
As for binaries not running on macOS 10.11, try invoking pyoxidizer build
with MACOSX_DEPLOYMENT_TARGET=10.11
set. I'm not 100% confident this will work. But it might. It might be worth filing an issue for just that binary compatibility issue. I'd really like to figure out the root cause so we can have a better story for producing macOS binaries.
Thanks for the ideas. I tried using MACOSX_DEPLOYMENT_TARGET=10.11
during build and got this when running on osx 10.11:
$ ./jc
dyld: lazy symbol binding failed: Symbol not found: _getentropy
Referenced from: /Users/kelly/Desktop/./jc
Expected in: /usr/lib/libSystem.B.dylib
dyld: Symbol not found: _getentropy
Referenced from: /Users/kelly/Desktop/./jc
Expected in: /usr/lib/libSystem.B.dylib
Trace/BPT trap: 5
Is this still a reproducible issue on the main
branch?
I'm still experiencing the issue here with 10.15.6, but I haven't started fooling around with environment variables yet.
EDIT: To clarify, the problem seems to be linking libyaml rather than openssl. But the same "symbols not found for architecture x86_64" occurs.
Which symbols aren't found? The YAML symbols are a completely different type of failure than the e.g. dyld: lazy symbol binding failed: Symbol not found: _getentropy
failure above.
Apologies, I think I commented before I got to the point I was at when I submitted the new issue, so as you say it's most likely not related.
Not sure if I'm barking up the wrong tree here but I was able to build pyoxider on OSX 10.14.6 and compile my python app just fine, but it didn't run on older OSX versions like 10.11.6. So I thought I'd compile on the older version and hopefully it will also work on the newer versions. (is that a correct assumption?)
So I tried to build pyoxidizer on OSX 10.11.6 and it's failing with this message at the end:
I thought this might be due to missing headers from openssl, so I did a
brew install openssl
and then exported the following env variables to get it to link to the correct headers, but I keep getting the same error.I got these env variables from here: https://github.com/sfackler/rust-openssl/issues/255
Does it look like I'm getting close?