Improve OpenSSL library finder
This commit is contained in:
parent
d486b251a5
commit
e7d2ea5e8a
|
@ -427,35 +427,44 @@ class _OpenSSL:
|
|||
buffer = self.create_string_buffer(size)
|
||||
return buffer
|
||||
|
||||
try:
|
||||
OpenSSL = _OpenSSL('libcrypto.so')
|
||||
except:
|
||||
try:
|
||||
OpenSSL = _OpenSSL('libeay32.dll')
|
||||
except:
|
||||
def loadOpenSSL():
|
||||
global OpenSSL
|
||||
from os import path, environ
|
||||
from ctypes.util import find_library
|
||||
|
||||
libdir = []
|
||||
if getattr(sys,'frozen', None):
|
||||
if 'darwin' in sys.platform:
|
||||
libdir.extend([
|
||||
path.join(environ['RESOURCEPATH'], '..', 'Frameworks','libcrypto.dylib'),
|
||||
path.join(environ['RESOURCEPATH'], '..', 'Frameworks','libcrypto.1.0.0.dylib')
|
||||
])
|
||||
elif 'win32' in sys.platform or win64:
|
||||
lib.append(path.join(sys._MEIPASS, 'libeay32.dll'))
|
||||
else:
|
||||
libdir.extend([
|
||||
path.join(sys._MEIPASS, 'libcrypto.so'),
|
||||
path.join(sys._MEIPASS, 'libssl.so'),
|
||||
path.join(sys._MEIPASS, 'libcrypto.so.1.0.0'),
|
||||
path.join(sys._MEIPASS, 'libssl.so.1.0.0'),
|
||||
])
|
||||
if 'darwin' in sys.platform:
|
||||
libdir.extend(['libcrypto.dylib', '/usr/local/opt/openssl/lib/libcrypto.dylib'])
|
||||
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
||||
libdir.append('libeay32.dll')
|
||||
else:
|
||||
libdir.append('libcrypto.so')
|
||||
libdir.append('libssl.so')
|
||||
if 'linux' in sys.platform or 'darwin' in sys.platform or 'freebsd' in sys.platform:
|
||||
libdir.append(find_library('ssl'))
|
||||
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
||||
libdir.append(find_library('libeay32'))
|
||||
for library in libdir:
|
||||
try:
|
||||
OpenSSL = _OpenSSL('libcrypto.dylib')
|
||||
OpenSSL = _OpenSSL(library)
|
||||
return
|
||||
except:
|
||||
try:
|
||||
# try homebrew installation
|
||||
OpenSSL = _OpenSSL('/usr/local/opt/openssl/lib/libcrypto.dylib')
|
||||
except:
|
||||
try:
|
||||
# Load it from an Bitmessage.app on OSX
|
||||
OpenSSL = _OpenSSL('./../Frameworks/libcrypto.dylib')
|
||||
except:
|
||||
try:
|
||||
from os import path
|
||||
lib_path = path.join(sys._MEIPASS, "libeay32.dll")
|
||||
OpenSSL = _OpenSSL(lib_path)
|
||||
except:
|
||||
if 'linux' in sys.platform or 'darwin' in sys.platform or 'freebsd' in sys.platform:
|
||||
try:
|
||||
from ctypes.util import find_library
|
||||
OpenSSL = _OpenSSL(find_library('ssl'))
|
||||
except Exception, err:
|
||||
sys.stderr.write('(On Linux) Couldn\'t find and load the OpenSSL library. You must install it. If you believe that you already have it installed, this exception information might be of use:\n')
|
||||
from ctypes.util import find_library
|
||||
OpenSSL = _OpenSSL(find_library('ssl'))
|
||||
else:
|
||||
raise Exception("Couldn't find and load the OpenSSL library. You must install it.")
|
||||
pass
|
||||
raise Exception("Couldn't find and load the OpenSSL library. You must install it.")
|
||||
|
||||
loadOpenSSL()
|
Loading…
Reference in New Issue
Block a user