mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
Merge pull request #2187 from benoitc/fix-2160
fix gunicorn when used with musl libc
This commit is contained in:
commit
56e4a6cd7f
@ -12,7 +12,7 @@ import socket
|
|||||||
import sys
|
import sys
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
from ctypes.util import find_library
|
from .util import find_library
|
||||||
|
|
||||||
__all__ = ('fromfd',)
|
__all__ = ('fromfd',)
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
# This file is part of gunicorn released under the MIT license.
|
# This file is part of gunicorn released under the MIT license.
|
||||||
# See the NOTICE for more information.
|
# See the NOTICE for more information.
|
||||||
import ast
|
import ast
|
||||||
|
import ctypes.util
|
||||||
import email.utils
|
import email.utils
|
||||||
import errno
|
import errno
|
||||||
import fcntl
|
import fcntl
|
||||||
@ -635,3 +636,34 @@ def bytes_to_str(b):
|
|||||||
|
|
||||||
def unquote_to_wsgi_str(string):
|
def unquote_to_wsgi_str(string):
|
||||||
return urllib.parse.unquote_to_bytes(string).decode('latin-1')
|
return urllib.parse.unquote_to_bytes(string).decode('latin-1')
|
||||||
|
|
||||||
|
|
||||||
|
def _findWalk_ldpath(name):
|
||||||
|
def _is_elf(filepath):
|
||||||
|
try:
|
||||||
|
with open(filepath, 'rb') as fh:
|
||||||
|
return fh.read(4) == b'\x7fELF'
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
from glob import glob
|
||||||
|
if os.path.isabs(name):
|
||||||
|
return name
|
||||||
|
|
||||||
|
# search LD_LIBRARY_PATH list
|
||||||
|
paths = ['/lib', '/usr/local/lib', '/usr/lib']
|
||||||
|
if 'LD_LIBRARY_PATH' in os.environ:
|
||||||
|
paths = os.environ['LD_LIBRARY_PATH'].split(':') + paths
|
||||||
|
|
||||||
|
for d in paths:
|
||||||
|
f = os.path.join(d, name)
|
||||||
|
if _is_elf(f):
|
||||||
|
return os.path.basename(f)
|
||||||
|
prefix = os.path.join(d, 'lib'+name)
|
||||||
|
for suffix in ['so', 'so.*']:
|
||||||
|
for f in glob('{0}.{1}'.format(prefix, suffix)):
|
||||||
|
if _is_elf(f):
|
||||||
|
return os.path.basename(f)
|
||||||
|
|
||||||
|
|
||||||
|
def find_library(name):
|
||||||
|
return ctypes.util.find_library(name) or _findWalk_ldpath(name)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user